c865e45b1b
* coff-rs6000.c (xcoff_howto_table): Change size to 0 and bitsize to 1. (_bfd_xcoff_reloc_type_lookup): Handle BFD_RELOC_NONE. * coff64-rs6000.c (xcoff64_howto_table): Change size to 0 and bitsize to 1. (xcoff64_reloc_type_lookup): Handle BFD_RELOC_NONE. gas/ * write.h (fix_at_start): Declare. * write.c (fix_new_internal): Add at_beginning parameter. Use it instead of REVERSE_SORT_RELOCS. Fix the handling of seg_fix_tailP for the at_beginning/REVERSE_SORT_RELOCS case. (fix_new, fix_new_exp): Update accordingly. (fix_at_start): New function. * config/tc-ppc.c (md_pseudo_table): Add .ref to the OBJ_XCOFF section. (ppc_ref): New function, for OBJ_XCOFF. (md_apply_fix): Handle BFD_RELOC_NONE for OBJ_XCOFF. * config/te-i386aix.h (REVERSE_SORT_RELOCS): Remove #undef. gas/testsuite/ * gas/ppc/xcoff-ref-1.s, gas/ppc/xcoff-ref-1.l: New test. * gas/ppc/aix.exp: Run it. ld/testsuite/ * ld-powerpc/aix-ref-1-32.od, ld-powerpc/aix-ref-1-64.od, ld-powerpc/aix-ref-1.s: New tests. * ld-powerpc/aix52.exp: Run them.
57 lines
568 B
ArmAsm
57 lines
568 B
ArmAsm
.macro loadtoc,sym
|
|
.if size == 32
|
|
lwz 1,\sym(2)
|
|
.else
|
|
ld 1,\sym(2)
|
|
.endif
|
|
.endm
|
|
|
|
.toc
|
|
LC01: .tc stuff[TC],stuff[RW]
|
|
|
|
.globl foo1
|
|
.csect foo1[pr]
|
|
foo1:
|
|
.align 8
|
|
nop
|
|
loadtoc LC01
|
|
|
|
.globl foo2
|
|
.csect foo2[pr]
|
|
foo2:
|
|
nop
|
|
loadtoc LC01
|
|
.ref foo4 , foo6
|
|
|
|
.globl foo3
|
|
.csect foo3[pr]
|
|
foo3:
|
|
nop
|
|
loadtoc LC01
|
|
|
|
.globl foo4
|
|
.csect foo4[pr]
|
|
foo4:
|
|
nop
|
|
loadtoc LC01
|
|
|
|
.globl foo5
|
|
.csect foo5[pr]
|
|
foo5:
|
|
nop
|
|
loadtoc LC01
|
|
.ref foo3
|
|
|
|
.globl foo6
|
|
.csect foo6[pr]
|
|
foo6:
|
|
nop
|
|
loadtoc LC01
|
|
|
|
.csect foo1[pr]
|
|
blr
|
|
.ref foo2
|
|
|
|
.csect stuff[rw]
|
|
stuff:
|
|
.long 1
|