211 lines
7.4 KiB
Plaintext
211 lines
7.4 KiB
Plaintext
|
# RUN: yaml2obj %s -o %t.in.o
|
||
|
#
|
||
|
# RUN: llvm-objdump --section-headers %t.in.o | FileCheck %s --check-prefixes=SECTIONS-PRE
|
||
|
# RUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS-PRE
|
||
|
#
|
||
|
# RUN: llvm-objcopy -R .bss %t.in.o %t.remove-bss.o
|
||
|
# RUN: llvm-objdump --section-headers %t.remove-bss.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-BSS
|
||
|
# RUN: llvm-objdump -t %t.remove-bss.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-BSS
|
||
|
#
|
||
|
# RUN: llvm-objcopy --remove-section .bss %t.in.o %t.cmp.o
|
||
|
# RUN: cmp %t.remove-bss.o %t.cmp.o
|
||
|
#
|
||
|
# RUN: llvm-objcopy -R .text %t.in.o %t.remove-text.o
|
||
|
# RUN: llvm-objdump --section-headers %t.remove-text.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-TEXT
|
||
|
# RUN: llvm-objdump -t %t.remove-text.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-TEXT
|
||
|
#
|
||
|
# RUN: not llvm-objcopy -R .comdat %t.in.o %t.remove-comdat.o 2>&1 | FileCheck %s --check-prefix=ERROR-RELOC
|
||
|
#
|
||
|
# RUN: llvm-objcopy -R .text -R .comdat %t.in.o %t.remove-text-comdat.o
|
||
|
# RUN: llvm-objdump --section-headers %t.remove-text-comdat.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-TEXT-COMDAT
|
||
|
# RUN: llvm-objdump -t %t.remove-text-comdat.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-TEXT-COMDAT
|
||
|
#
|
||
|
#
|
||
|
# SECTIONS-PRE: Sections:
|
||
|
# SECTIONS-PRE-NEXT: Idx Name
|
||
|
# SECTIONS-PRE-NEXT: 0 .text
|
||
|
# SECTIONS-PRE-NEXT: 1 .bss
|
||
|
# SECTIONS-PRE-NEXT: 2 .comdat
|
||
|
# SECTIONS-PRE-NEXT: 3 .associative
|
||
|
# SECTIONS-PRE-EMPTY:
|
||
|
#
|
||
|
# SYMBOLS-PRE: SYMBOL TABLE:
|
||
|
# SYMBOLS-PRE-NEXT: {{.*}}(sec -1){{.*}} @feat.00
|
||
|
# SYMBOLS-PRE-NEXT: {{.*}}(sec 1){{.*}} .text
|
||
|
# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0
|
||
|
# SYMBOLS-PRE-NEXT: {{.*}}(sec 2){{.*}} .bss
|
||
|
# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 2 comdat 0
|
||
|
# SYMBOLS-PRE-NEXT: {{.*}}(sec 4){{.*}} .associative
|
||
|
# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 3 comdat 5
|
||
|
# SYMBOLS-PRE-NEXT: {{.*}}(sec 3){{.*}} .comdat
|
||
|
# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 3 comdat 2
|
||
|
# SYMBOLS-PRE-NEXT: {{.*}}(sec 3){{.*}} foo
|
||
|
# SYMBOLS-PRE-NEXT: {{.*}}(sec 1){{.*}} main
|
||
|
# SYMBOLS-PRE-EMPTY:
|
||
|
#
|
||
|
#
|
||
|
# Removing the .bss section removes one symbol and its aux symbol,
|
||
|
# and updates the section indices in symbols pointing to later
|
||
|
# symbols, including the aux section defintitions.
|
||
|
#
|
||
|
# Testing that the absolute symbol @feat.00 survives the section number
|
||
|
# mangling.
|
||
|
#
|
||
|
# SECTIONS-REMOVE-BSS: Sections:
|
||
|
# SECTIONS-REMOVE-BSS-NEXT: Idx Name
|
||
|
# SECTIONS-REMOVE-BSS-NEXT: 0 .text
|
||
|
# SECTIONS-REMOVE-BSS-NEXT: 1 .comdat
|
||
|
# SECTIONS-REMOVE-BSS-NEXT: 2 .associative
|
||
|
# SECTIONS-REMOVE-BSS-EMPTY:
|
||
|
#
|
||
|
# SYMBOLS-REMOVE-BSS: SYMBOL TABLE:
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec -1){{.*}} @feat.00
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 1){{.*}} .text
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 3){{.*}} .associative
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 2 comdat 5
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 2){{.*}} .comdat
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 2 comdat 2
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 2){{.*}} foo
|
||
|
# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 1){{.*}} main
|
||
|
# SYMBOLS-REMOVE-BSS-EMPTY:
|
||
|
#
|
||
|
#
|
||
|
# Removing the .text section is ok and just removes the external symbol
|
||
|
# referring to it.
|
||
|
#
|
||
|
# SECTIONS-REMOVE-TEXT: Sections:
|
||
|
# SECTIONS-REMOVE-TEXT-NEXT: Idx Name
|
||
|
# SECTIONS-REMOVE-TEXT-NEXT: 0 .bss
|
||
|
# SECTIONS-REMOVE-TEXT-NEXT: 1 .comdat
|
||
|
# SECTIONS-REMOVE-TEXT-NEXT: 2 .associative
|
||
|
# SECTIONS-REMOVE-TEXT-EMPTY:
|
||
|
#
|
||
|
# SYMBOLS-REMOVE-TEXT: SYMBOL TABLE:
|
||
|
# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec -1){{.*}} @feat.00
|
||
|
# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 1){{.*}} .bss
|
||
|
# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0
|
||
|
# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 3){{.*}} .associative
|
||
|
# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 2 comdat 5
|
||
|
# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 2){{.*}} .comdat
|
||
|
# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 2 comdat 2
|
||
|
# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 2){{.*}} foo
|
||
|
# SYMBOLS-REMOVE-TEXT-EMPTY:
|
||
|
#
|
||
|
#
|
||
|
# Removing the .comdat section fails, since the .text section has relocations
|
||
|
# against it.
|
||
|
#
|
||
|
# ERROR-RELOC: relocation target 'foo' ({{.*}}) not found
|
||
|
#
|
||
|
#
|
||
|
# Removing the .comdat section and .text (with a relocation against .comdat)
|
||
|
# works, as it also removes the .associative section transitively.
|
||
|
#
|
||
|
# SECTIONS-REMOVE-TEXT-COMDAT: Sections:
|
||
|
# SECTIONS-REMOVE-TEXT-COMDAT-NEXT: Idx Name
|
||
|
# SECTIONS-REMOVE-TEXT-COMDAT-NEXT: 0 .bss
|
||
|
# SECTIONS-REMOVE-TEXT-COMDAT-EMPTY:
|
||
|
#
|
||
|
# SYMBOLS-REMOVE-TEXT-COMDAT: SYMBOL TABLE:
|
||
|
# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: {{.*}}(sec -1){{.*}} @feat.00
|
||
|
# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: {{.*}}(sec 1){{.*}} .bss
|
||
|
# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0
|
||
|
# SYMBOLS-REMOVE-TEXT-COMDAT-EMPTY:
|
||
|
|
||
|
--- !COFF
|
||
|
header:
|
||
|
Machine: IMAGE_FILE_MACHINE_AMD64
|
||
|
Characteristics: [ ]
|
||
|
sections:
|
||
|
- Name: .text
|
||
|
Characteristics: [ ]
|
||
|
Alignment: 4
|
||
|
SectionData: 488B0500000000C3
|
||
|
Relocations:
|
||
|
- VirtualAddress: 3
|
||
|
SymbolName: foo
|
||
|
Type: IMAGE_REL_AMD64_REL32
|
||
|
- Name: .bss
|
||
|
Characteristics: [ ]
|
||
|
Alignment: 4
|
||
|
SectionData: ''
|
||
|
- Name: .comdat
|
||
|
Characteristics: [ IMAGE_SCN_LNK_COMDAT ]
|
||
|
Alignment: 1
|
||
|
SectionData: '2A000000'
|
||
|
- Name: .associative
|
||
|
Characteristics: [ IMAGE_SCN_LNK_COMDAT ]
|
||
|
Alignment: 1
|
||
|
SectionData: '0000000000000000'
|
||
|
symbols:
|
||
|
- Name: '@feat.00'
|
||
|
Value: 0
|
||
|
SectionNumber: -1
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
- Name: .text
|
||
|
Value: 0
|
||
|
SectionNumber: 1
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
SectionDefinition:
|
||
|
Length: 8
|
||
|
NumberOfRelocations: 1
|
||
|
NumberOfLinenumbers: 0
|
||
|
CheckSum: 583624169
|
||
|
Number: 1
|
||
|
- Name: .bss
|
||
|
Value: 0
|
||
|
SectionNumber: 2
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
SectionDefinition:
|
||
|
Length: 0
|
||
|
NumberOfRelocations: 0
|
||
|
NumberOfLinenumbers: 0
|
||
|
CheckSum: 0
|
||
|
Number: 2
|
||
|
- Name: .associative
|
||
|
Value: 0
|
||
|
SectionNumber: 4
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
SectionDefinition:
|
||
|
Length: 8
|
||
|
NumberOfRelocations: 0
|
||
|
NumberOfLinenumbers: 0
|
||
|
CheckSum: 0
|
||
|
Number: 3
|
||
|
Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE
|
||
|
- Name: .comdat
|
||
|
Value: 0
|
||
|
SectionNumber: 3
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
SectionDefinition:
|
||
|
Length: 4
|
||
|
NumberOfRelocations: 0
|
||
|
NumberOfLinenumbers: 0
|
||
|
CheckSum: 3482275674
|
||
|
Number: 3
|
||
|
Selection: IMAGE_COMDAT_SELECT_ANY
|
||
|
- Name: foo
|
||
|
Value: 0
|
||
|
SectionNumber: 3
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
||
|
- Name: main
|
||
|
Value: 0
|
||
|
SectionNumber: 1
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
||
|
...
|