From 687be931eb3d3064e1ae6026f0c415048d9914cf Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Fri, 13 Jan 2012 12:59:30 +0000 Subject: 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. --- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/mach-o/dysymtab-3.d | 22 ++++++++++++++++++++++ gas/testsuite/gas/mach-o/symbols-7.s | 24 ++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 gas/testsuite/gas/mach-o/dysymtab-3.d create mode 100644 gas/testsuite/gas/mach-o/symbols-7.s (limited to 'gas/testsuite') diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index cb0c64d..01418cb 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2012-01-13 Iain Sandoe + * gas/mach-o/dysymtab-3.d: New. + * gas/mach-o/symbols-7.s: New. + +2012-01-13 Iain Sandoe + * gas/mach-o/dysymtab-2.d: Update to include the set VMA. * gas/mach-o/symbols-1-64.d: Likewise. * gas/mach-o/symbols-1.d: Likewise. diff --git a/gas/testsuite/gas/mach-o/dysymtab-3.d b/gas/testsuite/gas/mach-o/dysymtab-3.d new file mode 100644 index 0000000..6d2430f --- /dev/null +++ b/gas/testsuite/gas/mach-o/dysymtab-3.d @@ -0,0 +1,22 @@ +#as: -L +#objdump: -P dysymtab +#target: i?86-*-darwin* powerpc-*-darwin* +#source: symbols-7.s +.*: +file format mach-o.* +#... +Load command dysymtab: +( )+local symbols: idx:( )+0 num: 4( )+\(nxtidx: 4\) +( )+external symbols: idx:( )+4 num: 1( )+\(nxtidx: 5\) +( )+undefined symbols: idx:( )+5 num: 0( )+\(nxtidx: 5\) +( )+table of content: off: 0x00000000 num: 0( )+\(endoff: 0x00000000\) +( )+module table: off: 0x00000000 num: 0( )+\(endoff: 0x00000000\) +( )+external reference table: off: 0x00000000 num: 0( )+\(endoff: 0x00000000\) +( )+indirect symbol table: off: 0x00000170 num: 4( )+\(endoff: 0x00000180\) +( )+external relocation table: off: 0x00000000 num: 0( )+\(endoff: 0x00000000\) +( )+local relocation table: off: 0x00000000 num: 0( )+\(endoff: 0x00000000\) +( )+indirect symbols: +( )+for section __DATA.__nl_symbol_ptr: +( )+0000000000000014( )+0: 0xc0000000 LOCAL ABSOLUTE +( )+0000000000000018( )+1: 0x80000000 LOCAL +( )+000000000000001c( )+2: 0xc0000000 LOCAL ABSOLUTE +( )+0000000000000020( )+3: 0x00000004 c diff --git a/gas/testsuite/gas/mach-o/symbols-7.s b/gas/testsuite/gas/mach-o/symbols-7.s new file mode 100644 index 0000000..8df048d --- /dev/null +++ b/gas/testsuite/gas/mach-o/symbols-7.s @@ -0,0 +1,24 @@ + +L01: .space 10 + +L02: .space 10 + + + .non_lazy_symbol_pointer + + a = 5 + .indirect_symbol a + .space 4 + + .indirect_symbol L01 + .long L01-. + + .indirect_symbol b + .space 4 + + b = 10 + + .globl c + c = 20 + .indirect_symbol c + .space 4 -- cgit v1.1