| // REQUIRES: x86 |
| // 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/visibility.s -o %t2 |
| // RUN: ld.lld -shared %t %t2 -o %t3 |
| // RUN: llvm-readobj -t -dyn-symbols %t3 | FileCheck %s |
| |
| // CHECK: Symbols [ |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: |
| // 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: hidden |
| // CHECK-NEXT: Value: |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Local |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other [ (0x2) |
| // CHECK-NEXT: STV_HIDDEN |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Section: .text |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: internal |
| // CHECK-NEXT: Value: |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Local |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other [ (0x1) |
| // CHECK-NEXT: STV_INTERNAL |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Section: .text |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: protected_with_hidden |
| // CHECK-NEXT: Value: |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Local |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other [ (0x2) |
| // CHECK-NEXT: STV_HIDDEN |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Section: .text |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: _DYNAMIC |
| // CHECK-NEXT: Value: |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Local |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other [ (0x2) |
| // CHECK-NEXT: STV_HIDDEN |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Section: .dynamic |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: default |
| // CHECK-NEXT: Value: |
| // 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: protected |
| // CHECK-NEXT: Value: |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other [ (0x3) |
| // CHECK-NEXT: STV_PROTECTED |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Section: .text |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| |
| // CHECK: DynamicSymbols [ |
| // CHECK-NEXT: Symbol { |
| // CHECK-NEXT: Name: @ |
| // 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: default |
| // CHECK-NEXT: Value: |
| // 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: protected |
| // CHECK-NEXT: Value: |
| // CHECK-NEXT: Size: 0 |
| // CHECK-NEXT: Binding: Global |
| // CHECK-NEXT: Type: None |
| // CHECK-NEXT: Other [ (0x3) |
| // CHECK-NEXT: STV_PROTECTED |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: Section: .text |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| |
| .global default |
| default: |
| |
| .global protected |
| protected: |
| |
| .global hidden |
| hidden: |
| |
| .global internal |
| internal: |
| |
| .global protected_with_hidden |
| .protected |
| protected_with_hidden: |