brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · a25e1e0 Raw
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