## Show that llvm-readobj prints the symbol visibility where recognised, or ## something sensible when not, for both GNU and LLVM output. ## Check how we dump symbols when they have only STV_* bits set for st_other. ## (This is the most common case). # RUN: yaml2obj --docnum=1 %s -o %t1.o # RUN: llvm-readobj --symbols %t1.o | FileCheck %s --check-prefix=LLVM # RUN: llvm-readelf --symbols %t1.o | FileCheck %s --strict-whitespace --check-prefix=GNU # RUN: llvm-readobj --symbols --pretty-print --elf-output-style=JSON %t1.o | FileCheck %s --check-prefix=JSON # LLVM: Name: default # LLVM: Other: 0 # LLVM: Name: internal # LLVM: Other [ (0x1) # LLVM-NEXT: STV_INTERNAL (0x1) # LLVM-NEXT: ] # LLVM: Name: hidden # LLVM: Other [ (0x2) # LLVM-NEXT: STV_HIDDEN (0x2) # LLVM-NEXT: ] # LLVM: Name: protected # LLVM: Other [ (0x3) # LLVM-NEXT: STV_PROTECTED (0x3) # LLVM-NEXT: ] # GNU: Vis Ndx Name # GNU-NEXT: DEFAULT UND # GNU-NEXT: DEFAULT UND default # GNU-NEXT: INTERNAL UND internal # GNU-NEXT: HIDDEN UND hidden # GNU-NEXT: PROTECTED UND protected # JSON: "Name": "default", # JSON: "Other": { # JSON-NEXT: "Value": 0, # JSON-NEXT: "Flags": [] # JSON-NEXT: }, # JSON: "Name": "internal", # JSON: "Other": { # JSON-NEXT: "Value": 1, # JSON-NEXT: "Flags": [ # JSON-NEXT: { # JSON-NEXT: "Name": "STV_INTERNAL", # JSON-NEXT: "Value": 1 # JSON-NEXT: } # JSON-NEXT: ] # JSON-NEXT: }, # JSON: "Name": "hidden", # JSON: "Other": { # JSON-NEXT: "Value": 2, # JSON-NEXT: "Flags": [ # JSON-NEXT: { # JSON-NEXT: "Name": "STV_HIDDEN", # JSON-NEXT: "Value": 2 # JSON-NEXT: } # JSON-NEXT: ] # JSON-NEXT: }, # JSON: "Name": "protected", # JSON: "Other": { # JSON-NEXT: "Value": 3, # JSON-NEXT: "Flags": [ # JSON-NEXT: { # JSON-NEXT: "Name": "STV_PROTECTED", # JSON-NEXT: "Value": 3 # JSON-NEXT: } # JSON-NEXT: ] # JSON-NEXT: }, --- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Symbols: - Name: default Other: [ STV_DEFAULT ] Binding: STB_GLOBAL - Name: internal Other: [ STV_INTERNAL ] Binding: STB_GLOBAL - Name: hidden Other: [ STV_HIDDEN ] Binding: STB_GLOBAL - Name: protected Other: [ STV_PROTECTED ] Binding: STB_GLOBAL ## Check the output when we have non-visibility bits set for at least one of the symbols. # RUN: yaml2obj --docnum=2 %s -o %t2.o # RUN: llvm-readobj --symbols %t2.o | FileCheck %s --check-prefixes=LLVM,LLVM-OTHER # RUN: llvm-readelf --symbols %t2.o | FileCheck %s --strict-whitespace --check-prefix=GNU-OTHER # LLVM-OTHER: Name: other # LLVM-OTHER: Other [ (0x4) # LLVM-OTHER-NEXT: ] # GNU-OTHER: Vis Ndx Name # GNU-OTHER-NEXT: DEFAULT UND # GNU-OTHER-NEXT: DEFAULT UND default # GNU-OTHER-NEXT: INTERNAL UND internal # GNU-OTHER-NEXT: HIDDEN UND hidden # GNU-OTHER-NEXT: PROTECTED UND protected # GNU-OTHER-NEXT: DEFAULT [] UND other --- !ELF FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Symbols: - Name: default Other: [ STV_DEFAULT ] - Name: internal Other: [ STV_INTERNAL ] - Name: hidden Other: [ STV_HIDDEN ] - Name: protected Other: [ STV_PROTECTED ] - Name: other Other: [ 4 ]