mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
73784fa565
When GNU_PROPERTY_NO_COPY_ON_PROTECTED is set, it indicates that there are no copy relocations against protected data symbols. When linker sees GNU_PROPERTY_NO_COPY_ON_PROTECTED on any input relocatable file, it sets extern_protected_data to FALSE. bfd/ * elf32-i386.c (elf_i386_link_setup_gnu_properties): Set extern_protected_data to FALSE if GNU_PROPERTY_NO_COPY_ON_PROTECTED is set on any input relocatable file. * elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): Likewise. ld/ * testsuite/ld-i386/i386.exp: Run protected7. * testsuite/ld-i386/protected7.d: New file. * testsuite/ld-i386/protected7.s: Likewise. * testsuite/ld-x86-64/protected8.d: Likewise. * testsuite/ld-x86-64/protected8.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run protected8.
32 lines
529 B
ArmAsm
32 lines
529 B
ArmAsm
.protected foo
|
|
.globl foo
|
|
.data
|
|
.align 4
|
|
.type foo, @object
|
|
.size foo, 4
|
|
foo:
|
|
.long 1
|
|
.text
|
|
.globl bar
|
|
.type bar, @function
|
|
bar:
|
|
movl foo(%rip), %eax
|
|
ret
|
|
.size bar, .-bar
|
|
|
|
.section ".note.gnu.property", "a"
|
|
.p2align 3
|
|
.long 1f - 0f /* name length. */
|
|
.long 3f - 2f /* data length. */
|
|
/* NT_GNU_PROPERTY_TYPE_0 */
|
|
.long 5 /* note type. */
|
|
0: .asciz "GNU" /* vendor name. */
|
|
1:
|
|
.p2align 3
|
|
2:
|
|
/* GNU_PROPERTY_NO_COPY_ON_PROTECTED */
|
|
.long 2 /* pr_type. */
|
|
.long 0 /* pr_datasz. */
|
|
.p2align 3
|
|
3:
|