mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-25 11:04:18 +08:00
Add --dyn-syms to readelf
binutils/ 2010-01-11 H.J. Lu <hongjiu.lu@intel.com> PR ld/11146 * NEWS: Mention --dyn-syms for readelf. * readelf.c (do_dyn_syms): New. (OPTION_DYN_SYMS): Likewise. (options): Add "dyn-syms". (usage): Add --dyn-syms. (parse_args): Handle OPTION_DYN_SYMS. (process_symbol_table): Handle do_dyn_syms. (process_object): Likewise. (process_archive): Likewise. * doc/binutils.texi: Document --dyn-syms for readelf. Mention symbol hash tables for -D. ld/testsuite/ 2010-01-11 H.J. Lu <hongjiu.lu@intel.com> PR ld/11146 * ld-elf/dynsym1.d: New.
This commit is contained in:
parent
4d421096e0
commit
2c610e4b46
@ -1,3 +1,35 @@
|
||||
2010-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11146
|
||||
* NEWS: Mention --dyn-syms for readelf.
|
||||
|
||||
* readelf.c (do_dyn_syms): New.
|
||||
(OPTION_DYN_SYMS): Likewise.
|
||||
(options): Add "dyn-syms".
|
||||
(usage): Add --dyn-syms.
|
||||
(parse_args): Handle OPTION_DYN_SYMS.
|
||||
(process_symbol_table): Handle do_dyn_syms.
|
||||
(process_object): Likewise.
|
||||
(process_archive): Likewise.
|
||||
|
||||
* doc/binutils.texi: Document --dyn-syms for readelf. Mention
|
||||
symbol hash tables for -D.
|
||||
|
||||
2010-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11146
|
||||
* readelf.c (do_dyn_syms): New.
|
||||
(OPTION_DYN_SYMS): Likewise.
|
||||
(options): Add "dyn-syms".
|
||||
(usage): Add --dyn-syms.
|
||||
(parse_args): Handle OPTION_DYN_SYMS.
|
||||
(process_symbol_table): Handle do_dyn_syms.
|
||||
(process_object): Likewise.
|
||||
(process_archive): Likewise.
|
||||
|
||||
* doc/binutils.texi: Document --dyn-syms for readelf. Mention
|
||||
symbol hash tables for -D.
|
||||
|
||||
2010-01-11 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* NEWS: Mention addition of elfedit.
|
||||
|
@ -1,4 +1,7 @@
|
||||
-*- text -*-
|
||||
|
||||
* Add --dyn-syms to readelf to dump dynamic symbol table.
|
||||
|
||||
* A new tool - elfedit - has been added to directly manipulate ELF format
|
||||
binaries.
|
||||
|
||||
|
@ -3894,6 +3894,7 @@ readelf [@option{-a}|@option{--all}]
|
||||
[@option{-t}|@option{--section-details}]
|
||||
[@option{-e}|@option{--headers}]
|
||||
[@option{-s}|@option{--syms}|@option{--symbols}]
|
||||
[@option{--dyn-syms}]
|
||||
[@option{-n}|@option{--notes}]
|
||||
[@option{-r}|@option{--relocs}]
|
||||
[@option{-u}|@option{--unwind}]
|
||||
@ -3982,6 +3983,11 @@ Displays the detailed section information. Implies @option{-S}.
|
||||
@cindex ELF symbol table information
|
||||
Displays the entries in symbol table section of the file, if it has one.
|
||||
|
||||
@item --dyn-syms
|
||||
@cindex ELF dynamic symbol table information
|
||||
Displays the entries in dynamic symbol table section of the file, if it
|
||||
has one.
|
||||
|
||||
@item -e
|
||||
@itemx --headers
|
||||
Display all the headers in the file. Equivalent to @option{-h -l -S}.
|
||||
@ -4021,8 +4027,8 @@ is any.
|
||||
@item -D
|
||||
@itemx --use-dynamic
|
||||
When displaying symbols, this option makes @command{readelf} use the
|
||||
symbol table in the file's dynamic section, rather than the one in the
|
||||
symbols section.
|
||||
symbol hash tables in the file's dynamic section, rather than the
|
||||
symbol table sections.
|
||||
|
||||
@item -x <number or name>
|
||||
@itemx --hex-dump=<number or name>
|
||||
|
@ -178,6 +178,7 @@ static Elf_Internal_Shdr * symtab_shndx_hdr;
|
||||
static int show_name;
|
||||
static int do_dynamic;
|
||||
static int do_syms;
|
||||
static int do_dyn_syms;
|
||||
static int do_reloc;
|
||||
static int do_sections;
|
||||
static int do_section_groups;
|
||||
@ -2923,6 +2924,7 @@ get_section_type_name (unsigned int sh_type)
|
||||
}
|
||||
|
||||
#define OPTION_DEBUG_DUMP 512
|
||||
#define OPTION_DYN_SYMS 513
|
||||
|
||||
static struct option options[] =
|
||||
{
|
||||
@ -2939,6 +2941,7 @@ static struct option options[] =
|
||||
{"full-section-name",no_argument, 0, 'N'},
|
||||
{"symbols", no_argument, 0, 's'},
|
||||
{"syms", no_argument, 0, 's'},
|
||||
{"dyn-syms", no_argument, 0, OPTION_DYN_SYMS},
|
||||
{"relocs", no_argument, 0, 'r'},
|
||||
{"notes", no_argument, 0, 'n'},
|
||||
{"dynamic", no_argument, 0, 'd'},
|
||||
@ -2978,6 +2981,7 @@ usage (FILE * stream)
|
||||
-e --headers Equivalent to: -h -l -S\n\
|
||||
-s --syms Display the symbol table\n\
|
||||
--symbols An alias for --syms\n\
|
||||
--dyn-syms Display the dynamic symbol table\n\
|
||||
-n --notes Display the core notes (if present)\n\
|
||||
-r --relocs Display the relocations (if present)\n\
|
||||
-u --unwind Display the unwind info (if present)\n\
|
||||
@ -3202,6 +3206,9 @@ parse_args (int argc, char ** argv)
|
||||
dwarf_select_sections_by_names (optarg);
|
||||
}
|
||||
break;
|
||||
case OPTION_DYN_SYMS:
|
||||
do_dyn_syms++;
|
||||
break;
|
||||
#ifdef SUPPORT_DISASSEMBLY
|
||||
case 'i':
|
||||
request_dump (DISASS_DUMP);
|
||||
@ -3228,7 +3235,8 @@ parse_args (int argc, char ** argv)
|
||||
if (!do_dynamic && !do_syms && !do_reloc && !do_unwind && !do_sections
|
||||
&& !do_segments && !do_header && !do_dump && !do_version
|
||||
&& !do_histogram && !do_debugging && !do_arch && !do_notes
|
||||
&& !do_section_groups && !do_archive_index)
|
||||
&& !do_section_groups && !do_archive_index
|
||||
&& !do_dyn_syms)
|
||||
usage (stderr);
|
||||
else if (argc < 3)
|
||||
{
|
||||
@ -7343,12 +7351,14 @@ process_symbol_table (FILE * file)
|
||||
bfd_vma * gnuchains = NULL;
|
||||
bfd_vma gnusymidx = 0;
|
||||
|
||||
if (! do_syms && !do_histogram)
|
||||
if (!do_syms && !do_dyn_syms && !do_histogram)
|
||||
return 1;
|
||||
|
||||
if (dynamic_info[DT_HASH]
|
||||
&& (do_histogram
|
||||
|| (do_using_dynamic && dynamic_strings != NULL)))
|
||||
|| (do_using_dynamic
|
||||
&& !do_dyn_syms
|
||||
&& dynamic_strings != NULL)))
|
||||
{
|
||||
unsigned char nb[8];
|
||||
unsigned char nc[8];
|
||||
@ -7404,7 +7414,9 @@ process_symbol_table (FILE * file)
|
||||
|
||||
if (dynamic_info_DT_GNU_HASH
|
||||
&& (do_histogram
|
||||
|| (do_using_dynamic && dynamic_strings != NULL)))
|
||||
|| (do_using_dynamic
|
||||
&& !do_dyn_syms
|
||||
&& dynamic_strings != NULL)))
|
||||
{
|
||||
unsigned char nb[16];
|
||||
bfd_vma i, maxchain = 0xffffffff, bitmaskwords;
|
||||
@ -7561,7 +7573,7 @@ process_symbol_table (FILE * file)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (do_syms && !do_using_dynamic)
|
||||
else if (do_dyn_syms || (do_syms && !do_using_dynamic))
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
@ -7575,8 +7587,10 @@ process_symbol_table (FILE * file)
|
||||
Elf_Internal_Sym * symtab;
|
||||
Elf_Internal_Sym * psym;
|
||||
|
||||
if ( section->sh_type != SHT_SYMTAB
|
||||
&& section->sh_type != SHT_DYNSYM)
|
||||
if ((section->sh_type != SHT_SYMTAB
|
||||
&& section->sh_type != SHT_DYNSYM)
|
||||
|| (!do_syms
|
||||
&& section->sh_type == SHT_SYMTAB))
|
||||
continue;
|
||||
|
||||
printf (_("\nSymbol table '%s' contains %lu entries:\n"),
|
||||
@ -10859,7 +10873,7 @@ process_object (char * file_name, FILE * file)
|
||||
do_unwind = do_version = do_dump = do_arch = 0;
|
||||
|
||||
if (! do_using_dynamic)
|
||||
do_syms = do_reloc = 0;
|
||||
do_syms = do_dyn_syms = do_reloc = 0;
|
||||
}
|
||||
|
||||
if (! process_section_groups (file))
|
||||
@ -11463,7 +11477,7 @@ process_archive (char * file_name, FILE * file, bfd_boolean is_thin_archive)
|
||||
if (!do_dynamic && !do_syms && !do_reloc && !do_unwind && !do_sections
|
||||
&& !do_segments && !do_header && !do_dump && !do_version
|
||||
&& !do_histogram && !do_debugging && !do_arch && !do_notes
|
||||
&& !do_section_groups)
|
||||
&& !do_section_groups && !do_dyn_syms)
|
||||
{
|
||||
ret = 0; /* Archive index only. */
|
||||
goto out;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11146
|
||||
* ld-elf/dynsym1.d: New.
|
||||
|
||||
2010-01-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11138
|
||||
|
8
ld/testsuite/ld-elf/dynsym1.d
Normal file
8
ld/testsuite/ld-elf/dynsym1.d
Normal file
@ -0,0 +1,8 @@
|
||||
#source: empty.s
|
||||
#ld: -shared
|
||||
#readelf: --dyn-syms
|
||||
#target: *-*-linux*
|
||||
|
||||
#...
|
||||
+[0-9]+: +[0-9a-f]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[1-9] _start
|
||||
#pass
|
Loading…
Reference in New Issue
Block a user