16e4dc6f2SAlexander Shaposhnikov# RUN: echo -n abcd > %t.x-txt 26e4dc6f2SAlexander Shaposhnikov# Preserve input to verify it is not modified 36e4dc6f2SAlexander Shaposhnikov# RUN: cp %t.x-txt %t-copy.txt 4ba53030dSFangrui Song# RUN: llvm-objcopy -I binary -O elf64-x86-64 %t.x-txt %t.o 5298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections --symbols %t.o | FileCheck %s 66e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t.x-txt %t-copy.txt 76e4dc6f2SAlexander Shaposhnikov 86e4dc6f2SAlexander Shaposhnikov# CHECK: Sections [ 96e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 106e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 0 116e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: (0) 126e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_NULL (0x0) 136e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0) 146e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 156e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 166e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 176e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 186e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 196e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 206e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 0 216e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 226e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 236e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 246e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 1 256e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .strtab 266e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_STRTAB (0x3) 276e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0) 286e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 296e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 306e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 316e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 326e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 336e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 346e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 1 356e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 366e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 376e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 386e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 2 396e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .symtab 406e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_SYMTAB (0x2) 416e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0) 426e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 436e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 446e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 456e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 466e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 1 476e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 1 481f82176fSJordan Rupprecht# CHECK-NEXT: AddressAlignment: 8 496e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 24 506e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 516e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section { 526e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Index: 3 536e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: .data 546e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_PROGBITS (0x1) 556e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x3) 566e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: SHF_ALLOC (0x2) 576e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: SHF_WRITE (0x1) 586e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 596e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address: 0x0 606e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset: 616e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 4 626e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Link: 0 636e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Info: 0 646e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: AddressAlignment: 1 656e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: EntrySize: 0 666e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 676e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 686e4dc6f2SAlexander Shaposhnikov 696e4dc6f2SAlexander Shaposhnikov# Note: the symbol names are derived from the full path (with non-alnum values 706e4dc6f2SAlexander Shaposhnikov# replaced with "_"), e.g. "/tmp/a-b.c" should yield 716e4dc6f2SAlexander Shaposhnikov# _binary__tmp_a_b_c_{start,end,size}. 726e4dc6f2SAlexander Shaposhnikov# Just check for _binary_{{[_a-zA-Z0-9]*}}_x_txt_{start,end,size} to avoid 736e4dc6f2SAlexander Shaposhnikov# making assumptions about how this test is run. 746e4dc6f2SAlexander Shaposhnikov 756e4dc6f2SAlexander Shaposhnikov# CHECK: Symbols [ 766e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Symbol { 776e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: 786e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Value: 0x0 796e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 806e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Binding: Local (0x0) 816e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: None (0x0) 826e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Other: 0 836e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section: Undefined (0x0) 846e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 856e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Symbol { 866e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_start 876e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Value: 0x0 886e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 896e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Binding: Global (0x1) 906e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: None (0x0) 916e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Other: 0 926e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section: .data 936e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 946e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Symbol { 956e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_end 966e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Value: 0x4 976e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 986e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Binding: Global (0x1) 996e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: None (0x0) 1006e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Other: 0 1016e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section: .data 1026e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 1036e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Symbol { 1046e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Name: _binary_{{[_a-zA-Z0-9]*}}_x_txt_size 1056e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Value: 0x4 1066e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 0 1076e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Binding: Global (0x1) 1086e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: None (0x0) 1096e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Other: 0 1106e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Section: Absolute 1116e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: } 1126e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ] 113*671fb343SFangrui Song 114*671fb343SFangrui Song## The alignment can be changed by --set-section-alignment. 115*671fb343SFangrui Song# RUN: llvm-objcopy -I binary -O elf64-x86-64 --set-section-alignment .data=8 %t.x-txt %t2.o 116*671fb343SFangrui Song# RUN: llvm-readobj --sections %t2.o | FileCheck --check-prefix=ALIGN %s 117*671fb343SFangrui Song 118*671fb343SFangrui Song# ALIGN: Name: .data 119*671fb343SFangrui Song# ALIGN: AddressAlignment: 120*671fb343SFangrui Song# ALIGN-SAME: 8{{$}} 121