mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-16 00:27:30 +00:00
reverse the order of relocs in mach-o gas output.
gas: * config/obj-macho.c (obj_mach_o_reorder_section_relocs): New. * config/obj-macho.h (SET_SECTION_RELOCS): Define. (obj_mach_o_reorder_section_relocs): Declare. gas/testsuite: * gas/all/redef2.d: Skip for Darwin. * gas/all/redef3.d: Likewise. * gas/all/weakref1.d: Likewise. * gas/macros/irp.d: Likewise. * gas/macros/repeat.d: Likewise. * gas/macros/rept.d: Likewise. * gas/macros/test2.d: Likewise. * gas/macros/vararg.d: Likewise. * gas/mach-o/macro-irp.d: New. * gas/mach-o/macro-repeat.d: New. * gas/mach-o/macro-rept.d: New. * gas/mach-o/macro-test2.d: New. * gas/mach-o/macro-vararg.d: New. * gas/mach-o/redef2.d: New. * gas/mach-o/redef3.d: New.
This commit is contained in:
parent
0ee339bc47
commit
34dd18bca5
@ -1,3 +1,9 @@
|
|||||||
|
2012-01-13 Tristan Gingold <gingold@adacore.com>
|
||||||
|
|
||||||
|
* config/obj-macho.c (obj_mach_o_reorder_section_relocs): New.
|
||||||
|
* config/obj-macho.h (SET_SECTION_RELOCS): Define.
|
||||||
|
(obj_mach_o_reorder_section_relocs): Declare.
|
||||||
|
|
||||||
2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
|
2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
|
||||||
|
|
||||||
* config/obj-macho.c (obj_mach_o_set_indirect_symbols): Handle
|
* config/obj-macho.c (obj_mach_o_set_indirect_symbols): Handle
|
||||||
|
@ -1679,6 +1679,23 @@ obj_mach_o_frob_file_after_relocs (void)
|
|||||||
bfd_map_over_sections (stdoutput, obj_mach_o_set_indirect_symbols, (char *) 0);
|
bfd_map_over_sections (stdoutput, obj_mach_o_set_indirect_symbols, (char *) 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reverse relocations order to make ld happy. */
|
||||||
|
|
||||||
|
void
|
||||||
|
obj_mach_o_reorder_section_relocs (asection *sec, arelent **rels, unsigned int n)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
unsigned int max = n / 2;
|
||||||
|
|
||||||
|
for (i = 0; i < max; i++)
|
||||||
|
{
|
||||||
|
arelent *r = rels[i];
|
||||||
|
rels[i] = rels[n - i - 1];
|
||||||
|
rels[n - i - 1] = r;
|
||||||
|
}
|
||||||
|
bfd_set_reloc (stdoutput, sec, rels, n);
|
||||||
|
}
|
||||||
|
|
||||||
/* Support stabs for mach-o. */
|
/* Support stabs for mach-o. */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -68,6 +68,11 @@ void obj_mach_o_post_relax_hook (void);
|
|||||||
#define obj_frob_file_after_relocs obj_mach_o_frob_file_after_relocs
|
#define obj_frob_file_after_relocs obj_mach_o_frob_file_after_relocs
|
||||||
extern void obj_mach_o_frob_file_after_relocs (void);
|
extern void obj_mach_o_frob_file_after_relocs (void);
|
||||||
|
|
||||||
|
void obj_mach_o_reorder_section_relocs (asection *, arelent **, unsigned int);
|
||||||
|
|
||||||
|
#define SET_SECTION_RELOCS(sec, relocs, n) \
|
||||||
|
obj_mach_o_reorder_section_relocs (sec, relocs, n)
|
||||||
|
|
||||||
#define EMIT_SECTION_SYMBOLS 0
|
#define EMIT_SECTION_SYMBOLS 0
|
||||||
|
|
||||||
#define OBJ_PROCESS_STAB(SEG,W,S,T,O,D) obj_mach_o_process_stab(W,S,T,O,D)
|
#define OBJ_PROCESS_STAB(SEG,W,S,T,O,D) obj_mach_o_process_stab(W,S,T,O,D)
|
||||||
|
@ -1,3 +1,21 @@
|
|||||||
|
2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
|
||||||
|
|
||||||
|
* gas/all/redef2.d: Skip for Darwin.
|
||||||
|
* gas/all/redef3.d: Likewise.
|
||||||
|
* gas/all/weakref1.d: Likewise.
|
||||||
|
* gas/macros/irp.d: Likewise.
|
||||||
|
* gas/macros/repeat.d: Likewise.
|
||||||
|
* gas/macros/rept.d: Likewise.
|
||||||
|
* gas/macros/test2.d: Likewise.
|
||||||
|
* gas/macros/vararg.d: Likewise.
|
||||||
|
* gas/mach-o/macro-irp.d: New.
|
||||||
|
* gas/mach-o/macro-repeat.d: New.
|
||||||
|
* gas/mach-o/macro-rept.d: New.
|
||||||
|
* gas/mach-o/macro-test2.d: New.
|
||||||
|
* gas/mach-o/macro-vararg.d: New.
|
||||||
|
* gas/mach-o/redef2.d: New.
|
||||||
|
* gas/mach-o/redef3.d: New.
|
||||||
|
|
||||||
2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
|
2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
|
||||||
|
|
||||||
* gas/mach-o/dysymtab-3.d: New.
|
* gas/mach-o/dysymtab-3.d: New.
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#objdump: -rs -j .data -j "\$DATA\$"
|
#objdump: -rs -j .data -j "\$DATA\$"
|
||||||
#name: .equ redefinitions (2)
|
#name: .equ redefinitions (2)
|
||||||
|
#not-target: *-*-darwin*
|
||||||
|
|
||||||
.*: .*
|
.*: .*
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#objdump: -rsj .data
|
#objdump: -rsj .data
|
||||||
#name: .equ redefinitions (3)
|
#name: .equ redefinitions (3)
|
||||||
#not-target: arc-*-*
|
#not-target: arc-*-* *-*darwin*
|
||||||
|
|
||||||
.*: .*
|
.*: .*
|
||||||
|
|
||||||
|
@ -2,8 +2,9 @@
|
|||||||
#name: weakref tests, relocations
|
#name: weakref tests, relocations
|
||||||
# ecoff (OSF/alpha) lacks .weak support
|
# ecoff (OSF/alpha) lacks .weak support
|
||||||
# pdp11 lacks .long
|
# pdp11 lacks .long
|
||||||
|
# darwin (mach-o) reverses the order of relocs.
|
||||||
# the following must be present in all weakref1*.d
|
# the following must be present in all weakref1*.d
|
||||||
#not-target: alpha*-*-osf* *-*-ecoff pdp11-*-aout
|
#not-target: alpha*-*-osf* *-*-ecoff pdp11-*-aout *-*-darwin*
|
||||||
|
|
||||||
#...
|
#...
|
||||||
RELOCATION RECORDS FOR \[(\.text|\$CODE\$)\]:
|
RELOCATION RECORDS FOR \[(\.text|\$CODE\$)\]:
|
||||||
|
14
gas/testsuite/gas/mach-o/macro-irp.d
Normal file
14
gas/testsuite/gas/mach-o/macro-irp.d
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#objdump: -r
|
||||||
|
#name: macro irp
|
||||||
|
#source: ../macros/irp.s
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR .*
|
||||||
|
OFFSET[ ]+TYPE[ ]+VALUE.*
|
||||||
|
0+14[ ]+[a-zA-Z0-9_]+[ ]+bar3
|
||||||
|
0+10[ ]+[a-zA-Z0-9_]+[ ]+bar2
|
||||||
|
0+0c[ ]+[a-zA-Z0-9_]+[ ]+bar1
|
||||||
|
0+08[ ]+[a-zA-Z0-9_]+[ ]+foo3
|
||||||
|
0+04[ ]+[a-zA-Z0-9_]+[ ]+foo2
|
||||||
|
0+00[ ]+[a-zA-Z0-9_]+[ ]+foo1
|
44
gas/testsuite/gas/mach-o/macro-repeat.d
Normal file
44
gas/testsuite/gas/mach-o/macro-repeat.d
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#objdump: -r
|
||||||
|
#name: nested irp/irpc/rept
|
||||||
|
#source: ../macros/repeat.s
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR .*
|
||||||
|
OFFSET[ ]+TYPE[ ]+VALUE.*
|
||||||
|
0+8c[ ]+[a-zA-Z0-9_]+[ ]+rept_rept
|
||||||
|
0+88[ ]+[a-zA-Z0-9_]+[ ]+rept_rept
|
||||||
|
0+84[ ]+[a-zA-Z0-9_]+[ ]+rept_rept
|
||||||
|
0+80[ ]+[a-zA-Z0-9_]+[ ]+rept_rept
|
||||||
|
0+7c[ ]+[a-zA-Z0-9_]+[ ]+rept_irpc_8
|
||||||
|
0+78[ ]+[a-zA-Z0-9_]+[ ]+rept_irpc_9
|
||||||
|
0+74[ ]+[a-zA-Z0-9_]+[ ]+rept_irpc_8
|
||||||
|
0+70[ ]+[a-zA-Z0-9_]+[ ]+rept_irpc_9
|
||||||
|
0+6c[ ]+[a-zA-Z0-9_]+[ ]+rept_irp_8
|
||||||
|
0+68[ ]+[a-zA-Z0-9_]+[ ]+rept_irp_9
|
||||||
|
0+64[ ]+[a-zA-Z0-9_]+[ ]+rept_irp_8
|
||||||
|
0+60[ ]+[a-zA-Z0-9_]+[ ]+rept_irp_9
|
||||||
|
0+5c[ ]+[a-zA-Z0-9_]+[ ]+irpc_rept_2
|
||||||
|
0+58[ ]+[a-zA-Z0-9_]+[ ]+irpc_rept_2
|
||||||
|
0+54[ ]+[a-zA-Z0-9_]+[ ]+irpc_rept_1
|
||||||
|
0+50[ ]+[a-zA-Z0-9_]+[ ]+irpc_rept_1
|
||||||
|
0+4c[ ]+[a-zA-Z0-9_]+[ ]+irpc_irpc_28
|
||||||
|
0+48[ ]+[a-zA-Z0-9_]+[ ]+irpc_irpc_29
|
||||||
|
0+44[ ]+[a-zA-Z0-9_]+[ ]+irpc_irpc_18
|
||||||
|
0+40[ ]+[a-zA-Z0-9_]+[ ]+irpc_irpc_19
|
||||||
|
0+3c[ ]+[a-zA-Z0-9_]+[ ]+irpc_irp_28
|
||||||
|
0+38[ ]+[a-zA-Z0-9_]+[ ]+irpc_irp_29
|
||||||
|
0+34[ ]+[a-zA-Z0-9_]+[ ]+irpc_irp_18
|
||||||
|
0+30[ ]+[a-zA-Z0-9_]+[ ]+irpc_irp_19
|
||||||
|
0+2c[ ]+[a-zA-Z0-9_]+[ ]+irp_rept_2
|
||||||
|
0+28[ ]+[a-zA-Z0-9_]+[ ]+irp_rept_2
|
||||||
|
0+24[ ]+[a-zA-Z0-9_]+[ ]+irp_rept_1
|
||||||
|
0+20[ ]+[a-zA-Z0-9_]+[ ]+irp_rept_1
|
||||||
|
0+1c[ ]+[a-zA-Z0-9_]+[ ]+irp_irpc_28
|
||||||
|
0+18[ ]+[a-zA-Z0-9_]+[ ]+irp_irpc_29
|
||||||
|
0+14[ ]+[a-zA-Z0-9_]+[ ]+irp_irpc_18
|
||||||
|
0+10[ ]+[a-zA-Z0-9_]+[ ]+irp_irpc_19
|
||||||
|
0+0c[ ]+[a-zA-Z0-9_]+[ ]+irp_irp_28
|
||||||
|
0+08[ ]+[a-zA-Z0-9_]+[ ]+irp_irp_29
|
||||||
|
0+04[ ]+[a-zA-Z0-9_]+[ ]+irp_irp_18
|
||||||
|
0+00[ ]+[a-zA-Z0-9_]+[ ]+irp_irp_19
|
11
gas/testsuite/gas/mach-o/macro-rept.d
Normal file
11
gas/testsuite/gas/mach-o/macro-rept.d
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#objdump: -r
|
||||||
|
#name: macro rept
|
||||||
|
#source: ../macros/rept.s
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR .*
|
||||||
|
OFFSET[ ]+TYPE[ ]+VALUE.*
|
||||||
|
0+08[ ]+[a-zA-Z0-9_]+[ ]+foo1
|
||||||
|
0+04[ ]+[a-zA-Z0-9_]+[ ]+foo1
|
||||||
|
0+00[ ]+[a-zA-Z0-9_]+[ ]+foo1
|
11
gas/testsuite/gas/mach-o/macro-test2.d
Normal file
11
gas/testsuite/gas/mach-o/macro-test2.d
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#objdump: -r
|
||||||
|
#name: macro test 2
|
||||||
|
#source: ../macros/test2.s
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR .*
|
||||||
|
OFFSET[ ]+TYPE[ ]+VALUE.*
|
||||||
|
0+08[ ]+[a-zA-Z0-9_]+[ ]+foo3
|
||||||
|
0+04[ ]+[a-zA-Z0-9_]+[ ]+foo2
|
||||||
|
0+00[ ]+[a-zA-Z0-9_]+[ ]+foo1
|
14
gas/testsuite/gas/mach-o/macro-vararg.d
Normal file
14
gas/testsuite/gas/mach-o/macro-vararg.d
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#objdump: -r
|
||||||
|
#name: macro vararg
|
||||||
|
#source: ../macros/vararg.s
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR .*
|
||||||
|
OFFSET[ ]+TYPE[ ]+VALUE.*
|
||||||
|
0+14[ ]+[a-zA-Z0-9_]+[ ]+foo6
|
||||||
|
0+10[ ]+[a-zA-Z0-9_]+[ ]+foo5
|
||||||
|
0+0c[ ]+[a-zA-Z0-9_]+[ ]+foo4
|
||||||
|
0+08[ ]+[a-zA-Z0-9_]+[ ]+foo3
|
||||||
|
0+04[ ]+[a-zA-Z0-9_]+[ ]+foo2
|
||||||
|
0+00[ ]+[a-zA-Z0-9_]+[ ]+foo1
|
17
gas/testsuite/gas/mach-o/redef2.d
Normal file
17
gas/testsuite/gas/mach-o/redef2.d
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#objdump: -rs -j .data -j "\$DATA\$"
|
||||||
|
#name: .equ redefinitions (2)
|
||||||
|
# identical to ../all, we just need to reverse the relocs.
|
||||||
|
#source: ../all/redef2.s
|
||||||
|
|
||||||
|
.*: .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR .*
|
||||||
|
.*
|
||||||
|
0+10.*(sym|(\.data|\$DATA\$)(\+0x0+10)?)
|
||||||
|
0+08.*xtrn
|
||||||
|
0+00.*(here|\.data|\$DATA\$)
|
||||||
|
#...
|
||||||
|
Contents of section (\.data|\$DATA\$):
|
||||||
|
0000 00000000 11111111 00000000 22222222[ ]+................[ ]*
|
||||||
|
0010 [01]00000[01]0 .*
|
||||||
|
#pass
|
17
gas/testsuite/gas/mach-o/redef3.d
Normal file
17
gas/testsuite/gas/mach-o/redef3.d
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#objdump: -rsj .data
|
||||||
|
#name: .equ redefinitions (3)
|
||||||
|
#identical to ../all/redef, we just need to reverse the relocs.
|
||||||
|
#source: ../all/redef3.s
|
||||||
|
|
||||||
|
.*: .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR .*
|
||||||
|
.*
|
||||||
|
0+10.*sym
|
||||||
|
0+08.*xtrn
|
||||||
|
0+00.*(here|\.data)
|
||||||
|
#...
|
||||||
|
Contents of section \.data:
|
||||||
|
0000 00000000 11111111 00000000 22222222[ ]+................[ ]*
|
||||||
|
0010 00000000 .*
|
||||||
|
#pass
|
@ -1,5 +1,7 @@
|
|||||||
#objdump: -r
|
#objdump: -r
|
||||||
#name: macro irp
|
#name: macro irp
|
||||||
|
#darwin (mach-o) reverses relocs.
|
||||||
|
#not-target: *-*-darwin*
|
||||||
|
|
||||||
.*: +file format .*
|
.*: +file format .*
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#objdump: -r
|
#objdump: -r
|
||||||
#name: nested irp/irpc/rept
|
#name: nested irp/irpc/rept
|
||||||
|
# darwin (mach-o) reverse relocs.
|
||||||
|
#not-target: *-*-darwin*
|
||||||
|
|
||||||
.*: +file format .*
|
.*: +file format .*
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#objdump: -r
|
#objdump: -r
|
||||||
#name: macro rept
|
#name: macro rept
|
||||||
|
#darwin (mach-o) reverses relocs.
|
||||||
|
#not-target: *-*-darwin*
|
||||||
|
|
||||||
.*: +file format .*
|
.*: +file format .*
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#objdump: -r
|
#objdump: -r
|
||||||
#name: macro test 2
|
#name: macro test 2
|
||||||
|
# darwin(mach-o) reverses the order of relocs.
|
||||||
|
#not-target: *-*-darwin*
|
||||||
|
|
||||||
.*: +file format .*
|
.*: +file format .*
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#objdump: -r
|
#objdump: -r
|
||||||
#name: macro vararg
|
#name: macro vararg
|
||||||
|
# darwin (mach-o) reverses relocs.
|
||||||
|
#not-target: *-*-darwin*
|
||||||
|
|
||||||
.*: +file format .*
|
.*: +file format .*
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user