199 lines
6.6 KiB
Plaintext
199 lines
6.6 KiB
Plaintext
## Check incompatible options.
|
|
# RUN: not llvm-objcopy --remove-note=1 --remove-section=.test - 2>&1 | FileCheck %s --check-prefix=ERR-REMSEC
|
|
# RUN: not llvm-objcopy --remove-note=1 --add-section=.test=%s - 2>&1 | FileCheck %s --check-prefix=ERR-ADDSEC
|
|
# RUN: not llvm-objcopy --remove-note=1 --update-section=.test=%s - 2>&1 | FileCheck %s --check-prefix=ERR-UPDSEC
|
|
|
|
# ERR-REMSEC: error: cannot specify both --remove-note and --remove-section
|
|
# ERR-ADDSEC: error: cannot specify both --remove-note and --add-section
|
|
# ERR-UPDSEC: error: cannot specify both --remove-note and --update-section
|
|
|
|
## Check invalid argument formats.
|
|
# RUN: not llvm-objcopy --remove-note= - 2>&1 | FileCheck %s --check-prefix=ERR-NOTYPEID
|
|
# RUN: not llvm-objcopy --remove-note=CORE/ - 2>&1 | FileCheck %s --check-prefix=ERR-NOTYPEID
|
|
# RUN: not llvm-objcopy --remove-note=/1 - 2>&1 | FileCheck %s --check-prefix=ERR-EMPTYNAME
|
|
# RUN: not llvm-objcopy --remove-note=CORE/1/2 - 2>&1 | FileCheck %s --check-prefix=ERR-INVNUM1
|
|
# RUN: not llvm-objcopy --remove-note=Notanumber - 2>&1 | FileCheck %s --check-prefix=ERR-INVNUM2
|
|
# RUN: not llvm-objcopy --remove-note=CORE/Notanumber - 2>&1 | FileCheck %s --check-prefix=ERR-INVNUM2
|
|
|
|
# ERR-NOTYPEID: error: bad format for --remove-note, missing type_id
|
|
# ERR-EMPTYNAME: error: bad format for --remove-note, note name is empty
|
|
# ERR-INVNUM1: error: bad note type_id for --remove-note: '1/2'
|
|
# ERR-INVNUM2: error: bad note type_id for --remove-note: 'Notanumber'
|
|
|
|
## Check deleting notes:
|
|
## * --remove-note=1 will remove note "CORE/1" and "LINUX/1",
|
|
## * --remove-note=DUMMY/2 will not remove any notes because there are no notes with this owner,
|
|
## * --remove-note=CORE/3 will remove "CORE/3" but preserve "LINUX/3".
|
|
# RUN: yaml2obj --docnum=1 -D ALIGN=8 -D ELFCLASS=64 -D ENDIANNESS=LSB %s -o %t8.64.lsb
|
|
# RUN: llvm-objcopy --remove-note=0x01 --remove-note=DUMMY/2 --remove-note=CORE/0x03 %t8.64.lsb %t8.64.lsb.o
|
|
# RUN: llvm-readobj --segments --sections --notes %t8.64.lsb.o | \
|
|
# RUN: FileCheck %s -D#SIZE0=32 -D#SIZE1=64
|
|
|
|
# RUN: yaml2obj --docnum=1 -D ALIGN=4 -D ELFCLASS=64 -D ENDIANNESS=MSB %s -o %t4.64.msb
|
|
# RUN: llvm-objcopy --remove-note=0x01 --remove-note=DUMMY/0x02 --remove-note=CORE/3 %t4.64.msb %t4.64.msb.o
|
|
# RUN: llvm-readobj --segments --sections --notes %t4.64.msb.o | \
|
|
# RUN: FileCheck %s -D#SIZE0=24 -D#SIZE1=48
|
|
|
|
# RUN: yaml2obj --docnum=1 -D ALIGN=4 -D ELFCLASS=32 -D ENDIANNESS=LSB %s -o %t4.32.lsb
|
|
# RUN: llvm-objcopy --remove-note=1 --remove-note=DUMMY/0x02 --remove-note=CORE/3 %t4.32.lsb %t4.32.lsb.o
|
|
# RUN: llvm-readobj --segments --sections --notes %t4.32.lsb.o | \
|
|
# RUN: FileCheck %s -D#SIZE0=24 -D#SIZE1=48
|
|
|
|
# CHECK: Sections [
|
|
# CHECK: Section {
|
|
# CHECK: Name: .note0
|
|
# CHECK-NEXT: Type: SHT_NOTE
|
|
# CHECK-NEXT: Flags [
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: Address:
|
|
# CHECK-NEXT: Offset:
|
|
# CHECK-NEXT: Size: [[#%d,SIZE0]]
|
|
# CHECK: Name: .note1
|
|
# CHECK-NEXT: Type: SHT_NOTE
|
|
# CHECK-NEXT: Flags [
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: Address:
|
|
# CHECK-NEXT: Offset:
|
|
# CHECK-NEXT: Size: [[#%d,SIZE1]]
|
|
# CHECK: Name: .note2
|
|
# CHECK-NEXT: Type: SHT_NOTE
|
|
# CHECK-NEXT: Flags [
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: Address:
|
|
# CHECK-NEXT: Offset:
|
|
# CHECK-NEXT: Size: 0
|
|
|
|
# CHECK: NoteSections [
|
|
# CHECK-NEXT: NoteSection {
|
|
# CHECK-NEXT: Name: .note0
|
|
# CHECK-NEXT: Offset:
|
|
# CHECK-NEXT: Size: 0x[[#%X,SIZE0]]
|
|
# CHECK-NEXT: Notes [
|
|
# CHECK-NEXT: {
|
|
# CHECK-NEXT: Owner: CORE
|
|
# CHECK-NEXT: Data size: 0x2
|
|
# CHECK-NEXT: Type: NT_ARCH
|
|
# CHECK-NEXT: Description data (
|
|
# CHECK-NEXT: 0000: 0201
|
|
# CHECK-NEXT: )
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: NoteSection {
|
|
# CHECK-NEXT: Name: .note1
|
|
# CHECK-NEXT: Offset:
|
|
# CHECK-NEXT: Size: 0x[[#%X,SIZE1]]
|
|
# CHECK-NEXT: Notes [
|
|
# CHECK-NEXT: {
|
|
# CHECK-NEXT: Owner: LINUX
|
|
# CHECK-NEXT: Data size: 0x2
|
|
# CHECK-NEXT: Type: Unknown (0x00000003)
|
|
# CHECK-NEXT: Description data (
|
|
# CHECK-NEXT: 0000: 0301
|
|
# CHECK-NEXT: )
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: {
|
|
# CHECK-NEXT: Owner: CORE
|
|
# CHECK-NEXT: Data size: 0x2
|
|
# CHECK-NEXT: Type: Unknown (0x00000004)
|
|
# CHECK-NEXT: Description data (
|
|
# CHECK-NEXT: 0000: 0401
|
|
# CHECK-NEXT: )
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: NoteSection {
|
|
# CHECK-NEXT: Name: .note2
|
|
# CHECK-NEXT: Offset:
|
|
# CHECK-NEXT: Size: 0x0
|
|
# CHECK-NEXT: Notes [
|
|
# CHECK-NEXT: ]
|
|
# CHECK-NEXT: }
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS[[ELFCLASS]]
|
|
Data: ELFDATA2[[ENDIANNESS]]
|
|
Type: ET_REL
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .note0
|
|
Type: SHT_NOTE
|
|
AddressAlign: [[ALIGN]]
|
|
Notes:
|
|
- Name: CORE
|
|
Type: 0x01
|
|
Desc: 0101
|
|
- Name: CORE
|
|
Type: 0x02
|
|
Desc: 0201
|
|
- Name: .note1
|
|
Type: SHT_NOTE
|
|
AddressAlign: [[ALIGN]]
|
|
Notes:
|
|
- Name: LINUX
|
|
Type: 0x03
|
|
Desc: 0301
|
|
- Name: CORE
|
|
Type: 0x03
|
|
Desc: 0302
|
|
- Name: CORE
|
|
Type: 0x04
|
|
Desc: 0401
|
|
- Name: .note2
|
|
Type: SHT_NOTE
|
|
AddressAlign: [[ALIGN]]
|
|
Notes:
|
|
- Name: LINUX
|
|
Type: 0x01
|
|
Desc: 0102
|
|
|
|
# RUN: yaml2obj --docnum=2 %s -o %t2
|
|
# RUN: llvm-objcopy --remove-note=1 %t2 %t2o 2>&1 | FileCheck %s --check-prefix=TEST2
|
|
# TEST2: warning: note segments are not supported
|
|
# TEST2-NOT: note segments are not supported
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_CORE
|
|
Machine: EM_X86_64
|
|
ProgramHeaders:
|
|
- Type: PT_NOTE
|
|
FirstSec: .data0
|
|
LastSec: .data0
|
|
- Type: PT_NOTE
|
|
FirstSec: .data1
|
|
LastSec: .data1
|
|
Sections:
|
|
- Name: .data0
|
|
Type: Fill
|
|
Size: 8
|
|
- Name: .data1
|
|
Type: Fill
|
|
Size: 8
|
|
|
|
# RUN: yaml2obj --docnum=3 %s -o %t3
|
|
# RUN: llvm-objcopy --remove-note=1 %t3 %t3o 2>&1 | FileCheck %s --check-prefix=TEST3
|
|
# TEST3: warning: cannot remove note(s) from .note: sections in segments are not supported
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
FirstSec: .note
|
|
LastSec: .note
|
|
Sections:
|
|
- Name: .note
|
|
Type: SHT_NOTE
|
|
AddressAlign: 4
|
|
Notes:
|
|
- Name: ABC
|
|
Type: 1
|
|
Desc: 0102
|