mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
f954f43df3
Imagine we have a YAML declaration of few sections: `foo1`, `<unnamed 2>`, `foo3`, `foo4`. To put them into segment we can do (1*): ``` Sections: - Section: foo1 - Section: foo4 ``` or we can use (2*): ``` Sections: - Section: foo1 - Section: foo3 - Section: foo4 ``` or (3*) : ``` Sections: - Section: foo1 ## "(index 2)" here is a name that we automatically created for a unnamed section. - Section: (index 2) - Section: foo3 - Section: foo4 ``` It looks really confusing that we don't have to list all of sections. At first I've tried to make this rule stricter and report an error when there is a gap (i.e. when a section is included into segment, but not listed explicitly). This did not work perfect, because such approach conflicts with unnamed sections/fills (see (3*)). This patch drops "Sections" key and introduces 2 keys instead: `FirstSec` and `LastSec`. Both are optional. Differential revision: https://reviews.llvm.org/D90458
139 lines
3.3 KiB
Plaintext
139 lines
3.3 KiB
Plaintext
## 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
|