forked from OSchip/llvm-project
[lld][ELF][test] Expand testing of symbols in mergeable sections
Whilst reviewing some internal testing, I noticed a couple of holes in coverage of mergeable sections containing symbols. This patch addresses these holes: 1) Show that mid-piece symbols have their values updated properly when pieces are merged. 2) Show the behaviour of symbols in mergeable pieces when --gc-sections is enabled. Reviewed by: grimar, MaskRay Differential Revision: https://reviews.llvm.org/D86543
This commit is contained in:
parent
5ba4d0365b
commit
d2385f6d2f
|
@ -0,0 +1,37 @@
|
|||
# REQUIRES: x86
|
||||
## Show how symbols in GCed mergeable pieces behave.
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
|
||||
# RUN: ld.lld --gc-sections %t.o -o %t.elf
|
||||
# RUN: llvm-readelf %t.elf --sections --syms | FileCheck %s
|
||||
|
||||
.section .rodata.merge,"aM",@progbits,4
|
||||
a1: ## Unreferenced. In first fragment, kept by a2 reference.
|
||||
.short 1
|
||||
a2: ## Referenced.
|
||||
.short 1
|
||||
b1: ## Unreferenced. Discarded as second fragment is unreferenced.
|
||||
.short 1
|
||||
b2: ## Unreferenced. Discarded as second fragment is unreferenced.
|
||||
.short 1
|
||||
c1: ## Referenced.
|
||||
.short 1
|
||||
c2: ## Unreferenced. In third fragment, kept by c1 reference.
|
||||
.short 1
|
||||
|
||||
.data
|
||||
.global _start
|
||||
_start:
|
||||
.quad a2
|
||||
.quad c1
|
||||
|
||||
# CHECK: .rodata PROGBITS [[#%x, ADDR:]]
|
||||
|
||||
# CHECK: Symbol table '.symtab' contains 6 entries:
|
||||
# CHECK-NEXT: Num: Value {{.*}} Ndx Name
|
||||
# CHECK-NEXT: 0: {{.*}} UND{{ *$}}
|
||||
# CHECK-NEXT: 1: {{0*}}[[#ADDR]] {{.*}} a1
|
||||
# CHECK-NEXT: 2: {{0*}}[[#ADDR+2]] {{.*}} a2
|
||||
# CHECK-NEXT: 3: {{0*}}[[#ADDR]] {{.*}} c1
|
||||
# CHECK-NEXT: 4: {{0*}}[[#ADDR+2]] {{.*}} c2
|
||||
# CHECK-NEXT: 5: {{.*}} _start
|
|
@ -1,21 +1,21 @@
|
|||
// REQUIRES: x86
|
||||
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
|
||||
// RUN: ld.lld %t.o -o %t.so -shared
|
||||
// RUN: llvm-readobj --symbols -S %t.so | FileCheck %s
|
||||
// RUN: llvm-readelf --symbols -S %t.so | FileCheck %s
|
||||
|
||||
.section .rodata.cst4,"aM",@progbits,4
|
||||
.short 0
|
||||
foo:
|
||||
.short 42
|
||||
|
||||
.short 0
|
||||
bar:
|
||||
.short 42
|
||||
|
||||
// CHECK: Name: .rodata
|
||||
// CHECK-NEXT: Type: SHT_PROGBITS
|
||||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: SHF_ALLOC
|
||||
// CHECK-NEXT: SHF_MERGE
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Address: 0x20D
|
||||
// CHECK: Name Type Address {{.*}} ES Flg
|
||||
// CHECK: .rodata PROGBITS [[#%x, ADDR:]] {{.*}} 04 AM{{ }}
|
||||
|
||||
// CHECK: Name: foo
|
||||
// CHECK-NEXT: Value: 0x20F
|
||||
// CHECK: Symbol table '.symtab' contains {{.*}} entries:
|
||||
// CHECK-NEXT: Num: Value {{.*}} Name
|
||||
// CHECK-DAG: {{.*}}: {{0*}}[[#ADDR+2]] {{.*}} foo
|
||||
// CHECK-DAG: {{.*}}: {{0*}}[[#ADDR+2]] {{.*}} bar
|
||||
|
|
Loading…
Reference in New Issue