location-expression.test and tls-variable.test failed because wrong endianness was used on powerpc machine. To fix the issue this patch uses endianness from debug map as endianness for the whole target file. Previosly, architecture endianness won over what is specified in debug map. Differential Revision: https://reviews.llvm.org/D159349
195 lines
5.3 KiB
Plaintext
195 lines
5.3 KiB
Plaintext
## This test checks that thread local storage variables
|
|
## are preserved.
|
|
|
|
# RUN: yaml2obj %s -o %t.o
|
|
# RUN: echo '---' > %t2.map
|
|
# RUN: echo "triple: 'x86_64-apple-darwin'" >> %t2.map
|
|
# RUN: echo 'objects:' >> %t2.map
|
|
# RUN: echo " - filename: '%t.o'" >> %t2.map
|
|
# RUN: echo ' symbols:' >> %t2.map
|
|
# RUN: echo ' - { sym: __Z3foov, objAddr: 0x0, binAddr: 0x10000, size: 0x10 }' >> %t2.map
|
|
# RUN: echo '...' >> %t2.map
|
|
# RUN: dsymutil -y %t2.map --keep-function-for-static -f -o - | llvm-dwarfdump -a - | FileCheck %s
|
|
# RUN: dsymutil --linker llvm -y %t2.map --keep-function-for-static -f -o - | llvm-dwarfdump -a - | FileCheck %s
|
|
|
|
# CHECK: file format Mach-O 64-bit x86-64
|
|
# CHECK: .debug_info contents:
|
|
# CHECK: Compile Unit:
|
|
# CHECK: DW_TAG_compile_unit
|
|
# CHECK: DW_AT_name{{.*}}"CU1"
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: DW_AT_name{{.*}}"foo"
|
|
# CHECK: DW_TAG_variable
|
|
# CHECK: DW_AT_name{{.*}}"var1"
|
|
# CHECK: DW_AT_location (DW_OP_const8u 0x{{.*}}, DW_OP_GNU_push_tls_address)
|
|
# CHECK: DW_AT_name{{.*}}"var2"
|
|
# CHECK: DW_AT_location (DW_OP_const8u 0x{{.*}}, DW_OP_form_tls_address)
|
|
|
|
--- !mach-o
|
|
FileHeader:
|
|
magic: 0xFEEDFACF
|
|
cputype: 0x01000007
|
|
cpusubtype: 0x00000003
|
|
filetype: 0x00000001
|
|
ncmds: 2
|
|
sizeofcmds: 376
|
|
flags: 0x00002000
|
|
reserved: 0x00000000
|
|
LoadCommands:
|
|
- cmd: LC_SEGMENT_64
|
|
cmdsize: 232
|
|
segname: ''
|
|
vmaddr: 0x00
|
|
vmsize: 0x300
|
|
fileoff: 0x300
|
|
filesize: 0x300
|
|
maxprot: 7
|
|
initprot: 7
|
|
nsects: 2
|
|
flags: 0
|
|
Sections:
|
|
- sectname: __debug_abbrev
|
|
segname: __DWARF
|
|
addr: 0x000000000000000F
|
|
size: 0x27
|
|
offset: 0x00000380
|
|
align: 0
|
|
reloff: 0x00000000
|
|
nreloc: 0
|
|
flags: 0x02000000
|
|
reserved1: 0x00000000
|
|
reserved2: 0x00000000
|
|
reserved3: 0x00000000
|
|
- sectname: __debug_info
|
|
segname: __DWARF
|
|
addr: 0x000000000000100
|
|
size: 0x54
|
|
offset: 0x00000410
|
|
align: 0
|
|
reloff: 0x00000600
|
|
nreloc: 2
|
|
flags: 0x02000000
|
|
reserved1: 0x00000000
|
|
reserved2: 0x00000000
|
|
reserved3: 0x00000000
|
|
relocations:
|
|
- address: 0x32
|
|
symbolnum: 1
|
|
pcrel: true
|
|
length: 3
|
|
extern: true
|
|
type: 0
|
|
scattered: false
|
|
value: 0
|
|
- address: 0x47
|
|
symbolnum: 1
|
|
pcrel: true
|
|
length: 3
|
|
extern: true
|
|
type: 0
|
|
scattered: false
|
|
value: 0
|
|
- cmd: LC_SYMTAB
|
|
cmdsize: 24
|
|
symoff: 0x700
|
|
nsyms: 2
|
|
stroff: 0x720
|
|
strsize: 10
|
|
LinkEditData:
|
|
NameList:
|
|
- n_strx: 1
|
|
n_type: 0x0F
|
|
n_sect: 1
|
|
n_desc: 0
|
|
n_value: 0
|
|
- n_strx: 1
|
|
n_type: 0x0F
|
|
n_sect: 1
|
|
n_desc: 0
|
|
n_value: 0
|
|
StringTable:
|
|
- ''
|
|
- '__Z3foov'
|
|
- ''
|
|
DWARF:
|
|
debug_abbrev:
|
|
- Table:
|
|
- Tag: DW_TAG_compile_unit
|
|
Children: DW_CHILDREN_yes
|
|
Attributes:
|
|
- Attribute: DW_AT_producer
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_language
|
|
Form: DW_FORM_data2
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Tag: DW_TAG_subprogram
|
|
Children: DW_CHILDREN_yes
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_type
|
|
Form: DW_FORM_ref4
|
|
- Tag: DW_TAG_variable
|
|
Children: DW_CHILDREN_no
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
- Attribute: DW_AT_type
|
|
Form: DW_FORM_ref4
|
|
- Attribute: DW_AT_location
|
|
Form: DW_FORM_exprloc
|
|
- Tag: DW_TAG_base_type
|
|
Children: DW_CHILDREN_no
|
|
Attributes:
|
|
- Attribute: DW_AT_name
|
|
Form: DW_FORM_string
|
|
debug_info:
|
|
- Version: 4
|
|
Entries:
|
|
- AbbrCode: 1
|
|
Values:
|
|
- CStr: by_hand
|
|
- Value: 0x04
|
|
- CStr: CU1
|
|
- AbbrCode: 4
|
|
Values:
|
|
- CStr: int
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo
|
|
- Value: 0x1a
|
|
- AbbrCode: 3
|
|
Values:
|
|
- CStr: var1
|
|
- Value: 0x0000001a
|
|
- BlockData:
|
|
- 0x0e
|
|
- 0x00
|
|
- 0x00
|
|
- 0x01
|
|
- 0x00
|
|
- 0x00
|
|
- 0x00
|
|
- 0x00
|
|
- 0x00
|
|
- 0xe0
|
|
- AbbrCode: 3
|
|
Values:
|
|
- CStr: var2
|
|
- Value: 0x0000001a
|
|
- BlockData:
|
|
- 0x0e
|
|
- 0x00
|
|
- 0x00
|
|
- 0x01
|
|
- 0x00
|
|
- 0x00
|
|
- 0x00
|
|
- 0x00
|
|
- 0x00
|
|
- 0x9b
|
|
- AbbrCode: 0
|
|
- AbbrCode: 0
|
|
...
|