126 lines · plain
1## Show that llvm-readobj prints the symbol visibility where recognised, or2## 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.o8# RUN: llvm-readobj --symbols %t1.o | FileCheck %s --check-prefix=LLVM9# RUN: llvm-readelf --symbols %t1.o | FileCheck %s --strict-whitespace --check-prefix=GNU10# RUN: llvm-readobj --symbols --pretty-print --elf-output-style=JSON %t1.o | FileCheck %s --check-prefix=JSON11 12# LLVM: Name: default13# LLVM: Other: 014# LLVM: Name: internal15# LLVM: Other [ (0x1)16# LLVM-NEXT: STV_INTERNAL (0x1)17# LLVM-NEXT: ]18# LLVM: Name: hidden19# LLVM: Other [ (0x2)20# LLVM-NEXT: STV_HIDDEN (0x2)21# LLVM-NEXT: ]22# LLVM: Name: protected23# LLVM: Other [ (0x3)24# LLVM-NEXT: STV_PROTECTED (0x3)25# LLVM-NEXT: ]26 27# GNU: Vis Ndx Name28# GNU-NEXT: DEFAULT UND29# GNU-NEXT: DEFAULT UND default30# GNU-NEXT: INTERNAL UND internal31# GNU-NEXT: HIDDEN UND hidden32# GNU-NEXT: PROTECTED UND protected33 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": 147# 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": 258# 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": 369# JSON-NEXT: }70# JSON-NEXT: ]71# JSON-NEXT: },72 73--- !ELF74FileHeader:75 Class: ELFCLASS3276 Data: ELFDATA2LSB77 Type: ET_REL78Symbols:79 - Name: default80 Other: [ STV_DEFAULT ]81 Binding: STB_GLOBAL82 - Name: internal83 Other: [ STV_INTERNAL ]84 Binding: STB_GLOBAL85 - Name: hidden86 Other: [ STV_HIDDEN ]87 Binding: STB_GLOBAL88 - Name: protected89 Other: [ STV_PROTECTED ]90 Binding: STB_GLOBAL91 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.o95# RUN: llvm-readobj --symbols %t2.o | FileCheck %s --check-prefixes=LLVM,LLVM-OTHER96# RUN: llvm-readelf --symbols %t2.o | FileCheck %s --strict-whitespace --check-prefix=GNU-OTHER97 98# LLVM-OTHER: Name: other99# LLVM-OTHER: Other [ (0x4)100# LLVM-OTHER-NEXT: ]101 102# GNU-OTHER: Vis Ndx Name103# GNU-OTHER-NEXT: DEFAULT UND104# GNU-OTHER-NEXT: DEFAULT UND default105# GNU-OTHER-NEXT: INTERNAL UND internal106# GNU-OTHER-NEXT: HIDDEN UND hidden107# GNU-OTHER-NEXT: PROTECTED UND protected108# GNU-OTHER-NEXT: DEFAULT [<other: 0x4>] UND other109 110--- !ELF111FileHeader:112 Class: ELFCLASS32113 Data: ELFDATA2LSB114 Type: ET_REL115Symbols:116 - Name: default117 Other: [ STV_DEFAULT ]118 - Name: internal119 Other: [ STV_INTERNAL ]120 - Name: hidden121 Other: [ STV_HIDDEN ]122 - Name: protected123 Other: [ STV_PROTECTED ]124 - Name: other125 Other: [ 4 ]126