155c81d42SFangrui Song# RUN: yaml2obj %s -o %t 26e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy \ 36e4dc6f2SAlexander Shaposhnikov# RUN: --localize-symbol Global \ 4bd7735f7SJordan Rupprecht# RUN: -L GlobalUndef \ 56e4dc6f2SAlexander Shaposhnikov# RUN: -L Local \ 66e4dc6f2SAlexander Shaposhnikov# RUN: -L Weak \ 76e4dc6f2SAlexander Shaposhnikov# RUN: -L GlobalCommon \ 8*1562e455SJames Henderson# RUN: -L Missing \ 96e4dc6f2SAlexander Shaposhnikov# RUN: %t %t2 10298ea3f5SJordan Rupprecht# RUN: llvm-readobj --symbols %t2 | FileCheck %s 11*1562e455SJames Henderson# RUN: llvm-objcopy --regex --localize-symbol='[GLW].*' %t %t3 12f324f6dcSEugene Leviant# RUN: cmp %t2 %t3 13e08fe35dSEugene Leviant# RUN: echo " Global # comment " > %t-list.txt 14e08fe35dSEugene Leviant# RUN: echo "GlobalUndef" >> %t-list.txt 15e08fe35dSEugene Leviant# RUN: echo "Local" >> %t-list.txt 16e08fe35dSEugene Leviant# RUN: echo "Weak" >> %t-list.txt 17e08fe35dSEugene Leviant# RUN: echo "GlobalCommon" >> %t-list.txt 18*1562e455SJames Henderson# RUN: echo "Missing" >> %t-list.txt 19e08fe35dSEugene Leviant# RUN: echo " # comment " >> %t-list.txt 20e08fe35dSEugene Leviant# RUN: llvm-objcopy --localize-symbols %t-list.txt %t %t4 21e08fe35dSEugene Leviant# RUN: cmp %t2 %t4 22e08fe35dSEugene Leviant# RUN: echo " .*al.* # Global + Local + GlobalCommon " > %t-list2.txt 23e08fe35dSEugene Leviant# RUN: echo "Weak" >> %t-list2.txt 24e08fe35dSEugene Leviant# RUN: llvm-objcopy --regex --localize-symbols %t-list2.txt %t %t5 25e08fe35dSEugene Leviant# RUN: cmp %t2 %t5 266e4dc6f2SAlexander Shaposhnikov 276e4dc6f2SAlexander Shaposhnikov!ELF 286e4dc6f2SAlexander ShaposhnikovFileHeader: 296e4dc6f2SAlexander Shaposhnikov Class: ELFCLASS64 306e4dc6f2SAlexander Shaposhnikov Data: ELFDATA2LSB 316e4dc6f2SAlexander Shaposhnikov Type: ET_REL 326e4dc6f2SAlexander Shaposhnikov Machine: EM_X86_64 336e4dc6f2SAlexander ShaposhnikovSections: 346e4dc6f2SAlexander Shaposhnikov - Name: .text 356e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 366e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 376e4dc6f2SAlexander Shaposhnikov Address: 0x1000 386e4dc6f2SAlexander Shaposhnikov AddressAlign: 0x0000000000000010 396e4dc6f2SAlexander Shaposhnikov Size: 64 406e4dc6f2SAlexander Shaposhnikov - Name: .data 416e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 426e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC ] 436e4dc6f2SAlexander Shaposhnikov Address: 0x2000 446e4dc6f2SAlexander Shaposhnikov AddressAlign: 0x0000000000000010 456e4dc6f2SAlexander Shaposhnikov Content: "0000000000000000" 466e4dc6f2SAlexander ShaposhnikovSymbols: 476e4dc6f2SAlexander Shaposhnikov - Name: Local 486e4dc6f2SAlexander Shaposhnikov Type: STT_FUNC 496e4dc6f2SAlexander Shaposhnikov Section: .text 506e4dc6f2SAlexander Shaposhnikov Value: 0x1000 516e4dc6f2SAlexander Shaposhnikov Size: 8 526e4dc6f2SAlexander Shaposhnikov - Name: Global 536e4dc6f2SAlexander Shaposhnikov Type: STT_FUNC 546e4dc6f2SAlexander Shaposhnikov Size: 8 556e4dc6f2SAlexander Shaposhnikov Section: .text 566e4dc6f2SAlexander Shaposhnikov Value: 0x1010 576da44ad7SGeorge Rimar Binding: STB_GLOBAL 58bd7735f7SJordan Rupprecht - Name: GlobalUndef 59bd7735f7SJordan Rupprecht Type: STT_FUNC 606da44ad7SGeorge Rimar Binding: STB_GLOBAL 616e4dc6f2SAlexander Shaposhnikov - Name: GlobalCommon 626e4dc6f2SAlexander Shaposhnikov Type: STT_OBJECT 636e4dc6f2SAlexander Shaposhnikov Index: SHN_COMMON 646e4dc6f2SAlexander Shaposhnikov Value: 0x2006 656e4dc6f2SAlexander Shaposhnikov Size: 2 666da44ad7SGeorge Rimar Binding: STB_GLOBAL 676da44ad7SGeorge Rimar - Name: Weak 686da44ad7SGeorge Rimar Type: STT_FUNC 696da44ad7SGeorge Rimar Size: 8 706da44ad7SGeorge Rimar Section: .text 716da44ad7SGeorge Rimar Value: 0x1008 726da44ad7SGeorge Rimar Binding: STB_WEAK 73*1562e455SJames Henderson - Name: Unmentioned 74*1562e455SJames Henderson Section: .text 75*1562e455SJames Henderson Binding: STB_GLOBAL 766e4dc6f2SAlexander Shaposhnikov 776e4dc6f2SAlexander Shaposhnikov#CHECK: Symbols [ 786e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 796e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: 806e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x0 816e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 0 826e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 836e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: None 846e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 856e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: Undefined 866e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 876e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 886e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: Local 896e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x1000 906e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 916e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 926e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 936e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 946e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .text 956e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 966e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 976e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: Global 986e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x1010 996e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 1006e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 1016e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 1026e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 1036e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .text 1046e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1056e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 1066e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: Weak 1076e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x1008 1086e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 1096e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 1106e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 1116e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 1126e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .text 1136e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1146e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 115bd7735f7SJordan Rupprecht#CHECK-NEXT: Name: GlobalUndef 116bd7735f7SJordan Rupprecht#CHECK-NEXT: Value: 117bd7735f7SJordan Rupprecht#CHECK-NEXT: Size: 118bd7735f7SJordan Rupprecht#CHECK-NEXT: Binding: Global 119bd7735f7SJordan Rupprecht#CHECK-NEXT: Type: Function 120bd7735f7SJordan Rupprecht#CHECK-NEXT: Other: 121bd7735f7SJordan Rupprecht#CHECK-NEXT: Section: Undefined 122bd7735f7SJordan Rupprecht#CHECK-NEXT: } 123bd7735f7SJordan Rupprecht#CHECK-NEXT: Symbol { 1246e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: GlobalCommon 1256e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x2006 1266e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 2 1276e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Global 1286e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Object 1296e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 130*1562e455SJames Henderson#CHECK-NEXT: Section: Common 131*1562e455SJames Henderson#CHECK-NEXT: } 132*1562e455SJames Henderson#CHECK-NEXT: Symbol { 133*1562e455SJames Henderson#CHECK-NEXT: Name: Unmentioned 134*1562e455SJames Henderson#CHECK-NEXT: Value: 135*1562e455SJames Henderson#CHECK-NEXT: Size: 136*1562e455SJames Henderson#CHECK-NEXT: Binding: Global 137*1562e455SJames Henderson#CHECK-NEXT: Type: 138*1562e455SJames Henderson#CHECK-NEXT: Other: 139*1562e455SJames Henderson#CHECK-NEXT: Section: .text 1406e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 1416e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:] 142