Thu Aug 31 16:30:22 1995 steve chamberlain <sac@slash.cygnus.com>

* dlltool.c (add_indirect): New.
	(asm_prefix): New
	(gen_exp_file): Timestamp should be 0. Insert prefix when
	needed. New code for indirection.
	(gen_lib_file): Timestamp should be 0. Insert prefix
	when needed.
	(usage): Document --add-indirect.
	(main): Cope with new option.

	* objdump.c (dump_private_headers): New.
	(usage): Document new option.
	(long_option): Add private-headers.
	(dump_bfd_private_header): New.
	(main): Cope with new option.
This commit is contained in:
Steve Chamberlain 1995-08-31 23:34:09 +00:00
parent 4e98461f60
commit a65619c8fd
2 changed files with 55 additions and 20 deletions

View File

@ -1,3 +1,20 @@
Thu Aug 31 16:30:22 1995 steve chamberlain <sac@slash.cygnus.com>
* dlltool.c (add_indirect): New.
(asm_prefix): New
(gen_exp_file): Timestamp should be 0. Insert prefix when
needed. New code for indirection.
(gen_lib_file): Timestamp should be 0. Insert prefix
when needed.
(usage): Document --add-indirect.
(main): Cope with new option.
* objdump.c (dump_private_headers): New.
(usage): Document new option.
(long_option): Add private-headers.
(dump_bfd_private_header): New.
(main): Cope with new option.
Thu Aug 31 04:09:16 1995 Doug Evans <dje@canuck.cygnus.com>
* dlltool.c (run): Add missing 3rd arg to waitpid.

View File

@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
@ -48,6 +48,7 @@ int dump_dynamic_symtab; /* -T */
int dump_reloc_info; /* -r */
int dump_dynamic_reloc_info; /* -R */
int dump_ar_hdrs; /* -a */
int dump_private_headers; /* -p */
int with_line_numbers; /* -l */
boolean with_source_code; /* -S */
int dump_stab_section_info; /* --stabs */
@ -120,7 +121,7 @@ usage (stream, status)
int status;
{
fprintf (stream, "\
Usage: %s [-ahifdDrRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\
Usage: %s [-ahifdDprRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\
[--archive-headers] [--target=bfdname] [--disassemble]\n\
[--disassemble-all] [--file-headers] [--section-headers] [--headers]\n\
[--info] [--section=section-name] [--line-numbers] [--source]\n",
@ -128,7 +129,7 @@ Usage: %s [-ahifdDrRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\
fprintf (stream, "\
[--architecture=machine] [--reloc] [--full-contents] [--stabs]\n\
[--syms] [--all-headers] [--dynamic-syms] [--dynamic-reloc]\n\
[--wide] [--version] [--help] objfile...\n\
[--wide] [--version] [--help] [--private-headers] objfile...\n\
at least one option besides -l (--line-numbers) must be given\n");
list_supported_targets (program_name, stream);
exit (status);
@ -137,6 +138,7 @@ at least one option besides -l (--line-numbers) must be given\n");
static struct option long_options[]=
{
{"all-headers", no_argument, NULL, 'x'},
{"private-headers", no_argument, NULL, 'p'},
{"architecture", required_argument, NULL, 'm'},
{"archive-headers", no_argument, NULL, 'a'},
{"disassemble", no_argument, NULL, 'd'},
@ -340,8 +342,14 @@ compare_relocs (ap, bp)
else if (a->address < b->address)
return -1;
return compare_symbols ((const PTR) a->sym_ptr_ptr,
(const PTR) b->sym_ptr_ptr);
/* So that associated relocations tied to the same address show up
in the correct order, we don't do any further sorting. */
if (a > b)
return 1;
else if (a < b)
return -1;
else
return 0;
}
/* Print VMA symbolically to INFO if possible. */
@ -1109,24 +1117,22 @@ dump_section_stabs (abfd, stabsect_name, strsect_name)
char *strsect_name;
{
asection *s;
if (read_section_stabs (abfd, stabsect_name, strsect_name))
{
print_section_stabs (abfd, stabsect_name, strsect_name);
free (stabs);
free (strtab);
}
/* Check for names which are supersets of the selected name */
/* Check for section names for which stabsect_name is a prefix, to
handle .stab0, etc. */
for (s = abfd->sections;
s;
s != NULL;
s = s->next)
{
if (strncmp (stabsect_name, s->name, strlen (stabsect_name)) == 0)
if (strncmp (stabsect_name, s->name, strlen (stabsect_name)) == 0
&& strncmp (strsect_name, s->name, strlen (strsect_name)) != 0)
{
read_section_stabs (abfd, s->name, strsect_name);
print_section_stabs (abfd, s->name, strsect_name);
free (stabs);
free (strtab);
if (read_section_stabs (abfd, s->name, strsect_name))
{
print_section_stabs (abfd, s->name, strsect_name);
free (stabs);
free (strtab);
}
}
}
}
@ -1156,7 +1162,13 @@ dump_bfd_header (abfd)
printf ("\nstart address 0x");
printf_vma (abfd->start_address);
}
static void
dump_bfd_private_header (abfd)
bfd *abfd;
{
bfd_print_private_bfd_data (abfd, stdout);
}
static void
display_bfd (abfd)
bfd *abfd;
@ -1180,6 +1192,8 @@ display_bfd (abfd)
print_arelt_descr (stdout, abfd, true);
if (dump_file_header)
dump_bfd_header (abfd);
if (dump_private_headers)
dump_bfd_private_header (abfd);
putchar ('\n');
if (dump_section_headers)
dump_headers (abfd);
@ -1705,7 +1719,7 @@ main (argc, argv)
bfd_init ();
while ((c = getopt_long (argc, argv, "ib:m:VdDlfahrRtTxsSj:w", long_options,
while ((c = getopt_long (argc, argv, "pib:m:VdDlfahrRtTxsSj:w", long_options,
(int *) 0))
!= EOF)
{
@ -1732,7 +1746,11 @@ main (argc, argv)
case 'i':
formats_info = true;
break;
case 'p':
dump_private_headers = 1;
break;
case 'x':
dump_private_headers = 1;
dump_symtab = 1;
dump_reloc_info = 1;
dump_file_header = true;