File: elf-symbol-visibility.test

package info (click to toggle)
llvm-toolchain-9 1%3A9.0.1-16.1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 882,388 kB
  • sloc: cpp: 4,167,636; ansic: 714,256; asm: 457,610; python: 155,927; objc: 65,094; sh: 42,856; lisp: 26,908; perl: 7,786; pascal: 7,722; makefile: 6,881; ml: 5,581; awk: 3,648; cs: 2,027; xml: 888; javascript: 381; ruby: 156
file content (66 lines) | stat: -rw-r--r-- 1,902 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Show that llvm-readobj prints the symbol visibility where recognised, or
# something sensible when not, for both GNU and LLVM output.

# Use --dyn-symbols because it is only possible to hand-craft symbols with
# non-standard st_other values for .dynsym.
# RUN: yaml2obj %s > %t
# RUN: llvm-readobj --symbols --dyn-symbols %t | FileCheck %s --check-prefix=LLVM
# RUN: llvm-readelf --symbols --dyn-symbols %t | FileCheck %s --check-prefix=GNU

# 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: ]
# LLVM:      Name: other
# LLVM:      Other [ (0x4)
# LLVM-NEXT: ]

# FIXME - the "other" symbol should print something indicating its non-zero st_other value.
# See https://bugs.llvm.org/show_bug.cgi?id=40785.
# GNU:      DEFAULT   {{.*}} other
# GNU:      DEFAULT   {{.*}} default
# GNU-NEXT: INTERNAL  {{.*}} internal
# GNU-NEXT: HIDDEN    {{.*}} hidden
# GNU-NEXT: PROTECTED {{.*}} protected

!ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_386
Sections:
  - Name: .dynstr
    Type: SHT_STRTAB
    #\0other\0
    Content: "006f7468657200"
  - Name: .dynsym
    Type: SHT_DYNSYM
    Link: .dynstr
    EntSize: 16
    # Null symbol
    # Symbol with st_name = 1, st_other = 0x4
    Content: "0000000000000000000000000000000001000000000000000000000000040000"
Symbols:
  - Name: default
    Visibility: STV_DEFAULT
    Binding: STB_GLOBAL
  - Name: internal
    Visibility: STV_INTERNAL
    Binding: STB_GLOBAL
  - Name: hidden
    Visibility: STV_HIDDEN
    Binding: STB_GLOBAL
  - Name: protected
    Visibility: STV_PROTECTED
    Binding: STB_GLOBAL