Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ELF] -z combreloc: sort dynamic relocations by (!is_relative,symbol_…
…index,r_offset) We currently sort dynamic relocations by (!is_relative,symbol_index). Add r_offset as the third key. This makes `readelf -r` debugging easier (relocations to the same symbol are ordered by r_offset). Refactor the test combreloc.s (renamed from combrelocs.s) to check R_X86_64_RELATIVE, and delete --expand-relocs. The difference from the reverted D61477 is that we keep !is_relative as the first key. In local dynamic TLS model, DTPMOD (e.g. R_ARM_TLS_DTPMOD32 R_X86_64_DTPMOD and R_PPC{,64}_DTPMOD) may use 0 as the symbol index. Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D62141 llvm-svn: 361164
- Loading branch information
Showing
4 changed files
with
58 additions
and
105 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# REQUIRES: x86 | ||
|
||
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o | ||
# RUN: echo 'mov aaa@gotpcrel(%rip), %rax' | llvm-mc -filetype=obj -triple=x86_64 - -o %t1.o | ||
|
||
# RUN: ld.lld -shared %t.o %t1.o -o %t.so | ||
# RUN: llvm-readobj -r --dynamic-table %t.so | FileCheck %s | ||
# RUN: ld.lld -shared %t.o %t1.o -o %t.so -z combreloc | ||
# RUN: llvm-readobj -r --dynamic-table %t.so | FileCheck %s | ||
|
||
# -z combreloc is the default: sort relocations by (!IsRelative,SymIndex,r_offset), | ||
# and emit DT_RELACOUNT (except on MIPS) to indicate the number of relative | ||
# relocations. | ||
|
||
# CHECK: Relocations [ | ||
# CHECK-NEXT: Section ({{.*}}) .rela.dyn { | ||
# CHECK-NEXT: 0x3020 R_X86_64_RELATIVE - 0x3028 | ||
# CHECK-NEXT: 0x20B0 R_X86_64_GLOB_DAT aaa 0x0 | ||
# CHECK-NEXT: 0x3000 R_X86_64_64 aaa 0x0 | ||
# CHECK-NEXT: 0x3018 R_X86_64_64 aaa 0x0 | ||
# CHECK-NEXT: 0x3010 R_X86_64_64 bbb 0x0 | ||
# CHECK-NEXT: 0x3008 R_X86_64_64 ccc 0x0 | ||
# CHECK-NEXT: } | ||
# CHECK: DynamicSection [ | ||
# CHECK: RELACOUNT 1 | ||
|
||
# RUN: ld.lld -z nocombreloc -shared %t.o %t1.o -o %t.so | ||
# RUN: llvm-readobj -r --dynamic-table %t.so | FileCheck --check-prefix=NOCOMB %s | ||
|
||
# NOCOMB: Relocations [ | ||
# NOCOMB-NEXT: Section ({{.*}}) .rela.dyn { | ||
# NOCOMB-NEXT: 0x3000 R_X86_64_64 aaa 0x0 | ||
# NOCOMB-NEXT: 0x3008 R_X86_64_64 ccc 0x0 | ||
# NOCOMB-NEXT: 0x3010 R_X86_64_64 bbb 0x0 | ||
# NOCOMB-NEXT: 0x3018 R_X86_64_64 aaa 0x0 | ||
# NOCOMB-NEXT: 0x3020 R_X86_64_RELATIVE - 0x3028 | ||
# NOCOMB-NEXT: 0x20A0 R_X86_64_GLOB_DAT aaa 0x0 | ||
# NOCOMB-NEXT: } | ||
# NOCOMB: DynamicSection [ | ||
# NOCOMB-NOT: RELACOUNT | ||
|
||
.data | ||
.quad aaa | ||
.quad ccc | ||
.quad bbb | ||
.quad aaa | ||
.quad relative | ||
relative: |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters