1## Show that llvm-readobj prints the symbol visibility where recognised, or 2## something sensible when not, for both GNU and LLVM output. 3 4## Check how we dump symbols when they have only STV_* bits set for st_other. 5## (This is the most common case). 6 7# RUN: yaml2obj --docnum=1 %s -o %t1.o 8# RUN: llvm-readobj --symbols %t1.o | FileCheck %s --check-prefix=LLVM 9# RUN: llvm-readelf --symbols %t1.o | FileCheck %s --strict-whitespace --check-prefix=GNU 10# RUN: llvm-readobj --symbols --pretty-print --elf-output-style=JSON %t1.o | FileCheck %s --check-prefix=JSON 11 12# LLVM: Name: default 13# LLVM: Other: 0 14# LLVM: Name: internal 15# LLVM: Other [ (0x1) 16# LLVM-NEXT: STV_INTERNAL (0x1) 17# LLVM-NEXT: ] 18# LLVM: Name: hidden 19# LLVM: Other [ (0x2) 20# LLVM-NEXT: STV_HIDDEN (0x2) 21# LLVM-NEXT: ] 22# LLVM: Name: protected 23# LLVM: Other [ (0x3) 24# LLVM-NEXT: STV_PROTECTED (0x3) 25# LLVM-NEXT: ] 26 27# GNU: Vis Ndx Name 28# GNU-NEXT: DEFAULT UND 29# GNU-NEXT: DEFAULT UND default 30# GNU-NEXT: INTERNAL UND internal 31# GNU-NEXT: HIDDEN UND hidden 32# GNU-NEXT: PROTECTED UND protected 33 34# JSON: "Name": "default", 35# JSON: "Other": { 36# JSON-NEXT: "Value": 0, 37# JSON-NEXT: "Flags": [] 38# JSON-NEXT: }, 39 40# JSON: "Name": "internal", 41# JSON: "Other": { 42# JSON-NEXT: "Value": 1, 43# JSON-NEXT: "Flags": [ 44# JSON-NEXT: { 45# JSON-NEXT: "Name": "STV_INTERNAL", 46# JSON-NEXT: "Value": 1 47# JSON-NEXT: } 48# JSON-NEXT: ] 49# JSON-NEXT: }, 50 51# JSON: "Name": "hidden", 52# JSON: "Other": { 53# JSON-NEXT: "Value": 2, 54# JSON-NEXT: "Flags": [ 55# JSON-NEXT: { 56# JSON-NEXT: "Name": "STV_HIDDEN", 57# JSON-NEXT: "Value": 2 58# JSON-NEXT: } 59# JSON-NEXT: ] 60# JSON-NEXT: }, 61 62# JSON: "Name": "protected", 63# JSON: "Other": { 64# JSON-NEXT: "Value": 3, 65# JSON-NEXT: "Flags": [ 66# JSON-NEXT: { 67# JSON-NEXT: "Name": "STV_PROTECTED", 68# JSON-NEXT: "Value": 3 69# JSON-NEXT: } 70# JSON-NEXT: ] 71# JSON-NEXT: }, 72 73--- !ELF 74FileHeader: 75 Class: ELFCLASS32 76 Data: ELFDATA2LSB 77 Type: ET_REL 78Symbols: 79 - Name: default 80 Other: [ STV_DEFAULT ] 81 Binding: STB_GLOBAL 82 - Name: internal 83 Other: [ STV_INTERNAL ] 84 Binding: STB_GLOBAL 85 - Name: hidden 86 Other: [ STV_HIDDEN ] 87 Binding: STB_GLOBAL 88 - Name: protected 89 Other: [ STV_PROTECTED ] 90 Binding: STB_GLOBAL 91 92## Check the output when we have non-visibility bits set for at least one of the symbols. 93 94# RUN: yaml2obj --docnum=2 %s -o %t2.o 95# RUN: llvm-readobj --symbols %t2.o | FileCheck %s --check-prefixes=LLVM,LLVM-OTHER 96# RUN: llvm-readelf --symbols %t2.o | FileCheck %s --strict-whitespace --check-prefix=GNU-OTHER 97 98# LLVM-OTHER: Name: other 99# LLVM-OTHER: Other [ (0x4) 100# LLVM-OTHER-NEXT: ] 101 102# GNU-OTHER: Vis Ndx Name 103# GNU-OTHER-NEXT: DEFAULT UND 104# GNU-OTHER-NEXT: DEFAULT UND default 105# GNU-OTHER-NEXT: INTERNAL UND internal 106# GNU-OTHER-NEXT: HIDDEN UND hidden 107# GNU-OTHER-NEXT: PROTECTED UND protected 108# GNU-OTHER-NEXT: DEFAULT [<other: 0x4>] UND other 109 110--- !ELF 111FileHeader: 112 Class: ELFCLASS32 113 Data: ELFDATA2LSB 114 Type: ET_REL 115Symbols: 116 - Name: default 117 Other: [ STV_DEFAULT ] 118 - Name: internal 119 Other: [ STV_INTERNAL ] 120 - Name: hidden 121 Other: [ STV_HIDDEN ] 122 - Name: protected 123 Other: [ STV_PROTECTED ] 124 - Name: other 125 Other: [ 4 ] 126