1*6e4dc6f2SAlexander Shaposhnikov# RUN: echo -n abcd > %t.x-txt 2*6e4dc6f2SAlexander Shaposhnikov# Preserve input to verify it is not modified 3*6e4dc6f2SAlexander Shaposhnikov# RUN: cp %t.x-txt %t-copy.txt 4*6e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy -I binary -B i386:x86-64 %t.x-txt %t.o 5*6e4dc6f2SAlexander Shaposhnikov# RUN: llvm-readobj -sections -symbols %t.o | FileCheck %s 6*6e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t.x-txt %t-copy.txt 7*6e4dc6f2SAlexander Shaposhnikov 8*6e4dc6f2SAlexander Shaposhnikov# CHECK: Sections [ 9*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 10*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 0 11*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: (0) 12*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_NULL (0x0) 13*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0) 14*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 15*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 16*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 17*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 18*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 19*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 20*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 0 21*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 22*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 23*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 24*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 1 25*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .strtab 26*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_STRTAB (0x3) 27*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0) 28*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 29*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 30*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 31*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 32*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 33*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 34*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 1 35*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 36*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 37*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 38*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 2 39*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .symtab 40*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_SYMTAB (0x2) 41*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0) 42*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 43*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 44*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 45*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 46*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 1 47*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 1 48*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 1 49*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 24 50*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 51*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 52*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 3 53*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .data 54*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_PROGBITS (0x1) 55*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x3) 56*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: SHF_ALLOC (0x2) 57*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: SHF_WRITE (0x1) 58*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 59*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 60*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 61*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 4 62*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 63*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 64*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 1 65*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 66*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 67*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 68*6e4dc6f2SAlexander Shaposhnikov 69*6e4dc6f2SAlexander Shaposhnikov# Note: the symbol names are derived from the full path (with non-alnum values 70*6e4dc6f2SAlexander Shaposhnikov# replaced with "_"), e.g. "/tmp/a-b.c" should yield 71*6e4dc6f2SAlexander Shaposhnikov# _binary__tmp_a_b_c_{start,end,size}. 72*6e4dc6f2SAlexander Shaposhnikov# Just check for _binary_{{[_a-zA-Z0-9]*}}_x_txt_{start,end,size} to avoid 73*6e4dc6f2SAlexander Shaposhnikov# making assumptions about how this test is run. 74*6e4dc6f2SAlexander Shaposhnikov 75*6e4dc6f2SAlexander Shaposhnikov# CHECK: Symbols [ 76*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Symbol { 77*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: 78*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Value: 0x0 79*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 80*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Binding: Local (0x0) 81*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: None (0x0) 82*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Other: 0 83*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section: Undefined (0x0) 84*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 85*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Symbol { 86*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_start 87*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Value: 0x0 88*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 89*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Binding: Global (0x1) 90*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: None (0x0) 91*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Other: 0 92*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section: .data 93*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 94*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Symbol { 95*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_end 96*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Value: 0x4 97*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 98*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Binding: Global (0x1) 99*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: None (0x0) 100*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Other: 0 101*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section: .data 102*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 103*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Symbol { 104*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_size 105*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Value: 0x4 106*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 107*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Binding: Global (0x1) 108*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: None (0x0) 109*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Other: 0 110*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section: Absolute 111*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 112*6e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 113