[PATCH] D43920: Set DF_TEXTREL instead of creating an empty DT_TEXTREL.
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 1 14:39:03 PST 2018
LGTM, but please split the patch. Renaming the test in the same commit
makes it impossible to read the test change.
Cheers,
Rafael
Rui Ueyama via Phabricator <reviews at reviews.llvm.org> writes:
> ruiu updated this revision to Diff 136607.
> ruiu added a comment.
>
> - restore code to create DT_TEXTREL
>
>
> https://reviews.llvm.org/D43920
>
> Files:
> lld/ELF/SyntheticSections.cpp
> lld/test/ELF/Inputs/ztext-text-notext.s
> lld/test/ELF/Inputs/ztext.s
> lld/test/ELF/ztext-text-notext.s
> lld/test/ELF/ztext.s
>
> Index: lld/test/ELF/ztext.s
> ===================================================================
> --- /dev/null
> +++ lld/test/ELF/ztext.s
> @@ -0,0 +1,40 @@
> +# REQUIRES: x86
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/ztext.s -o %t2.o
> +# RUN: ld.lld %t2.o -o %t2.so -shared
> +# RUN: ld.lld -z notext %t.o %t2.so -o %t -shared
> +# RUN: llvm-readobj -dynamic-table -r %t | FileCheck %s
> +# RUN: ld.lld -z notext %t.o %t2.so -o %t2 -pie
> +# RUN: llvm-readobj -dynamic-table -r %t2 | FileCheck %s
> +# RUN: ld.lld -z notext %t.o %t2.so -o %t3
> +# RUN: llvm-readobj -dynamic-table -r %t3 | FileCheck --check-prefix=STATIC %s
> +
> +# If the preference is to have text relocations, don't create plt of copy relocations.
> +
> +# CHECK: Relocations [
> +# CHECK-NEXT: Section {{.*}} .rela.dyn {
> +# CHECK-NEXT: 0x1000 R_X86_64_RELATIVE - 0x1000
> +# CHECK-NEXT: 0x1008 R_X86_64_64 bar 0x0
> +# CHECK-NEXT: 0x1010 R_X86_64_PC64 zed 0x0
> +# CHECK-NEXT: }
> +# CHECK-NEXT: ]
> +
> +# CHECK: DynamicSection [
> +# CHECK: FLAGS TEXTREL
> +# CHECK: TEXTREL 0x0
> +
> +# STATIC: Relocations [
> +# STATIC-NEXT: Section {{.*}} .rela.dyn {
> +# STATIC-NEXT: 0x201008 R_X86_64_64 bar 0x0
> +# STATIC-NEXT: 0x201010 R_X86_64_PC64 zed 0x0
> +# STATIC-NEXT: }
> +# STATIC-NEXT: ]
> +
> +# STATIC: DynamicSection [
> +# STATIC: FLAGS TEXTREL
> +# STATIC: TEXTREL 0x0
> +
> +foo:
> +.quad foo
> +.quad bar
> +.quad zed - .
> Index: lld/test/ELF/ztext-text-notext.s
> ===================================================================
> --- lld/test/ELF/ztext-text-notext.s
> +++ /dev/null
> @@ -1,36 +0,0 @@
> -# REQUIRES: x86
> -# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
> -# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/ztext-text-notext.s -o %t2.o
> -# RUN: ld.lld %t2.o -o %t2.so -shared
> -# RUN: ld.lld -z notext %t.o %t2.so -o %t -shared
> -# RUN: llvm-readobj -dynamic-table -r %t | FileCheck %s
> -# RUN: ld.lld -z notext %t.o %t2.so -o %t2 -pie
> -# RUN: llvm-readobj -dynamic-table -r %t2 | FileCheck %s
> -# RUN: ld.lld -z notext %t.o %t2.so -o %t3
> -# RUN: llvm-readobj -dynamic-table -r %t3 | FileCheck --check-prefix=STATIC %s
> -
> -# If the preference is to have text relocations, don't create plt of copy relocations.
> -
> -# CHECK: Relocations [
> -# CHECK-NEXT: Section {{.*}} .rela.dyn {
> -# CHECK-NEXT: 0x1000 R_X86_64_RELATIVE - 0x1000
> -# CHECK-NEXT: 0x1008 R_X86_64_64 bar 0x0
> -# CHECK-NEXT: 0x1010 R_X86_64_PC64 zed 0x0
> -# CHECK-NEXT: }
> -# CHECK-NEXT: ]
> -# CHECK: DynamicSection [
> -# CHECK: 0x0000000000000016 TEXTREL 0x0
> -
> -# STATIC: Relocations [
> -# STATIC-NEXT: Section {{.*}} .rela.dyn {
> -# STATIC-NEXT: 0x201008 R_X86_64_64 bar 0x0
> -# STATIC-NEXT: 0x201010 R_X86_64_PC64 zed 0x0
> -# STATIC-NEXT: }
> -# STATIC-NEXT: ]
> -# STATIC: DynamicSection [
> -# STATIC: 0x0000000000000016 TEXTREL 0x0
> -
> -foo:
> -.quad foo
> -.quad bar
> -.quad zed - .
> Index: lld/test/ELF/Inputs/ztext-text-notext.s
> ===================================================================
> --- /dev/null
> +++ lld/test/ELF/Inputs/ztext-text-notext.s
> @@ -1,10 +0,0 @@
> - .global bar
> - .type bar, @object
> - .size bar, 8
> -bar:
> - .quad 0
> -
> - .global zed
> - .type zed, @function
> -zed:
> - nop
> Index: lld/ELF/SyntheticSections.cpp
> ===================================================================
> --- lld/ELF/SyntheticSections.cpp
> +++ lld/ELF/SyntheticSections.cpp
> @@ -1046,6 +1046,8 @@
> DtFlags |= DF_ORIGIN;
> DtFlags1 |= DF_1_ORIGIN;
> }
> + if (!Config->ZText)
> + DtFlags |= DF_TEXTREL;
>
> if (DtFlags)
> addInt(DT_FLAGS, DtFlags);
More information about the llvm-commits
mailing list