192 lines · plain
1// RUN: llvm-mc -triple x86_64-apple-darwin %s -filetype=obj -o - | llvm-readobj --file-headers -S --sd -r --symbols --macho-segment --macho-dysymtab --macho-indirect-symbols - | FileCheck %s2 3.tdata4_a$tlv$init:5 .long 46 7 8.tlv9 .globl _a10_a:11 .quad __tlv_bootstrap12 .quad 013 .quad _a$tlv$init14 15.text16 .globl _foo17 .align 4, 0x9018 19_foo:20 movq _a@TLVP(%rip), %rdi21 call *(%rdi) # returns &a in %rax22 ret23 24// CHECK: File: <stdin>25// CHECK: Format: Mach-O 64-bit x86-6426// CHECK: Arch: x86_6427// CHECK: AddressSize: 64bit28// CHECK: MachHeader {29// CHECK: Magic: Magic64 (0xFEEDFACF)30// CHECK: CpuType: X86-64 (0x1000007)31// CHECK: CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3)32// CHECK: FileType: Relocatable (0x1)33// CHECK: NumOfLoadCommands: 334// CHECK: SizeOfLoadCommands: 41635// CHECK: Flags [ (0x0)36// CHECK: ]37// CHECK: Reserved: 0x038// CHECK: }39// CHECK: Sections [40// CHECK: Section {41// CHECK: Index: 042// CHECK: Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)43// CHECK: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)44// CHECK: Address: 0x045// CHECK: Size: 0xA46// CHECK: Offset: 44847// CHECK: Alignment: 448// CHECK: RelocationOffset: 0x1E849// CHECK: RelocationCount: 150// CHECK: Type: Regular (0x0)51// CHECK: Attributes [ (0x800004)52// CHECK: PureInstructions (0x800000)53// CHECK: SomeInstructions (0x4)54// CHECK: ]55// CHECK: Reserved1: 0x056// CHECK: Reserved2: 0x057// CHECK: Reserved3: 0x058// CHECK: SectionData (59// CHECK: 0000: 488B3D00 000000FF 17C3 |H.=.......|60// CHECK: )61// CHECK: }62// CHECK: Section {63// CHECK: Index: 164// CHECK: Name: __thread_data (5F 5F 74 68 72 65 61 64 5F 64 61 74 61 00 00 00)65// CHECK: Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)66// CHECK: Address: 0xA67// CHECK: Size: 0x468// CHECK: Offset: 45869// CHECK: Alignment: 070// CHECK: RelocationOffset: 0x071// CHECK: RelocationCount: 072// CHECK: Type: ThreadLocalRegular (0x11)73// CHECK: Attributes [ (0x0)74// CHECK: ]75// CHECK: Reserved1: 0x076// CHECK: Reserved2: 0x077// CHECK: Reserved3: 0x078// CHECK: SectionData (79// CHECK: 0000: 04000000 |....|80// CHECK: )81// CHECK: }82// CHECK: Section {83// CHECK: Index: 284// CHECK: Name: __thread_vars (5F 5F 74 68 72 65 61 64 5F 76 61 72 73 00 00 00)85// CHECK: Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)86// CHECK: Address: 0xE87// CHECK: Size: 0x1888// CHECK: Offset: 46289// CHECK: Alignment: 090// CHECK: RelocationOffset: 0x1F091// CHECK: RelocationCount: 292// CHECK: Type: ThreadLocalVariables (0x13)93// CHECK: Attributes [ (0x0)94// CHECK: ]95// CHECK: Reserved1: 0x096// CHECK: Reserved2: 0x097// CHECK: Reserved3: 0x098// CHECK: SectionData (99// CHECK: 0000: 00000000 00000000 00000000 00000000 |................|100// CHECK: 0010: 00000000 00000000 |........|101// CHECK: )102// CHECK: }103// CHECK: ]104// CHECK: Relocations [105// CHECK: Section __text {106// CHECK: 0x3 1 2 1 X86_64_RELOC_TLV 0 _a107// CHECK: }108// CHECK: Section __thread_vars {109// CHECK: 0x10 0 3 1 X86_64_RELOC_UNSIGNED 0 _a$tlv$init110// CHECK: 0x0 0 3 1 X86_64_RELOC_UNSIGNED 0 __tlv_bootstrap111// CHECK: }112// CHECK: ]113// CHECK: Symbols [114// CHECK: Symbol {115// CHECK: Name: _a$tlv$init (1)116// CHECK: Type: Section (0xE)117// CHECK: Section: __thread_data (0x2)118// CHECK: RefType: UndefinedNonLazy (0x0)119// CHECK: Flags [ (0x0)120// CHECK: ]121// CHECK: Value: 0xA122// CHECK: }123// CHECK: Symbol {124// CHECK: Name: _a (34)125// CHECK: Extern126// CHECK: Type: Section (0xE)127// CHECK: Section: __thread_vars (0x3)128// CHECK: RefType: UndefinedNonLazy (0x0)129// CHECK: Flags [ (0x0)130// CHECK: ]131// CHECK: Value: 0xE132// CHECK: }133// CHECK: Symbol {134// CHECK: Name: _foo (29)135// CHECK: Extern136// CHECK: Type: Section (0xE)137// CHECK: Section: __text (0x1)138// CHECK: RefType: UndefinedNonLazy (0x0)139// CHECK: Flags [ (0x0)140// CHECK: ]141// CHECK: Value: 0x0142// CHECK: }143// CHECK: Symbol {144// CHECK: Name: __tlv_bootstrap (13)145// CHECK: Extern146// CHECK: Type: Undef (0x0)147// CHECK: Section: (0x0)148// CHECK: RefType: UndefinedNonLazy (0x0)149// CHECK: Flags [ (0x0)150// CHECK: ]151// CHECK: Value: 0x0152// CHECK: }153// CHECK: ]154// CHECK: Indirect Symbols {155// CHECK: Number: 0156// CHECK: Symbols [157// CHECK: ]158// CHECK: }159// CHECK: Segment {160// CHECK: Cmd: LC_SEGMENT_64161// CHECK: Name: 162// CHECK: Size: 312163// CHECK: vmaddr: 0x0164// CHECK: vmsize: 0x26165// CHECK: fileoff: 448166// CHECK: filesize: 38167// CHECK: maxprot: rwx168// CHECK: initprot: rwx169// CHECK: nsects: 3170// CHECK: flags: 0x0171// CHECK: }172// CHECK: Dysymtab {173// CHECK: ilocalsym: 0174// CHECK: nlocalsym: 1175// CHECK: iextdefsym: 1176// CHECK: nextdefsym: 2177// CHECK: iundefsym: 3178// CHECK: nundefsym: 1179// CHECK: tocoff: 0180// CHECK: ntoc: 0181// CHECK: modtaboff: 0182// CHECK: nmodtab: 0183// CHECK: extrefsymoff: 0184// CHECK: nextrefsyms: 0185// CHECK: indirectsymoff: 0186// CHECK: nindirectsyms: 0187// CHECK: extreloff: 0188// CHECK: nextrel: 0189// CHECK: locreloff: 0190// CHECK: nlocrel: 0191// CHECK: }192