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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
## Show the disassembly behaviour when dynamic symbols are present.
# RUN: yaml2obj %s -o %t
## Case 1: Both static and dynamic symbols are present. Only static
## symbols are displayed.
# RUN: llvm-objdump -d %t | FileCheck %s --check-prefixes=CHECK,STATIC
## Case 2: Only the dynamic symbols are present. These should be displayed, if
## they meet the necessary criteria.
# RUN: llvm-objcopy --strip-all %t %t2
# RUN: llvm-objdump -d %t2 | FileCheck %s --check-prefixes=CHECK,DYN
# CHECK: Disassembly of section .text:
# CHECK-EMPTY:
# STATIC-NEXT: 0000000000001000 <.text>:
# DYN-NEXT: 0000000000001000 <only_dyn>:
# CHECK-NEXT: 1000:
# CHECK-EMPTY:
# STATIC-NEXT: 0000000000001001 <both_static>:
# DYN-NEXT: 0000000000001001 <both_dyn>:
# CHECK-NEXT: 1001:
# STATIC-EMPTY:
# STATIC-NEXT: 0000000000001002 <only_static>:
# CHECK-NEXT: 1002:
# DYN-EMPTY:
# DYN-NEXT: 0000000000001003 <object>:
# CHECK-NEXT: 1003:
# DYN-EMPTY:
# DYN-NEXT: 0000000000001004 <zero_sized>:
# CHECK-NEXT: 1004:
# DYN-EMPTY:
# DYN-NEXT: 0000000000001005 <common>:
# CHECK-NEXT: 1005:
# DYN-EMPTY:
# DYN-NEXT: 0000000000001006 <loos>:
# CHECK-NEXT: 1006:
# DYN-EMPTY:
# DYN-NEXT: 0000000000001007 <loproc>:
# CHECK-NEXT: 1007:
# CHECK-NEXT: 1008:
# CHECK-NEXT: 1009:
# CHECK-NEXT: 100a:
# CHECK-NEXT: 100b:{{.*}}
# CHECK-NOT: {{.}}
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_DYN
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [SHF_ALLOC, SHF_EXECINSTR]
Address: 0x1000
Content: 909090909090909090909090
ProgramHeaders:
- Type: PT_LOAD
VAddr: 0x1000
FirstSec: .text
LastSec: .text
Symbols:
- Name: both_static
Value: 0x1001
Section: .text
Binding: STB_GLOBAL
- Name: only_static
Value: 0x1002
Section: .text
Binding: STB_GLOBAL
DynamicSymbols:
- Name: only_dyn
Value: 0x1000
Section: .text
Size: 1
Type: STT_FUNC
Binding: STB_GLOBAL
- Name: both_dyn
Value: 0x1001
Section: .text
Size: 1
Type: STT_NOTYPE
Binding: STB_GLOBAL
- Name: object
Value: 0x1003
Section: .text
Size: 1
Type: STT_OBJECT
Binding: STB_GLOBAL
- Name: zero_sized
Value: 0x1004
Section: .text
Type: STT_FUNC
Binding: STB_GLOBAL
- Name: common
Value: 0x1005
Section: .text
Size: 1
Type: STT_COMMON
Binding: STB_GLOBAL
- Name: loos
Value: 0x1006
Section: .text
Size: 1
Type: 10
Binding: STB_GLOBAL
- Name: loproc
Value: 0x1007
Section: .text
Size: 1
Type: 13
Binding: STB_GLOBAL
## The rest of the dynamic symbols won't be used for various reasons.
- Name: section
Value: 0x1008
Section: .text
Size: 1
Type: STT_SECTION
Binding: STB_GLOBAL
- Name: '' # No name
Value: 0x1009
Section: .text
Size: 1
Type: STT_FUNC
Binding: STB_GLOBAL
- Name: absolute
Value: 0x100a
Index: SHN_ABS
Size: 1
Type: STT_FUNC
Binding: STB_GLOBAL
- Name: undefined
Value: 0x100b
Index: SHN_UNDEF
Size: 1
Type: STT_FUNC
Binding: STB_GLOBAL
|