brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · e1d3fa0 Raw
132 lines · plain
1# REQUIRES: x862 3# RUN: rm -rf %t; split-file %s %t4 5# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/main.s -o %t.o6# RUN: %lld -o %t.out %t.o7 8## Check option format.9# RUN: not %lld \10# RUN:     -rename_section B@GUS_SEG b@gus_sect S/ASHY_SEG st*rry_sect \11# RUN:     -rename_section __FROM_SECT __from_sect __TO_SECT \12# RUN:   -o /dev/null %t.o 2>&1 | FileCheck %s --check-prefix=BAD113 14# BAD1-DAG: error: invalid name for segment or section: B@GUS_SEG15# BAD1-DAG: error: invalid name for segment or section: b@gus_sect16# BAD1-DAG: error: invalid name for segment or section: S/ASHY_SEG17# BAD1-DAG: error: invalid name for segment or section: st*rry_sect18# BAD1-DAG: error: invalid name for segment or section: -o19# BAD1-DAG: error: {{.*}}: unhandled file type20 21# RUN: not %lld \22# RUN:     -rename_segment H#SHY_SEG PL+SSY_SEG \23# RUN:     -rename_segment __FROM_SEG \24# RUN:   -o /dev/null %t.o 2>&1 | FileCheck %s --check-prefix=BAD225 26# BAD2-DAG: error: invalid name for segment or section: H#SHY_SEG27# BAD2-DAG: error: invalid name for segment or section: PL+SSY_SEG28# BAD2-DAG: error: invalid name for segment or section: -o29# BAD2-DAG: error: {{.*}}: unhandled file type30 31## Check that section and segment renames happen.32# RUN: %lld -lSystem \33# RUN:     -rename_section __FROM_SECT __from_sect __TO_SECT __to_sect \34# RUN:     -rename_segment __FROM_SEG __TO_SEG \35# RUN:     -rename_section __TEXT __cstring __RODATA __cstring \36# RUN:   -o %t.out %t.o37# RUN: llvm-otool -l %t.out | FileCheck %s38 39# CHECK:      {{^}}Section{{$}}40# CHECK-NEXT: sectname __text41# CHECK-NEXT: segname __TEXT42# CHECK:      {{^}}Section{{$}}43# CHECK-NEXT: sectname __to_sect44# CHECK-NEXT: segname __TO_SECT45# CHECK:      {{^}}Section{{$}}46# CHECK-NEXT: sectname __from_seg47# CHECK-NEXT: segname __TO_SEG48# CHECK:      {{^}}Section{{$}}49# CHECK-NEXT: sectname __cstring50# CHECK-NEXT: segname __RODATA51 52## Check interaction between -rename_section and -rename_segment.53## rename_segment should be applied after rename_section, so the output54## name of rename_section is renamed by rename_segment.55## (ld64 leaves an empty __TO_SECT,__to_sect in the output for the intermediate56## name, but it too writes the actual data to __SEG,__to_sect.)57# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/small.s \58# RUN:     -o %t/small.o59# RUN: %lld -dylib \60# RUN:     -rename_section __FROM_SECT __from_sect __TO_SECT __to_sect \61# RUN:     -rename_segment __TO_SECT __SEG \62# RUN:   -o %t.dylib %t/small.o63# RUN: llvm-otool -l %t.dylib | FileCheck --check-prefix=SECTSEGYES %s64# RUN: %lld -dylib \65# RUN:     -rename_segment __TO_SECT __SEG \66# RUN:     -rename_section __FROM_SECT __from_sect __TO_SECT __to_sect \67# RUN:   -o %t.dylib %t/small.o68# RUN: llvm-otool -l %t.dylib | FileCheck --check-prefix=SECTSEGYES %s69# SECTSEGYES:      Section70# SECTSEGYES-NEXT:   sectname __text71# SECTSEGYES-NEXT:    segname __TEXT72# SECTSEGYES:      Section73# SECTSEGYES-NEXT:   sectname __to_sect74# SECTSEGYES-NEXT:    segname __SEG75## ...but rename_segment has no effect if it doesn't match the name after76## rename_section is applied.77# RUN: %lld -dylib \78# RUN:     -rename_section __FROM_SECT __from_sect __TO_SECT __to_sect \79# RUN:     -rename_segment __FROM_SECT __SEG \80# RUN:   -o %t.dylib %t/small.o81# RUN: llvm-otool -l %t.dylib | FileCheck --check-prefix=SECTSEGSOME %s82# SECTSEGSOME:      Section83# SECTSEGSOME-NEXT:   sectname __text84# SECTSEGSOME-NEXT:    segname __TEXT85# SECTSEGSOME:      Section86# SECTSEGSOME-NEXT:   sectname __to_sect87# SECTSEGSOME-NEXT:    segname __TO_SECT88## If rename_section would only match after rename_segment, rename_section has89## no effect.90# RUN: %lld -dylib \91# RUN:     -rename_section __SEG __from_sect __TO_SECT __to_sect \92# RUN:     -rename_segment __FROM_SECT __SEG \93# RUN:   -o %t.dylib %t/small.o94# RUN: llvm-otool -l %t.dylib | FileCheck --check-prefix=SECTSEGNO %s95# RUN: %lld -dylib \96# RUN:     -rename_segment __FROM_SECT __SEG \97# RUN:     -rename_section __SEG __from_sect __TO_SECT __to_sect \98# RUN:   -o %t.dylib %t/small.o99# RUN: llvm-otool -l %t.dylib | FileCheck --check-prefix=SECTSEGNO %s100# SECTSEGNO:      Section101# SECTSEGNO-NEXT:   sectname __text102# SECTSEGNO-NEXT:    segname __TEXT103# SECTSEGNO:      Section104# SECTSEGNO-NEXT:   sectname __from_sect105# SECTSEGNO-NEXT:    segname __SEG106 107#--- main.s108.section __FROM_SECT,__from_sect109.global _from_sect110_from_sect:111  .space 8112 113.section __FROM_SEG,__from_seg114.global _from_seg115_from_seg:116  .space 8117 118## This is a synthetic section; make sure it gets renamed too.119.cstring120  .space 8121 122.text123.global _main124_main:125  ret126 127#--- small.s128.section __FROM_SECT,__from_sect129.global _from_sect130_from_sect:131  .space 8132