mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 20:28:28 +08:00
Fix several versioning related bugs. Produce nicer output.
This commit is contained in:
@ -1,3 +1,13 @@
|
|||||||
|
1998-07-19 15:15 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* readelf.c: Fix several versioning related bugs. Produce nicer
|
||||||
|
output.
|
||||||
|
|
||||||
|
Fri Jul 10 15:57:58 1998 Nick Clifton <nickc@cygnus.com>
|
||||||
|
|
||||||
|
* readelf.c: Switch prototypes from unsigned short to unsigned
|
||||||
|
int.
|
||||||
|
|
||||||
Fri Jul 10 16:17:50 1998 Ian Lance Taylor <ian@cygnus.com>
|
Fri Jul 10 16:17:50 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
From Christian Holland <CHolland@de.lucent.com>:
|
From Christian Holland <CHolland@de.lucent.com>:
|
||||||
|
@ -112,8 +112,8 @@ static int process_section_contents PARAMS ((FILE *));
|
|||||||
static void process_file PARAMS ((char * file_name));
|
static void process_file PARAMS ((char * file_name));
|
||||||
static int process_relocs PARAMS ((FILE *));
|
static int process_relocs PARAMS ((FILE *));
|
||||||
static int process_version_sections PARAMS ((FILE *));
|
static int process_version_sections PARAMS ((FILE *));
|
||||||
static char * get_ver_flags PARAMS ((unsigned short flags));
|
static char * get_ver_flags PARAMS ((unsigned int flags));
|
||||||
static char * get_symbol_index_type PARAMS ((unsigned short type));
|
static char * get_symbol_index_type PARAMS ((unsigned int type));
|
||||||
static int get_section_headers PARAMS ((FILE * file));
|
static int get_section_headers PARAMS ((FILE * file));
|
||||||
static int get_file_header PARAMS ((FILE * file));
|
static int get_file_header PARAMS ((FILE * file));
|
||||||
static Elf_Internal_Sym * get_elf_symbols
|
static Elf_Internal_Sym * get_elf_symbols
|
||||||
@ -1896,7 +1896,7 @@ process_dynamic_segment (file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (do_dynamic && dynamic_addr)
|
if (do_dynamic && dynamic_addr)
|
||||||
printf (_("\nDynamic segement at offset 0x%x contains %d entries:\n"),
|
printf (_("\nDynamic segment at offset 0x%x contains %d entries:\n"),
|
||||||
dynamic_addr, dynamic_size);
|
dynamic_addr, dynamic_size);
|
||||||
if (do_dynamic)
|
if (do_dynamic)
|
||||||
printf (_(" Tag Type Name/Value\n"));
|
printf (_(" Tag Type Name/Value\n"));
|
||||||
@ -1906,9 +1906,11 @@ process_dynamic_segment (file)
|
|||||||
i++, entry ++)
|
i++, entry ++)
|
||||||
{
|
{
|
||||||
if (do_dynamic)
|
if (do_dynamic)
|
||||||
printf (_(" 0x%-6.6lx (%-11.11s) "),
|
printf (_(" 0x%-8.8lx (%s)%*s"),
|
||||||
(unsigned long) entry->d_tag,
|
(unsigned long) entry->d_tag,
|
||||||
get_dynamic_type (entry->d_tag));
|
get_dynamic_type (entry->d_tag),
|
||||||
|
12 - strlen (get_dynamic_type (entry->d_tag)),
|
||||||
|
" ");
|
||||||
|
|
||||||
switch (entry->d_tag)
|
switch (entry->d_tag)
|
||||||
{
|
{
|
||||||
@ -2013,7 +2015,7 @@ process_dynamic_segment (file)
|
|||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_ver_flags (flags)
|
get_ver_flags (flags)
|
||||||
unsigned short flags;
|
unsigned int flags;
|
||||||
{
|
{
|
||||||
static char buff [32];
|
static char buff [32];
|
||||||
|
|
||||||
@ -2280,11 +2282,11 @@ process_version_sections (file)
|
|||||||
switch (data [cnt + j])
|
switch (data [cnt + j])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
printf (" 0 (*local*) ");
|
fputs (_(" 0 (*local*) "), stdout);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
printf (" 1 (*global*) ");
|
fputs (_(" 1 (*global*) "), stdout);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -2333,8 +2335,11 @@ process_version_sections (file)
|
|||||||
{
|
{
|
||||||
ivna.vna_name = BYTE_GET (evna.vna_name);
|
ivna.vna_name = BYTE_GET (evna.vna_name);
|
||||||
|
|
||||||
nn += printf ("(%11.11s)",
|
nn += printf ("(%s%-*s",
|
||||||
strtab + ivna.vna_name);
|
strtab + ivna.vna_name,
|
||||||
|
12 - strlen (strtab
|
||||||
|
+ ivna.vna_name),
|
||||||
|
")");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (ivn.vn_next == 0)
|
else if (ivn.vn_next == 0)
|
||||||
@ -2377,8 +2382,12 @@ process_version_sections (file)
|
|||||||
BYTE_GET (evda.vda_name);
|
BYTE_GET (evda.vda_name);
|
||||||
|
|
||||||
nn +=
|
nn +=
|
||||||
printf ("(%11.11s)",
|
printf ("(%s%-*s",
|
||||||
strtab + ivda.vda_name);
|
strtab + ivda.vda_name,
|
||||||
|
12
|
||||||
|
- strlen (strtab
|
||||||
|
+ ivda.vda_name),
|
||||||
|
")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2428,8 +2437,11 @@ process_version_sections (file)
|
|||||||
{
|
{
|
||||||
ivna.vna_name = BYTE_GET (evna.vna_name);
|
ivna.vna_name = BYTE_GET (evna.vna_name);
|
||||||
|
|
||||||
nn += printf ("(%11.11s)",
|
nn += printf ("(%s%-*s",
|
||||||
strtab + ivna.vna_name);
|
strtab + ivna.vna_name,
|
||||||
|
12 - strlen (strtab
|
||||||
|
+ ivna.vna_name),
|
||||||
|
")");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2470,8 +2482,11 @@ process_version_sections (file)
|
|||||||
|
|
||||||
ivda.vda_name = BYTE_GET (evda.vda_name);
|
ivda.vda_name = BYTE_GET (evda.vda_name);
|
||||||
|
|
||||||
nn += printf ("(%11.11s)",
|
nn += printf ("(%s%-*s",
|
||||||
strtab + ivda.vda_name);
|
strtab + ivda.vda_name,
|
||||||
|
12 - strlen (strtab
|
||||||
|
+ ivda.vda_name),
|
||||||
|
")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2543,7 +2558,7 @@ get_symbol_type (type)
|
|||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_symbol_index_type (type)
|
get_symbol_index_type (type)
|
||||||
unsigned short type;
|
unsigned int type;
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
@ -2705,7 +2720,8 @@ process_symbol_table (file)
|
|||||||
printf (_("\nSymbol table '%s' contains %d entries:\n"),
|
printf (_("\nSymbol table '%s' contains %d entries:\n"),
|
||||||
SECTION_NAME (section),
|
SECTION_NAME (section),
|
||||||
section->sh_size / section->sh_entsize);
|
section->sh_size / section->sh_entsize);
|
||||||
printf (_(" Num: Value Size Type Bind Ot Ndx Name\n"));
|
fputs (_(" Num: Value Size Type Bind Ot Ndx Name\n"),
|
||||||
|
stdout);
|
||||||
|
|
||||||
symtab = get_elf_symbols (file, section->sh_offset,
|
symtab = get_elf_symbols (file, section->sh_offset,
|
||||||
section->sh_size / section->sh_entsize);
|
section->sh_size / section->sh_entsize);
|
||||||
@ -2737,11 +2753,11 @@ process_symbol_table (file)
|
|||||||
psym->st_other);
|
psym->st_other);
|
||||||
|
|
||||||
if (psym->st_shndx == 0)
|
if (psym->st_shndx == 0)
|
||||||
printf ("UND");
|
fputs ("UND", stdout);
|
||||||
else if ((psym->st_shndx & 0xffff) == 0xfff1)
|
else if ((psym->st_shndx & 0xffff) == 0xfff1)
|
||||||
printf ("ABS");
|
fputs ("ABS", stdout);
|
||||||
else if ((psym->st_shndx & 0xffff) == 0xfff2)
|
else if ((psym->st_shndx & 0xffff) == 0xfff2)
|
||||||
printf ("COM");
|
fputs ("COM", stdout);
|
||||||
else
|
else
|
||||||
printf ("%3d", psym->st_shndx);
|
printf ("%3d", psym->st_shndx);
|
||||||
|
|
||||||
@ -2802,6 +2818,7 @@ process_symbol_table (file)
|
|||||||
|
|
||||||
ivna.vna_other = BYTE_GET (evna.vna_other);
|
ivna.vna_other = BYTE_GET (evna.vna_other);
|
||||||
ivna.vna_next = BYTE_GET (evna.vna_next);
|
ivna.vna_next = BYTE_GET (evna.vna_next);
|
||||||
|
ivna.vna_name = BYTE_GET (evna.vna_name);
|
||||||
|
|
||||||
vna_off += ivna.vna_next;
|
vna_off += ivna.vna_next;
|
||||||
}
|
}
|
||||||
@ -2816,8 +2833,11 @@ process_symbol_table (file)
|
|||||||
while (ivn.vn_next != 0);
|
while (ivn.vn_next != 0);
|
||||||
|
|
||||||
if (ivna.vna_other == vers_data)
|
if (ivna.vna_other == vers_data)
|
||||||
|
{
|
||||||
printf ("@%s (%d)",
|
printf ("@%s (%d)",
|
||||||
strtab + ivna.vna_name, ivna.vna_other);
|
strtab + ivna.vna_name, ivna.vna_other);
|
||||||
|
check_def = 0;
|
||||||
|
}
|
||||||
else if (! is_nobits)
|
else if (! is_nobits)
|
||||||
error (_("bad dynamic symbol"));
|
error (_("bad dynamic symbol"));
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user