1*84cc39c3SJez Ng## Verify that llvm-readobj can dump files containing stabs symbols, 2*84cc39c3SJez Ng## particularly symbols of type N_OSO which have repurposed the n_sect field 3*84cc39c3SJez Ng## to store a non-section-index value. 4*84cc39c3SJez Ng 5*84cc39c3SJez Ng# RUN: yaml2obj %s -o %t 6*84cc39c3SJez Ng# RUN: llvm-readobj --syms %t | FileCheck %s 7*84cc39c3SJez Ng 8*84cc39c3SJez Ng# CHECK: Symbols [ 9*84cc39c3SJez Ng# CHECK-NEXT: Symbol { 10*84cc39c3SJez Ng# CHECK-NEXT: Name: /Volumes/Sandbox/ (2) 11*84cc39c3SJez Ng# CHECK-NEXT: Type: SymDebugTable (0x64) 12*84cc39c3SJez Ng# CHECK-NEXT: Section: (0x0) 13*84cc39c3SJez Ng# CHECK-NEXT: RefType: UndefinedNonLazy (0x0) 14*84cc39c3SJez Ng# CHECK-NEXT: Flags [ (0x0) 15*84cc39c3SJez Ng# CHECK-NEXT: ] 16*84cc39c3SJez Ng# CHECK-NEXT: Value: 0x0 17*84cc39c3SJez Ng# CHECK-NEXT: } 18*84cc39c3SJez Ng# CHECK-NEXT: Symbol { 19*84cc39c3SJez Ng# CHECK-NEXT: Name: /Volumes/Sandbox/test.o (20) 20*84cc39c3SJez Ng# CHECK-NEXT: Type: SymDebugTable (0x66) 21*84cc39c3SJez Ng# CHECK-NEXT: Section: (0x3) 22*84cc39c3SJez Ng# CHECK-NEXT: RefType: ReferenceFlagUndefinedLazy (0x1) 23*84cc39c3SJez Ng# CHECK-NEXT: Flags [ (0x0) 24*84cc39c3SJez Ng# CHECK-NEXT: ] 25*84cc39c3SJez Ng# CHECK-NEXT: Value: 0x5F72D5E2 26*84cc39c3SJez Ng# CHECK-NEXT: } 27*84cc39c3SJez Ng# CHECK-NEXT: Symbol { 28*84cc39c3SJez Ng# CHECK-NEXT: Name: (1) 29*84cc39c3SJez Ng# CHECK-NEXT: Type: SymDebugTable (0x2E) 30*84cc39c3SJez Ng# CHECK-NEXT: Section: (0x1) 31*84cc39c3SJez Ng# CHECK-NEXT: RefType: UndefinedNonLazy (0x0) 32*84cc39c3SJez Ng# CHECK-NEXT: Flags [ (0x0) 33*84cc39c3SJez Ng# CHECK-NEXT: ] 34*84cc39c3SJez Ng# CHECK-NEXT: Value: 0x100000FA0 35*84cc39c3SJez Ng# CHECK-NEXT: } 36*84cc39c3SJez Ng# CHECK-NEXT: Symbol { 37*84cc39c3SJez Ng# CHECK-NEXT: Name: _foo (44) 38*84cc39c3SJez Ng# CHECK-NEXT: Type: SymDebugTable (0x24) 39*84cc39c3SJez Ng# CHECK-NEXT: Section: (0x1) 40*84cc39c3SJez Ng# CHECK-NEXT: RefType: UndefinedNonLazy (0x0) 41*84cc39c3SJez Ng# CHECK-NEXT: Flags [ (0x0) 42*84cc39c3SJez Ng# CHECK-NEXT: ] 43*84cc39c3SJez Ng# CHECK-NEXT: Value: 0x100000FA0 44*84cc39c3SJez Ng# CHECK-NEXT: } 45*84cc39c3SJez Ng# CHECK-NEXT: Symbol { 46*84cc39c3SJez Ng# CHECK-NEXT: Name: (1) 47*84cc39c3SJez Ng# CHECK-NEXT: Type: SymDebugTable (0x4E) 48*84cc39c3SJez Ng# CHECK-NEXT: Section: (0x1) 49*84cc39c3SJez Ng# CHECK-NEXT: RefType: UndefinedNonLazy (0x0) 50*84cc39c3SJez Ng# CHECK-NEXT: Flags [ (0x0) 51*84cc39c3SJez Ng# CHECK-NEXT: ] 52*84cc39c3SJez Ng# CHECK-NEXT: Value: 0xF 53*84cc39c3SJez Ng# CHECK-NEXT: } 54*84cc39c3SJez Ng# CHECK-NEXT: ] 55*84cc39c3SJez Ng 56*84cc39c3SJez Ng--- !mach-o 57*84cc39c3SJez NgFileHeader: 58*84cc39c3SJez Ng magic: 0xFEEDFACF 59*84cc39c3SJez Ng cputype: 0x01000007 60*84cc39c3SJez Ng cpusubtype: 0x00000003 61*84cc39c3SJez Ng filetype: 0x00000002 62*84cc39c3SJez Ng ncmds: 2 63*84cc39c3SJez Ng sizeofcmds: 744 64*84cc39c3SJez Ng flags: 0x00200085 65*84cc39c3SJez Ng reserved: 0x00000000 66*84cc39c3SJez NgLoadCommands: 67*84cc39c3SJez Ng - cmd: LC_SEGMENT_64 68*84cc39c3SJez Ng cmdsize: 232 69*84cc39c3SJez Ng segname: __TEXT 70*84cc39c3SJez Ng vmaddr: 4294967296 71*84cc39c3SJez Ng vmsize: 4096 72*84cc39c3SJez Ng fileoff: 0 73*84cc39c3SJez Ng filesize: 4096 74*84cc39c3SJez Ng maxprot: 5 75*84cc39c3SJez Ng initprot: 5 76*84cc39c3SJez Ng nsects: 1 77*84cc39c3SJez Ng flags: 0 78*84cc39c3SJez Ng Sections: 79*84cc39c3SJez Ng - sectname: __text 80*84cc39c3SJez Ng segname: __TEXT 81*84cc39c3SJez Ng addr: 0x00000000 82*84cc39c3SJez Ng size: 0 83*84cc39c3SJez Ng offset: 0x00000000 84*84cc39c3SJez Ng align: 4 85*84cc39c3SJez Ng reloff: 0x00000000 86*84cc39c3SJez Ng nreloc: 0 87*84cc39c3SJez Ng flags: 0x80000400 88*84cc39c3SJez Ng reserved1: 0x00000000 89*84cc39c3SJez Ng reserved2: 0x00000000 90*84cc39c3SJez Ng reserved3: 0x00000000 91*84cc39c3SJez Ng - cmd: LC_SYMTAB 92*84cc39c3SJez Ng cmdsize: 24 93*84cc39c3SJez Ng symoff: 4152 94*84cc39c3SJez Ng nsyms: 5 95*84cc39c3SJez Ng stroff: 4328 96*84cc39c3SJez Ng strsize: 49 97*84cc39c3SJez NgLinkEditData: 98*84cc39c3SJez Ng NameList: 99*84cc39c3SJez Ng - n_strx: 2 100*84cc39c3SJez Ng n_type: 0x64 ## N_SO 101*84cc39c3SJez Ng n_sect: 0 102*84cc39c3SJez Ng n_desc: 0 103*84cc39c3SJez Ng n_value: 0 104*84cc39c3SJez Ng - n_strx: 20 105*84cc39c3SJez Ng n_type: 0x66 ## N_OSO 106*84cc39c3SJez Ng n_sect: 3 107*84cc39c3SJez Ng n_desc: 1 108*84cc39c3SJez Ng n_value: 1601361378 109*84cc39c3SJez Ng - n_strx: 1 110*84cc39c3SJez Ng n_type: 0x2E ## N_BNSYM 111*84cc39c3SJez Ng n_sect: 1 112*84cc39c3SJez Ng n_desc: 0 113*84cc39c3SJez Ng n_value: 4294971296 114*84cc39c3SJez Ng - n_strx: 44 115*84cc39c3SJez Ng n_type: 0x24 ## N_FUN 116*84cc39c3SJez Ng n_sect: 1 117*84cc39c3SJez Ng n_desc: 0 118*84cc39c3SJez Ng n_value: 4294971296 119*84cc39c3SJez Ng - n_strx: 1 120*84cc39c3SJez Ng n_type: 0x4E ## N_ENSYM 121*84cc39c3SJez Ng n_sect: 1 122*84cc39c3SJez Ng n_desc: 0 123*84cc39c3SJez Ng n_value: 15 124*84cc39c3SJez Ng StringTable: 125*84cc39c3SJez Ng - ' ' 126*84cc39c3SJez Ng - '/Volumes/Sandbox/' 127*84cc39c3SJez Ng - '/Volumes/Sandbox/test.o' 128*84cc39c3SJez Ng - _foo 129*84cc39c3SJez Ng... 130