114 lines · plain
1# RUN: yaml2obj %s -o %t2# RUN: llvm-objcopy --redefine-sym foo=oof --redefine-sym =wasempty --redefine-sym empty= %t %t23# RUN: llvm-readobj --symbols %t2 | FileCheck %s4# RUN: echo " bar rab #rename bar " > %t.rename1.txt5# RUN: echo "foo oof #rename foo " > %t.rename2.txt6# RUN: echo " empty ytpme #rename empty " >> %t.rename2.txt7# RUN: llvm-objcopy --redefine-syms %t.rename1.txt --redefine-syms %t.rename2.txt %t %t48# RUN: llvm-readobj --symbols %t4 | FileCheck %s --check-prefix=MULTIPLE-FILES9 10!ELF11FileHeader:12 Class: ELFCLASS6413 Data: ELFDATA2LSB14 Type: ET_EXEC15 Machine: EM_X86_6416Sections:17 - Name: .text18 Type: SHT_PROGBITS19 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]20 Address: 0x100021 AddressAlign: 0x000000000000001022 Content: "0000000000000000"23 - Name: .data24 Type: SHT_PROGBITS25 Flags: [ SHF_ALLOC ]26 Address: 0x200027 AddressAlign: 0x000000000000001028 Content: "0000000000000000"29Symbols:30 - Name: foo31 Type: STT_FUNC32 Section: .text33 Value: 0x100434 Binding: STB_GLOBAL35 - Name: bar36 Type: STT_OBJECT37 Section: .data38 Value: 0x200039 Size: 440 Binding: STB_GLOBAL41 - Name: empty42 Type: STT_FUNC43 Section: .text44 Value: 0x100845 Binding: STB_GLOBAL46 - Type: STT_OBJECT47 Section: .data48 Value: 0x200849 Binding: STB_GLOBAL50 51#CHECK: Symbols [52#CHECK-NEXT: Symbol {53#CHECK-NEXT: Name:54#CHECK-NEXT: Value: 0x055#CHECK-NEXT: Size: 056#CHECK-NEXT: Binding: Local57#CHECK-NEXT: Type: None58#CHECK-NEXT: Other: 059#CHECK-NEXT: Section: Undefined60#CHECK-NEXT: }61#CHECK-NEXT: Symbol {62#CHECK-NEXT: Name: oof63#CHECK-NEXT: Value: 0x100464#CHECK-NEXT: Size: 065#CHECK-NEXT: Binding: Global66#CHECK-NEXT: Type: Function67#CHECK-NEXT: Other: 068#CHECK-NEXT: Section: .text69#CHECK-NEXT: }70#CHECK-NEXT: Symbol {71#CHECK-NEXT: Name: bar72#CHECK-NEXT: Value: 0x200073#CHECK-NEXT: Size: 474#CHECK-NEXT: Binding: Global75#CHECK-NEXT: Type: Object76#CHECK-NEXT: Other: 077#CHECK-NEXT: Section: .data78#CHECK-NEXT: }79#CHECK-NEXT: Symbol {80#CHECK-NEXT: Name: (0)81#CHECK-NEXT: Value: 0x100882#CHECK-NEXT: Size: 083#CHECK-NEXT: Binding: Global84#CHECK-NEXT: Type: Function85#CHECK-NEXT: Other: 086#CHECK-NEXT: Section: .text87#CHECK-NEXT: }88#CHECK-NEXT: Symbol {89#CHECK-NEXT: Name: wasempty90#CHECK-NEXT: Value: 0x200891#CHECK-NEXT: Size: 092#CHECK-NEXT: Binding: Global93#CHECK-NEXT: Type: Object94#CHECK-NEXT: Other: 095#CHECK-NEXT: Section: .data96#CHECK-NEXT: }97 98#MULTIPLE-FILES: Name: oof99#MULTIPLE-FILES-NEXT: Value: 0x1004100#MULTIPLE-FILES: Name: rab101#MULTIPLE-FILES-NEXT: Value: 0x2000102#MULTIPLE-FILES: Name: ytpme103#MULTIPLE-FILES-NEXT: Value: 0x1008104 105## Show that it is not an error if a specified symbol is not present.106# RUN: llvm-objcopy %t2 %t5 --redefine-sym missing=blah107# RUN: cmp %t2 %t5108 109## Show that --redefine-sym doesn't chain together.110# RUN: llvm-objcopy %t2 %t6 --redefine-sym oof=bob --redefine-sym bob=baz111# RUN: llvm-readobj %t6 --syms | FileCheck %s --check-prefix=CHAIN --implicit-check-not="Name: baz"112 113# CHAIN: Name: bob114