brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · c5eecbf Raw
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