7d504122ef
* xcofflink.c (xcoff_mark_symbol_by_name): New function. (bfd_xcoff_size_dynamic_sections): Use it to mark the entry, init and fini functions. Do garbage collection for objects without an entry point too. ld/testsuite/ * ld-powerpc/aix-gc-1.s, ld-powerpc/aix-gc-1.ex, ld-powerpc/aix-gc-1-32.dd, ld-powerpc/aix-gc-1-64.dd, ld-powerpc/aix-weak-1-gcdso.dnd, ld-powerpc/aix-weak-1-gcdso.hd, ld-powerpc/aix-weak-1-gcdso.nd: New tests. * ld-powerpc/aix52.exp: Run them.
55 lines
816 B
ArmAsm
55 lines
816 B
ArmAsm
.macro loadtoc,sym
|
|
.if size == 32
|
|
lwz 1,\sym(2)
|
|
.else
|
|
ld 1,\sym(2)
|
|
.endif
|
|
.endm
|
|
|
|
.toc
|
|
LC01: .tc indirect1[TC],indirect1[RW]
|
|
LC02: .tc block[TC],block[RW]
|
|
|
|
.csect .unused_local[PR]
|
|
.unused_local:
|
|
bl .unused_global
|
|
|
|
.globl .init_function
|
|
.csect .init_function[PR]
|
|
.init_function:
|
|
loadtoc LC01
|
|
|
|
.globl .fini_function
|
|
.csect .fini_function[PR]
|
|
.fini_function:
|
|
loadtoc LC02
|
|
|
|
.globl .unused_global
|
|
.csect .unused_global[PR]
|
|
.unused_global:
|
|
bl .unused_local
|
|
|
|
.globl .exported_global
|
|
.csect .exported_global[PR]
|
|
.exported_global:
|
|
bl .indirect2
|
|
|
|
.globl .indirect1
|
|
.csect .indirect1[PR]
|
|
.indirect1:
|
|
lwz 8,4(8)
|
|
|
|
.csect .indirect2[PR]
|
|
.indirect2:
|
|
lwz 8,8(8)
|
|
|
|
.globl .indirect3
|
|
.csect .indirect3[PR]
|
|
.indirect3:
|
|
lwz 8,12(8)
|
|
|
|
.globl block
|
|
.csect block[RW]
|
|
block:
|
|
.long indirect3
|
|
.long 0x11223344
|