Files
clang-p2996/lld/test/mach-o/parse-data.yaml
Nick Kledzik cb9f890b77 [mach-o] Refactor sections -> atoms to be table driven.
Previously each section kind had its own code to loop over the section and
parse it into atoms.  This refactoring has two tables.  The first maps sections
to ContentType.  The second maps ContentType to information on how to find 
the atom boundaries.  

A few bugs in test cases were discovered as part of the refactoring.  
No change in functionality intended.

llvm-svn: 210138
2014-06-03 23:36:50 +00:00

120 lines
3.4 KiB
YAML

# RUN: lld -flavor darwin -arch x86_64 -r -print_atoms %s -o %t | FileCheck %s
#
# Test parsing of mach-o data symbols.
#
# long a = 0x0807060504030201;
# int b = 0x14131211;
# int c = 0x24232221;
# static int s1;
# static int s2 = 0x34333231;
#
#
--- !mach-o
arch: x86_64
file-type: MH_OBJECT
flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ]
has-UUID: false
OS: unknown
sections:
- segment: __DATA
section: __data
type: S_REGULAR
attributes: [ ]
alignment: 3
address: 0x0000000000000000
content: [ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x11, 0x12, 0x13, 0x14, 0x21, 0x22, 0x23, 0x24,
0x31, 0x32, 0x33, 0x34, 0x41, 0x42, 0x43, 0x44 ]
- segment: __CUST
section: __custom
type: S_REGULAR
attributes: [ ]
alignment: 3
address: 0x0000000000000018
content: [ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 ]
- segment: __DATA
section: __bss
type: S_ZEROFILL
attributes: [ ]
alignment: 2
address: 0x0000000000000020
size: 4
local-symbols:
- name: _s1
type: N_SECT
sect: 3
value: 0x0000000000000020
- name: _s2
type: N_SECT
sect: 1
value: 0x0000000000000010
global-symbols:
- name: _a
type: N_SECT
scope: [ N_EXT ]
sect: 1
value: 0x0000000000000000
- name: _b
type: N_SECT
scope: [ N_EXT ]
sect: 1
value: 0x0000000000000008
- name: _c
type: N_SECT
scope: [ N_EXT ]
sect: 1
value: 0x000000000000000C
- name: _cWeak
type: N_SECT
scope: [ N_EXT ]
sect: 1
desc: [ N_WEAK_DEF ]
value: 0x0000000000000014
- name: _kustom
type: N_SECT
scope: [ N_EXT ]
sect: 2
value: 0x0000000000000018
...
# CHECK: defined-atoms:
# CHECK: - name: _a
# CHECK: scope: global
# CHECK: type: data
# CHECK: content: [ 01, 02, 03, 04, 05, 06, 07, 08 ]
# CHECK: - name: _b
# CHECK: scope: global
# CHECK: type: data
# CHECK: content: [ 11, 12, 13, 14 ]
# CHECK: - name: _c
# CHECK: scope: global
# CHECK: type: data
# CHECK: content: [ 21, 22, 23, 24 ]
# CHECK: - name: _s2
# CHECK: type: data
# CHECK: content: [ 31, 32, 33, 34 ]
# CHECK: - name: _cWeak
# CHECK: scope: global
# CHECK: type: data
# CHECK: content: [ 41, 42, 43, 44 ]
# CHECK: merge: as-weak
# CHECK: - name: _s1
# CHECK: type: zero-fill
# CHECK: size: 4
# CHECK: - name: _kustom
# CHECK: scope: global
# CHECK: type: unknown
# CHECK: content: [ 01, 02, 03, 04, 05, 06, 07, 08 ]
# CHECK: section-choice: custom-required
# CHECK: section-name: __CUST/__custom