mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 19:09:31 +08:00
2009-09-16 Tristan Gingold <gingold@adacore.com>
* mach-o.h (bfd_mach_o_filetype): Add new constants from darwin10. Reindent. * mach-o.c (bfd_mach_o_cpu_name): Reindent. (bfd_mach_o_filetype_name): Complete with new constants. Reindent. (bfd_mach_o_print_private_header): Use fputs instead of fprintf when possible to avoid warnings. (bfd_mach_o_print_section_map): Ditto. (bfd_mach_o_section_get_entry_size): New function. (bfd_mach_o_section_get_nbr_indirect): Simplify using the newly added function. (bfd_mach_o_print_dysymtab): Print address of indirect symbols.
This commit is contained in:
@ -1,3 +1,17 @@
|
|||||||
|
2009-09-16 Tristan Gingold <gingold@adacore.com>
|
||||||
|
|
||||||
|
* mach-o.h (bfd_mach_o_filetype): Add new constants from darwin10.
|
||||||
|
Reindent.
|
||||||
|
* mach-o.c (bfd_mach_o_cpu_name): Reindent.
|
||||||
|
(bfd_mach_o_filetype_name): Complete with new constants. Reindent.
|
||||||
|
(bfd_mach_o_print_private_header): Use fputs instead of fprintf
|
||||||
|
when possible to avoid warnings.
|
||||||
|
(bfd_mach_o_print_section_map): Ditto.
|
||||||
|
(bfd_mach_o_section_get_entry_size): New function.
|
||||||
|
(bfd_mach_o_section_get_nbr_indirect): Simplify using the newly
|
||||||
|
added function.
|
||||||
|
(bfd_mach_o_print_dysymtab): Print address of indirect symbols.
|
||||||
|
|
||||||
2009-09-14 Nick Clifton <nickc@redhat.com>
|
2009-09-14 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* po/fi.po: Updated Finnish translation.
|
* po/fi.po: Updated Finnish translation.
|
||||||
|
59
bfd/mach-o.c
59
bfd/mach-o.c
@ -3108,6 +3108,9 @@ static bfd_mach_o_xlat_name bfd_mach_o_filetype_name[] =
|
|||||||
{ "dylib", BFD_MACH_O_MH_DYLIB },
|
{ "dylib", BFD_MACH_O_MH_DYLIB },
|
||||||
{ "dylinker", BFD_MACH_O_MH_DYLINKER },
|
{ "dylinker", BFD_MACH_O_MH_DYLINKER },
|
||||||
{ "bundle", BFD_MACH_O_MH_BUNDLE },
|
{ "bundle", BFD_MACH_O_MH_BUNDLE },
|
||||||
|
{ "dylib_stub", BFD_MACH_O_MH_DYLIB_STUB },
|
||||||
|
{ "dym", BFD_MACH_O_MH_DSYM },
|
||||||
|
{ "kext_bundle", BFD_MACH_O_MH_KEXT_BUNDLE },
|
||||||
{ NULL, 0}
|
{ NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3220,7 +3223,7 @@ bfd_mach_o_print_private_header (bfd *abfd, FILE *file)
|
|||||||
bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
|
bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
|
||||||
bfd_mach_o_header *h = &mdata->header;
|
bfd_mach_o_header *h = &mdata->header;
|
||||||
|
|
||||||
fprintf (file, _("Mach-O header:\n"));
|
fputs (_("Mach-O header:\n"), file);
|
||||||
fprintf (file, _(" magic : %08lx\n"), h->magic);
|
fprintf (file, _(" magic : %08lx\n"), h->magic);
|
||||||
fprintf (file, _(" cputype : %08lx (%s)\n"), h->cputype,
|
fprintf (file, _(" cputype : %08lx (%s)\n"), h->cputype,
|
||||||
bfd_mach_o_get_name (bfd_mach_o_cpu_name, h->cputype));
|
bfd_mach_o_get_name (bfd_mach_o_cpu_name, h->cputype));
|
||||||
@ -3232,7 +3235,7 @@ bfd_mach_o_print_private_header (bfd *abfd, FILE *file)
|
|||||||
fprintf (file, _(" sizeofcmds: %08lx\n"), h->sizeofcmds);
|
fprintf (file, _(" sizeofcmds: %08lx\n"), h->sizeofcmds);
|
||||||
fprintf (file, _(" flags : %08lx ("), h->flags);
|
fprintf (file, _(" flags : %08lx ("), h->flags);
|
||||||
bfd_mach_o_print_flags (bfd_mach_o_header_flags_name, h->flags, file);
|
bfd_mach_o_print_flags (bfd_mach_o_header_flags_name, h->flags, file);
|
||||||
fprintf (file, _(")\n"));
|
fputs (_(")\n"), file);
|
||||||
fprintf (file, _(" reserved : %08x\n"), h->reserved);
|
fprintf (file, _(" reserved : %08x\n"), h->reserved);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3243,8 +3246,8 @@ bfd_mach_o_print_section_map (bfd *abfd, FILE *file)
|
|||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
unsigned int sec_nbr = 0;
|
unsigned int sec_nbr = 0;
|
||||||
|
|
||||||
fprintf (file, _("Segments and Sections:\n"));
|
fputs (_("Segments and Sections:\n"), file);
|
||||||
fprintf (file, _(" #: Segment name Section name Address\n"));
|
fputs (_(" #: Segment name Section name Address\n"), file);
|
||||||
|
|
||||||
for (i = 0; i < mdata->header.ncmds; i++)
|
for (i = 0; i < mdata->header.ncmds; i++)
|
||||||
{
|
{
|
||||||
@ -3278,6 +3281,26 @@ bfd_mach_o_print_section_map (bfd *abfd, FILE *file)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return the size of an entry for section SEC.
|
||||||
|
Must be called only for symbol pointer section and symbol stubs
|
||||||
|
sections. */
|
||||||
|
|
||||||
|
static unsigned int
|
||||||
|
bfd_mach_o_section_get_entry_size (bfd *abfd, bfd_mach_o_section *sec)
|
||||||
|
{
|
||||||
|
switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
|
||||||
|
{
|
||||||
|
case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS:
|
||||||
|
case BFD_MACH_O_S_LAZY_SYMBOL_POINTERS:
|
||||||
|
return bfd_mach_o_wide_p (abfd) ? 8 : 4;
|
||||||
|
case BFD_MACH_O_S_SYMBOL_STUBS:
|
||||||
|
return sec->reserved2;
|
||||||
|
default:
|
||||||
|
BFD_FAIL ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Return the number of indirect symbols for a section.
|
/* Return the number of indirect symbols for a section.
|
||||||
Must be called only for symbol pointer section and symbol stubs
|
Must be called only for symbol pointer section and symbol stubs
|
||||||
sections. */
|
sections. */
|
||||||
@ -3287,22 +3310,11 @@ bfd_mach_o_section_get_nbr_indirect (bfd *abfd, bfd_mach_o_section *sec)
|
|||||||
{
|
{
|
||||||
unsigned int elsz;
|
unsigned int elsz;
|
||||||
|
|
||||||
switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
|
elsz = bfd_mach_o_section_get_entry_size (abfd, sec);
|
||||||
{
|
if (elsz == 0)
|
||||||
case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS:
|
return 0;
|
||||||
case BFD_MACH_O_S_LAZY_SYMBOL_POINTERS:
|
|
||||||
elsz = bfd_mach_o_wide_p (abfd) ? 8 : 4;
|
|
||||||
return sec->size / elsz;
|
|
||||||
case BFD_MACH_O_S_SYMBOL_STUBS:
|
|
||||||
elsz = sec->reserved2;
|
|
||||||
if (elsz)
|
|
||||||
return sec->size / elsz;
|
|
||||||
else
|
else
|
||||||
return 0;
|
return sec->size / elsz;
|
||||||
default:
|
|
||||||
BFD_FAIL ();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -3515,6 +3527,8 @@ bfd_mach_o_print_dysymtab (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
bfd_mach_o_section *sec = mdata->sections[i];
|
bfd_mach_o_section *sec = mdata->sections[i];
|
||||||
unsigned int j, first, last;
|
unsigned int j, first, last;
|
||||||
bfd_mach_o_symtab_command *symtab = mdata->symtab;
|
bfd_mach_o_symtab_command *symtab = mdata->symtab;
|
||||||
|
bfd_vma addr;
|
||||||
|
bfd_vma entry_size;
|
||||||
|
|
||||||
switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
|
switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
|
||||||
{
|
{
|
||||||
@ -3523,13 +3537,17 @@ bfd_mach_o_print_dysymtab (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
case BFD_MACH_O_S_SYMBOL_STUBS:
|
case BFD_MACH_O_S_SYMBOL_STUBS:
|
||||||
first = sec->reserved1;
|
first = sec->reserved1;
|
||||||
last = first + bfd_mach_o_section_get_nbr_indirect (abfd, sec);
|
last = first + bfd_mach_o_section_get_nbr_indirect (abfd, sec);
|
||||||
|
addr = sec->addr;
|
||||||
|
entry_size = bfd_mach_o_section_get_entry_size (abfd, sec);
|
||||||
fprintf (file, " for section %s.%s:\n",
|
fprintf (file, " for section %s.%s:\n",
|
||||||
sec->segname, sec->sectname);
|
sec->segname, sec->sectname);
|
||||||
for (j = first; j < last; j++)
|
for (j = first; j < last; j++)
|
||||||
{
|
{
|
||||||
unsigned int isym = dysymtab->indirect_syms[j];
|
unsigned int isym = dysymtab->indirect_syms[j];
|
||||||
|
|
||||||
fprintf (file, " %5u: 0x%08x (%u)", j, isym, isym);
|
fprintf (file, " ");
|
||||||
|
fprintf_vma (file, addr);
|
||||||
|
fprintf (file, " %5u: 0x%08x", j, isym);
|
||||||
if (isym & BFD_MACH_O_INDIRECT_SYMBOL_LOCAL)
|
if (isym & BFD_MACH_O_INDIRECT_SYMBOL_LOCAL)
|
||||||
fprintf (file, " LOCAL");
|
fprintf (file, " LOCAL");
|
||||||
if (isym & BFD_MACH_O_INDIRECT_SYMBOL_ABS)
|
if (isym & BFD_MACH_O_INDIRECT_SYMBOL_ABS)
|
||||||
@ -3539,6 +3557,7 @@ bfd_mach_o_print_dysymtab (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
&& symtab->symbols[isym].symbol.name)
|
&& symtab->symbols[isym].symbol.name)
|
||||||
fprintf (file, " %s", symtab->symbols[isym].symbol.name);
|
fprintf (file, " %s", symtab->symbols[isym].symbol.name);
|
||||||
fprintf (file, "\n");
|
fprintf (file, "\n");
|
||||||
|
addr += entry_size;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
19
bfd/mach-o.h
19
bfd/mach-o.h
@ -166,14 +166,17 @@ bfd_mach_o_cpu_subtype;
|
|||||||
|
|
||||||
typedef enum bfd_mach_o_filetype
|
typedef enum bfd_mach_o_filetype
|
||||||
{
|
{
|
||||||
BFD_MACH_O_MH_OBJECT = 1,
|
BFD_MACH_O_MH_OBJECT = 0x01,
|
||||||
BFD_MACH_O_MH_EXECUTE = 2,
|
BFD_MACH_O_MH_EXECUTE = 0x02,
|
||||||
BFD_MACH_O_MH_FVMLIB = 3,
|
BFD_MACH_O_MH_FVMLIB = 0x03,
|
||||||
BFD_MACH_O_MH_CORE = 4,
|
BFD_MACH_O_MH_CORE = 0x04,
|
||||||
BFD_MACH_O_MH_PRELOAD = 5,
|
BFD_MACH_O_MH_PRELOAD = 0x05,
|
||||||
BFD_MACH_O_MH_DYLIB = 6,
|
BFD_MACH_O_MH_DYLIB = 0x06,
|
||||||
BFD_MACH_O_MH_DYLINKER = 7,
|
BFD_MACH_O_MH_DYLINKER = 0x07,
|
||||||
BFD_MACH_O_MH_BUNDLE = 8
|
BFD_MACH_O_MH_BUNDLE = 0x08,
|
||||||
|
BFD_MACH_O_MH_DYLIB_STUB = 0x09,
|
||||||
|
BFD_MACH_O_MH_DSYM = 0x0a,
|
||||||
|
BFD_MACH_O_MH_KEXT_BUNDLE = 0x0b
|
||||||
}
|
}
|
||||||
bfd_mach_o_filetype;
|
bfd_mach_o_filetype;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user