brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 5131fa7 Raw
67 lines · plain
1# REQUIRES: x86, zlib2 3# RUN: rm -rf %t && split-file %s %t && cd %t4# RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o5# RUN: ld.lld -T a.lds a.o --compress-sections nonalloc=zlib --compress-sections str=zlib -o out6# RUN: llvm-readelf -SsXz -p str out | FileCheck %s7 8# CHECK:      Name     Type            Address   Off      Size     ES Flg  Lk Inf Al9# CHECK:      nonalloc PROGBITS 0000000000000000 [[#%x,]] [[#%x,]] 00   C   0   0  110# CHECK-NEXT: str      PROGBITS 0000000000000000 [[#%x,]] [[#%x,]] 01 MSC   0   0  111 12# CHECK:      0000000000000000  0 NOTYPE  GLOBAL DEFAULT [[#]] (nonalloc) nonalloc_start13# CHECK:      0000000000000063  0 NOTYPE  GLOBAL DEFAULT [[#]] (nonalloc) nonalloc_end14# CHECK:      String dump of section 'str':15# CHECK-NEXT: [     0] AAA16# CHECK-NEXT: [     4] {{a+}}17# CHECK-NEXT: [    45] BBB18 19## TODO The uncompressed size of 'nonalloc' is dependent on linker script20## commands, which is not handled. We should report an error.21# RUN: ld.lld -T b.lds a.o --compress-sections nonalloc=zlib22 23#--- a.s24.globl _start25_start:26  ret27 28.section nonalloc0,""29.balign 830.quad .text31.quad .text32.space 6433.section nonalloc1,""34.balign 835.quad 4236 37.section str,"MS",@progbits,138  .asciz "AAA"39  .asciz "BBB"40  .fill 64,1,0x6141  .byte 042 43#--- a.lds44SECTIONS {45  .text : { *(.text) }46  c = SIZEOF(.text);47  b = c+1;48  a = b+1;49  nonalloc : {50    nonalloc_start = .;51## In general, using data commands is error-prone. This case is correct, though.52    *(nonalloc*) QUAD(SIZEOF(.text))53    . += a;54    nonalloc_end = .;55  }56  str : { *(str) }57}58 59#--- b.lds60SECTIONS {61  nonalloc : { *(nonalloc*) . += a; }62  .text : { *(.text) }63  a = b+1;64  b = c+1;65  c = SIZEOF(.text);66}67