211 lines · plain
1# RUN: yaml2obj %s -o %t.in.o2#3# RUN: llvm-objdump --section-headers %t.in.o | FileCheck %s --check-prefixes=SECTIONS-PRE4# RUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS-PRE5#6# RUN: llvm-objcopy -R .bss %t.in.o %t.remove-bss.o7# RUN: llvm-objdump --section-headers %t.remove-bss.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-BSS8# RUN: llvm-objdump -t %t.remove-bss.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-BSS9#10# RUN: llvm-objcopy --remove-section .bss %t.in.o %t.cmp.o11# RUN: cmp %t.remove-bss.o %t.cmp.o12#13# RUN: llvm-objcopy -R .text %t.in.o %t.remove-text.o14# RUN: llvm-objdump --section-headers %t.remove-text.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-TEXT15# RUN: llvm-objdump -t %t.remove-text.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-TEXT16#17# RUN: not llvm-objcopy -R .comdat %t.in.o %t.remove-comdat.o 2>&1 | FileCheck %s --check-prefix=ERROR-RELOC18#19# RUN: llvm-objcopy -R .text -R .comdat %t.in.o %t.remove-text-comdat.o20# RUN: llvm-objdump --section-headers %t.remove-text-comdat.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-TEXT-COMDAT21# RUN: llvm-objdump -t %t.remove-text-comdat.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-TEXT-COMDAT22#23#24# SECTIONS-PRE: Sections:25# SECTIONS-PRE-NEXT: Idx Name26# SECTIONS-PRE-NEXT: 0 .text27# SECTIONS-PRE-NEXT: 1 .bss28# SECTIONS-PRE-NEXT: 2 .comdat29# SECTIONS-PRE-NEXT: 3 .associative30# SECTIONS-PRE-EMPTY:31#32# SYMBOLS-PRE: SYMBOL TABLE:33# SYMBOLS-PRE-NEXT: {{.*}}(sec -1){{.*}} @feat.0034# SYMBOLS-PRE-NEXT: {{.*}}(sec 1){{.*}} .text35# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 1 comdat 036# SYMBOLS-PRE-NEXT: {{.*}}(sec 2){{.*}} .bss37# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 2 comdat 038# SYMBOLS-PRE-NEXT: {{.*}}(sec 4){{.*}} .associative39# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 3 comdat 540# SYMBOLS-PRE-NEXT: {{.*}}(sec 3){{.*}} .comdat41# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 3 comdat 242# SYMBOLS-PRE-NEXT: {{.*}}(sec 3){{.*}} foo43# SYMBOLS-PRE-NEXT: {{.*}}(sec 1){{.*}} main44# SYMBOLS-PRE-EMPTY:45#46#47# Removing the .bss section removes one symbol and its aux symbol,48# and updates the section indices in symbols pointing to later49# symbols, including the aux section defintitions.50#51# Testing that the absolute symbol @feat.00 survives the section number52# mangling.53#54# SECTIONS-REMOVE-BSS: Sections:55# SECTIONS-REMOVE-BSS-NEXT: Idx Name56# SECTIONS-REMOVE-BSS-NEXT: 0 .text57# SECTIONS-REMOVE-BSS-NEXT: 1 .comdat58# SECTIONS-REMOVE-BSS-NEXT: 2 .associative59# SECTIONS-REMOVE-BSS-EMPTY:60#61# SYMBOLS-REMOVE-BSS: SYMBOL TABLE:62# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec -1){{.*}} @feat.0063# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 1){{.*}} .text64# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 1 comdat 065# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 3){{.*}} .associative66# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 2 comdat 567# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 2){{.*}} .comdat68# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 2 comdat 269# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 2){{.*}} foo70# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 1){{.*}} main71# SYMBOLS-REMOVE-BSS-EMPTY:72#73#74# Removing the .text section is ok and just removes the external symbol75# referring to it.76#77# SECTIONS-REMOVE-TEXT: Sections:78# SECTIONS-REMOVE-TEXT-NEXT: Idx Name79# SECTIONS-REMOVE-TEXT-NEXT: 0 .bss80# SECTIONS-REMOVE-TEXT-NEXT: 1 .comdat81# SECTIONS-REMOVE-TEXT-NEXT: 2 .associative82# SECTIONS-REMOVE-TEXT-EMPTY:83#84# SYMBOLS-REMOVE-TEXT: SYMBOL TABLE:85# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec -1){{.*}} @feat.0086# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 1){{.*}} .bss87# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 1 comdat 088# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 3){{.*}} .associative89# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 2 comdat 590# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 2){{.*}} .comdat91# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 2 comdat 292# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 2){{.*}} foo93# SYMBOLS-REMOVE-TEXT-EMPTY:94#95#96# Removing the .comdat section fails, since the .text section has relocations97# against it.98#99# ERROR-RELOC: relocation target 'foo' ({{.*}}) not found100#101#102# Removing the .comdat section and .text (with a relocation against .comdat)103# works, as it also removes the .associative section transitively.104#105# SECTIONS-REMOVE-TEXT-COMDAT: Sections:106# SECTIONS-REMOVE-TEXT-COMDAT-NEXT: Idx Name107# SECTIONS-REMOVE-TEXT-COMDAT-NEXT: 0 .bss108# SECTIONS-REMOVE-TEXT-COMDAT-EMPTY:109#110# SYMBOLS-REMOVE-TEXT-COMDAT: SYMBOL TABLE:111# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: {{.*}}(sec -1){{.*}} @feat.00112# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: {{.*}}(sec 1){{.*}} .bss113# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0114# SYMBOLS-REMOVE-TEXT-COMDAT-EMPTY:115 116--- !COFF117header: 118 Machine: IMAGE_FILE_MACHINE_AMD64119 Characteristics: [ ]120sections: 121 - Name: .text122 Characteristics: [ ]123 Alignment: 4124 SectionData: 488B0500000000C3125 Relocations: 126 - VirtualAddress: 3127 SymbolName: foo128 Type: IMAGE_REL_AMD64_REL32129 - Name: .bss130 Characteristics: [ ]131 Alignment: 4132 SectionData: ''133 - Name: .comdat134 Characteristics: [ IMAGE_SCN_LNK_COMDAT ]135 Alignment: 1136 SectionData: '2A000000'137 - Name: .associative138 Characteristics: [ IMAGE_SCN_LNK_COMDAT ]139 Alignment: 1140 SectionData: '0000000000000000'141symbols: 142 - Name: '@feat.00'143 Value: 0144 SectionNumber: -1145 SimpleType: IMAGE_SYM_TYPE_NULL146 ComplexType: IMAGE_SYM_DTYPE_NULL147 StorageClass: IMAGE_SYM_CLASS_STATIC148 - Name: .text149 Value: 0150 SectionNumber: 1151 SimpleType: IMAGE_SYM_TYPE_NULL152 ComplexType: IMAGE_SYM_DTYPE_NULL153 StorageClass: IMAGE_SYM_CLASS_STATIC154 SectionDefinition: 155 Length: 8156 NumberOfRelocations: 1157 NumberOfLinenumbers: 0158 CheckSum: 583624169159 Number: 1160 - Name: .bss161 Value: 0162 SectionNumber: 2163 SimpleType: IMAGE_SYM_TYPE_NULL164 ComplexType: IMAGE_SYM_DTYPE_NULL165 StorageClass: IMAGE_SYM_CLASS_STATIC166 SectionDefinition: 167 Length: 0168 NumberOfRelocations: 0169 NumberOfLinenumbers: 0170 CheckSum: 0171 Number: 2172 - Name: .associative173 Value: 0174 SectionNumber: 4175 SimpleType: IMAGE_SYM_TYPE_NULL176 ComplexType: IMAGE_SYM_DTYPE_NULL177 StorageClass: IMAGE_SYM_CLASS_STATIC178 SectionDefinition: 179 Length: 8180 NumberOfRelocations: 0181 NumberOfLinenumbers: 0182 CheckSum: 0183 Number: 3184 Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE185 - Name: .comdat186 Value: 0187 SectionNumber: 3188 SimpleType: IMAGE_SYM_TYPE_NULL189 ComplexType: IMAGE_SYM_DTYPE_NULL190 StorageClass: IMAGE_SYM_CLASS_STATIC191 SectionDefinition: 192 Length: 4193 NumberOfRelocations: 0194 NumberOfLinenumbers: 0195 CheckSum: 3482275674196 Number: 3197 Selection: IMAGE_COMDAT_SELECT_ANY198 - Name: foo199 Value: 0200 SectionNumber: 3201 SimpleType: IMAGE_SYM_TYPE_NULL202 ComplexType: IMAGE_SYM_DTYPE_NULL203 StorageClass: IMAGE_SYM_CLASS_EXTERNAL204 - Name: main205 Value: 0206 SectionNumber: 1207 SimpleType: IMAGE_SYM_TYPE_NULL208 ComplexType: IMAGE_SYM_DTYPE_NULL209 StorageClass: IMAGE_SYM_CLASS_EXTERNAL210...211