2005-03-31 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (do_full_section_name): New. (options): Add "--full-section-name"/'N'. (usage): Add -N/--full-section-name. (parse_args): Handle 'N'. (process_section_headers): Print out the full section name if do_full_section_name isn't 0.
This commit is contained in:
parent
dca8d0afa1
commit
595cf52ef2
2 changed files with 86 additions and 11 deletions
|
@ -1,3 +1,12 @@
|
|||
2005-03-31 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* readelf.c (do_full_section_name): New.
|
||||
(options): Add "--full-section-name"/'N'.
|
||||
(usage): Add -N/--full-section-name.
|
||||
(parse_args): Handle 'N'.
|
||||
(process_section_headers): Print out the full section name if
|
||||
do_full_section_name isn't 0.
|
||||
|
||||
2005-03-31 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* configure.in: Add a check for <unistd.h> providing a prototype
|
||||
|
|
|
@ -145,6 +145,7 @@ int do_syms;
|
|||
int do_reloc;
|
||||
int do_sections;
|
||||
int do_section_groups;
|
||||
int do_full_section_name;
|
||||
int do_segments;
|
||||
int do_unwind;
|
||||
int do_using_dynamic;
|
||||
|
@ -2587,6 +2588,7 @@ struct option options[] =
|
|||
{"sections", no_argument, 0, 'S'},
|
||||
{"section-headers", no_argument, 0, 'S'},
|
||||
{"section-groups", no_argument, 0, 'g'},
|
||||
{"full-section-name",no_argument, 0, 'N'},
|
||||
{"symbols", no_argument, 0, 's'},
|
||||
{"syms", no_argument, 0, 's'},
|
||||
{"relocs", no_argument, 0, 'r'},
|
||||
|
@ -2621,6 +2623,8 @@ usage (void)
|
|||
-S --section-headers Display the sections' header\n\
|
||||
--sections An alias for --section-headers\n\
|
||||
-g --section-groups Display the section groups\n\
|
||||
-N --full-section-name\n\
|
||||
Display the full section name\n\
|
||||
-e --headers Equivalent to: -h -l -S\n\
|
||||
-s --syms Display the symbol table\n\
|
||||
--symbols An alias for --syms\n\
|
||||
|
@ -2693,7 +2697,7 @@ parse_args (int argc, char **argv)
|
|||
usage ();
|
||||
|
||||
while ((c = getopt_long
|
||||
(argc, argv, "ersuahnldSDAIgw::x:i:vVWH", options, NULL)) != EOF)
|
||||
(argc, argv, "ersuahnldSDAINgw::x:i:vVWH", options, NULL)) != EOF)
|
||||
{
|
||||
char *cp;
|
||||
int section;
|
||||
|
@ -2724,6 +2728,9 @@ parse_args (int argc, char **argv)
|
|||
case 'g':
|
||||
do_section_groups++;
|
||||
break;
|
||||
case 'N':
|
||||
do_full_section_name++;
|
||||
break;
|
||||
case 'e':
|
||||
do_header++;
|
||||
do_sections++;
|
||||
|
@ -3847,25 +3854,60 @@ process_section_headers (FILE *file)
|
|||
printf (_("\nSection Header:\n"));
|
||||
|
||||
if (is_32bit_elf)
|
||||
printf
|
||||
(_(" [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"));
|
||||
{
|
||||
if (do_full_section_name)
|
||||
{
|
||||
printf (_(" [Nr] Name\n"));
|
||||
printf (_(" Type Addr Off Size ES Flg Lk Inf Al\n"));
|
||||
}
|
||||
else
|
||||
printf
|
||||
(_(" [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"));
|
||||
}
|
||||
else if (do_wide)
|
||||
printf
|
||||
(_(" [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"));
|
||||
{
|
||||
if (do_full_section_name)
|
||||
{
|
||||
printf (_(" [Nr] Name\n"));
|
||||
printf (_(" Type Address Off Size ES Flg Lk Inf Al\n"));
|
||||
}
|
||||
else
|
||||
printf
|
||||
(_(" [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf (_(" [Nr] Name Type Address Offset\n"));
|
||||
printf (_(" Size EntSize Flags Link Info Align\n"));
|
||||
if (do_full_section_name)
|
||||
{
|
||||
printf (_(" [Nr] Name\n"));
|
||||
printf (_(" Flags Type Address Offset\n"));
|
||||
printf (_(" Size EntSize Link Info Align\n"));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf (_(" [Nr] Name Type Address Offset\n"));
|
||||
printf (_(" Size EntSize Flags Link Info Align\n"));
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0, section = section_headers;
|
||||
i < elf_header.e_shnum;
|
||||
i++, section++)
|
||||
{
|
||||
printf (" [%2u] %-17.17s %-15.15s ",
|
||||
SECTION_HEADER_NUM (i),
|
||||
SECTION_NAME (section),
|
||||
get_section_type_name (section->sh_type));
|
||||
if (do_full_section_name)
|
||||
{
|
||||
printf (" [%2u] %s\n",
|
||||
SECTION_HEADER_NUM (i),
|
||||
SECTION_NAME (section));
|
||||
if (is_32bit_elf || do_wide)
|
||||
printf (" %-15.15s ",
|
||||
get_section_type_name (section->sh_type));
|
||||
}
|
||||
else
|
||||
printf (" [%2u] %-17.17s %-15.15s ",
|
||||
SECTION_HEADER_NUM (i),
|
||||
SECTION_NAME (section),
|
||||
get_section_type_name (section->sh_type));
|
||||
|
||||
if (is_32bit_elf)
|
||||
{
|
||||
|
@ -3925,6 +3967,30 @@ process_section_headers (FILE *file)
|
|||
putchar ('\n');
|
||||
}
|
||||
}
|
||||
else if (do_full_section_name)
|
||||
{
|
||||
printf (" %-15.15s %-15.15s ",
|
||||
get_elf_section_flags (section->sh_flags),
|
||||
get_section_type_name (section->sh_type));
|
||||
putchar (' ');
|
||||
print_vma (section->sh_addr, LONG_HEX);
|
||||
if ((long) section->sh_offset == section->sh_offset)
|
||||
printf (" %8.8lx", (unsigned long) section->sh_offset);
|
||||
else
|
||||
{
|
||||
printf (" ");
|
||||
print_vma (section->sh_offset, LONG_HEX);
|
||||
}
|
||||
printf ("\n ");
|
||||
print_vma (section->sh_size, LONG_HEX);
|
||||
printf (" ");
|
||||
print_vma (section->sh_entsize, LONG_HEX);
|
||||
|
||||
printf (" %2ld %3lu %ld\n",
|
||||
(unsigned long) section->sh_link,
|
||||
(unsigned long) section->sh_info,
|
||||
(unsigned long) section->sh_addralign);
|
||||
}
|
||||
else
|
||||
{
|
||||
putchar (' ');
|
||||
|
|
Loading…
Reference in a new issue