Move display_info() function into bucomm.c
This commit is contained in:
parent
17c0759ec4
commit
06d86cf78e
6 changed files with 256 additions and 218 deletions
|
@ -123,21 +123,21 @@ static void usage
|
|||
static void nonfatal
|
||||
PARAMS ((const char *));
|
||||
static void display_file
|
||||
PARAMS ((char *filename, char *target));
|
||||
PARAMS ((char *, char *));
|
||||
static void dump_section_header
|
||||
PARAMS ((bfd *, asection *, PTR));
|
||||
static void dump_headers
|
||||
PARAMS ((bfd *));
|
||||
static void dump_data
|
||||
PARAMS ((bfd *abfd));
|
||||
PARAMS ((bfd *));
|
||||
static void dump_relocs
|
||||
PARAMS ((bfd *abfd));
|
||||
PARAMS ((bfd *));
|
||||
static void dump_dynamic_relocs
|
||||
PARAMS ((bfd * abfd));
|
||||
PARAMS ((bfd *));
|
||||
static void dump_reloc_set
|
||||
PARAMS ((bfd *, asection *, arelent **, long));
|
||||
static void dump_symbols
|
||||
PARAMS ((bfd *abfd, bfd_boolean dynamic));
|
||||
PARAMS ((bfd *, bfd_boolean));
|
||||
static void dump_bfd_header
|
||||
PARAMS ((bfd *));
|
||||
static void dump_bfd_private_header
|
||||
|
@ -145,15 +145,7 @@ static void dump_bfd_private_header
|
|||
static void dump_bfd
|
||||
PARAMS ((bfd *));
|
||||
static void display_bfd
|
||||
PARAMS ((bfd *abfd));
|
||||
static void display_target_list
|
||||
PARAMS ((void));
|
||||
static void display_info_table
|
||||
PARAMS ((int, int));
|
||||
static void display_target_tables
|
||||
PARAMS ((void));
|
||||
static void display_info
|
||||
PARAMS ((void));
|
||||
PARAMS ((bfd *));
|
||||
static void objdump_print_value
|
||||
PARAMS ((bfd_vma, struct disassemble_info *, bfd_boolean));
|
||||
static void objdump_print_symname
|
||||
|
@ -176,8 +168,6 @@ static void disassemble_bytes
|
|||
bfd_byte *, bfd_vma, bfd_vma, arelent ***, arelent **));
|
||||
static void disassemble_data
|
||||
PARAMS ((bfd *));
|
||||
static const char *endian_string
|
||||
PARAMS ((enum bfd_endian));
|
||||
static asymbol ** slurp_symtab
|
||||
PARAMS ((bfd *));
|
||||
static asymbol ** slurp_dynamic_symtab
|
||||
|
@ -2571,183 +2561,6 @@ dump_reloc_set (abfd, sec, relpp, relcount)
|
|||
}
|
||||
}
|
||||
|
||||
/* The length of the longest architecture name + 1. */
|
||||
#define LONGEST_ARCH sizeof("powerpc:common")
|
||||
|
||||
static const char *
|
||||
endian_string (endian)
|
||||
enum bfd_endian endian;
|
||||
{
|
||||
if (endian == BFD_ENDIAN_BIG)
|
||||
return "big endian";
|
||||
else if (endian == BFD_ENDIAN_LITTLE)
|
||||
return "little endian";
|
||||
else
|
||||
return "endianness unknown";
|
||||
}
|
||||
|
||||
/* List the targets that BFD is configured to support, each followed
|
||||
by its endianness and the architectures it supports. */
|
||||
|
||||
static void
|
||||
display_target_list ()
|
||||
{
|
||||
extern const bfd_target *const *bfd_target_vector;
|
||||
char *dummy_name;
|
||||
int t;
|
||||
|
||||
dummy_name = make_temp_file (NULL);
|
||||
for (t = 0; bfd_target_vector[t]; t++)
|
||||
{
|
||||
const bfd_target *p = bfd_target_vector[t];
|
||||
bfd *abfd = bfd_openw (dummy_name, p->name);
|
||||
int a;
|
||||
|
||||
printf ("%s\n (header %s, data %s)\n", p->name,
|
||||
endian_string (p->header_byteorder),
|
||||
endian_string (p->byteorder));
|
||||
|
||||
if (abfd == NULL)
|
||||
{
|
||||
nonfatal (dummy_name);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (! bfd_set_format (abfd, bfd_object))
|
||||
{
|
||||
if (bfd_get_error () != bfd_error_invalid_operation)
|
||||
nonfatal (p->name);
|
||||
bfd_close_all_done (abfd);
|
||||
continue;
|
||||
}
|
||||
|
||||
for (a = (int) bfd_arch_obscure + 1; a < (int) bfd_arch_last; a++)
|
||||
if (bfd_set_arch_mach (abfd, (enum bfd_architecture) a, 0))
|
||||
printf (" %s\n",
|
||||
bfd_printable_arch_mach ((enum bfd_architecture) a, 0));
|
||||
bfd_close_all_done (abfd);
|
||||
}
|
||||
unlink (dummy_name);
|
||||
free (dummy_name);
|
||||
}
|
||||
|
||||
/* Print a table showing which architectures are supported for entries
|
||||
FIRST through LAST-1 of bfd_target_vector (targets across,
|
||||
architectures down). */
|
||||
|
||||
static void
|
||||
display_info_table (first, last)
|
||||
int first;
|
||||
int last;
|
||||
{
|
||||
extern const bfd_target *const *bfd_target_vector;
|
||||
int t, a;
|
||||
char *dummy_name;
|
||||
|
||||
/* Print heading of target names. */
|
||||
printf ("\n%*s", (int) LONGEST_ARCH, " ");
|
||||
for (t = first; t < last && bfd_target_vector[t]; t++)
|
||||
printf ("%s ", bfd_target_vector[t]->name);
|
||||
putchar ('\n');
|
||||
|
||||
dummy_name = make_temp_file (NULL);
|
||||
for (a = (int) bfd_arch_obscure + 1; a < (int) bfd_arch_last; a++)
|
||||
if (strcmp (bfd_printable_arch_mach (a, 0), "UNKNOWN!") != 0)
|
||||
{
|
||||
printf ("%*s ", (int) LONGEST_ARCH - 1,
|
||||
bfd_printable_arch_mach (a, 0));
|
||||
for (t = first; t < last && bfd_target_vector[t]; t++)
|
||||
{
|
||||
const bfd_target *p = bfd_target_vector[t];
|
||||
bfd_boolean ok = TRUE;
|
||||
bfd *abfd = bfd_openw (dummy_name, p->name);
|
||||
|
||||
if (abfd == NULL)
|
||||
{
|
||||
nonfatal (p->name);
|
||||
ok = FALSE;
|
||||
}
|
||||
|
||||
if (ok)
|
||||
{
|
||||
if (! bfd_set_format (abfd, bfd_object))
|
||||
{
|
||||
if (bfd_get_error () != bfd_error_invalid_operation)
|
||||
nonfatal (p->name);
|
||||
ok = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (ok)
|
||||
{
|
||||
if (! bfd_set_arch_mach (abfd, a, 0))
|
||||
ok = FALSE;
|
||||
}
|
||||
|
||||
if (ok)
|
||||
printf ("%s ", p->name);
|
||||
else
|
||||
{
|
||||
int l = strlen (p->name);
|
||||
while (l--)
|
||||
putchar ('-');
|
||||
putchar (' ');
|
||||
}
|
||||
if (abfd != NULL)
|
||||
bfd_close_all_done (abfd);
|
||||
}
|
||||
putchar ('\n');
|
||||
}
|
||||
unlink (dummy_name);
|
||||
free (dummy_name);
|
||||
}
|
||||
|
||||
/* Print tables of all the target-architecture combinations that
|
||||
BFD has been configured to support. */
|
||||
|
||||
static void
|
||||
display_target_tables ()
|
||||
{
|
||||
int t, columns;
|
||||
extern const bfd_target *const *bfd_target_vector;
|
||||
char *colum;
|
||||
|
||||
columns = 0;
|
||||
colum = getenv ("COLUMNS");
|
||||
if (colum != NULL)
|
||||
columns = atoi (colum);
|
||||
if (columns == 0)
|
||||
columns = 80;
|
||||
|
||||
t = 0;
|
||||
while (bfd_target_vector[t] != NULL)
|
||||
{
|
||||
int oldt = t, wid;
|
||||
|
||||
wid = LONGEST_ARCH + strlen (bfd_target_vector[t]->name) + 1;
|
||||
++t;
|
||||
while (wid < columns && bfd_target_vector[t] != NULL)
|
||||
{
|
||||
int newwid;
|
||||
|
||||
newwid = wid + strlen (bfd_target_vector[t]->name) + 1;
|
||||
if (newwid >= columns)
|
||||
break;
|
||||
wid = newwid;
|
||||
++t;
|
||||
}
|
||||
display_info_table (oldt, t);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
display_info ()
|
||||
{
|
||||
printf (_("BFD header file version %s\n"), BFD_VERSION_STRING);
|
||||
display_target_list ();
|
||||
display_target_tables ();
|
||||
}
|
||||
|
||||
int main PARAMS ((int, char **));
|
||||
|
||||
int
|
||||
|
@ -2943,7 +2756,7 @@ main (argc, argv)
|
|||
usage (stderr, 2);
|
||||
|
||||
if (formats_info)
|
||||
display_info ();
|
||||
exit_status = display_info ();
|
||||
else
|
||||
{
|
||||
if (optind == argc)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue