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: ] 113671fb343SFangrui Song 114671fb343SFangrui Song## The alignment can be changed by --set-section-alignment. 115671fb343SFangrui Song# RUN: llvm-objcopy -I binary -O elf64-x86-64 --set-section-alignment .data=8 %t.x-txt %t2.o 116671fb343SFangrui Song# RUN: llvm-readobj --sections %t2.o | FileCheck --check-prefix=ALIGN %s 117671fb343SFangrui Song 118671fb343SFangrui Song# ALIGN: Name: .data 119671fb343SFangrui Song# ALIGN: AddressAlignment: 120671fb343SFangrui Song# ALIGN-SAME: 8{{$}} 121*07669815SJames Henderson 122*07669815SJames Henderson## Show that a filename with non-ASCII characters can be handled appropriately. 123*07669815SJames Henderson## The exact encoding of the non-ASCII character will determine what characters 124*07669815SJames Henderson## are used, so don't check for them specifically. 125*07669815SJames Henderson# RUN: cp %t.x-txt %t€.x-txt 126*07669815SJames Henderson# RUN: llvm-objcopy -I binary -O elf64-x86-64 %t€.x-txt %t3.o 127*07669815SJames Henderson# RUN: llvm-readobj --sections --symbols %t3.o | FileCheck %s 128