diff options
author | iains <iains> | 2012-01-13 12:59:29 +0000 |
---|---|---|
committer | iains <iains> | 2012-01-13 12:59:29 +0000 |
commit | 9ecfb009dde40e26d8aca5a2cf38a83eb3853b5c (patch) | |
tree | 2ca2b97fbbdbcdd3d94f0ebd180f9121ec7fd6c3 /bfd/mach-o.c | |
parent | 3755ee0b8cd7f557b148f497fa8b68d16efd9294 (diff) | |
download | gdb-9ecfb009dde40e26d8aca5a2cf38a83eb3853b5c.tar.gz |
handle absolute indirect syms in mach-o
bfd:
* mach-o.c (bfd_mach_o_build_dysymtab_command): Handle absolute
indirect symbols.
gas:
* config/obj-macho.c (obj_mach_o_set_indirect_symbols): Handle
absolute indirect symbols.
gas/testsuite:
* gas/mach-o/dysymtab-3.d: New.
* gas/mach-o/symbols-7.s: New.
Diffstat (limited to 'bfd/mach-o.c')
-rw-r--r-- | bfd/mach-o.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/bfd/mach-o.c b/bfd/mach-o.c index 262531970f5..a13ac4ea69d 100644 --- a/bfd/mach-o.c +++ b/bfd/mach-o.c @@ -2210,6 +2210,10 @@ bfd_mach_o_build_dysymtab_command (bfd *abfd, { if (isyms[j] == NULL) dsym->indirect_syms[n] = BFD_MACH_O_INDIRECT_SYM_LOCAL; + else if (isyms[j]->symbol.section == bfd_abs_section_ptr + && ! (isyms[j]->n_type & BFD_MACH_O_N_EXT)) + dsym->indirect_syms[n] = BFD_MACH_O_INDIRECT_SYM_LOCAL + | BFD_MACH_O_INDIRECT_SYM_ABS; else dsym->indirect_syms[n] = isyms[j]->symbol.udata.i; } |