diff options
author | Fangrui Song <i@maskray.me> | 2021-02-12 21:00:42 -0800 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2021-02-12 21:00:42 -0800 |
commit | 1f69355802ad446d95b4f71c421dd4100eb8aa77 (patch) | |
tree | 1362491a5f6112bf4c9aa87a2acf4c7e86d1f332 | |
parent | 816053bc71751cac46aef085f57b7f305c7bbcd1 (diff) | |
download | llvm-1f69355802ad446d95b4f71c421dd4100eb8aa77.zip llvm-1f69355802ad446d95b4f71c421dd4100eb8aa77.tar.gz llvm-1f69355802ad446d95b4f71c421dd4100eb8aa77.tar.bz2 |
[test] Make ELF tests amenable to the order of non-local symbols
29 files changed, 198 insertions, 954 deletions
diff --git a/lld/test/ELF/aarch64-tls-ie.s b/lld/test/ELF/aarch64-tls-ie.s index 6d3e4e2..bd6ec5e 100644 --- a/lld/test/ELF/aarch64-tls-ie.s +++ b/lld/test/ELF/aarch64-tls-ie.s @@ -24,8 +24,8 @@ # RELOC-NEXT: } # RELOC: Relocations [ # RELOC-NEXT: Section ({{.*}}) .rela.dyn { -# RELOC-NEXT: 0x220340 R_AARCH64_TLS_TPREL64 bar 0x0 -# RELOC-NEXT: 0x220338 R_AARCH64_TLS_TPREL64 foo 0x0 +# RELOC-NEXT: 0x220338 R_AARCH64_TLS_TPREL64 bar 0x0 +# RELOC-NEXT: 0x220340 R_AARCH64_TLS_TPREL64 foo 0x0 # RELOC-NEXT: } # RELOC-NEXT:] @@ -41,8 +41,8 @@ .globl _start _start: - adrp x0, :gottprel:foo - ldr x0, [x0, #:gottprel_lo12:foo] - adrp x0, :gottprel:bar ldr x0, [x0, #:gottprel_lo12:bar] + + adrp x0, :gottprel:foo + ldr x0, [x0, #:gottprel_lo12:foo] diff --git a/lld/test/ELF/arm-gnu-ifunc.s b/lld/test/ELF/arm-gnu-ifunc.s index 9a410aa..51027e4 100644 --- a/lld/test/ELF/arm-gnu-ifunc.s +++ b/lld/test/ELF/arm-gnu-ifunc.s @@ -5,13 +5,12 @@ // RUN: llvm-readobj -r --symbols --sections %t | FileCheck %s .syntax unified .text + .globl bar, foo .type foo STT_GNU_IFUNC - .globl foo foo: bx lr .type bar STT_GNU_IFUNC - .globl bar bar: bx lr diff --git a/lld/test/ELF/combreloc.s b/lld/test/ELF/combreloc.s index b3fc252..17edb93 100644 --- a/lld/test/ELF/combreloc.s +++ b/lld/test/ELF/combreloc.s @@ -39,6 +39,7 @@ # NOCOMB-NEXT: 0x23F0 R_X86_64_GLOB_DAT aaa 0x0 # NOCOMB-NEXT: } +.globl aaa, bbb, ccc .data .quad aaa .quad ccc diff --git a/lld/test/ELF/comdat-discarded-lazy.s b/lld/test/ELF/comdat-discarded-lazy.s index 8ee1515..4a7c008 100644 --- a/lld/test/ELF/comdat-discarded-lazy.s +++ b/lld/test/ELF/comdat-discarded-lazy.s @@ -11,7 +11,7 @@ ## *before* the symbol fetching the lazy object. ## The test relies on the symbol table order of llvm-mc (lexical), which will ## need adjustment if llvm-mc changes its behavior. -# RUN: echo '.globl f2, aa; f2: call aa; \ +# RUN: echo '.globl aa, f2; f2: call aa; \ # RUN: .section .text.foo,"axG",@progbits,foo,comdat; aa:' | \ # RUN: llvm-mc -filetype=obj -triple=x86_64 - -o %taa.o # RUN: llvm-nm -p %taa.o | FileCheck --check-prefix=AA-NM %s diff --git a/lld/test/ELF/common-gc.s b/lld/test/ELF/common-gc.s index ab1d674..6c37f20 100644 --- a/lld/test/ELF/common-gc.s +++ b/lld/test/ELF/common-gc.s @@ -32,8 +32,8 @@ # GC-NOT: Name: bar -.comm foo,4,4 .comm bar,4,4 +.comm foo,4,4 .text .globl _start diff --git a/lld/test/ELF/common-gc2.s b/lld/test/ELF/common-gc2.s index 21bff88..fec1c4b 100644 --- a/lld/test/ELF/common-gc2.s +++ b/lld/test/ELF/common-gc2.s @@ -6,8 +6,8 @@ # CHECK: Name: bar # CHECK: Name: foo -.comm foo,4,4 .comm bar,4,4 +.comm foo,4,4 .text .globl _start diff --git a/lld/test/ELF/conflict-debug-variable.s b/lld/test/ELF/conflict-debug-variable.s index a9188fc..dd88c51 100644 --- a/lld/test/ELF/conflict-debug-variable.s +++ b/lld/test/ELF/conflict-debug-variable.s @@ -42,12 +42,6 @@ # static int zed = 3; # Invocation: g++ -g -S 1.c -.bss -.globl foo -.type foo, @object -.size foo, 4 -foo: - .data .globl bar .type bar, @object @@ -55,6 +49,12 @@ foo: bar: .byte 0 +.bss +.globl foo +.type foo, @object +.size foo, 4 +foo: + .local zed zed: diff --git a/lld/test/ELF/conflict-debug-variable2.s b/lld/test/ELF/conflict-debug-variable2.s index 3fb59e6b..25090b1 100644 --- a/lld/test/ELF/conflict-debug-variable2.s +++ b/lld/test/ELF/conflict-debug-variable2.s @@ -42,14 +42,6 @@ .file "test.c" .file 1 "test.c" -.type foo,@object -.bss -.globl foo -.p2align 2 -foo: - .long 0 - .size foo, 4 - .type bar,@object .data .globl bar @@ -58,6 +50,14 @@ bar: .long 1 .size bar, 4 +.type foo,@object +.bss +.globl foo +.p2align 2 +foo: + .long 0 + .size foo, 4 + .section .debug_str,"MS",@progbits,1 .Linfo_string0: .asciz "clang version 6.0.0" diff --git a/lld/test/ELF/defsym.s b/lld/test/ELF/defsym.s index 94c1bc0..bb5e783 100644 --- a/lld/test/ELF/defsym.s +++ b/lld/test/ELF/defsym.s @@ -1,12 +1,12 @@ # REQUIRES: x86 # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o # RUN: ld.lld -o %t %t.o --defsym=foo2=foo1 -# RUN: llvm-readobj --symbols -S %t | FileCheck %s +# RUN: llvm-readelf -s %t | FileCheck %s # RUN: llvm-objdump -d --print-imm-hex %t | FileCheck %s --check-prefix=USE ## Check that we accept --defsym foo2=foo1 form. # RUN: ld.lld -o %t2 %t.o --defsym foo2=foo1 -# RUN: llvm-readobj --symbols -S %t2 | FileCheck %s +# RUN: llvm-readelf -s %t2 | FileCheck %s # RUN: llvm-objdump -d --print-imm-hex %t2 | FileCheck %s --check-prefix=USE ## Check we are reporting the error correctly and don't crash @@ -15,24 +15,8 @@ # --defsym foo2=foo1 2>&1 | FileCheck %s --check-prefix=ERR # ERR: error: -defsym: syntax error: ERR+ -# CHECK: Symbol { -# CHECK: Name: foo1 -# CHECK-NEXT: Value: 0x123 -# CHECK-NEXT: Size: -# CHECK-NEXT: Binding: Global -# CHECK-NEXT: Type: -# CHECK-NEXT: Other: -# CHECK-NEXT: Section: Absolute -# CHECK-NEXT: } -# CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: foo2 -# CHECK-NEXT: Value: 0x123 -# CHECK-NEXT: Size: -# CHECK-NEXT: Binding: Global -# CHECK-NEXT: Type: -# CHECK-NEXT: Other: -# CHECK-NEXT: Section: Absolute -# CHECK-NEXT: } +# CHECK-DAG: 0000000000000123 0 NOTYPE GLOBAL DEFAULT ABS foo1 +# CHECK-DAG: 0000000000000123 0 NOTYPE GLOBAL DEFAULT ABS foo2 ## Check we can use foo2 and it that it is an alias for foo1. # USE: Disassembly of section .text: @@ -41,39 +25,15 @@ # USE-NEXT: movl $0x123, %edx # RUN: ld.lld -o %t %t.o --defsym=foo2=1 -# RUN: llvm-readobj --symbols -S %t | FileCheck %s --check-prefix=ABS +# RUN: llvm-readelf -s %t | FileCheck %s --check-prefix=ABS -# ABS: Symbol { -# ABS: Name: foo2 -# ABS-NEXT: Value: 0x1 -# ABS-NEXT: Size: -# ABS-NEXT: Binding: Global -# ABS-NEXT: Type: -# ABS-NEXT: Other: -# ABS-NEXT: Section: Absolute -# ABS-NEXT: } +# ABS: 0000000000000123 0 NOTYPE GLOBAL DEFAULT ABS foo2 # RUN: ld.lld -o %t %t.o --defsym=foo2=foo1+5 -# RUN: llvm-readobj --symbols -S %t | FileCheck %s --check-prefix=EXPR +# RUN: llvm-readelf -s %t | FileCheck %s --check-prefix=EXPR -# EXPR: Symbol { -# EXPR: Name: foo1 -# EXPR-NEXT: Value: 0x123 -# EXPR-NEXT: Size: -# EXPR-NEXT: Binding: Global -# EXPR-NEXT: Type: -# EXPR-NEXT: Other: -# EXPR-NEXT: Section: Absolute -# EXPR-NEXT: } -# EXPR-NEXT: Symbol { -# EXPR-NEXT: Name: foo2 -# EXPR-NEXT: Value: 0x128 -# EXPR-NEXT: Size: -# EXPR-NEXT: Binding: Global -# EXPR-NEXT: Type: -# EXPR-NEXT: Other: -# EXPR-NEXT: Section: Absolute -# EXPR-NEXT: } +# EXPR-DAG: 0000000000000123 0 NOTYPE GLOBAL DEFAULT ABS foo1 +# EXPR-DAG: 0000000000000128 0 NOTYPE GLOBAL DEFAULT ABS foo2 # RUN: not ld.lld -o /dev/null %t.o --defsym=foo2=und 2>&1 | FileCheck %s -check-prefix=ERR1 # ERR1: error: -defsym:1: symbol not found: und diff --git a/lld/test/ELF/dynamic-list-glob.s b/lld/test/ELF/dynamic-list-glob.s index 3018847..1a84978 100644 --- a/lld/test/ELF/dynamic-list-glob.s +++ b/lld/test/ELF/dynamic-list-glob.s @@ -14,9 +14,9 @@ # CHECK-NEXT: foo1 # CHECK-NEXT: foo11 -.globl _start, foo1, foo11, foo2, boo1 +.globl _start, boo1, foo1, foo11, foo2 +_start: foo1: foo11: foo2: boo1: -_start: diff --git a/lld/test/ELF/edata-etext.s b/lld/test/ELF/edata-etext.s index f0f515f..673475e 100644 --- a/lld/test/ELF/edata-etext.s +++ b/lld/test/ELF/edata-etext.s @@ -32,7 +32,7 @@ # RELOCATABLE-NEXT: 0000000000000000 *UND* 0000000000000000 _end # RELOCATABLE-NEXT: 0000000000000000 *UND* 0000000000000000 _etext -.global _start,_end,_etext,_edata,end,etext,edata +.global _edata,_end,_etext,_start,edata,end,etext .text _start: nop diff --git a/lld/test/ELF/ehdr_start.s b/lld/test/ELF/ehdr_start.s index 84af0e2..2eb5282 100644 --- a/lld/test/ELF/ehdr_start.s +++ b/lld/test/ELF/ehdr_start.s @@ -24,7 +24,7 @@ # CHECK-NEXT: Section: .text .text -.global _start, __ehdr_start +.global __ehdr_start, _start _start: .quad __ehdr_start .quad __executable_start diff --git a/lld/test/ELF/gc-sections-shared.s b/lld/test/ELF/gc-sections-shared.s index 8ef5bc0..d32c15d 100644 --- a/lld/test/ELF/gc-sections-shared.s +++ b/lld/test/ELF/gc-sections-shared.s @@ -7,7 +7,7 @@ # RUN: ld.lld -shared %t4.o -o %t4.so # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o # RUN: ld.lld --gc-sections --export-dynamic-symbol foo -o %t %t.o --as-needed %t2.so %t3.so %t4.so -# RUN: llvm-readobj --dynamic-table --dyn-symbols %t | FileCheck %s +# RUN: llvm-readelf -d --dyn-symbols %t | FileCheck %s # This test the property that we have a needed line for every undefined. # It would also be OK to keep bar2 and the need for %t2.so @@ -15,60 +15,17 @@ # this case is checked with symbol qux and %t4.so. # CHECK-NOT: NEEDED -# CHECK: NEEDED Shared library: [{{.*}}3.so] +# CHECK: (NEEDED) Shared library: [{{.*}}3.so] # CHECK-NOT: NEEDED -# CHECK: DynamicSymbols [ -# CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: -# CHECK-NEXT: Value: -# CHECK-NEXT: Size: -# CHECK-NEXT: Binding: Local -# CHECK-NEXT: Type: -# CHECK-NEXT: Other: -# CHECK-NEXT: Section: Undefined (0x0) -# CHECK-NEXT: } -# CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: qux -# CHECK-NEXT: Value: -# CHECK-NEXT: Size: -# CHECK-NEXT: Binding: Weak -# CHECK-NEXT: Type: -# CHECK-NEXT: Other: -# CHECK-NEXT: Section: Undefined -# CHECK-NEXT: } -# CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: bar -# CHECK-NEXT: Value: -# CHECK-NEXT: Size: -# CHECK-NEXT: Binding: Global -# CHECK-NEXT: Type: -# CHECK-NEXT: Other: -# CHECK-NEXT: Section: .text -# CHECK-NEXT: } -# CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: baz -# CHECK-NEXT: Value: -# CHECK-NEXT: Size: -# CHECK-NEXT: Binding: Global -# CHECK-NEXT: Type: -# CHECK-NEXT: Other: -# CHECK-NEXT: Section: Undefined -# CHECK-NEXT: } -# CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: foo -# CHECK-NEXT: Value: -# CHECK-NEXT: Size: -# CHECK-NEXT: Binding: Global -# CHECK-NEXT: Type: -# CHECK-NEXT: Other: -# CHECK-NEXT: Section: .text -# CHECK-NEXT: } -# CHECK-NEXT: ] +# CHECK-DAG: FUNC WEAK DEFAULT UND qux +# CHECK-DAG: NOTYPE GLOBAL DEFAULT 6 bar +# CHECK-DAG: FUNC GLOBAL DEFAULT UND baz +# CHECK-DAG: NOTYPE GLOBAL DEFAULT 6 foo # Test with %t.o at the end too. # RUN: ld.lld --gc-sections --export-dynamic-symbol foo -o %t --as-needed %t2.so %t3.so %t4.so %t.o -# RUN: llvm-readobj --dynamic-table --dyn-symbols %t | FileCheck --check-prefix=CHECK %s +# RUN: llvm-readelf --dynamic-table --dyn-symbols %t | FileCheck --check-prefix=CHECK %s .section .text.foo, "ax" .globl foo diff --git a/lld/test/ELF/global-offset-table-position-aarch64.s b/lld/test/ELF/global-offset-table-position-aarch64.s index a2b2273..394e04d 100644 --- a/lld/test/ELF/global-offset-table-position-aarch64.s +++ b/lld/test/ELF/global-offset-table-position-aarch64.s @@ -19,7 +19,7 @@ _start: .data .long _GLOBAL_OFFSET_TABLE_ - . -// CHECK: Name: _GLOBAL_OFFSET_TABLE_ (11) +// CHECK: Name: _GLOBAL_OFFSET_TABLE_ // CHECK-NEXT: Value: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local (0x0) diff --git a/lld/test/ELF/global-offset-table-position-i386.s b/lld/test/ELF/global-offset-table-position-i386.s index 95e3c5a..ea519b7 100644 --- a/lld/test/ELF/global-offset-table-position-i386.s +++ b/lld/test/ELF/global-offset-table-position-i386.s @@ -21,8 +21,8 @@ _start: addl $_GLOBAL_OFFSET_TABLE_, %eax calll f@PLT -// CHECK: Name: _GLOBAL_OFFSET_TABLE_ (1) -// CHECK-NEXT: Value: 0x325C +// CHECK: Name: _GLOBAL_OFFSET_TABLE_ +// CHECK-NEXT: Value: // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: None (0x0) diff --git a/lld/test/ELF/gnu-hash-table-rwsegment.s b/lld/test/ELF/gnu-hash-table-rwsegment.s index d1525f2..f95c266 100644 --- a/lld/test/ELF/gnu-hash-table-rwsegment.s +++ b/lld/test/ELF/gnu-hash-table-rwsegment.s @@ -14,7 +14,7 @@ # CHECK-NEXT: Values: [0xB8860BA, 0xB887389] # CHECK-NEXT: } -.globl foo, bar +.globl bar, foo foo: bar: ret diff --git a/lld/test/ELF/gnu-hash-table.s b/lld/test/ELF/gnu-hash-table.s index 91ebe5d..ef86009 100644 --- a/lld/test/ELF/gnu-hash-table.s +++ b/lld/test/ELF/gnu-hash-table.s @@ -247,10 +247,10 @@ # PPC64-NEXT: Values: [0xB8860BA, 0xB887389] # PPC64-NEXT: } -.globl foo,bar,baz +.globl bar,baz,foo foo: bar: -.weak zed .global xyz +.weak zed .data .dc.a baz diff --git a/lld/test/ELF/linkerscript/common-assign.s b/lld/test/ELF/linkerscript/common-assign.s index f0d7838..e6508a0 100644 --- a/lld/test/ELF/linkerscript/common-assign.s +++ b/lld/test/ELF/linkerscript/common-assign.s @@ -42,7 +42,7 @@ # CHECK-NEXT: } # CHECK-NEXT: ] -.comm foo,4,4 .comm bar,4,4 +.comm foo,4,4 movl $1, foo(%rip) movl $2, bar(%rip) diff --git a/lld/test/ELF/linkerscript/common-exclude.s b/lld/test/ELF/linkerscript/common-exclude.s index 23faa54..59af3d7 100644 --- a/lld/test/ELF/linkerscript/common-exclude.s +++ b/lld/test/ELF/linkerscript/common-exclude.s @@ -82,5 +82,5 @@ _start: jmp _start -.comm common_uniq_0,4,4 .comm common_multiple,8,8 +.comm common_uniq_0,4,4 diff --git a/lld/test/ELF/linkerscript/ehdr_start.s b/lld/test/ELF/linkerscript/ehdr_start.s index c1791d2..0b7f529 100644 --- a/lld/test/ELF/linkerscript/ehdr_start.s +++ b/lld/test/ELF/linkerscript/ehdr_start.s @@ -15,6 +15,6 @@ # CHECK-NEXT: Section: .text (0x1) .text -.global _start, __ehdr_start +.global __ehdr_start, _start _start: .quad __ehdr_start diff --git a/lld/test/ELF/ppc64-error-missaligned-dq.s b/lld/test/ELF/ppc64-error-missaligned-dq.s index 4f1fa29..bb7974d 100644 --- a/lld/test/ELF/ppc64-error-missaligned-dq.s +++ b/lld/test/ELF/ppc64-error-missaligned-dq.s @@ -1,5 +1,5 @@ # REQUIRES: ppc -# + # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o # RUN: not ld.lld %t.o -o /dev/null 2>&1 | FileCheck %s @@ -21,6 +21,9 @@ test: lxv 3, qword@toc@l(3) blr +.data .p2align 4 - .comm pad, 1, 1 - .comm qword, 16, 1 +pad: + .byte 1 +qword: + .quad 0 diff --git a/lld/test/ELF/ppc64-error-missaligned-ds.s b/lld/test/ELF/ppc64-error-missaligned-ds.s index 4dc1bd9..6b66728 100644 --- a/lld/test/ELF/ppc64-error-missaligned-ds.s +++ b/lld/test/ELF/ppc64-error-missaligned-ds.s @@ -21,6 +21,9 @@ test: lwa 3, word@toc@l(3) blr +.data .p2align 4 - .comm pad, 1, 1 - .comm word, 4, 1 +pad: + .byte 1 +word: + .long 0 diff --git a/lld/test/ELF/resolution.s b/lld/test/ELF/resolution.s index f591505..d570e51 100644 --- a/lld/test/ELF/resolution.s +++ b/lld/test/ELF/resolution.s @@ -2,320 +2,48 @@ // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/resolution.s -o %t2 // RUN: ld.lld -discard-all %t %t2 -o %t3 -// RUN: llvm-readobj --symbols %t3 | FileCheck %s +// RUN: llvm-readelf --symbols %t3 | FileCheck %s // This is an exhaustive test for checking which symbol is kept when two // have the same name. Each symbol has a different size which is used // to see which one was chosen. -// CHECK: Symbols [ -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: (0) -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local (0x0) -// CHECK-NEXT: Type: None (0x0) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined (0x0) -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonStrong_with_CommonStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 63 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonStrong_with_CommonWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 30 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonStrong_with_RegularStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 55 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonStrong_with_RegularWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 22 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonStrong_with_UndefStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 27 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonStrong_with_UndefWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 26 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonWeak_with_CommonStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 61 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonWeak_with_CommonWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 28 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonWeak_with_RegularStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 53 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonWeak_with_RegularWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 20 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonWeak_with_UndefStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 25 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: CommonWeak_with_UndefWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 24 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularStrong_with_CommonStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 10 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularStrong_with_CommonWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 9 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularStrong_with_RegularWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 2 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularStrong_with_UndefStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 6 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularStrong_with_UndefWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 5 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularWeak_with_CommonStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 40 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularWeak_with_CommonWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 7 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularWeak_with_RegularStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 33 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularWeak_with_RegularWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularWeak_with_UndefStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 4 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: RegularWeak_with_UndefWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 3 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefStrong_with_CommonStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 51 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefStrong_with_CommonWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 50 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefStrong_with_RegularStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 46 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefStrong_with_RegularWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 45 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefWeak_with_CommonStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 49 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefWeak_with_CommonWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 48 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefWeak_with_RegularStrong -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 44 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefWeak_with_RegularWeak -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 43 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: UndefWeak_with_UndefWeak -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: _start -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: None (0x0) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text (0x1) -// CHECK-NEXT: } -// CHECK-NEXT: ] +// 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 .globl _start _start: diff --git a/lld/test/ELF/symbol-ordering-file-warnings.s b/lld/test/ELF/symbol-ordering-file-warnings.s index abbafc4e..ec38edc62 100644 --- a/lld/test/ELF/symbol-ordering-file-warnings.s +++ b/lld/test/ELF/symbol-ordering-file-warnings.s @@ -118,11 +118,17 @@ # MULTI: warning: {{.*}}2.o: unable to order absolute symbol: multi # WARN-NOT: warning: +.section .text._start,"ax",@progbits +.global _start +_start: + movq %rax, absolute + callq shared + absolute = 0x1234 -.section .text.gc,"ax",@progbits -.global gc -gc: +.section .text.comdat,"axG",@progbits,comdat,comdat +.weak comdat +comdat: nop .section .text.discard,"ax",@progbits @@ -130,9 +136,9 @@ gc: discard: nop -.section .text.comdat,"axG",@progbits,comdat,comdat -.weak comdat -comdat: +.section .text.gc,"ax",@progbits +.global gc +gc: nop .section .text.glob_or_wk,"ax",@progbits @@ -140,12 +146,6 @@ comdat: glob_or_wk: nop -.section .text._start,"ax",@progbits -.global _start -_start: - movq %rax, absolute - callq shared - .section .text.icf1,"ax",@progbits .global icf1 icf1: diff --git a/lld/test/ELF/undef-version-script.s b/lld/test/ELF/undef-version-script.s index 86ef104..adb5d7d 100644 --- a/lld/test/ELF/undef-version-script.s +++ b/lld/test/ELF/undef-version-script.s @@ -34,8 +34,8 @@ # CHECK-NEXT: } # CHECK-NEXT: ] -.global foo .weak bar +.global foo .data .dc.a foo .dc.a bar diff --git a/llvm/test/MC/ELF/symver.s b/llvm/test/MC/ELF/symver.s index 442a68a..fa0724a 100644 --- a/llvm/test/MC/ELF/symver.s +++ b/llvm/test/MC/ELF/symver.s @@ -1,4 +1,6 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r --symbols - | FileCheck %s +# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t +# RUN: llvm-readobj -r %t | FileCheck %s +# RUN: llvm-readelf -s %t | FileCheck %s --check-prefix=SYM defined1: defined2: @@ -31,93 +33,16 @@ global1: // CHECK-NEXT: } // CHECK-NEXT: ] -// CHECK: Name: .text (0) -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: Section -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: defined1 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: defined2 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK: Symbol { -// CHECK: Name: bar1@zed -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar3@@zed -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar5@@zed -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// 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 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar6@zed -// 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-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: g1@@zed -// CHECK-NEXT: Value: 0x14 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// 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 -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: ] +# SYM: Symbol table '.symtab' contains 11 entries: +# SYM-NEXT: Num: Value Size Type Bind Vis Ndx Name +# SYM-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +# SYM-NEXT: 1: 0000000000000000 0 SECTION LOCAL DEFAULT 2 .text +# SYM-NEXT: 2: 0000000000000000 0 NOTYPE LOCAL DEFAULT 2 defined1 +# SYM-NEXT: 3: 0000000000000000 0 NOTYPE LOCAL DEFAULT 2 defined2 +# 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 diff --git a/llvm/test/MC/ELF/type.s b/llvm/test/MC/ELF/type.s index dd411a5..27e95f1 100644 --- a/llvm/test/MC/ELF/type.s +++ b/llvm/test/MC/ELF/type.s @@ -1,4 +1,41 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj --symbols - | FileCheck %s +# RUN: llvm-mc -filetype=obj -triple=x86_64 %s | llvm-readelf -s - | FileCheck %s + +# 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 // Test that both % and @ are accepted. .global foo @@ -129,194 +166,3 @@ alias12: .global alias12 .type alias12, @function .set sym12, alias12 - -// CHECK: Symbol { -// CHECK: Name: bar -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: 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: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: func -// CHECK-NEXT: Value: 0x0 -// 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: ifunc -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: GNU_IFunc -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: obj -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym1 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: GNU_IFunc (0xA) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym10 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: TLS (0x6) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym11 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: TLS (0x6) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym12 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: TLS (0x6) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym2 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: GNU_IFunc (0xA) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym3 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: GNU_IFunc (0xA) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym4 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: Function (0x2) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym5 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: Function (0x2) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym6 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: Object (0x1) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym7 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: GNU_IFunc (0xA) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym8 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: Function (0x2) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym9 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global (0x1) -// CHECK-NEXT: Type: TLS (0x6) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: tls -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: TLS -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: tls_quoted -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: TLS -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: tls_upper_case -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: TLS -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: zed -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Unique (0xA) -// CHECK-NEXT: Type: Object (0x1) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: ] diff --git a/llvm/test/MC/ELF/undef.s b/llvm/test/MC/ELF/undef.s index 931fa07..29adb94 100644 --- a/llvm/test/MC/ELF/undef.s +++ b/llvm/test/MC/ELF/undef.s @@ -1,7 +1,15 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj --symbols - | FileCheck %s +# RUN: llvm-mc -filetype=obj -triple=x86_64 %s | llvm-readelf -s - | FileCheck %s // Test which symbols should be in the symbol table +# CHECK: Symbol table '.symtab' contains 5 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 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: 4: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND undef + .Lsym2: .Lsym3: .Lsym4 = .Lsym2 - .Lsym3 @@ -22,53 +30,3 @@ test2_a = undef test2_b = undef + 1 - -// CHECK: Symbols [ -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: (0) -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: .Lsym8 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .rodata.str1.1 -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: hidden -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other [ -// CHECK-NEXT: STV_HIDDEN -// CHECK-NEXT: ] -// CHECK-NEXT: Section: Undefined -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: sym6 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: Object -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: undef -// 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-NEXT: } -// CHECK-NEXT: ] diff --git a/llvm/test/MC/ELF/weakref.s b/llvm/test/MC/ELF/weakref.s index 46b6f1d..1f250ef 100644 --- a/llvm/test/MC/ELF/weakref.s +++ b/llvm/test/MC/ELF/weakref.s @@ -1,10 +1,30 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj --symbols - | FileCheck %s +# RUN: llvm-mc -filetype=obj -triple=x86_64 %s | llvm-readelf -s - | FileCheck %s // This is a long test that checks that the aliases created by weakref are // never in the symbol table and that the only case it causes a symbol to // be output as a weak undefined symbol is if that variable is not defined // in this file and all the references to it are done via the alias. +# CHECK: Num: Value Size Type Bind Vis Ndx Name +# CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +# CHECK-NEXT: 1: 0000000000000000 0 SECTION LOCAL DEFAULT 2 .text +# CHECK-NEXT: 2: 0000000000000018 0 NOTYPE LOCAL DEFAULT 2 bar6 +# CHECK-NEXT: 3: 0000000000000018 0 NOTYPE LOCAL DEFAULT 2 bar7 +# 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 + + .weakref foo1, bar1 .weakref foo2, bar2 @@ -68,159 +88,3 @@ bar15: .weakref foo15, bar15 .long bar15 .long foo15 - -// CHECK: Symbols [ -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: (0) -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local (0x0) -// CHECK-NEXT: Type: None (0x0) -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined (0x0) -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: .text (0) -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: Section -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar6 -// CHECK-NEXT: Value: 0x18 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar7 -// CHECK-NEXT: Value: 0x18 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar8 -// CHECK-NEXT: Value: 0x1C -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar9 -// CHECK-NEXT: Value: 0x20 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar1 -// 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-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar10 -// CHECK-NEXT: Value: 0x28 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar11 -// CHECK-NEXT: Value: 0x30 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar12 -// CHECK-NEXT: Value: 0x30 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar13 -// CHECK-NEXT: Value: 0x34 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar14 -// CHECK-NEXT: Value: 0x38 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar15 -// CHECK-NEXT: Value: 0x40 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar2 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined (0x0) -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar3 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Weak -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined (0x0) -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar4 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined (0x0) -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: bar5 -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined (0x0) -// CHECK-NEXT: } -// CHECK-NEXT: ] |