PR 11225
* objdump.c (only): Replace with linked list. (only_size, only_used): Replace with only_list. (process_section_p): Set seen field on matches sections. (add_only): New function. (free_only_list): New function. (disassemble_section): Check only_list. (main): Use add_only and free_only_list. * gas/pe/aligncomm-c.d: Dump all sections. * ld-sh/refdbg-0-dso.d: Dump all sections.
This commit is contained in:
parent
7434dadd5d
commit
70ecb3842d
7 changed files with 115 additions and 30 deletions
|
@ -1,10 +1,21 @@
|
|||
2010-01-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 11225
|
||||
* objdump.c (only): Replace with linked list.
|
||||
(only_size, only_used): Replace with only_list.
|
||||
(process_section_p): Set seen field on matches sections.
|
||||
(add_only): New function.
|
||||
(free_only_list): New function.
|
||||
(disassemble_section): Check only_list.
|
||||
(main): Use add_only and free_only_list.
|
||||
|
||||
2010-01-26 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* Makefile.am (bin2c): Add libintl dependance and library.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2010-01-21 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
|
||||
* readelf.c (get_machine_flags): Handle EF_S390_HIGH_GPRS.
|
||||
|
||||
2010-01-19 Ian Lance Taylor <iant@google.com>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* objdump.c -- dump information about an object file.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
@ -117,13 +117,16 @@ static const char *prefix; /* --prefix */
|
|||
static int prefix_strip; /* --prefix-strip */
|
||||
static size_t prefix_length;
|
||||
|
||||
/* Pointer to an array of section names provided by
|
||||
one or more "-j secname" command line options. */
|
||||
static char **only;
|
||||
/* The total number of slots in the only[] array. */
|
||||
static size_t only_size = 0;
|
||||
/* The number of occupied slots in the only[] array. */
|
||||
static size_t only_used = 0;
|
||||
/* A structure to record the sections mentioned in -j switches. */
|
||||
struct only
|
||||
{
|
||||
const char * name; /* The name of the section. */
|
||||
bfd_boolean seen; /* A flag to indicate that the section has been found in one or more input files. */
|
||||
struct only * next; /* Pointer to the next structure in the list. */
|
||||
};
|
||||
/* Pointer to an array of 'only' structures.
|
||||
This pointer is NULL if the -j switch has not been used. */
|
||||
static struct only * only_list = NULL;
|
||||
|
||||
/* Variables for handling include file path table. */
|
||||
static const char **include_paths;
|
||||
|
@ -326,17 +329,78 @@ nonfatal (const char *msg)
|
|||
static bfd_boolean
|
||||
process_section_p (asection * section)
|
||||
{
|
||||
size_t i;
|
||||
struct only * only;
|
||||
|
||||
if (only == NULL)
|
||||
if (only_list == NULL)
|
||||
return TRUE;
|
||||
|
||||
for (i = 0; i < only_used; i++)
|
||||
if (strcmp (only [i], section->name) == 0)
|
||||
return TRUE;
|
||||
for (only = only_list; only; only = only->next)
|
||||
if (strcmp (only->name, section->name) == 0)
|
||||
{
|
||||
only->seen = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Add an entry to the 'only' list. */
|
||||
|
||||
static void
|
||||
add_only (char * name)
|
||||
{
|
||||
struct only * only;
|
||||
|
||||
/* First check to make sure that we do not
|
||||
already have an entry for this name. */
|
||||
for (only = only_list; only; only = only->next)
|
||||
if (strcmp (only->name, name) == 0)
|
||||
return;
|
||||
|
||||
only = xmalloc (sizeof * only);
|
||||
only->name = name;
|
||||
only->seen = FALSE;
|
||||
only->next = only_list;
|
||||
only_list = only;
|
||||
}
|
||||
|
||||
/* Release the memory used by the 'only' list.
|
||||
PR 11225: Issue a warning message for unseen sections.
|
||||
Only do this if none of the sections were seen. This is mainly to support
|
||||
tools like the GAS testsuite where an object file is dumped with a list of
|
||||
generic section names known to be present in a range of different file
|
||||
formats. */
|
||||
|
||||
static void
|
||||
free_only_list (void)
|
||||
{
|
||||
bfd_boolean at_least_one_seen = FALSE;
|
||||
struct only * only;
|
||||
struct only * next;
|
||||
|
||||
if (only_list == NULL)
|
||||
return;
|
||||
|
||||
for (only = only_list; only; only = only->next)
|
||||
if (only->seen)
|
||||
{
|
||||
at_least_one_seen = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
for (only = only_list; only; only = next)
|
||||
{
|
||||
if (! at_least_one_seen)
|
||||
{
|
||||
non_fatal (_("Section '%s' mentioned in a -j option, but not found in any input file"),
|
||||
only->name);
|
||||
exit_status = 1;
|
||||
}
|
||||
next = only->next;
|
||||
free (only);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
dump_section_header (bfd *abfd, asection *section,
|
||||
|
@ -1782,7 +1846,7 @@ disassemble_section (bfd *abfd, asection *section, void *inf)
|
|||
/* Sections that do not contain machine
|
||||
code are not normally disassembled. */
|
||||
if (! disassemble_all
|
||||
&& only == NULL
|
||||
&& only_list == NULL
|
||||
&& ((section->flags & (SEC_CODE | SEC_HAS_CONTENTS))
|
||||
!= (SEC_CODE | SEC_HAS_CONTENTS)))
|
||||
return;
|
||||
|
@ -3193,12 +3257,7 @@ main (int argc, char **argv)
|
|||
disassembler_options = optarg;
|
||||
break;
|
||||
case 'j':
|
||||
if (only_used == only_size)
|
||||
{
|
||||
only_size += 8;
|
||||
only = (char **) xrealloc (only, only_size * sizeof (char *));
|
||||
}
|
||||
only [only_used++] = optarg;
|
||||
add_only (optarg);
|
||||
break;
|
||||
case 'F':
|
||||
display_file_offsets = TRUE;
|
||||
|
@ -3409,6 +3468,8 @@ main (int argc, char **argv)
|
|||
display_file (argv[optind++], target);
|
||||
}
|
||||
|
||||
free_only_list ();
|
||||
|
||||
END_PROGRESS (program_name);
|
||||
|
||||
return exit_status;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-01-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 11225
|
||||
* gas/pe/aligncomm-c.d: Dump all sections.
|
||||
|
||||
2010-01-27 Dave Korn <dave.korn.cygwin@gmail.com>
|
||||
|
||||
* gas/pe/section-align-1.s: New test source file.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#objdump: -s -j .drectve
|
||||
#objdump: -s
|
||||
#name: aligned common C
|
||||
|
||||
# Test the aligned form of the .comm pseudo-op.
|
||||
|
||||
.*: .*
|
||||
|
||||
# No .drectve section emitted.
|
||||
# No .drectve section emitted.
|
||||
|
|
|
@ -4,12 +4,15 @@
|
|||
|
||||
if [expr [istarget "s390-*-*"] || [istarget "s390x-*-*"]] then {
|
||||
|
||||
run_dump_test "esa-g5" "{as -m31}"
|
||||
run_dump_test "esa-z900" "{as -m31} {as -march=z900}"
|
||||
run_dump_test "esa-z990" "{as -m31} {as -march=z990}"
|
||||
run_dump_test "esa-z9-109" "{as -m31} {as -march=z9-109}"
|
||||
run_dump_test "esa-reloc" "{as -m31}"
|
||||
run_dump_test "esa-operands" "{as -m31}"
|
||||
# s390x-ibm-tpf target does not support a 32-bit target.
|
||||
if { ! [istarget "s390x-*-tpf*"] } then {
|
||||
run_dump_test "esa-g5" "{as -m31}"
|
||||
run_dump_test "esa-z900" "{as -m31} {as -march=z900}"
|
||||
run_dump_test "esa-z990" "{as -m31} {as -march=z990}"
|
||||
run_dump_test "esa-z9-109" "{as -m31} {as -march=z9-109}"
|
||||
run_dump_test "esa-reloc" "{as -m31}"
|
||||
run_dump_test "esa-operands" "{as -m31}"
|
||||
}
|
||||
|
||||
# # PIC is only supported on ELF targets.
|
||||
# if { ([istarget "*-*-elf*"] || [istarget "*-*-linux*"] ) } then {
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-01-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 11225
|
||||
* ld-sh/refdbg-0-dso.d: Dump all sections.
|
||||
|
||||
2010-01-26 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/11218
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#source: refdbglib.s
|
||||
#as: -little
|
||||
#ld: -shared -EL
|
||||
#objdump: -drj.text
|
||||
#objdump: -dr
|
||||
#target: sh*-*-linux* sh*-*-netbsd*
|
||||
|
||||
.*: +file format elf32-sh.*
|
||||
|
|
Loading…
Reference in a new issue