[test] Make ELF tests amenable to the order of non-local symbols
authorFangrui Song <i@maskray.me>
Sat, 13 Feb 2021 05:00:42 +0000 (21:00 -0800)
committerFangrui Song <i@maskray.me>
Sat, 13 Feb 2021 05:00:42 +0000 (21:00 -0800)
29 files changed:
lld/test/ELF/aarch64-tls-ie.s
lld/test/ELF/arm-gnu-ifunc.s
lld/test/ELF/combreloc.s
lld/test/ELF/comdat-discarded-lazy.s
lld/test/ELF/common-gc.s
lld/test/ELF/common-gc2.s
lld/test/ELF/conflict-debug-variable.s
lld/test/ELF/conflict-debug-variable2.s
lld/test/ELF/defsym.s
lld/test/ELF/dynamic-list-glob.s
lld/test/ELF/edata-etext.s
lld/test/ELF/ehdr_start.s
lld/test/ELF/gc-sections-shared.s
lld/test/ELF/global-offset-table-position-aarch64.s
lld/test/ELF/global-offset-table-position-i386.s
lld/test/ELF/gnu-hash-table-rwsegment.s
lld/test/ELF/gnu-hash-table.s
lld/test/ELF/linkerscript/common-assign.s
lld/test/ELF/linkerscript/common-exclude.s
lld/test/ELF/linkerscript/ehdr_start.s
lld/test/ELF/ppc64-error-missaligned-dq.s
lld/test/ELF/ppc64-error-missaligned-ds.s
lld/test/ELF/resolution.s
lld/test/ELF/symbol-ordering-file-warnings.s
lld/test/ELF/undef-version-script.s
llvm/test/MC/ELF/symver.s
llvm/test/MC/ELF/type.s
llvm/test/MC/ELF/undef.s
llvm/test/MC/ELF/weakref.s

index 6d3e4e2..bd6ec5e 100644 (file)
@@ -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]
index 9a410aa..51027e4 100644 (file)
@@ -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
 
index b3fc252..17edb93 100644 (file)
@@ -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
index 8ee1515..4a7c008 100644 (file)
@@ -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
index ab1d674..6c37f20 100644 (file)
@@ -32,8 +32,8 @@
 
 # GC-NOT: Name: bar
 
-.comm foo,4,4
 .comm bar,4,4
+.comm foo,4,4
 
 .text
 .globl _start
index 21bff88..fec1c4b 100644 (file)
@@ -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
index a9188fc..dd88c51 100644 (file)
 #  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:
 
index 3fb59e6..25090b1 100644 (file)
 .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"
index 94c1bc0..bb5e783 100644 (file)
@@ -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
 #        --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:
 # 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
index 3018847..1a84978 100644 (file)
@@ -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:
index f0f515f..673475e 100644 (file)
@@ -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
index 84af0e2..2eb5282 100644 (file)
@@ -24,7 +24,7 @@
 # CHECK-NEXT:    Section: .text
 
 .text
-.global _start, __ehdr_start
+.global __ehdr_start, _start
 _start:
   .quad __ehdr_start
   .quad __executable_start
index 8ef5bc0..d32c15d 100644 (file)
@@ -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
 # 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
index a2b2273..394e04d 100644 (file)
@@ -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)
index 95e3c5a..ea519b7 100644 (file)
@@ -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)
index d1525f2..f95c266 100644 (file)
@@ -14,7 +14,7 @@
 # CHECK-NEXT:   Values: [0xB8860BA, 0xB887389]
 # CHECK-NEXT: }
 
-.globl foo, bar
+.globl bar, foo
 foo:
 bar:
   ret
index 91ebe5d..ef86009 100644 (file)
 # 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
index f0d7838..e6508a0 100644 (file)
@@ -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)
index 23faa54..59af3d7 100644 (file)
@@ -82,5 +82,5 @@
 _start:
   jmp _start
 
-.comm common_uniq_0,4,4
 .comm common_multiple,8,8
+.comm common_uniq_0,4,4
index c1791d2..0b7f529 100644 (file)
@@ -15,6 +15,6 @@
 # CHECK-NEXT:    Section: .text (0x1)
 
 .text
-.global _start, __ehdr_start
+.global __ehdr_start, _start
 _start:
        .quad __ehdr_start
index 4f1fa29..bb7974d 100644 (file)
@@ -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
index 4dc1bd9..6b66728 100644 (file)
@@ -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
index f591505..d570e51 100644 (file)
 // 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:
index abbafc4..ec38edc 100644 (file)
 # 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:
index 86ef104..adb5d7d 100644 (file)
@@ -34,8 +34,8 @@
 # CHECK-NEXT:   }
 # CHECK-NEXT: ]
 
-.global foo
 .weak bar
+.global foo
 .data
   .dc.a foo
   .dc.a bar
index 442a68a..fa0724a 100644 (file)
@@ -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
index dd411a5..27e95f1 100644 (file)
@@ -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: ]
index 931fa07..29adb94 100644 (file)
@@ -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
 
 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: ]
index 46b6f1d..1f250ef 100644 (file)
@@ -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: ]