forked from OSchip/llvm-project
ELFObjectWriter: Don't sort non-local symbols
As we don't sort local symbols, don't sort non-local symbols. This makes non-local symbols appear in their register order, which matches GNU as. The register order is nice in that you can write tests with interleaved CHECK prefixes, e.g. ``` // CHECK: something about foo .globl foo foo: // CHECK: something about bar .globl bar bar: ``` With the lexicographical order, the user needs to place lexicographical smallest symbol first or keep CHECK prefixes in one place.
This commit is contained in:
parent
b45fd233ad
commit
962b29d716
|
@ -47,17 +47,6 @@
|
|||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rela_iplt_end
|
||||
// CHECK-NEXT: Value: 0x200188
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rela.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rela_iplt_start
|
||||
// CHECK-NEXT: Value: 0x200158
|
||||
// CHECK-NEXT: Size: 0
|
||||
|
@ -69,11 +58,22 @@
|
|||
// CHECK-NEXT: Section: .rela.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x210190
|
||||
// CHECK-NEXT: Name: __rela_iplt_end
|
||||
// CHECK-NEXT: Value: 0x200188
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rela.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Value: 0x210188
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Type: GNU_IFunc
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
|
@ -87,11 +87,11 @@
|
|||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Value: 0x210188
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x210190
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: GNU_IFunc
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
|
|
|
@ -10,14 +10,6 @@ _start:
|
|||
adrp x8, foo
|
||||
bl bar
|
||||
|
||||
// CHECK: Name: bar
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined
|
||||
|
||||
// CHECK: Name: foo
|
||||
// CHECK-NEXT: Value: 0x2102F0
|
||||
// CHECK-NEXT: Size: 0
|
||||
|
@ -25,3 +17,11 @@ _start:
|
|||
// CHECK-NEXT: Type: Function
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined
|
||||
|
||||
// CHECK: Name: bar
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined
|
||||
|
|
|
@ -98,19 +98,19 @@ foo:
|
|||
# CHECK-NEXT: R_AMDGPU_ABS64 common_var0 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 common_var1 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 common_var2 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 extern_var0 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 extern_var1 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 extern_var2 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 global_var0 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 global_var1 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 global_var2 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 temp 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 extern_var0 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 extern_var1 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 extern_var2 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 weak_var0 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 weak_var1 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 weak_var2 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 weakref_alias_var0 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 weakref_alias_var1 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 weakref_alias_var2 0x0
|
||||
# CHECK-NEXT: R_AMDGPU_ABS64 temp 0x0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
|
|
|
@ -62,19 +62,7 @@ _start:
|
|||
// CHECK-NEXT: 0x30154 R_ARM_IRELATIVE
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: __rel_iplt_end
|
||||
// CHECK-NEXT: Value: 0x10104
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rel.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rel_iplt_start
|
||||
// CHECK: Name: __rel_iplt_start
|
||||
// CHECK-NEXT: Value: 0x100F4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
|
@ -84,15 +72,17 @@ _start:
|
|||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rel.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x2010C
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other:
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rel_iplt_end
|
||||
// CHECK-NEXT: Value: 0x10104
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rel.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: bar
|
||||
// CHECK-NEXT: Value: 0x20108
|
||||
|
@ -111,6 +101,15 @@ _start:
|
|||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x2010C
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other:
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// DISASM: Disassembly of section .text:
|
||||
// DISASM-EMPTY:
|
||||
|
|
|
@ -22,6 +22,14 @@ _start:
|
|||
.cantunwind
|
||||
.fnend
|
||||
|
||||
// CHECK: Name: __exidx_start
|
||||
// CHECK-NEXT: Value: 0x100D4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK: Name: __exidx_end
|
||||
// CHECK-NEXT: Value: 0x100E4
|
||||
// CHECK-NEXT: Size: 0
|
||||
|
@ -31,14 +39,5 @@ _start:
|
|||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .ARM.exidx
|
||||
// CHECK: Name: __exidx_start
|
||||
// CHECK-NEXT: Value: 0x100D4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .ARM.exidx
|
||||
// CHECK: Symbol {
|
||||
// CHECK-NEXT: Name: __tls_get_addr
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
# RUN: echo "SECTIONS { zed = foo; }" > %t2.script
|
||||
# RUN: ld.lld -o %t2.exe --script %t2.script %tar.a %t.o
|
||||
# RUN: llvm-readobj --symbols %t2.exe | FileCheck %s --check-prefix=SYMS
|
||||
# SYMS: bar
|
||||
# SYMS: foo
|
||||
# SYMS: bar
|
||||
|
||||
.text
|
||||
.globl foo
|
||||
|
|
|
@ -34,20 +34,20 @@ A:
|
|||
mov $42, %rax
|
||||
retq
|
||||
|
||||
# CHECK: Name: A
|
||||
# CHECK-NEXT: Value: 0x201120
|
||||
# CHECK: Name: B
|
||||
# CHECK-NEXT: Value: 0x201130
|
||||
# CHECK: Name: C
|
||||
# CHECK-NEXT: Value: 0x201128
|
||||
# CHECK: Name: D
|
||||
# CHECK-NEXT: Value: 0x201128
|
||||
# CHECK: Name: C
|
||||
# CHECK-NEXT: Value: 0x201128
|
||||
# CHECK: Name: B
|
||||
# CHECK-NEXT: Value: 0x201130
|
||||
# CHECK: Name: A
|
||||
# CHECK-NEXT: Value: 0x201120
|
||||
|
||||
# NOICF: Name: A
|
||||
# NOICF-NEXT: Value: 0x201120
|
||||
# NOICF: Name: B
|
||||
# NOICF-NEXT: Value: 0x201128
|
||||
# NOICF: Name: C
|
||||
# NOICF-NEXT: Value: 0x201130
|
||||
# NOICF: Name: D
|
||||
# NOICF-NEXT: Value: 0x201138
|
||||
# NOICF: Name: C
|
||||
# NOICF-NEXT: Value: 0x201130
|
||||
# NOICF: Name: B
|
||||
# NOICF-NEXT: Value: 0x201128
|
||||
# NOICF: Name: A
|
||||
# NOICF-NEXT: Value: 0x201120
|
||||
|
|
|
@ -34,11 +34,11 @@ Aa:
|
|||
.cg_profile C, D, 90
|
||||
|
||||
# CHECK: 0000000000201123 t D
|
||||
# CHECK: 0000000000201120 T A
|
||||
# CHECK: 0000000000201121 T B
|
||||
# CHECK: 0000000000201122 T C
|
||||
# CHECK: 0000000000201121 T B
|
||||
# CHECK: 0000000000201120 T A
|
||||
|
||||
# NO-CG: 0000000000201120 t D
|
||||
# NO-CG: 0000000000201123 T A
|
||||
# NO-CG: 0000000000201122 T B
|
||||
# NO-CG: 0000000000201121 T C
|
||||
# NO-CG: 0000000000201122 T B
|
||||
# NO-CG: 0000000000201123 T A
|
||||
|
|
|
@ -140,20 +140,20 @@ TooManyPreds10:
|
|||
# CHECK-NEXT: Value: 0x201124
|
||||
# CHECK: Name: TooManyPreds10
|
||||
# CHECK-NEXT: Value: 0x201138
|
||||
# CHECK: Name: A
|
||||
# CHECK-NEXT: Value: 0x201120
|
||||
# CHECK: Name: B
|
||||
# CHECK-NEXT: Value: 0x201121
|
||||
# CHECK: Name: C
|
||||
# CHECK-NEXT: Value: 0x201122
|
||||
# CHECK: Name: GB
|
||||
# CHECK-NEXT: Value: 0x20113F
|
||||
# CHECK: Name: B
|
||||
# CHECK-NEXT: Value: 0x201121
|
||||
# CHECK: Name: A
|
||||
# CHECK-NEXT: Value: 0x201120
|
||||
# CHECK: Name: TS
|
||||
# CHECK-NEXT: Value: 0x20113D
|
||||
# CHECK: Name: PP
|
||||
# CHECK-NEXT: Value: 0x20113C
|
||||
# CHECK: Name: QC
|
||||
# CHECK-NEXT: Value: 0x20113E
|
||||
# CHECK: Name: TS
|
||||
# CHECK-NEXT: Value: 0x20113D
|
||||
# CHECK: Name: GB
|
||||
# CHECK-NEXT: Value: 0x20113F
|
||||
# CHECK: Name: _init
|
||||
# CHECK-NEXT: Value: 0x201140
|
||||
# CHECK: Name: _init2
|
||||
|
@ -165,20 +165,20 @@ TooManyPreds10:
|
|||
# NOSORT-NEXT: Value: 0x201124
|
||||
# NOSORT: Name: TooManyPreds10
|
||||
# NOSORT-NEXT: Value: 0x201138
|
||||
# NOSORT: Name: A
|
||||
# NOSORT-NEXT: Value: 0x201123
|
||||
# NOSORT: Name: B
|
||||
# NOSORT-NEXT: Value: 0x201122
|
||||
# NOSORT: Name: C
|
||||
# NOSORT-NEXT: Value: 0x201121
|
||||
# NOSORT: Name: GB
|
||||
# NOSORT-NEXT: Value: 0x20113C
|
||||
# NOSORT: Name: B
|
||||
# NOSORT-NEXT: Value: 0x201122
|
||||
# NOSORT: Name: A
|
||||
# NOSORT-NEXT: Value: 0x201123
|
||||
# NOSORT: Name: TS
|
||||
# NOSORT-NEXT: Value: 0x201139
|
||||
# NOSORT: Name: PP
|
||||
# NOSORT-NEXT: Value: 0x20113A
|
||||
# NOSORT: Name: QC
|
||||
# NOSORT-NEXT: Value: 0x20113B
|
||||
# NOSORT: Name: TS
|
||||
# NOSORT-NEXT: Value: 0x201139
|
||||
# NOSORT: Name: GB
|
||||
# NOSORT-NEXT: Value: 0x20113C
|
||||
# NOSORT: Name: _init
|
||||
# NOSORT-NEXT: Value: 0x20113D
|
||||
# NOSORT: Name: _init2
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
# RUN: ld.lld -shared %t1.o -o %t1.so
|
||||
# RUN: llvm-readelf --dyn-syms %t1.so | FileCheck --check-prefix=SYMS %s
|
||||
|
||||
# SYMS: [[ADDR:[0-9a-f]+]] {{.*}} 5 bar
|
||||
# SYMS: [[ADDR]] {{.*}} 5 foo
|
||||
# SYMS: [[ADDR:[0-9a-f]+]] {{.*}} 5 foo
|
||||
# SYMS: [[ADDR]] {{.*}} 5 bar
|
||||
# SYMS: [[ADDR]] {{.*}} ABS zed
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t2.o
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
|
||||
# CHECK: Relocations [
|
||||
# CHECK-NEXT: .rela.dyn {
|
||||
# CHECK-NEXT: R_X86_64_COPY bar 0x0
|
||||
# CHECK-NEXT: R_X86_64_COPY foo 0x0
|
||||
# CHECK-NEXT: R_X86_64_COPY bar 0x0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
// RUN: ld.lld -o /dev/null %t1.so %t2.o %t3.o %t.a -gc-sections -cref | FileCheck -strict-whitespace %s
|
||||
|
||||
// CHECK: Symbol File
|
||||
// CHECK-NEXT: bar {{.*}}2.o
|
||||
// CHECK-NEXT: {{.*}}3.o
|
||||
// CHECK-NEXT: foo {{.*}}1.so
|
||||
// CHECK-NEXT: {{.*}}2.o
|
||||
// CHECK-NEXT: {{.*}}3.o
|
||||
// CHECK-NEXT: bar {{.*}}2.o
|
||||
// CHECK-NEXT: {{.*}}3.o
|
||||
// CHECK-NEXT: _start {{.*}}3.o
|
||||
// CHECK-NEXT: baz {{.*}}3.o
|
||||
// CHECK-NEXT: zed {{.*}}.a({{.*}}a.o)
|
||||
|
|
|
@ -30,6 +30,15 @@
|
|||
# DYNSYMS-NEXT: Section: Undefined
|
||||
# DYNSYMS-NEXT: }
|
||||
# DYNSYMS-NEXT: Symbol {
|
||||
# DYNSYMS-NEXT: Name: foo
|
||||
# DYNSYMS-NEXT: Value:
|
||||
# DYNSYMS-NEXT: Size:
|
||||
# DYNSYMS-NEXT: Binding: Global
|
||||
# DYNSYMS-NEXT: Type:
|
||||
# DYNSYMS-NEXT: Other:
|
||||
# DYNSYMS-NEXT: Section:
|
||||
# DYNSYMS-NEXT: }
|
||||
# DYNSYMS-NEXT: Symbol {
|
||||
# DYNSYMS-NEXT: Name: bar
|
||||
# DYNSYMS-NEXT: Value:
|
||||
# DYNSYMS-NEXT: Size:
|
||||
|
@ -47,15 +56,6 @@
|
|||
# DYNSYMS-NEXT: Other:
|
||||
# DYNSYMS-NEXT: Section:
|
||||
# DYNSYMS-NEXT: }
|
||||
# DYNSYMS-NEXT: Symbol {
|
||||
# DYNSYMS-NEXT: Name: foo
|
||||
# DYNSYMS-NEXT: Value:
|
||||
# DYNSYMS-NEXT: Size:
|
||||
# DYNSYMS-NEXT: Binding: Global
|
||||
# DYNSYMS-NEXT: Type:
|
||||
# DYNSYMS-NEXT: Other:
|
||||
# DYNSYMS-NEXT: Section:
|
||||
# DYNSYMS-NEXT: }
|
||||
# DYNSYMS-NEXT: ]
|
||||
|
||||
.globl foo
|
||||
|
|
|
@ -26,10 +26,10 @@
|
|||
# EXPORT: Symbol table '.dynsym' contains 8 entries:
|
||||
# EXPORT: GLOBAL DEFAULT {{.*}} shared
|
||||
# EXPORT-NEXT: WEAK DEFAULT {{.*}} undef_weak
|
||||
# EXPORT-NEXT: GLOBAL PROTECTED {{.*}} _start
|
||||
# EXPORT-NEXT: GLOBAL DEFAULT ABS abs
|
||||
# EXPORT-NEXT: GLOBAL DEFAULT {{.*}} common
|
||||
# EXPORT-NEXT: WEAK DEFAULT {{.*}} weak_default
|
||||
# EXPORT-NEXT: GLOBAL DEFAULT {{.*}} common
|
||||
# EXPORT-NEXT: GLOBAL DEFAULT ABS abs
|
||||
# EXPORT-NEXT: GLOBAL PROTECTED {{.*}} _start
|
||||
# EXPORT-NEXT: GLOBAL DEFAULT {{.*}} defsym
|
||||
|
||||
.weak undef_weak
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
# RUN: llvm-readobj --dyn-relocations %t.so | FileCheck %s
|
||||
|
||||
# CHECK: Dynamic Relocations {
|
||||
# CHECK-NEXT: R_X86_64_64 bar 0x0
|
||||
# CHECK-NEXT: R_X86_64_GLOB_DAT foo 0x0
|
||||
# CHECK-NEXT: R_X86_64_64 bar 0x0
|
||||
# CHECK-NEXT: }
|
||||
|
||||
.data
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
// CHECK: Name Type Address Off
|
||||
// CHECK: .text PROGBITS 0000000000201120 000120
|
||||
// CHECK: Value Size Type Bind Vis Ndx Name
|
||||
// CHECK: 0000000000200000 0 NOTYPE LOCAL HIDDEN 1 __rela_iplt_end
|
||||
// CHECK: 0000000000200000 0 NOTYPE LOCAL HIDDEN 1 __rela_iplt_start
|
||||
// CHECK: 0000000000200000 0 NOTYPE LOCAL HIDDEN 1 __rela_iplt_end
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
|
|
@ -39,17 +39,6 @@
|
|||
// CHECK-NEXT: Section: Undefined
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rel_iplt_end
|
||||
// CHECK-NEXT: Value: 0x4000E4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rel.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rel_iplt_start
|
||||
// CHECK-NEXT: Value: [[RELA]]
|
||||
// CHECK-NEXT: Size: 0
|
||||
|
@ -61,13 +50,15 @@
|
|||
// CHECK-NEXT: Section: .rel.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x4010E6
|
||||
// CHECK-NEXT: Name: __rel_iplt_end
|
||||
// CHECK-NEXT: Value: 0x4000E4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rel.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: bar
|
||||
|
@ -80,7 +71,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: bar_resolver
|
||||
// CHECK-NEXT: Value: 0x4010E5
|
||||
// CHECK-NEXT: Value: 0x4010E4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: Function
|
||||
|
@ -98,20 +89,29 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo_resolver
|
||||
// CHECK-NEXT: Value: 0x4010E4
|
||||
// CHECK-NEXT: Value: 0x4010E5
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: Function
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x4010E6
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT:]
|
||||
|
||||
// DISASM: Disassembly of section .text:
|
||||
// DISASM-EMPTY:
|
||||
// DISASM-NEXT: <foo_resolver>:
|
||||
// DISASM-NEXT: <bar_resolver>:
|
||||
// DISASM-NEXT: 4010e4: retl
|
||||
// DISASM: <bar_resolver>:
|
||||
// DISASM: <foo_resolver>:
|
||||
// DISASM-NEXT: 4010e5: retl
|
||||
// DISASM: <_start>:
|
||||
// DISASM-NEXT: 4010e6: calll 0x401100 <foo>
|
||||
|
@ -130,6 +130,14 @@
|
|||
// DISASM-NEXT: pushl $8
|
||||
// DISASM-NEXT: jmp 0x0
|
||||
|
||||
.type bar STT_GNU_IFUNC
|
||||
.globl bar
|
||||
bar:
|
||||
.type bar_resolver STT_FUNC
|
||||
.globl bar_resolver
|
||||
bar_resolver:
|
||||
ret
|
||||
|
||||
.text
|
||||
.type foo STT_GNU_IFUNC
|
||||
.globl foo
|
||||
|
@ -139,14 +147,6 @@ foo:
|
|||
foo_resolver:
|
||||
ret
|
||||
|
||||
.type bar STT_GNU_IFUNC
|
||||
.globl bar
|
||||
bar:
|
||||
.type bar_resolver STT_FUNC
|
||||
.globl bar_resolver
|
||||
bar_resolver:
|
||||
ret
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
call foo
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
// Check that we emitted relocations for the ifunc calls
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section (4) .rel.dyn {
|
||||
// CHECK-NEXT: 0x4011F4 R_386_PLT32 bar
|
||||
// CHECK-NEXT: 0x4011EF R_386_PLT32 foo
|
||||
// CHECK-NEXT: 0x4011F4 R_386_PLT32 bar
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Section (5) .rel.plt {
|
||||
// CHECK-NEXT: 0x4032D4 R_386_JUMP_SLOT bar2
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
// Check that we emitted relocations for the ifunc calls
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section (4) .rela.dyn {
|
||||
// CHECK-NEXT: 0x201328 R_X86_64_PLT32 bar 0xFFFFFFFFFFFFFFFC
|
||||
// CHECK-NEXT: 0x201323 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
|
||||
// CHECK-NEXT: 0x201328 R_X86_64_PLT32 bar 0xFFFFFFFFFFFFFFFC
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Section (5) .rela.plt {
|
||||
// CHECK-NEXT: 0x203498 R_X86_64_JUMP_SLOT bar2 0x0
|
||||
|
|
|
@ -40,17 +40,6 @@
|
|||
// CHECK-NEXT: Section: Undefined
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rela_iplt_end
|
||||
// CHECK-NEXT: Value: 0x200188
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rela.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rela_iplt_start
|
||||
// CHECK-NEXT: Value: [[RELA]]
|
||||
// CHECK-NEXT: Size: 0
|
||||
|
@ -62,11 +51,22 @@
|
|||
// CHECK-NEXT: Section: .rela.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x20118A
|
||||
// CHECK-NEXT: Name: __rela_iplt_end
|
||||
// CHECK-NEXT: Value: 0x200188
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [
|
||||
// CHECK-NEXT: STV_HIDDEN
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: .rela.dyn
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Value: 0x201188
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Type: GNU_IFunc
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
|
@ -80,11 +80,11 @@
|
|||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Value: 0x201188
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x20118A
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: GNU_IFunc
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
# We used to mark bar as absolute.
|
||||
|
||||
# CHECK: [ 5] .text
|
||||
# CHECK: [[ADDR:[0-9a-f]+]] 0 NOTYPE GLOBAL DEFAULT 5 bar
|
||||
# CHECK: [[ADDR]] 0 NOTYPE GLOBAL DEFAULT 5 foo
|
||||
# CHECK: [[ADDR:[0-9a-f]+]] 0 NOTYPE GLOBAL DEFAULT 5 foo
|
||||
# CHECK: [[ADDR]] 0 NOTYPE GLOBAL DEFAULT 5 bar
|
||||
|
||||
# The nop makes the test more interesting by making the offset of
|
||||
# text.f non zero.
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
## Test we resolve both to the same file.
|
||||
# RUN: ld.lld -y a -y foo -y __foo %t/main.o --start-lib %t/a.o %t/b.o --end-lib -o /dev/null | FileCheck %s
|
||||
|
||||
# CHECK: a.o: lazy definition of __foo
|
||||
# CHECK-NEXT: a.o: lazy definition of a
|
||||
# CHECK: a.o: lazy definition of a
|
||||
# CHECK-NEXT: a.o: lazy definition of foo
|
||||
# CHECK-NEXT: b.o: definition of __foo
|
||||
# CHECK-NEXT: a.o: lazy definition of __foo
|
||||
# CHECK-NEXT: b.o: definition of foo
|
||||
# CHECK-NEXT: b.o: definition of __foo
|
||||
# CHECK-NEXT: b.o: reference to a
|
||||
# CHECK-NEXT: a.o: definition of a
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
# RUN: ld.lld -just-symbols=%t1.exe -o %t2.exe -cref | FileCheck %s
|
||||
|
||||
# CHECK: Symbol File
|
||||
# CHECK-NEXT: bar {{.*exe}}
|
||||
# CHECK-NEXT: foo {{.*exe}}
|
||||
# CHECK-NEXT: bar {{.*exe}}
|
||||
|
||||
.globl foo, bar
|
||||
foo:
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
# RUN: ld.lld -just-symbols=%t1.exe -o %t2.exe
|
||||
# RUN: llvm-readelf -symbols %t2.exe | FileCheck %s
|
||||
|
||||
# CHECK: 0000000000011001 40 OBJECT GLOBAL DEFAULT ABS bar
|
||||
# CHECK: 0000000000010000 0 NOTYPE GLOBAL DEFAULT ABS foo
|
||||
# CHECK: 0000000000011001 40 OBJECT GLOBAL DEFAULT ABS bar
|
||||
|
||||
.globl foo, bar
|
||||
foo:
|
||||
|
|
|
@ -67,15 +67,6 @@ SECTIONS {
|
|||
# For a common with multiple definitions, the largest one wins and it must be
|
||||
# assigned to the section from the file which provided the winning def
|
||||
# CHECK: Symbol {
|
||||
# CHECK: Name: common_multiple
|
||||
# CHECK-NEXT: Value: 0x10
|
||||
# CHECK-NEXT: Size: 32
|
||||
# CHECK-NEXT: Binding: Global
|
||||
# CHECK-NEXT: Type: Object
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .common_2
|
||||
# CHECK-NEXT: }
|
||||
# CHECK: Symbol {
|
||||
# CHECK: Name: common_uniq_0
|
||||
# CHECK-NEXT: Value: 0x4
|
||||
# CHECK-NEXT: Size: 4
|
||||
|
@ -85,6 +76,15 @@ SECTIONS {
|
|||
# CHECK-NEXT: Section: .common_0
|
||||
# CHECK-NEXT: }
|
||||
# CHECK: Symbol {
|
||||
# CHECK: Name: common_multiple
|
||||
# CHECK-NEXT: Value: 0x10
|
||||
# CHECK-NEXT: Size: 32
|
||||
# CHECK-NEXT: Binding: Global
|
||||
# CHECK-NEXT: Type: Object
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .common_2
|
||||
# CHECK-NEXT: }
|
||||
# CHECK: Symbol {
|
||||
# CHECK: Name: common_uniq_1
|
||||
# CHECK-NEXT: Value: 0x8
|
||||
# CHECK-NEXT: Size: 8
|
||||
|
|
|
@ -34,8 +34,8 @@ SECTIONS {
|
|||
# CHECK-NEXT: 1228 3218 30 1 {{.*}}{{/|\\}}map-file2.test.tmp.o:(.eh_frame+0x0)
|
||||
# CHECK-NEXT: 125c 324c 1 4 .text
|
||||
# CHECK-NEXT: 125c 324c 1 4 {{.*}}{{/|\\}}map-file2.test.tmp.o:(.text)
|
||||
# CHECK-NEXT: 125c 324c 0 1 f(int)
|
||||
# CHECK-NEXT: 125c 324c 0 1 _start
|
||||
# CHECK-NEXT: 125c 324c 0 1 f(int)
|
||||
# CHECK-NEXT: 0 0 8 1 .comment
|
||||
# CHECK-NEXT: 0 0 8 1 <internal>:(.comment)
|
||||
# CHECK-NEXT: 0 0 48 8 .symtab
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
## (It should belong to the section .text and point to it's start).
|
||||
|
||||
# CHECK: Symbol {
|
||||
# CHECK: Name: __text
|
||||
# CHECK: Name: aliasto__text
|
||||
# CHECK-NEXT: Value: 0x1000
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global
|
||||
|
@ -18,7 +18,7 @@
|
|||
# CHECK-NEXT: }
|
||||
|
||||
# CHECK: Symbol {
|
||||
# CHECK: Name: aliasto__text
|
||||
# CHECK: Name: __text
|
||||
# CHECK-NEXT: Value: 0x1000
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global
|
||||
|
|
|
@ -25,9 +25,9 @@
|
|||
# RUN: llvm-nm -p %t | FileCheck %s
|
||||
|
||||
# CHECK: 0000000000000000 T _start
|
||||
# CHECK-NEXT: 0000000000000001 T foo
|
||||
# CHECK-NEXT: 0000000000005678 A bar
|
||||
# CHECK-NEXT: 0000000000009abc A baz
|
||||
# CHECK-NEXT: 0000000000000001 T foo
|
||||
# CHECK-NEXT: 0000000000001000 A symbol
|
||||
# CHECK-NEXT: 0000000000002234 A symbol2
|
||||
# CHECK-NEXT: 0000000000002234 A symbol3
|
||||
|
|
|
@ -39,9 +39,9 @@ SECTIONS {
|
|||
}
|
||||
|
||||
# CHECK: 0000000000000160 l .foo 0000000000000000 .hidden _end_sec
|
||||
# CHECK-NEXT: 000000000000104c g .text 0000000000000000 _start
|
||||
# CHECK-NEXT: 0000000000000158 g .foo 0000000000000000 _begin_sec
|
||||
# CHECK-NEXT: 0000000000000160 g *ABS* 0000000000000000 _end_sec_abs
|
||||
# CHECK-NEXT: 000000000000104c g .text 0000000000000000 _start
|
||||
# CHECK-NEXT: 0000000000000158 g .foo 0000000000000000 begin_foo
|
||||
# CHECK-NEXT: 0000000000000160 g .foo 0000000000000000 end_foo
|
||||
# CHECK-NEXT: 0000000000000008 g *ABS* 0000000000000000 size_foo_1
|
||||
|
|
|
@ -5,14 +5,6 @@
|
|||
# RUN: ld.lld --version-script %t.script -shared %t.o -o %t.so
|
||||
# RUN: llvm-readobj --dyn-syms %t.so | FileCheck %s
|
||||
|
||||
# CHECK: Name: _end@@VER1
|
||||
# CHECK-NEXT: Value: 0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global
|
||||
# CHECK-NEXT: Type: None
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .data
|
||||
|
||||
# CHECK: Name: foo@@VER1
|
||||
# CHECK-NEXT: Value: 0
|
||||
# CHECK-NEXT: Size: 0
|
||||
|
@ -21,6 +13,14 @@
|
|||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .text
|
||||
|
||||
# CHECK: Name: _end@@VER1
|
||||
# CHECK-NEXT: Value: 0
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Binding: Global
|
||||
# CHECK-NEXT: Type: None
|
||||
# CHECK-NEXT: Other: 0
|
||||
# CHECK-NEXT: Section: .data
|
||||
|
||||
.global foo
|
||||
foo:
|
||||
.data
|
||||
|
|
|
@ -49,11 +49,11 @@
|
|||
// GC: Symbol {
|
||||
// GC-NEXT: Name: sdn
|
||||
// GC: Symbol {
|
||||
// GC-NEXT: Name: _start
|
||||
// GC: Symbol {
|
||||
// GC-NEXT: Name: abs
|
||||
// GC: Symbol {
|
||||
// GC-NEXT: Name: common
|
||||
// GC: Symbol {
|
||||
// GC-NEXT: Name: _start
|
||||
// GC-NOT: Symbol {
|
||||
|
||||
.macro gen_sections4 x
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
# CHECK-NOT: bar
|
||||
|
||||
# CHECK: Symbol table '.symtab'
|
||||
# CHECK: {{.*}}: 00000000 {{.*}} _foo
|
||||
# CHECK: {{.*}}: [[BAR:[0-9a-f]+]] {{.*}} bar
|
||||
# CHECK: {{.*}}: 00000000 {{.*}} _foo
|
||||
|
||||
# CHECK: Primary GOT:
|
||||
# CHECK: Local entries:
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
# RUN: | FileCheck --check-prefix=MICRO %s
|
||||
|
||||
# REG: {{0*}}[[FOOT:[0-9a-f]+]] l F .text 0000000e 0x80 __microLA25Thunk_foo
|
||||
# REG: {{0*}}[[BAR:[0-9a-f]+]] g F .text 00000000 bar
|
||||
# REG: {{0*}}[[MIC:[0-9a-f]+]] g .text 00000000 0x80 micro
|
||||
# REG: {{0*}}[[BAR:[0-9a-f]+]] g F .text 00000000 bar
|
||||
|
||||
# REG: <__start>:
|
||||
# REG-NEXT: jalx 0x[[MIC]] <micro>
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
# RUN: llvm-readobj -r -A %t-out.so | FileCheck -check-prefix=SO %s
|
||||
|
||||
# DIS: 0000000000000000 l O .tdata 0000000000000000 loc
|
||||
# DIS: 0000000000000004 g O .tdata 0000000000000000 bar
|
||||
# DIS: 0000000000000000 O *UND* 0000000000000000 foo
|
||||
# DIS: 0000000000000004 g O .tdata 0000000000000000 bar
|
||||
|
||||
# DIS: Contents of section .got:
|
||||
# DIS-NEXT: 30000 00000000 00000000 80000000 00000000
|
||||
|
@ -74,12 +74,12 @@
|
|||
# SO: Relocations [
|
||||
# SO-NEXT: Section (7) .rel.dyn {
|
||||
# SO-NEXT: 0x30030 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE -
|
||||
# SO-NEXT: 0x30018 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE bar
|
||||
# SO-NEXT: 0x30040 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE bar
|
||||
# SO-NEXT: 0x30048 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE bar
|
||||
# SO-NEXT: 0x30010 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE foo
|
||||
# SO-NEXT: 0x30020 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE foo
|
||||
# SO-NEXT: 0x30028 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE foo
|
||||
# SO-NEXT: 0x30018 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE bar
|
||||
# SO-NEXT: 0x30040 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE bar
|
||||
# SO-NEXT: 0x30048 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE bar
|
||||
# SO-NEXT: }
|
||||
# SO-NEXT: ]
|
||||
# SO: Primary GOT {
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
# RUN: llvm-objdump -s -t %t.exe | FileCheck %s
|
||||
|
||||
# CHECK: SYMBOL TABLE:
|
||||
# CHECK: [[TGA:[0-9a-f]+]] g .text 00000000 __tls_get_addr
|
||||
# CHECK: 00000000 g O .tdata 00000000 tls1
|
||||
# CHECK: [[TGA:[0-9a-f]+]] g .text 00000000 __tls_get_addr
|
||||
#
|
||||
# CHECK: Contents of section .data:
|
||||
# CHECK-NEXT: {{.*}} [[TGA]] ffff8004 ffff9004
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
# RUN: llvm-readobj -r -A %t-out.so | FileCheck -check-prefix=SO %s
|
||||
|
||||
# DIS: 00000000 l O .tdata 00000000 loc
|
||||
# DIS: 00000004 g O .tdata 00000000 bar
|
||||
# DIS: 00000000 O *UND* 00000000 foo
|
||||
# DIS: 00000004 g O .tdata 00000000 bar
|
||||
|
||||
# DIS: Contents of section .got:
|
||||
# DIS-NEXT: 30000 00000000 80000000 00000000 ffff9004
|
||||
|
@ -70,12 +70,12 @@
|
|||
# SO: Relocations [
|
||||
# SO-NEXT: Section (7) .rel.dyn {
|
||||
# SO-NEXT: 0x30018 R_MIPS_TLS_DTPMOD32 -
|
||||
# SO-NEXT: 0x3000C R_MIPS_TLS_TPREL32 bar
|
||||
# SO-NEXT: 0x30020 R_MIPS_TLS_DTPMOD32 bar
|
||||
# SO-NEXT: 0x30024 R_MIPS_TLS_DTPREL32 bar
|
||||
# SO-NEXT: 0x30008 R_MIPS_TLS_TPREL32 foo
|
||||
# SO-NEXT: 0x30010 R_MIPS_TLS_DTPMOD32 foo
|
||||
# SO-NEXT: 0x30014 R_MIPS_TLS_DTPREL32 foo
|
||||
# SO-NEXT: 0x3000C R_MIPS_TLS_TPREL32 bar
|
||||
# SO-NEXT: 0x30020 R_MIPS_TLS_DTPMOD32 bar
|
||||
# SO-NEXT: 0x30024 R_MIPS_TLS_DTPREL32 bar
|
||||
# SO-NEXT: }
|
||||
# SO-NEXT: ]
|
||||
# SO: Primary GOT {
|
||||
|
|
|
@ -3,17 +3,7 @@
|
|||
// RUN: ld.lld %t -o %t2
|
||||
// RUN: llvm-readobj --symbols %t2 | FileCheck %s
|
||||
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: bar_sym
|
||||
// CHECK-NEXT: Value:
|
||||
// CHECK-NEXT: Size:
|
||||
// CHECK-NEXT: Binding:
|
||||
// CHECK-NEXT: Type:
|
||||
// CHECK-NEXT: Other:
|
||||
// CHECK-NEXT: Section: bar
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo_sym
|
||||
// CHECK: Name: foo_sym
|
||||
// CHECK-NEXT: Value:
|
||||
// CHECK-NEXT: Size:
|
||||
// CHECK-NEXT: Binding:
|
||||
|
@ -21,6 +11,15 @@
|
|||
// CHECK-NEXT: Other:
|
||||
// CHECK-NEXT: Section: foo
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: bar_sym
|
||||
// CHECK-NEXT: Value:
|
||||
// CHECK-NEXT: Size:
|
||||
// CHECK-NEXT: Binding:
|
||||
// CHECK-NEXT: Type:
|
||||
// CHECK-NEXT: Other:
|
||||
// CHECK-NEXT: Section: bar
|
||||
// CHECK-NEXT: }
|
||||
|
||||
.section foo
|
||||
.global foo_sym
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
// CHECK-NEXT: Owner: GNU
|
||||
// CHECK-NEXT: Data size:
|
||||
// CHECK-NEXT: Type: NT_GNU_BUILD_ID (unique build ID bitstring)
|
||||
// CHECK-NEXT: Build ID: 08b93eab87177a2356d1b0d1148339463f98dac2
|
||||
// CHECK-NEXT: Build ID: bb5542bd74252653e286044980d602874d237ae0
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
|
|
|
@ -143,7 +143,7 @@
|
|||
// PART0: 0000000000000498 0 NOTYPE LOCAL HIDDEN {{.*}} __part_index_end
|
||||
|
||||
// PART-INDEX: Contents of section .dynstr:
|
||||
// PART-INDEX-NEXT: 03a8 00663100 66320070 30007061 72743100 .f1.f2.p0.part1.
|
||||
// PART-INDEX-NEXT: 03a8 00703000 66310066 32007061 72743100 .p0.f1.f2.part1.
|
||||
// PART-INDEX: Contents of section .rodata:
|
||||
// 0x48c + 0xffffff26 = 0x3b2
|
||||
// 0x490 + 0x3b70 = 0x4000
|
||||
|
|
|
@ -22,9 +22,9 @@
|
|||
// CHECK: [[P1]] f4
|
||||
// CHECK: [[MAIN]] f5
|
||||
// CHECK: [[P2]] f6
|
||||
// CHECK: [[MAIN]] _start
|
||||
// CHECK: [[P1]] f1
|
||||
// CHECK: [[P2]] f2
|
||||
// CHECK: [[MAIN]] _start
|
||||
|
||||
.section .llvm_sympart.f1,"",@llvm_sympart
|
||||
.asciz "part1"
|
||||
|
|
|
@ -44,4 +44,4 @@ _start:
|
|||
// st_other's PPC64 specific flags, thus we check the
|
||||
// result of the hexdump of .symtab section.
|
||||
|
||||
// CHECK: 0070 00000000 00000000 00000009 12600001
|
||||
// CHECK: 0060 00000003 12600001 00000000 00000000
|
||||
|
|
|
@ -27,9 +27,9 @@
|
|||
## external function, a r12 setup stub is inserted.
|
||||
|
||||
# SYMBOL: Symbol table '.dynsym' contains 4 entries:
|
||||
# SYMBOL: 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT [<other: 0x60>] UND callee_global_TOC
|
||||
# SYMBOL-NEXT: 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND callee_global_stother0
|
||||
# SYMBOL-NEXT: 3: 0000000000000000 0 NOTYPE GLOBAL DEFAULT [<other: 0x20>] UND callee_global_stother1
|
||||
# SYMBOL: 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND callee_global_stother0
|
||||
# SYMBOL-NEXT: 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT [<other: 0x20>] UND callee_global_stother1
|
||||
# SYMBOL-NEXT: 3: 0000000000000000 0 NOTYPE GLOBAL DEFAULT [<other: 0x60>] UND callee_global_TOC
|
||||
|
||||
# SYMBOL: Symbol table '.symtab' contains 12 entries:
|
||||
# SYMBOL: 2: 0000000010010000 0 NOTYPE LOCAL DEFAULT [<other: 0x20>] 6 caller1
|
||||
|
@ -38,9 +38,9 @@
|
|||
# SYMBOL: 6: 0000000010010010 16 FUNC LOCAL DEFAULT 6 __plt_pcrel_callee_global_stother0
|
||||
# SYMBOL-NEXT: 7: 0000000010020010 16 FUNC LOCAL DEFAULT 7 __plt_pcrel_callee_global_stother1
|
||||
# SYMBOL-NEXT: 8: 0000000010030010 16 FUNC LOCAL DEFAULT 8 __plt_pcrel_callee_global_TOC
|
||||
# SYMBOL-NEXT: 9: 0000000000000000 0 NOTYPE GLOBAL DEFAULT [<other: 0x60>] UND callee_global_TOC
|
||||
# SYMBOL-NEXT: 10: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND callee_global_stother0
|
||||
# SYMBOL-NEXT: 11: 0000000000000000 0 NOTYPE GLOBAL DEFAULT [<other: 0x20>] UND callee_global_stother1
|
||||
# SYMBOL-NEXT: 9: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND callee_global_stother0
|
||||
# SYMBOL-NEXT: 10: 0000000000000000 0 NOTYPE GLOBAL DEFAULT [<other: 0x20>] UND callee_global_stother1
|
||||
# SYMBOL-NEXT: 11: 0000000000000000 0 NOTYPE GLOBAL DEFAULT [<other: 0x60>] UND callee_global_TOC
|
||||
|
||||
## DT_PLTGOT points to .plt
|
||||
# SEC: .plt NOBITS 0000000010030148 040148 000028 00 WA 0 0 8
|
||||
|
|
|
@ -24,9 +24,9 @@
|
|||
|
||||
# IE-REL: .rela.dyn {
|
||||
# IE-REL-NEXT: 0x204A0 R_PPC64_TPREL64 c 0x0
|
||||
# IE-REL-NEXT: 0x204A8 R_PPC64_TPREL64 s 0x0
|
||||
# IE-REL-NEXT: 0x204B0 R_PPC64_TPREL64 i 0x0
|
||||
# IE-REL-NEXT: 0x204B8 R_PPC64_TPREL64 l 0x0
|
||||
# IE-REL-NEXT: 0x204A8 R_PPC64_TPREL64 s 0x0
|
||||
# IE-REL-NEXT: }
|
||||
|
||||
# INPUT-REL: R_PPC64_GOT_TPREL16_HA c 0x0
|
||||
|
|
|
@ -42,30 +42,30 @@ y:
|
|||
#--- asm
|
||||
|
||||
# GD-RELOC: Relocation section '.rela.dyn' at offset 0x100b8 contains 4 entries:
|
||||
# GD-RELOC: 0000000001001160 0000000200000044 R_PPC64_DTPMOD64 0000000000000000 x + 0
|
||||
# GD-RELOC: 0000000001001168 000000020000004e R_PPC64_DTPREL64 0000000000000000 x + 0
|
||||
# GD-RELOC: 0000000001001160 0000000100000044 R_PPC64_DTPMOD64 0000000000000000 x + 0
|
||||
# GD-RELOC: 0000000001001168 000000010000004e R_PPC64_DTPREL64 0000000000000000 x + 0
|
||||
# GD-RELOC: 0000000001001170 0000000300000044 R_PPC64_DTPMOD64 0000000000000000 y + 0
|
||||
# GD-RELOC: 0000000001001178 000000030000004e R_PPC64_DTPREL64 0000000000000000 y + 0
|
||||
|
||||
# GD-SYM: Symbol table '.dynsym' contains 4 entries:
|
||||
# GD-SYM: 2: 0000000000000000 0 TLS GLOBAL DEFAULT UND x
|
||||
# GD-SYM: 3: 0000000000000000 0 TLS GLOBAL DEFAULT UND y
|
||||
# GD-SYM: 0000000000000000 0 TLS GLOBAL DEFAULT UND x
|
||||
# GD-SYM: 0000000000000000 0 TLS GLOBAL DEFAULT UND y
|
||||
|
||||
|
||||
# GDTOIE-RELOC: Relocation section '.rela.dyn' at offset 0x{{.*}} contains 2 entries:
|
||||
# GDTOIE-RELOC: 00000000010010e0 0000000200000049 R_PPC64_TPREL64 0000000000000000 x + 0
|
||||
# GDTOIE-RELOC: 00000000010010e0 0000000100000049 R_PPC64_TPREL64 0000000000000000 x + 0
|
||||
# GDTOIE-RELOC: 00000000010010e8 0000000300000049 R_PPC64_TPREL64 0000000000000000 y + 0
|
||||
|
||||
# GDTOIE-SYM: Symbol table '.dynsym' contains 4 entries:
|
||||
# GDTOIE-SYM: 2: 0000000000000000 0 TLS GLOBAL DEFAULT UND x
|
||||
# GDTOIE-SYM: 3: 0000000000000000 0 TLS GLOBAL DEFAULT UND y
|
||||
# GDTOIE-SYM: 0000000000000000 0 TLS GLOBAL DEFAULT UND x
|
||||
# GDTOIE-SYM: 0000000000000000 0 TLS GLOBAL DEFAULT UND y
|
||||
|
||||
|
||||
# GDTOLE-RELOC: There are no relocations in this file.
|
||||
|
||||
# GDTOLE-SYM: Symbol table '.symtab' contains 5 entries:
|
||||
# GDTOLE-SYM: 3: 0000000000000000 0 TLS GLOBAL DEFAULT 3 x
|
||||
# GDTOLE-SYM: 4: 0000000000000004 0 TLS GLOBAL DEFAULT 3 y
|
||||
# GDTOLE-SYM: 0000000000000000 0 TLS GLOBAL DEFAULT 3 x
|
||||
# GDTOLE-SYM: 0000000000000004 0 TLS GLOBAL DEFAULT 3 y
|
||||
|
||||
# GD-LABEL: <GDTwoVal>:
|
||||
# GD-NEXT: paddi 3, 0, 352, 1
|
||||
|
|
|
@ -45,12 +45,12 @@ _start:
|
|||
|
||||
// CHECK-LABEL: Symbol table '.symtab'
|
||||
// CHECK: Value Size Type Bind Vis Ndx Name
|
||||
// CHECK: [[# FINI_ADDR + FINI_SIZE]] 0 NOTYPE LOCAL HIDDEN [[#]] __fini_array_end
|
||||
// CHECK-NEXT: [[# FINI_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __fini_array_start
|
||||
// CHECK-NEXT: [[# INIT_ADDR + INIT_SIZE]] 0 NOTYPE LOCAL HIDDEN [[#]] __init_array_end
|
||||
// CHECK-NEXT: [[# INIT_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __init_array_start
|
||||
// CHECK: [[# PREINIT_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __preinit_array_start
|
||||
// CHECK-NEXT: [[# PREINIT_ADDR + PREINIT_SIZE]] 0 NOTYPE LOCAL HIDDEN [[#]] __preinit_array_end
|
||||
// CHECK-NEXT: [[# PREINIT_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __preinit_array_start
|
||||
// CHECK-NEXT: [[# INIT_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __init_array_start
|
||||
// CHECK-NEXT: [[# INIT_ADDR + INIT_SIZE]] 0 NOTYPE LOCAL HIDDEN [[#]] __init_array_end
|
||||
// CHECK-NEXT: [[# FINI_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __fini_array_start
|
||||
// CHECK-NEXT: [[# FINI_ADDR + FINI_SIZE]] 0 NOTYPE LOCAL HIDDEN [[#]] __fini_array_end
|
||||
|
||||
// DISASM: SYMBOL TABLE:
|
||||
// DISASM-DAG: {{0*}}[[# %x, PREINIT_ARRAY_START:]] l .preinit_array {{0+}} .hidden __preinit_array_start
|
||||
|
|
|
@ -55,9 +55,9 @@
|
|||
|
||||
# KEEP_START: Symbol table '.symtab' contains 10 entries:
|
||||
# KEEP_START: 5: {{.*}} SECTION
|
||||
# KEEP_START-NEXT: 6: {{.*}} UND __start_qux
|
||||
# KEEP_START-NEXT: 7: {{.*}} 1 _start
|
||||
# KEEP_START-NEXT: 8: {{.*}} 5 fred
|
||||
# KEEP_START-NEXT: 6: {{.*}} 1 _start
|
||||
# KEEP_START-NEXT: 7: {{.*}} 5 fred
|
||||
# KEEP_START-NEXT: 8: {{.*}} UND __start_qux
|
||||
# KEEP_START-NEXT: 9: {{.*}} UND fred_und
|
||||
|
||||
.section qux,"a",@progbits
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
// CHECK-NEXT: Section: .text (0x1)
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rel_iplt_end (1)
|
||||
// CHECK-NEXT: Name: __rel_iplt_start (1)
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Weak (0x2)
|
||||
|
@ -34,7 +34,7 @@
|
|||
// CHECK-NEXT: Section: Undefined (0x0)
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: __rel_iplt_start (16)
|
||||
// CHECK-NEXT: Name: __rel_iplt_end (18)
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Weak (0x2)
|
||||
|
|
|
@ -66,8 +66,8 @@
|
|||
# SYMBOL-NEXT: 0x38 R_X86_64_PC32 __fini_array_end 0xFFFFFFFFFFFFFFFC
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: ]
|
||||
# SYMBOL: Symbol {
|
||||
# SYMBOL: Name: __fini_array_end
|
||||
|
||||
# SYMBOL: Name: __start_foo
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
|
@ -76,43 +76,7 @@
|
|||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __fini_array_start
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __init_array_end
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __init_array_start
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __preinit_array_end
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __preinit_array_start
|
||||
# SYMBOL-NEXT: Name: __stop_foo
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
|
@ -130,24 +94,6 @@
|
|||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __start_doo
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __start_foo
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __stop_bar
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
|
@ -157,6 +103,15 @@
|
|||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __start_doo
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __stop_doo
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
|
@ -166,7 +121,52 @@
|
|||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __stop_foo
|
||||
# SYMBOL-NEXT: Name: __preinit_array_start
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __preinit_array_end
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __init_array_start
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __init_array_end
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL: Symbol {
|
||||
# SYMBOL-NEXT: Name: __fini_array_start
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
# SYMBOL-NEXT: Type: None
|
||||
# SYMBOL-NEXT: Other: 0
|
||||
# SYMBOL-NEXT: Section: Undefined
|
||||
# SYMBOL-NEXT: }
|
||||
# SYMBOL-NEXT: Symbol {
|
||||
# SYMBOL-NEXT: Name: __fini_array_end
|
||||
# SYMBOL-NEXT: Value: 0x0
|
||||
# SYMBOL-NEXT: Size: 0
|
||||
# SYMBOL-NEXT: Binding: Global
|
||||
|
|
|
@ -11,39 +11,39 @@
|
|||
// CHECK: Symbol table '.symtab' contains 34 entries:
|
||||
// CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
// CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
// CHECK-NEXT: 1: 00000000002021ec 63 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_CommonStrong
|
||||
// CHECK-NEXT: 2: 000000000020222c 30 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_CommonWeak
|
||||
// CHECK-NEXT: 3: 00000000002011cc 55 NOTYPE GLOBAL DEFAULT 1 CommonStrong_with_RegularStrong
|
||||
// CHECK-NEXT: 4: 000000000020224c 22 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_RegularWeak
|
||||
// CHECK-NEXT: 5: 0000000000202264 27 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_UndefStrong
|
||||
// CHECK-NEXT: 6: 0000000000202280 26 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_UndefWeak
|
||||
// CHECK-NEXT: 7: 000000000020229c 61 OBJECT GLOBAL DEFAULT 2 CommonWeak_with_CommonStrong
|
||||
// CHECK-NEXT: 8: 00000000002022dc 28 OBJECT WEAK DEFAULT 2 CommonWeak_with_CommonWeak
|
||||
// CHECK-NEXT: 9: 00000000002011cc 53 NOTYPE GLOBAL DEFAULT 1 CommonWeak_with_RegularStrong
|
||||
// CHECK-NEXT: 10: 00000000002022f8 20 OBJECT WEAK DEFAULT 2 CommonWeak_with_RegularWeak
|
||||
// CHECK-NEXT: 11: 000000000020230c 25 OBJECT WEAK DEFAULT 2 CommonWeak_with_UndefStrong
|
||||
// CHECK-NEXT: 12: 0000000000202328 24 OBJECT WEAK DEFAULT 2 CommonWeak_with_UndefWeak
|
||||
// CHECK-NEXT: 13: 0000000000201159 10 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_CommonStrong
|
||||
// CHECK-NEXT: 14: 0000000000201159 9 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_CommonWeak
|
||||
// CHECK-NEXT: 15: 0000000000201159 2 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_RegularWeak
|
||||
// CHECK-NEXT: 16: 0000000000201159 6 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_UndefStrong
|
||||
// CHECK-NEXT: 17: 0000000000201159 5 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_UndefWeak
|
||||
// CHECK-NEXT: 18: 0000000000202340 40 OBJECT GLOBAL DEFAULT 2 RegularWeak_with_CommonStrong
|
||||
// CHECK-NEXT: 19: 0000000000201159 7 NOTYPE WEAK DEFAULT 1 RegularWeak_with_CommonWeak
|
||||
// CHECK-NEXT: 20: 00000000002011a4 33 NOTYPE GLOBAL DEFAULT 1 RegularWeak_with_RegularStrong
|
||||
// CHECK-NEXT: 21: 0000000000201159 0 NOTYPE WEAK DEFAULT 1 RegularWeak_with_RegularWeak
|
||||
// CHECK-NEXT: 22: 0000000000201159 4 NOTYPE WEAK DEFAULT 1 RegularWeak_with_UndefStrong
|
||||
// CHECK-NEXT: 23: 0000000000201159 3 NOTYPE WEAK DEFAULT 1 RegularWeak_with_UndefWeak
|
||||
// CHECK-NEXT: 24: 0000000000202368 51 OBJECT GLOBAL DEFAULT 2 UndefStrong_with_CommonStrong
|
||||
// CHECK-NEXT: 25: 000000000020239c 50 OBJECT WEAK DEFAULT 2 UndefStrong_with_CommonWeak
|
||||
// CHECK-NEXT: 26: 00000000002011c4 46 NOTYPE GLOBAL DEFAULT 1 UndefStrong_with_RegularStrong
|
||||
// CHECK-NEXT: 27: 00000000002011c4 45 NOTYPE WEAK DEFAULT 1 UndefStrong_with_RegularWeak
|
||||
// CHECK-NEXT: 28: 00000000002023d0 49 OBJECT GLOBAL DEFAULT 2 UndefWeak_with_CommonStrong
|
||||
// CHECK-NEXT: 29: 0000000000202404 48 OBJECT WEAK DEFAULT 2 UndefWeak_with_CommonWeak
|
||||
// CHECK-NEXT: 30: 00000000002011c4 44 NOTYPE GLOBAL DEFAULT 1 UndefWeak_with_RegularStrong
|
||||
// CHECK-NEXT: 31: 00000000002011c4 43 NOTYPE WEAK DEFAULT 1 UndefWeak_with_RegularWeak
|
||||
// CHECK-NEXT: 32: 0000000000000000 0 NOTYPE WEAK DEFAULT UND UndefWeak_with_UndefWeak
|
||||
// CHECK-NEXT: 33: 0000000000201158 0 NOTYPE GLOBAL DEFAULT 1 _start
|
||||
// CHECK-NEXT: 1: 0000000000201158 0 NOTYPE GLOBAL DEFAULT 1 _start
|
||||
// CHECK-NEXT: 2: 0000000000201159 0 NOTYPE WEAK DEFAULT 1 RegularWeak_with_RegularWeak
|
||||
// CHECK-NEXT: 3: 00000000002011a4 33 NOTYPE GLOBAL DEFAULT 1 RegularWeak_with_RegularStrong
|
||||
// CHECK-NEXT: 4: 0000000000201159 2 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_RegularWeak
|
||||
// CHECK-NEXT: 5: 0000000000201159 3 NOTYPE WEAK DEFAULT 1 RegularWeak_with_UndefWeak
|
||||
// CHECK-NEXT: 6: 0000000000201159 4 NOTYPE WEAK DEFAULT 1 RegularWeak_with_UndefStrong
|
||||
// CHECK-NEXT: 7: 0000000000201159 5 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_UndefWeak
|
||||
// CHECK-NEXT: 8: 0000000000201159 6 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_UndefStrong
|
||||
// CHECK-NEXT: 9: 0000000000201159 7 NOTYPE WEAK DEFAULT 1 RegularWeak_with_CommonWeak
|
||||
// CHECK-NEXT: 10: 00000000002021ec 40 OBJECT GLOBAL DEFAULT 2 RegularWeak_with_CommonStrong
|
||||
// CHECK-NEXT: 11: 0000000000201159 9 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_CommonWeak
|
||||
// CHECK-NEXT: 12: 0000000000201159 10 NOTYPE GLOBAL DEFAULT 1 RegularStrong_with_CommonStrong
|
||||
// CHECK-NEXT: 13: 00000000002011c4 43 NOTYPE WEAK DEFAULT 1 UndefWeak_with_RegularWeak
|
||||
// CHECK-NEXT: 14: 00000000002011c4 44 NOTYPE GLOBAL DEFAULT 1 UndefWeak_with_RegularStrong
|
||||
// CHECK-NEXT: 15: 00000000002011c4 45 NOTYPE WEAK DEFAULT 1 UndefStrong_with_RegularWeak
|
||||
// CHECK-NEXT: 16: 00000000002011c4 46 NOTYPE GLOBAL DEFAULT 1 UndefStrong_with_RegularStrong
|
||||
// CHECK-NEXT: 17: 0000000000000000 0 NOTYPE WEAK DEFAULT UND UndefWeak_with_UndefWeak
|
||||
// CHECK-NEXT: 18: 0000000000202214 48 OBJECT WEAK DEFAULT 2 UndefWeak_with_CommonWeak
|
||||
// CHECK-NEXT: 19: 0000000000202244 49 OBJECT GLOBAL DEFAULT 2 UndefWeak_with_CommonStrong
|
||||
// CHECK-NEXT: 20: 0000000000202278 50 OBJECT WEAK DEFAULT 2 UndefStrong_with_CommonWeak
|
||||
// CHECK-NEXT: 21: 00000000002022ac 51 OBJECT GLOBAL DEFAULT 2 UndefStrong_with_CommonStrong
|
||||
// CHECK-NEXT: 22: 00000000002022e0 20 OBJECT WEAK DEFAULT 2 CommonWeak_with_RegularWeak
|
||||
// CHECK-NEXT: 23: 00000000002011cc 53 NOTYPE GLOBAL DEFAULT 1 CommonWeak_with_RegularStrong
|
||||
// CHECK-NEXT: 24: 00000000002022f4 22 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_RegularWeak
|
||||
// CHECK-NEXT: 25: 00000000002011cc 55 NOTYPE GLOBAL DEFAULT 1 CommonStrong_with_RegularStrong
|
||||
// CHECK-NEXT: 26: 000000000020230c 24 OBJECT WEAK DEFAULT 2 CommonWeak_with_UndefWeak
|
||||
// CHECK-NEXT: 27: 0000000000202324 25 OBJECT WEAK DEFAULT 2 CommonWeak_with_UndefStrong
|
||||
// CHECK-NEXT: 28: 0000000000202340 26 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_UndefWeak
|
||||
// CHECK-NEXT: 29: 000000000020235c 27 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_UndefStrong
|
||||
// CHECK-NEXT: 30: 0000000000202378 28 OBJECT WEAK DEFAULT 2 CommonWeak_with_CommonWeak
|
||||
// CHECK-NEXT: 31: 0000000000202394 61 OBJECT GLOBAL DEFAULT 2 CommonWeak_with_CommonStrong
|
||||
// CHECK-NEXT: 32: 00000000002023d4 30 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_CommonWeak
|
||||
// CHECK-NEXT: 33: 00000000002023f4 63 OBJECT GLOBAL DEFAULT 2 CommonStrong_with_CommonStrong
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
# CHECK-NEXT: Section:
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: bar
|
||||
# CHECK-NEXT: Name: und
|
||||
# CHECK-NEXT: Value:
|
||||
# CHECK-NEXT: Size:
|
||||
# CHECK-NEXT: Binding: Global
|
||||
# CHECK-NEXT: Type:
|
||||
# CHECK-NEXT: Other:
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: Section: Undefined
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: foo
|
||||
|
@ -38,13 +38,13 @@
|
|||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: und
|
||||
# CHECK-NEXT: Name: bar
|
||||
# CHECK-NEXT: Value:
|
||||
# CHECK-NEXT: Size:
|
||||
# CHECK-NEXT: Binding: Global
|
||||
# CHECK-NEXT: Type:
|
||||
# CHECK-NEXT: Other:
|
||||
# CHECK-NEXT: Section: Undefined
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
|
|
|
@ -8,18 +8,18 @@
|
|||
|
||||
// RUN: ld.lld -o %t3 %t1.o %t2.o %t3.o
|
||||
// RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=TEST1 %s
|
||||
// TEST1: Name: bar
|
||||
// TEST1: Name: foo
|
||||
// TEST1: Name: bar
|
||||
|
||||
// RUN: ld.lld -o %t3 %t1.o -u bar --start-lib %t2.o %t3.o
|
||||
// RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=TEST2 %s
|
||||
// TEST2: Name: bar
|
||||
// TEST2-NOT: Name: foo
|
||||
// TEST2: Name: bar
|
||||
|
||||
// RUN: ld.lld -o %t3 %t1.o --start-lib %t2.o %t3.o
|
||||
// RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=TEST3 %s
|
||||
// TEST3-NOT: Name: bar
|
||||
// TEST3-NOT: Name: foo
|
||||
// TEST3-NOT: Name: bar
|
||||
|
||||
// RUN: not ld.lld %t1.o --start-lib --start-lib 2>&1 | FileCheck -check-prefix=NESTED-LIB %s
|
||||
// NESTED-LIB: nested --start-lib
|
||||
|
|
|
@ -30,13 +30,6 @@
|
|||
// SYMBOL-NEXT: }
|
||||
// SYMBOL-NEXT: ]
|
||||
|
||||
// SYMBOL: Symbol {
|
||||
// SYMBOL: Name: __start_bar
|
||||
// SYMBOL: Value: 0x1342
|
||||
// SYMBOL: STV_HIDDEN
|
||||
// SYMBOL: Section: bar
|
||||
// SYMBOL: }
|
||||
// SYMBOL-NOT: Section: __stop_bar
|
||||
// SYMBOL: Symbol {
|
||||
// SYMBOL: Name: __start_foo
|
||||
// SYMBOL: Value: 0x133F
|
||||
|
@ -49,19 +42,26 @@
|
|||
// SYMBOL: STV_HIDDEN
|
||||
// SYMBOL: Section: foo
|
||||
// SYMBOL: }
|
||||
|
||||
// SYMBOL: Symbol {
|
||||
// SYMBOL: Name: __stop_zed1
|
||||
// SYMBOL: Value: 0x3408
|
||||
// SYMBOL: STV_PROTECTED
|
||||
// SYMBOL: Section: zed1
|
||||
// SYMBOL: Name: __start_bar
|
||||
// SYMBOL: Value: 0x1342
|
||||
// SYMBOL: STV_HIDDEN
|
||||
// SYMBOL: Section: bar
|
||||
// SYMBOL: }
|
||||
// SYMBOL-NOT: Section: __stop_bar
|
||||
|
||||
// SYMBOL: Symbol {
|
||||
// SYMBOL: Name: __stop_zed2
|
||||
// SYMBOL: Value: 0x3418
|
||||
// SYMBOL: STV_PROTECTED
|
||||
// SYMBOL: Section: zed2
|
||||
// SYMBOL: }
|
||||
// SYMBOL: Symbol {
|
||||
// SYMBOL: Name: __stop_zed1
|
||||
// SYMBOL: Value: 0x3408
|
||||
// SYMBOL: STV_PROTECTED
|
||||
// SYMBOL: Section: zed1
|
||||
// SYMBOL: }
|
||||
|
||||
.hidden __start_foo
|
||||
.hidden __stop_foo
|
||||
|
|
|
@ -97,13 +97,13 @@
|
|||
# WARN-NOT: warning:
|
||||
# SAMESYM: warning: {{.*}}.txt: duplicate ordered symbol: _start
|
||||
# WARN-NOT: warning:
|
||||
# SYNTHETIC: warning: <internal>: unable to order synthetic symbol: _GLOBAL_OFFSET_TABLE_
|
||||
# SHARED: warning: {{.*}}.so: unable to order shared symbol: shared
|
||||
# WARN-NOT: warning:
|
||||
# DISCARD: warning: {{.*}}1.o: unable to order discarded symbol: discard
|
||||
# WARN-NOT: warning:
|
||||
# GC: warning: {{.*}}1.o: unable to order discarded symbol: gc
|
||||
# WARN-NOT: warning:
|
||||
# SHARED: warning: {{.*}}.so: unable to order shared symbol: shared
|
||||
# SYNTHETIC: warning: <internal>: unable to order synthetic symbol: _GLOBAL_OFFSET_TABLE_
|
||||
# WARN-NOT: warning:
|
||||
# UNDEFINED: warning: {{.*}}3.o: unable to order undefined symbol: undefined
|
||||
# WARN-NOT: warning:
|
||||
|
|
|
@ -112,33 +112,6 @@ internal:
|
|||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: abs
|
||||
// CHECK-NEXT: Value: 0x123
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Absolute
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: bar
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Weak (0x2)
|
||||
// CHECK-NEXT: Type: Object (0x1)
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined (0x0)
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: common
|
||||
// CHECK-NEXT: Value: 0x202164
|
||||
// CHECK-NEXT: Size: 4
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: Object
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .bss
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Value: 0x201160
|
||||
// CHECK-NEXT: Size: 0
|
||||
|
@ -148,15 +121,13 @@ internal:
|
|||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: protected
|
||||
// CHECK-NEXT: Value: 0x200160
|
||||
// CHECK-NEXT: Name: bar
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [ (0x3)
|
||||
// CHECK-NEXT: STV_PROTECTED
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: foobar
|
||||
// CHECK-NEXT: Binding: Weak (0x2)
|
||||
// CHECK-NEXT: Type: Object (0x1)
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined (0x0)
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: zed
|
||||
|
@ -185,4 +156,33 @@ internal:
|
|||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: foobar
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: abs
|
||||
// CHECK-NEXT: Value: 0x123
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Absolute
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: common
|
||||
// CHECK-NEXT: Value: 0x202164
|
||||
// CHECK-NEXT: Size: 4
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: Object
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .bss
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: protected
|
||||
// CHECK-NEXT: Value: 0x200160
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other [ (0x3)
|
||||
// CHECK-NEXT: STV_PROTECTED
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Section: foobar
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
|
|
|
@ -31,14 +31,6 @@ movabsq $set_data, %rax
|
|||
// CHECK-NEXT: 0x203420 R_X86_64_JUMP_SLOT set_data 0x0
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK: Name: foo
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: Function
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined
|
||||
|
||||
// CHECK: Name: set_data
|
||||
// CHECK-NEXT: Value: 0x2012F0
|
||||
// CHECK-NEXT: Size: 0
|
||||
|
@ -46,3 +38,11 @@ movabsq $set_data, %rax
|
|||
// CHECK-NEXT: Type: Function
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined
|
||||
|
||||
// CHECK: Name: foo
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: Function
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
# DSO-NEXT: Section: Undefined
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Name: a@@V1
|
||||
# DSO-NEXT: Value: 0x12E8
|
||||
# DSO-NEXT: Name: b@V1
|
||||
# DSO-NEXT: Value: 0x12E9
|
||||
# DSO-NEXT: Size: 0
|
||||
# DSO-NEXT: Binding: Global
|
||||
# DSO-NEXT: Type: Function
|
||||
|
@ -35,8 +35,8 @@
|
|||
# DSO-NEXT: Section: .text
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Name: b@V1
|
||||
# DSO-NEXT: Value: 0x12E9
|
||||
# DSO-NEXT: Name: a@@V1
|
||||
# DSO-NEXT: Value: 0x12E8
|
||||
# DSO-NEXT: Size: 0
|
||||
# DSO-NEXT: Binding: Global
|
||||
# DSO-NEXT: Type: Function
|
||||
|
@ -60,7 +60,7 @@
|
|||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Version: 2
|
||||
# DSO-NEXT: Name: a@@V1
|
||||
# DSO-NEXT: Name: b@V1
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Version: 3
|
||||
|
@ -68,7 +68,7 @@
|
|||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Version: 2
|
||||
# DSO-NEXT: Name: b@V1
|
||||
# DSO-NEXT: Name: a@@V1
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Version: 3
|
||||
|
|
|
@ -51,12 +51,12 @@
|
|||
# ERROR: invalid glob pattern: a[
|
||||
|
||||
.text
|
||||
.globl _Z3abci
|
||||
.type _Z3abci,@function
|
||||
_Z3abci:
|
||||
retq
|
||||
|
||||
.globl _Z3abbi
|
||||
.type _Z3abbi,@function
|
||||
_Z3abbi:
|
||||
retq
|
||||
|
||||
.globl _Z3abci
|
||||
.type _Z3abci,@function
|
||||
_Z3abci:
|
||||
retq
|
||||
|
|
|
@ -6,16 +6,16 @@
|
|||
# RUN: llvm-readobj --dyn-syms %t.so | FileCheck %s --check-prefix=NOMATCH
|
||||
|
||||
# NOMATCH: DynamicSymbols [
|
||||
# NOMATCH-NOT: _Z3aaaPf@@FOO
|
||||
# NOMATCH-NOT: _Z3aaaPi@@FOO
|
||||
# NOMATCH-NOT: _Z3aaaPf@@FOO
|
||||
# NOMATCH: ]
|
||||
|
||||
# RUN: echo "FOO { global: extern \"C++\" { \"aaa*\"; aaa*; }; };" > %t2.script
|
||||
# RUN: ld.lld --version-script %t2.script -shared %t.o -o %t2.so
|
||||
# RUN: llvm-readobj --dyn-syms %t2.so | FileCheck %s --check-prefix=MATCH
|
||||
# MATCH: DynamicSymbols [
|
||||
# MATCH: _Z3aaaPf@@FOO
|
||||
# MATCH: _Z3aaaPi@@FOO
|
||||
# MATCH: _Z3aaaPf@@FOO
|
||||
# MATCH: ]
|
||||
|
||||
.text
|
||||
|
|
|
@ -62,13 +62,13 @@
|
|||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
.global _Z3fooi
|
||||
_Z3fooi:
|
||||
.global _Z3bari
|
||||
_Z3bari:
|
||||
.global _Z3zedi
|
||||
_Z3zedi:
|
||||
.global _Z3bazi
|
||||
_Z3bazi:
|
||||
.global _Z3fooi
|
||||
_Z3fooi:
|
||||
.global _Z3zedi
|
||||
_Z3zedi:
|
||||
.global _ZSt3qux
|
||||
_ZSt3qux:
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
# RUN: llvm-readobj -V --dyn-syms %t.so | FileCheck %s
|
||||
|
||||
# CHECK: VersionSymbols [
|
||||
# CHECK: Name: _Z3bari
|
||||
# CHECK: Name: _Z3fooi@@FOO
|
||||
# CHECK: Name: _Z3bari
|
||||
# CHECK: Name: _Z3zedi@@BAR
|
||||
|
||||
.text
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
# DSO-NEXT: Section: Undefined
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Name: _Z3bari@@LIBSAMPLE_2.0
|
||||
# DSO-NEXT: Name: _Z3fooi@@LIBSAMPLE_1.0
|
||||
# DSO-NEXT: Value:
|
||||
# DSO-NEXT: Size: 0
|
||||
# DSO-NEXT: Binding: Global
|
||||
|
@ -30,7 +30,7 @@
|
|||
# DSO-NEXT: Section: .text
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Name: _Z3fooi@@LIBSAMPLE_1.0
|
||||
# DSO-NEXT: Name: _Z3bari@@LIBSAMPLE_2.0
|
||||
# DSO-NEXT: Value:
|
||||
# DSO-NEXT: Size: 0
|
||||
# DSO-NEXT: Binding: Global
|
||||
|
@ -72,14 +72,14 @@
|
|||
# DSO-NEXT: Name:
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Version: 3
|
||||
# DSO-NEXT: Name: _Z3bari@@LIBSAMPLE_2.0
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Version: 2
|
||||
# DSO-NEXT: Name: _Z3fooi@@LIBSAMPLE_1.0
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Version: 3
|
||||
# DSO-NEXT: Name: _Z3bari@@LIBSAMPLE_2.0
|
||||
# DSO-NEXT: }
|
||||
# DSO-NEXT: Symbol {
|
||||
# DSO-NEXT: Version: 2
|
||||
# DSO-NEXT: Name: _Z3zedi@@LIBSAMPLE_1.0
|
||||
# DSO-NEXT: }
|
||||
|
|
|
@ -11,8 +11,8 @@ bar1:
|
|||
zed1:
|
||||
local:
|
||||
|
||||
# CHECK: bar1{{$}}
|
||||
# CHECK-NEXT: foo1{{$}}
|
||||
# CHECK: foo1{{$}}
|
||||
# CHECK-NEXT: bar1{{$}}
|
||||
# CHECK-NOT: {{.}}
|
||||
|
||||
# RUN: echo "{ global : local; local: *; };" > %t1.script
|
||||
|
|
|
@ -5,28 +5,28 @@
|
|||
# RUN: ld.lld --version-script %t.script -shared %t.o -o %t.so
|
||||
# RUN: llvm-readobj --dyn-syms %t.so | FileCheck --check-prefix=EXACT %s
|
||||
# EXACT: DynamicSymbols [
|
||||
# EXACT: _start
|
||||
# EXACT-NOT: foo1
|
||||
# EXACT: foo2
|
||||
# EXACT: foo3
|
||||
# EXACT: _start
|
||||
|
||||
# RUN: echo "VERSION_1.0 { local: foo*; };" > %t.script
|
||||
# RUN: ld.lld --version-script %t.script -shared %t.o -o %t.so
|
||||
# RUN: llvm-readobj --dyn-syms %t.so | FileCheck --check-prefix=WC %s
|
||||
# WC: DynamicSymbols [
|
||||
# WC: _start
|
||||
# WC-NOT: foo1
|
||||
# WC-NOT: foo2
|
||||
# WC-NOT: foo3
|
||||
# WC: _start
|
||||
|
||||
# RUN: echo "VERSION_1.0 { global: *; local: foo*; };" > %t.script
|
||||
# RUN: ld.lld --version-script %t.script -shared %t.o -o %t.so
|
||||
# RUN: llvm-readobj --dyn-syms %t.so | FileCheck --check-prefix=MIX %s
|
||||
# MIX: DynamicSymbols [
|
||||
# MIX: _start@@VERSION_1.0
|
||||
# MIX-NOT: foo1
|
||||
# MIX-NOT: foo2
|
||||
# MIX-NOT: foo3
|
||||
# MIX: _start@@VERSION_1.0
|
||||
|
||||
.globl foo1
|
||||
foo1:
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
# CHECK-NEXT: Name:
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Version: 3
|
||||
# CHECK-NEXT: Name: foo@@VER2
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Version: 2
|
||||
# CHECK-NEXT: Name: foo@VER1
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Version: 3
|
||||
# CHECK-NEXT: Name: foo@@VER2
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
||||
.global bar
|
||||
|
|
|
@ -64,11 +64,11 @@
|
|||
# RUN: ld.lld --hash-style=sysv --version-script %t2.script -shared %t.o %t2.so -o %t.so
|
||||
# RUN: llvm-readelf --dyn-syms %t.so | FileCheck --check-prefix=ALL %s
|
||||
|
||||
# ALL: _start{{$}}
|
||||
# ALL: foo1{{$}}
|
||||
# ALL-NEXT: bar{{$}}
|
||||
# ALL-NEXT: foo1{{$}}
|
||||
# ALL-NEXT: foo2{{$}}
|
||||
# ALL-NEXT: foo3{{$}}
|
||||
# ALL-NEXT: _start{{$}}
|
||||
# ALL-NOT: {{.}}
|
||||
|
||||
# RUN: echo "VERSION_1.0 { global: foo1; foo1; local: *; };" > %t8.script
|
||||
|
|
|
@ -4,7 +4,12 @@
|
|||
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %S/Inputs/vs-diagnostics-duplicate3.s -o %t3.o
|
||||
// RUN: not ld.lld --vs-diagnostics %t1.o %t2.o %t3.o -o /dev/null 2>&1 | FileCheck %s
|
||||
|
||||
// Case 1. Both symbols have full source location.
|
||||
// Case 1. The source locations are unknown for both symbols.
|
||||
// CHECK: {{.*}}ld.lld{{.*}}: error: duplicate symbol: foo
|
||||
// CHECK-NEXT: >>> defined at {{.*}}1.o:(.text+0x{{.+}})
|
||||
// CHECK-NEXT: >>> defined at {{.*}}2.o:(.text+0x{{.+}})
|
||||
|
||||
// Case 2. Both symbols have full source location.
|
||||
// CHECK: duplicate.s(15): error: duplicate symbol: bar
|
||||
// CHECK-NEXT: >>> defined at duplicate.s:15
|
||||
// CHECK-NEXT: >>>{{.*}}1.o:(.text+0x{{.+}})
|
||||
|
@ -12,11 +17,6 @@
|
|||
// CHECK-NEXT: >>> defined at duplicate2.s:20
|
||||
// CHECK-NEXT: >>>{{.*}}2.o:(.text+0x{{.+}})
|
||||
|
||||
// Case 2. The source locations are unknown for both symbols.
|
||||
// CHECK: {{.*}}ld.lld{{.*}}: error: duplicate symbol: foo
|
||||
// CHECK-NEXT: >>> defined at {{.*}}1.o:(.text+0x{{.+}})
|
||||
// CHECK-NEXT: >>> defined at {{.*}}2.o:(.text+0x{{.+}})
|
||||
|
||||
// Case 3. For the second definition of `baz` we know only the source file found in a STT_FILE symbol.
|
||||
// CHECK: duplicate.s(30): error: duplicate symbol: baz
|
||||
// CHECK-NEXT: >>> defined at duplicate.s:30
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
// CHECK-NEXT: movq {{.*}}(%rip), %rbx # 2021a8
|
||||
// CHECK-NEXT: movq {{.*}}(%rip), %rcx # 2021b0
|
||||
|
||||
// READELF: 0000000000011010 0 NOTYPE GLOBAL DEFAULT ABS __wrap_foo
|
||||
// READELF: 0000000000011000 0 NOTYPE GLOBAL DEFAULT ABS foo
|
||||
// READELF: 0000000000011010 0 NOTYPE GLOBAL DEFAULT ABS __wrap_foo
|
||||
// READELF: Hex dump of section '.got':
|
||||
// READELF-NEXT: 0x[[#%x,ADDR:]] 10100100 00000000 00100100 00000000
|
||||
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
|
||||
# RELOC: Relocations [
|
||||
# RELOC-NEXT: Section ({{.*}}) .rela.dyn {
|
||||
# RELOC-NEXT: R_X86_64_GLOB_DAT dsofoo 0x0
|
||||
# RELOC-NEXT: R_X86_64_GLOB_DAT foo 0x0
|
||||
# RELOC-NEXT: R_X86_64_GLOB_DAT und 0x0
|
||||
# RELOC-NEXT: R_X86_64_GLOB_DAT dsofoo 0x0
|
||||
# RELOC-NEXT: }
|
||||
# RELOC-NEXT: ]
|
||||
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
|
||||
// CHECK: Relocations [
|
||||
// CHECK-NEXT: Section (5) .rela.dyn {
|
||||
// CHECK-NEXT: 0x2023C8 R_X86_64_TPOFF64 tls0 0x0
|
||||
// CHECK-NEXT: [[ADDR]] R_X86_64_TPOFF64 tls1 0x0
|
||||
// CHECK-NEXT: 0x2023C8 R_X86_64_TPOFF64 tls0 0x0
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
|
||||
|
|
|
@ -724,9 +724,6 @@ void ELFWriter::computeSymbolTable(
|
|||
|
||||
StrTabBuilder.finalize();
|
||||
|
||||
// Symbols are required to be in lexicographic order.
|
||||
array_pod_sort(ExternalSymbolData.begin(), ExternalSymbolData.end());
|
||||
|
||||
// Make the first STT_FILE precede previous local symbols.
|
||||
unsigned Index = 1;
|
||||
auto FileNameIt = FileNames.begin();
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
; ELF-NEXT: ]
|
||||
|
||||
; ELF: Symbol {
|
||||
; ELF: Name: lds.defined
|
||||
; ELF-NEXT: Value: 0x8
|
||||
; ELF-NEXT: Size: 32
|
||||
; ELF: Name: lds.external
|
||||
; ELF-NEXT: Value: 0x4
|
||||
; ELF-NEXT: Size: 0
|
||||
; ELF-NEXT: Binding: Global (0x1)
|
||||
; ELF-NEXT: Type: Object (0x1)
|
||||
; ELF-NEXT: Other: 0
|
||||
|
@ -22,9 +22,9 @@
|
|||
; ELF-NEXT: }
|
||||
|
||||
; ELF: Symbol {
|
||||
; ELF: Name: lds.external
|
||||
; ELF-NEXT: Value: 0x4
|
||||
; ELF-NEXT: Size: 0
|
||||
; ELF: Name: lds.defined
|
||||
; ELF-NEXT: Value: 0x8
|
||||
; ELF-NEXT: Size: 32
|
||||
; ELF-NEXT: Binding: Global (0x1)
|
||||
; ELF-NEXT: Type: Object (0x1)
|
||||
; ELF-NEXT: Other: 0
|
||||
|
|
|
@ -21,9 +21,9 @@
|
|||
|
||||
; Check that 'barAlias' and 'varAlias' produced as undefined.
|
||||
; RUN: llvm-readelf --symbols %t2.o.1 | FileCheck %s --check-prefix=SYMBOLS
|
||||
; SYMBOLS: FUNC GLOBAL DEFAULT 2 zed
|
||||
; SYMBOLS: NOTYPE GLOBAL DEFAULT UND barAlias
|
||||
; SYMBOLS: NOTYPE GLOBAL DEFAULT UND varAlias
|
||||
; SYMBOLS: FUNC GLOBAL DEFAULT 2 zed
|
||||
|
||||
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
; RUN: llvm-readelf --symbols %t3.o.1 | FileCheck %s --check-prefix=SYMBOLS
|
||||
|
||||
; Check that 'foo' and 'bar' produced as undefined.
|
||||
; SYMBOLS: NOTYPE GLOBAL DEFAULT UND bar
|
||||
; SYMBOLS: NOTYPE GLOBAL DEFAULT UND foo
|
||||
; SYMBOLS: FUNC GLOBAL DEFAULT 2 zed
|
||||
; SYMBOLS: NOTYPE GLOBAL DEFAULT UND foo
|
||||
; SYMBOLS: NOTYPE GLOBAL DEFAULT UND bar
|
||||
|
||||
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
|
|
@ -34,7 +34,7 @@ aarch64_size:
|
|||
// SYMS: Type Bind Vis Ndx Name
|
||||
// SYMS: NOTYPE LOCAL DEFAULT 3 $d.0
|
||||
// SYMS-NEXT: FUNC GLOBAL DEFAULT 3 aarch64_size
|
||||
// SYMS-NEXT: NOTYPE GLOBAL DEFAULT UND also_double_word
|
||||
// SYMS-NEXT: NOTYPE GLOBAL DEFAULT UND double_word
|
||||
// SYMS-NEXT: NOTYPE GLOBAL DEFAULT UND full_word
|
||||
// SYMS-NEXT: NOTYPE GLOBAL DEFAULT UND half_word
|
||||
// SYMS-NEXT: NOTYPE GLOBAL DEFAULT UND full_word
|
||||
// SYMS-NEXT: NOTYPE GLOBAL DEFAULT UND double_word
|
||||
// SYMS-NEXT: NOTYPE GLOBAL DEFAULT UND also_double_word
|
||||
|
|
|
@ -49,6 +49,16 @@ test_kernel:
|
|||
// CHECK-NEXT: Section: Processor Specific (0xFF00)
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: lds4 (39)
|
||||
// CHECK-NEXT: Value: 0x4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global (0x1)
|
||||
// CHECK-NEXT: Type: Object (0x1)
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Processor Specific (0xFF00)
|
||||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: lds1 (49)
|
||||
// CHECK-NEXT: Value: 0x8
|
||||
|
@ -70,13 +80,3 @@ test_kernel:
|
|||
// CHECK-NEXT: }
|
||||
|
||||
// CHECK-NOT: Name: lds3
|
||||
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: lds4 (39)
|
||||
// CHECK-NEXT: Value: 0x4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global (0x1)
|
||||
// CHECK-NEXT: Type: Object (0x1)
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Processor Specific (0xFF00)
|
||||
// CHECK-NEXT: }
|
||||
|
|
|
@ -88,6 +88,15 @@ global1:
|
|||
@ CHECK-NEXT: Section: .text
|
||||
@ CHECK-NEXT: }
|
||||
@ CHECK-NEXT: Symbol {
|
||||
@ CHECK-NEXT: Name: global1
|
||||
@ CHECK-NEXT: Value: 0x14
|
||||
@ CHECK-NEXT: Size: 0
|
||||
@ CHECK-NEXT: Binding: Global (0x1)
|
||||
@ CHECK-NEXT: Type: None (0x0)
|
||||
@ CHECK-NEXT: Other: 0
|
||||
@ CHECK-NEXT: Section: .text
|
||||
@ CHECK-NEXT: }
|
||||
@ CHECK-NEXT: Symbol {
|
||||
@ CHECK-NEXT: Name: bar2@zed
|
||||
@ CHECK-NEXT: Value: 0x0
|
||||
@ CHECK-NEXT: Size: 0
|
||||
|
@ -114,13 +123,4 @@ global1:
|
|||
@ CHECK-NEXT: Other: 0
|
||||
@ CHECK-NEXT: Section: .text
|
||||
@ CHECK-NEXT: }
|
||||
@ CHECK-NEXT: Symbol {
|
||||
@ CHECK-NEXT: Name: global1
|
||||
@ CHECK-NEXT: Value: 0x14
|
||||
@ CHECK-NEXT: Size: 0
|
||||
@ CHECK-NEXT: Binding: Global (0x1)
|
||||
@ CHECK-NEXT: Type: None (0x0)
|
||||
@ CHECK-NEXT: Other: 0
|
||||
@ CHECK-NEXT: Section: .text
|
||||
@ CHECK-NEXT: }
|
||||
@ CHECK-NEXT: ]
|
||||
|
|
|
@ -18,6 +18,13 @@ bar = foo
|
|||
baz = foo + 2
|
||||
|
||||
@@ make sure foo and bar are thumb function: bit 0 = 1 (st_value)
|
||||
@CHECK: Symbol {
|
||||
@CHECK: Name: foo
|
||||
@CHECK-NEXT: Value: 0x1
|
||||
@CHECK-NEXT: Size: 0
|
||||
@CHECK-NEXT: Binding: Global
|
||||
@CHECK-NEXT: Type: Function
|
||||
|
||||
@CHECK: Symbol {
|
||||
@CHECK: Name: bar
|
||||
@CHECK-NEXT: Value: 0x1
|
||||
|
@ -31,10 +38,3 @@ baz = foo + 2
|
|||
@CHECK-NEXT: Size: 0
|
||||
@CHECK-NEXT: Binding: Global
|
||||
@CHECK-NEXT: Type: Function
|
||||
|
||||
@CHECK: Symbol {
|
||||
@CHECK: Name: foo
|
||||
@CHECK-NEXT: Value: 0x1
|
||||
@CHECK-NEXT: Size: 0
|
||||
@CHECK-NEXT: Binding: Global
|
||||
@CHECK-NEXT: Type: Function
|
||||
|
|
|
@ -326,14 +326,26 @@ p:
|
|||
//CHECK: Section: my_bss.2 (0x12)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: a
|
||||
//CHECK: Section: my_bss.1 (0xE)
|
||||
//CHECK: Name: foo
|
||||
//CHECK: Section: my_text.1 (0x4)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: b
|
||||
//CHECK: Section: my_data.1 (0xF)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: goo
|
||||
//CHECK: Section: my_text.2 (0x8)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: hoo
|
||||
//CHECK: Section: .text (0x2)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: a
|
||||
//CHECK: Section: my_bss.1 (0xE)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: c
|
||||
//CHECK: Section: my_bss.1 (0xE)
|
||||
//CHECK: }
|
||||
|
@ -350,22 +362,10 @@ p:
|
|||
//CHECK: Section: my_rodata.1 (0x10)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: foo
|
||||
//CHECK: Section: my_text.1 (0x4)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: goo
|
||||
//CHECK: Section: my_text.2 (0x8)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: h
|
||||
//CHECK: Section: .bss (0x11)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: hoo
|
||||
//CHECK: Section: .text (0x2)
|
||||
//CHECK: }
|
||||
//CHECK: Symbol {
|
||||
//CHECK: Name: i
|
||||
//CHECK: Section: my_bss.2 (0x12)
|
||||
//CHECK: }
|
||||
|
|
|
@ -28,8 +28,8 @@ late3:
|
|||
# CHECK-NEXT: EntrySize: 16
|
||||
# CHECK-NEXT: SectionData (
|
||||
# CHECK-NEXT: 0000: 02000000 05000000 20000000 00000000
|
||||
# CHECK-NEXT: 0010: 06000000 02000000 0B000000 00000000
|
||||
# CHECK-NEXT: 0020: 07000000 03000000 14000000 00000000
|
||||
# CHECK-NEXT: 0010: 07000000 02000000 0B000000 00000000
|
||||
# CHECK-NEXT: 0020: 06000000 03000000 14000000 00000000
|
||||
# CHECK-NEXT: 0030: 01000000 05000000 2A000000 00000000
|
||||
# CHECK-NEXT: )
|
||||
|
||||
|
@ -62,13 +62,6 @@ late3:
|
|||
# CHECK-NEXT: Type:
|
||||
# CHECK-NEXT: Other:
|
||||
# CHECK-NEXT: Section: Undefined
|
||||
# CHECK: Name: freq
|
||||
# CHECK-NEXT: Value:
|
||||
# CHECK-NEXT: Size:
|
||||
# CHECK-NEXT: Binding: Weak
|
||||
# CHECK-NEXT: Type:
|
||||
# CHECK-NEXT: Other:
|
||||
# CHECK-NEXT: Section: Undefined
|
||||
# CHECK: Name: late
|
||||
# CHECK-NEXT: Value:
|
||||
# CHECK-NEXT: Size:
|
||||
|
@ -76,6 +69,13 @@ late3:
|
|||
# CHECK-NEXT: Type:
|
||||
# CHECK-NEXT: Other:
|
||||
# CHECK-NEXT: Section: .test
|
||||
# CHECK: Name: freq
|
||||
# CHECK-NEXT: Value:
|
||||
# CHECK-NEXT: Size:
|
||||
# CHECK-NEXT: Binding: Weak
|
||||
# CHECK-NEXT: Type:
|
||||
# CHECK-NEXT: Other:
|
||||
# CHECK-NEXT: Section: Undefined
|
||||
# CHECK: CGProfile [
|
||||
# CHECK-NEXT: CGProfileEntry {
|
||||
# CHECK-NEXT: From: a
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
# CHECK-NEXT: 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 bar1
|
||||
# CHECK-NEXT: 9: 0000000000000000 0 NOTYPE LOCAL DEFAULT 8 local2
|
||||
# CHECK-NEXT: 10: 0000000000000000 0 FILE LOCAL DEFAULT ABS bar.c
|
||||
# CHECK-NEXT: 11: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 6 bar.c
|
||||
# CHECK-NEXT: 12: 0000000000000008 0 NOTYPE GLOBAL DEFAULT 2 foo.c
|
||||
# CHECK-NEXT: 11: 0000000000000008 0 NOTYPE GLOBAL DEFAULT 2 foo.c
|
||||
# CHECK-NEXT: 12: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 6 bar.c
|
||||
|
||||
.quad .text
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ mov %eax,bar
|
|||
|
||||
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: bar
|
||||
// CHECK: Name: foo
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
|
@ -17,7 +17,7 @@ mov %eax,bar
|
|||
// CHECK-NEXT: Section: Undefined (0x0)
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Name: bar
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
|
|
|
@ -50,6 +50,6 @@ call memcpy_plus_1@PLT
|
|||
# SYM-NEXT: NOTYPE LOCAL DEFAULT 4 data_alias_l
|
||||
# SYM-NEXT: SECTION LOCAL DEFAULT 4 .data
|
||||
# SYM-NEXT: NOTYPE GLOBAL DEFAULT UND __GI_memcpy
|
||||
# SYM-NEXT: NOTYPE GLOBAL DEFAULT 4 data
|
||||
# SYM-NEXT: NOTYPE GLOBAL DEFAULT 4 data_alias
|
||||
# SYM-NEXT: NOTYPE GLOBAL DEFAULT 4 data
|
||||
# SYM-NOT: {{.}}
|
||||
|
|
|
@ -16,6 +16,6 @@ foobar:
|
|||
.Ltmp3:
|
||||
.size foobar, .Ltmp3-foobar
|
||||
|
||||
// CHECK: Name: bar (14)
|
||||
// CHECK: Name: foo (18)
|
||||
// CHECK: Name: foobar (11)
|
||||
// CHECK: Name: foo (18)
|
||||
// CHECK: Name: bar (14)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t
|
||||
# RUN: llvm-readelf -s %t | FileCheck %s
|
||||
|
||||
# CHECK: NOTYPE GLOBAL HIDDEN {{[1-9]}} def@@v1
|
||||
# CHECK-NEXT: NOTYPE GLOBAL PROTECTED UND undef@v1
|
||||
# CHECK: NOTYPE GLOBAL PROTECTED UND undef@v1
|
||||
# CHECK-NEXT: NOTYPE GLOBAL HIDDEN {{[1-9]}} def@@v1
|
||||
|
||||
.protected undef
|
||||
.symver undef, undef@@@v1
|
||||
|
|
|
@ -42,7 +42,7 @@ global1:
|
|||
# SYM-NEXT: 4: 0000000000000000 0 NOTYPE LOCAL DEFAULT 2 bar1@zed
|
||||
# SYM-NEXT: 5: 0000000000000000 0 NOTYPE LOCAL DEFAULT 2 bar3@@zed
|
||||
# SYM-NEXT: 6: 0000000000000000 0 NOTYPE LOCAL DEFAULT 2 bar5@@zed
|
||||
# SYM-NEXT: 7: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar2@zed
|
||||
# SYM-NEXT: 8: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar6@zed
|
||||
# SYM-NEXT: 9: 0000000000000014 0 NOTYPE GLOBAL DEFAULT 2 g1@@zed
|
||||
# SYM-NEXT: 10: 0000000000000014 0 NOTYPE GLOBAL DEFAULT 2 global1
|
||||
# SYM-NEXT: 7: 0000000000000014 0 NOTYPE GLOBAL DEFAULT 2 global1
|
||||
# SYM-NEXT: 8: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar2@zed
|
||||
# SYM-NEXT: 9: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar6@zed
|
||||
# SYM-NEXT: 10: 0000000000000014 0 NOTYPE GLOBAL DEFAULT 2 g1@@zed
|
||||
|
|
|
@ -2,40 +2,40 @@
|
|||
|
||||
# CHECK: Symbol table '.symtab' contains 34 entries:
|
||||
# CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
# CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
# CHECK-NEXT: 1: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 alias1
|
||||
# CHECK-NEXT: 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 alias10
|
||||
# CHECK-NEXT: 3: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 alias11
|
||||
# CHECK-NEXT: 4: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 alias12
|
||||
# CHECK-NEXT: 5: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 alias2
|
||||
# CHECK-NEXT: 6: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 alias3
|
||||
# CHECK-NEXT: 7: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 alias4
|
||||
# CHECK-NEXT: 8: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 alias5
|
||||
# CHECK-NEXT: 9: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 alias6
|
||||
# CHECK-NEXT: 10: 0000000000000000 0 TLS GLOBAL DEFAULT 2 alias7
|
||||
# CHECK-NEXT: 11: 0000000000000000 0 TLS GLOBAL DEFAULT 2 alias8
|
||||
# CHECK-NEXT: 12: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 alias9
|
||||
# CHECK-NEXT: 13: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 bar
|
||||
# CHECK-NEXT: 14: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 foo
|
||||
# CHECK-NEXT: 15: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 func
|
||||
# CHECK-NEXT: 16: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 ifunc
|
||||
# CHECK-NEXT: 17: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 obj
|
||||
# CHECK-NEXT: 18: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 sym1
|
||||
# CHECK-NEXT: 19: 0000000000000000 0 TLS GLOBAL DEFAULT 2 sym10
|
||||
# CHECK-NEXT: 20: 0000000000000000 0 TLS GLOBAL DEFAULT 2 sym11
|
||||
# CHECK-NEXT: 21: 0000000000000000 0 TLS GLOBAL DEFAULT 2 sym12
|
||||
# CHECK-NEXT: 22: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 sym2
|
||||
# CHECK-NEXT: 23: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 sym3
|
||||
# CHECK-NEXT: 24: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 sym4
|
||||
# CHECK-NEXT: 25: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 sym5
|
||||
# CHECK-NEXT: 26: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 sym6
|
||||
# CHECK-NEXT: 27: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 sym7
|
||||
# CHECK-NEXT: 28: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 sym8
|
||||
# CHECK-NEXT: 29: 0000000000000000 0 TLS GLOBAL DEFAULT 2 sym9
|
||||
# CHECK-NEXT: 30: 0000000000000000 0 TLS GLOBAL DEFAULT 2 tls
|
||||
# CHECK-NEXT: 31: 0000000000000000 0 TLS GLOBAL DEFAULT 2 tls_quoted
|
||||
# CHECK-NEXT: 32: 0000000000000000 0 TLS GLOBAL DEFAULT 2 tls_upper_case
|
||||
# CHECK-NEXT: 33: 0000000000000000 0 OBJECT UNIQUE DEFAULT 2 zed
|
||||
# CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
# CHECK-NEXT: 1: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 foo
|
||||
# CHECK-NEXT: 2: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 bar
|
||||
# CHECK-NEXT: 3: 0000000000000000 0 OBJECT UNIQUE DEFAULT 2 zed
|
||||
# CHECK-NEXT: 4: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 obj
|
||||
# CHECK-NEXT: 5: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 func
|
||||
# CHECK-NEXT: 6: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 ifunc
|
||||
# CHECK-NEXT: 7: 0000000000000000 0 TLS GLOBAL DEFAULT 2 tls
|
||||
# CHECK-NEXT: 8: 0000000000000000 0 TLS GLOBAL DEFAULT 2 tls_quoted
|
||||
# CHECK-NEXT: 9: 0000000000000000 0 TLS GLOBAL DEFAULT 2 tls_upper_case
|
||||
# CHECK-NEXT: 10: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 sym1
|
||||
# CHECK-NEXT: 11: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 alias1
|
||||
# CHECK-NEXT: 12: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 sym2
|
||||
# CHECK-NEXT: 13: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 alias2
|
||||
# CHECK-NEXT: 14: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 sym3
|
||||
# CHECK-NEXT: 15: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 alias3
|
||||
# CHECK-NEXT: 16: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 sym4
|
||||
# CHECK-NEXT: 17: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 alias4
|
||||
# CHECK-NEXT: 18: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 sym5
|
||||
# CHECK-NEXT: 19: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 alias5
|
||||
# CHECK-NEXT: 20: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 sym6
|
||||
# CHECK-NEXT: 21: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 alias6
|
||||
# CHECK-NEXT: 22: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 sym7
|
||||
# CHECK-NEXT: 23: 0000000000000000 0 TLS GLOBAL DEFAULT 2 alias7
|
||||
# CHECK-NEXT: 24: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 sym8
|
||||
# CHECK-NEXT: 25: 0000000000000000 0 TLS GLOBAL DEFAULT 2 alias8
|
||||
# CHECK-NEXT: 26: 0000000000000000 0 TLS GLOBAL DEFAULT 2 sym9
|
||||
# CHECK-NEXT: 27: 0000000000000000 0 OBJECT GLOBAL DEFAULT 2 alias9
|
||||
# CHECK-NEXT: 28: 0000000000000000 0 TLS GLOBAL DEFAULT 2 sym10
|
||||
# CHECK-NEXT: 29: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 alias10
|
||||
# CHECK-NEXT: 30: 0000000000000000 0 TLS GLOBAL DEFAULT 2 sym11
|
||||
# CHECK-NEXT: 31: 0000000000000000 0 IFUNC GLOBAL DEFAULT 2 alias11
|
||||
# CHECK-NEXT: 32: 0000000000000000 0 TLS GLOBAL DEFAULT 2 sym12
|
||||
# CHECK-NEXT: 33: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 alias12
|
||||
|
||||
// Test that both % and @ are accepted.
|
||||
.global foo
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
# CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
# CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
# CHECK-NEXT: 1: 0000000000000000 0 NOTYPE LOCAL DEFAULT 4 .Lsym8
|
||||
# CHECK-NEXT: 2: 0000000000000000 0 NOTYPE GLOBAL HIDDEN UND hidden
|
||||
# CHECK-NEXT: 3: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND sym6
|
||||
# CHECK-NEXT: 2: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND sym6
|
||||
# CHECK-NEXT: 3: 0000000000000000 0 NOTYPE GLOBAL HIDDEN UND hidden
|
||||
# CHECK-NEXT: 4: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND undef
|
||||
|
||||
.Lsym2:
|
||||
|
|
|
@ -9,15 +9,6 @@
|
|||
.weak bar
|
||||
bar:
|
||||
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: bar
|
||||
// CHECK-NEXT: Value: 0x4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Weak
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: foo
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
|
@ -27,4 +18,13 @@ bar:
|
|||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: Undefined (0x0)
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: bar
|
||||
// CHECK-NEXT: Value: 0x4
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Weak
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
|
|
|
@ -13,17 +13,16 @@
|
|||
# CHECK-NEXT: 4: 000000000000001c 0 NOTYPE LOCAL DEFAULT 2 bar8
|
||||
# CHECK-NEXT: 5: 0000000000000020 0 NOTYPE LOCAL DEFAULT 2 bar9
|
||||
# CHECK-NEXT: 6: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar1
|
||||
# CHECK-NEXT: 7: 0000000000000028 0 NOTYPE GLOBAL DEFAULT 2 bar10
|
||||
# CHECK-NEXT: 8: 0000000000000030 0 NOTYPE GLOBAL DEFAULT 2 bar11
|
||||
# CHECK-NEXT: 9: 0000000000000030 0 NOTYPE GLOBAL DEFAULT 2 bar12
|
||||
# CHECK-NEXT: 10: 0000000000000034 0 NOTYPE GLOBAL DEFAULT 2 bar13
|
||||
# CHECK-NEXT: 11: 0000000000000038 0 NOTYPE GLOBAL DEFAULT 2 bar14
|
||||
# CHECK-NEXT: 12: 0000000000000040 0 NOTYPE GLOBAL DEFAULT 2 bar15
|
||||
# CHECK-NEXT: 13: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar2
|
||||
# CHECK-NEXT: 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND bar3
|
||||
# CHECK-NEXT: 15: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar4
|
||||
# CHECK-NEXT: 16: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar5
|
||||
|
||||
# CHECK-NEXT: 7: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar2
|
||||
# CHECK-NEXT: 8: 0000000000000000 0 NOTYPE WEAK DEFAULT UND bar3
|
||||
# CHECK-NEXT: 9: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar4
|
||||
# CHECK-NEXT: 10: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND bar5
|
||||
# CHECK-NEXT: 11: 0000000000000028 0 NOTYPE GLOBAL DEFAULT 2 bar10
|
||||
# CHECK-NEXT: 12: 0000000000000030 0 NOTYPE GLOBAL DEFAULT 2 bar11
|
||||
# CHECK-NEXT: 13: 0000000000000030 0 NOTYPE GLOBAL DEFAULT 2 bar12
|
||||
# CHECK-NEXT: 14: 0000000000000034 0 NOTYPE GLOBAL DEFAULT 2 bar13
|
||||
# CHECK-NEXT: 15: 0000000000000038 0 NOTYPE GLOBAL DEFAULT 2 bar14
|
||||
# CHECK-NEXT: 16: 0000000000000040 0 NOTYPE GLOBAL DEFAULT 2 bar15
|
||||
|
||||
.weakref foo1, bar1
|
||||
|
||||
|
|
|
@ -18,9 +18,9 @@ d1:
|
|||
f2:
|
||||
nop
|
||||
|
||||
// CHECK-LABEL: Name: d1
|
||||
// CHECK: Other: 0
|
||||
// CHECK-LABEL: Name: f1
|
||||
// CHECK: Other [ (0x80)
|
||||
// CHECK-LABEL: Name: d1
|
||||
// CHECK: Other: 0
|
||||
// CHECK-LABEL: Name: f2
|
||||
// CHECK: Other: 0
|
||||
|
|
|
@ -78,18 +78,18 @@ bar:
|
|||
# OBJ: Name: f_mm_insn_instr
|
||||
# OBJ: Other [ (0x80)
|
||||
|
||||
# OBJ: Name: f_normal_insn_data
|
||||
# OBJ: Other: 0
|
||||
|
||||
# OBJ: Name: f_normal_insn_instr
|
||||
# OBJ: Other: 0
|
||||
|
||||
# OBJ: Name: o_mm_insn_data
|
||||
# OBJ: Other [ (0x80)
|
||||
|
||||
# OBJ: Name: o_mm_insn_instr
|
||||
# OBJ: Other [ (0x80)
|
||||
|
||||
# OBJ: Name: f_normal_insn_data
|
||||
# OBJ: Other: 0
|
||||
|
||||
# OBJ: Name: f_normal_insn_instr
|
||||
# OBJ: Other: 0
|
||||
|
||||
# OBJ: Name: o_normal_insn_data
|
||||
# OBJ: Other: 0
|
||||
|
||||
|
|
|
@ -3,9 +3,10 @@
|
|||
|
||||
# CHECK: Type Bind Vis Ndx Name
|
||||
# CHECK: FUNC GLOBAL DEFAULT [<other: 0x60>] 2 foo
|
||||
# CHECK-NEXT: FUNC WEAK DEFAULT [<other: 0x60>] 2 foo@FBSD_1.1
|
||||
# CHECK-NEXT: FUNC WEAK DEFAULT [<other: 0x60>] 2 __impl_foo
|
||||
# CHECK-NEXT: FUNC GLOBAL DEFAULT [<other: 0x60>] 2 func
|
||||
# CHECK-NEXT: FUNC WEAK DEFAULT [<other: 0x60>] 2 weak_func
|
||||
# CHECK: FUNC WEAK DEFAULT [<other: 0x60>] 2 foo@FBSD_1.1
|
||||
|
||||
.text
|
||||
.abiversion 2
|
||||
|
|
Loading…
Reference in New Issue