| // RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | llvm-readobj -file-headers -s -r -t -macho-segment -macho-dysymtab -macho-indirect-symbols | FileCheck %s | |
| .reference sym_ref_A | |
| .reference sym_ref_def_A | |
| sym_ref_def_A: | |
| sym_ref_def_C: | |
| .reference sym_ref_def_C | |
| .reference sym_ref_def_D | |
| .globl sym_ref_def_D | |
| .globl sym_ref_def_E | |
| .reference sym_ref_def_E | |
| .weak_reference sym_weak_ref_A | |
| .weak_reference sym_weak_ref_def_A | |
| sym_weak_ref_def_A: | |
| sym_weak_ref_def_B: | |
| .weak_reference sym_weak_ref_def_B | |
| .data | |
| .globl sym_weak_def_A | |
| .weak_definition sym_weak_def_A | |
| sym_weak_def_A: | |
| sym_weak_def_B: | |
| .weak_definition sym_weak_def_B | |
| .globl sym_weak_def_B | |
| .weak_definition sym_weak_def_C | |
| sym_weak_def_C: | |
| .globl sym_weak_def_C | |
| .lazy_reference sym_lazy_ref_A | |
| .lazy_reference sym_lazy_ref_B | |
| sym_lazy_ref_B: | |
| sym_lazy_ref_C: | |
| .lazy_reference sym_lazy_ref_C | |
| .lazy_reference sym_lazy_ref_D | |
| .globl sym_lazy_ref_D | |
| .globl sym_lazy_ref_E | |
| .lazy_reference sym_lazy_ref_E | |
| .private_extern sym_private_ext_A | |
| .private_extern sym_private_ext_B | |
| sym_private_ext_B: | |
| sym_private_ext_C: | |
| .private_extern sym_private_ext_C | |
| .private_extern sym_private_ext_D | |
| .globl sym_private_ext_D | |
| .globl sym_private_ext_E | |
| .private_extern sym_private_ext_E | |
| .no_dead_strip sym_no_dead_strip_A | |
| sym_symbol_resolver_A: | |
| .symbol_resolver sym_symbol_resolver_A | |
| .reference sym_ref_A | |
| .desc sym_ref_A, 1 | |
| .desc sym_ref_A, 0x1234 | |
| .desc sym_desc_flags,0x47 | |
| sym_desc_flags: | |
| // CHECK: File: <stdin> | |
| // CHECK: Format: Mach-O 32-bit i386 | |
| // CHECK: Arch: i386 | |
| // CHECK: AddressSize: 32bit | |
| // CHECK: MachHeader { | |
| // CHECK: Magic: Magic (0xFEEDFACE) | |
| // CHECK: CpuType: X86 (0x7) | |
| // CHECK: CpuSubType: CPU_SUBTYPE_I386_ALL (0x3) | |
| // CHECK: FileType: Relocatable (0x1) | |
| // CHECK: NumOfLoadCommands: 4 | |
| // CHECK: SizeOfLoadCommands: 312 | |
| // CHECK: Flags [ (0x0) | |
| // CHECK: ] | |
| // CHECK: } | |
| // CHECK: Sections [ | |
| // CHECK: Section { | |
| // CHECK: Index: 0 | |
| // CHECK: Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00) | |
| // CHECK: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) | |
| // CHECK: Address: 0x0 | |
| // CHECK: Size: 0x0 | |
| // CHECK: Offset: 340 | |
| // CHECK: Alignment: 0 | |
| // CHECK: RelocationOffset: 0x0 | |
| // CHECK: RelocationCount: 0 | |
| // CHECK: Type: 0x0 | |
| // CHECK: Attributes [ (0x800000) | |
| // CHECK: PureInstructions (0x800000) | |
| // CHECK: ] | |
| // CHECK: Reserved1: 0x0 | |
| // CHECK: Reserved2: 0x0 | |
| // CHECK: } | |
| // CHECK: Section { | |
| // CHECK: Index: 1 | |
| // CHECK: Name: __data (5F 5F 64 61 74 61 00 00 00 00 00 00 00 00 00 00) | |
| // CHECK: Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00) | |
| // CHECK: Address: 0x0 | |
| // CHECK: Size: 0x0 | |
| // CHECK: Offset: 340 | |
| // CHECK: Alignment: 0 | |
| // CHECK: RelocationOffset: 0x0 | |
| // CHECK: RelocationCount: 0 | |
| // CHECK: Type: 0x0 | |
| // CHECK: Attributes [ (0x0) | |
| // CHECK: ] | |
| // CHECK: Reserved1: 0x0 | |
| // CHECK: Reserved2: 0x0 | |
| // CHECK: } | |
| // CHECK: ] | |
| // CHECK: Relocations [ | |
| // CHECK: ] | |
| // CHECK: Symbols [ | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_ref_def_A (354) | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __text (0x1) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_ref_def_C (158) | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __text (0x1) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_weak_ref_def_A (368) | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __text (0x1) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x40) | |
| // CHECK: WeakRef (0x40) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_weak_ref_def_B (220) | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __text (0x1) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x0) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_lazy_ref_B (190) | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_lazy_ref_C (128) | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_symbol_resolver_A (257) | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x100) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_desc_flags (1) | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x40) | |
| // CHECK: WeakRef (0x40) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_private_ext_B (172) | |
| // CHECK: PrivateExtern | |
| // CHECK: Extern | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x0) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_private_ext_C (110) | |
| // CHECK: PrivateExtern | |
| // CHECK: Extern | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x0) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_weak_def_A (339) | |
| // CHECK: Extern | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x80) | |
| // CHECK: WeakDef (0x80) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_weak_def_B (205) | |
| // CHECK: Extern | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x80) | |
| // CHECK: WeakDef (0x80) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_weak_def_C (143) | |
| // CHECK: Extern | |
| // CHECK: Type: Section (0xE) | |
| // CHECK: Section: __data (0x2) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x80) | |
| // CHECK: WeakDef (0x80) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_lazy_ref_A (299) | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: ReferenceFlagUndefinedLazy (0x1) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_lazy_ref_D (81) | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_lazy_ref_E (34) | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: ReferenceFlagUndefinedLazy (0x1) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_no_dead_strip_A (279) | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_private_ext_A (239) | |
| // CHECK: PrivateExtern | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x0) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_private_ext_D (63) | |
| // CHECK: PrivateExtern | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x0) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_private_ext_E (16) | |
| // CHECK: PrivateExtern | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x0) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_ref_A (314) | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: ReferenceFlagPrivateUndefinedNonLazy (0x4) | |
| // CHECK: Flags [ (0x1230) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ReferencedDynamically (0x10) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_ref_def_D (96) | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_ref_def_E (49) | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x20) | |
| // CHECK: NoDeadStrip (0x20) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: Symbol { | |
| // CHECK: Name: sym_weak_ref_A (324) | |
| // CHECK: Extern | |
| // CHECK: Type: Undef (0x0) | |
| // CHECK: Section: (0x0) | |
| // CHECK: RefType: UndefinedNonLazy (0x0) | |
| // CHECK: Flags [ (0x40) | |
| // CHECK: WeakRef (0x40) | |
| // CHECK: ] | |
| // CHECK: Value: 0x0 | |
| // CHECK: } | |
| // CHECK: ] | |
| // CHECK: Indirect Symbols { | |
| // CHECK: Number: 0 | |
| // CHECK: Symbols [ | |
| // CHECK: ] | |
| // CHECK: } | |
| // CHECK: Segment { | |
| // CHECK: Cmd: LC_SEGMENT | |
| // CHECK: Name: | |
| // CHECK: Size: 192 | |
| // CHECK: vmaddr: 0x0 | |
| // CHECK: vmsize: 0x0 | |
| // CHECK: fileoff: 340 | |
| // CHECK: filesize: 0 | |
| // CHECK: maxprot: rwx | |
| // CHECK: initprot: rwx | |
| // CHECK: nsects: 2 | |
| // CHECK: flags: 0x0 | |
| // CHECK: } | |
| // CHECK: Dysymtab { | |
| // CHECK: ilocalsym: 0 | |
| // CHECK: nlocalsym: 8 | |
| // CHECK: iextdefsym: 8 | |
| // CHECK: nextdefsym: 5 | |
| // CHECK: iundefsym: 13 | |
| // CHECK: nundefsym: 11 | |
| // CHECK: tocoff: 0 | |
| // CHECK: ntoc: 0 | |
| // CHECK: modtaboff: 0 | |
| // CHECK: nmodtab: 0 | |
| // CHECK: extrefsymoff: 0 | |
| // CHECK: nextrefsyms: 0 | |
| // CHECK: indirectsymoff: 0 | |
| // CHECK: nindirectsyms: 0 | |
| // CHECK: extreloff: 0 | |
| // CHECK: nextrel: 0 | |
| // CHECK: locreloff: 0 | |
| // CHECK: nlocrel: 0 | |
| // CHECK: } |