xref: /llvm-project/lld/test/wasm/no-strip-segment.s (revision ba3c1f9ce30cf4f8aee5f1961df74d65e11d53bc)
1# RUN: split-file %s %t
2# RUN: llvm-mc -filetype=obj --triple=wasm32-unknown-unknown -o %t/main.o %t/main.s
3# RUN: llvm-mc -filetype=obj --triple=wasm32-unknown-unknown -o %t/liba_x.o %t/liba_x.s
4# RUN: llvm-mc -filetype=obj --triple=wasm32-unknown-unknown -o %t/liba_y.o %t/liba_y.s
5# RUN: rm -f %t/liba.a
6# RUN: llvm-ar rcs %t/liba.a %t/liba_x.o %t/liba_y.o
7# RUN: wasm-ld %t/main.o %t/liba.a --gc-sections -o %t/main.wasm --print-gc-sections | FileCheck %s --check-prefix=GC
8# RUN: obj2yaml %t/main.wasm | FileCheck %s
9
10# --gc-sections should remove non-retained and unused "weathers" section from live object liba_x.o
11# GC: removing unused section {{.*}}/liba.a(liba_x.o):(weathers)
12# Should not remove retained "greetings" sections from live objects main.o and liba_x.o
13# GC-NOT: removing unused section %t/main.o:(greetings)
14# GC-NOT: removing unused section %t/liba_x.o:(greetings)
15
16# Note: All symbols are private so that they don't join the symbol table.
17
18#--- main.s
19  .functype grab_liba () -> ()
20  .globl  _start
21_start:
22  .functype _start () -> ()
23  call grab_liba
24  end_function
25
26  .section greetings,"R",@
27  .asciz  "hello"
28  .section weathers,"R",@
29  .asciz  "cloudy"
30
31#--- liba_x.s
32  .globl  grab_liba
33grab_liba:
34  .functype grab_liba () -> ()
35  end_function
36
37  .section greetings,"R",@
38  .asciz  "world"
39  .section weathers,"",@
40  .asciz  "rainy"
41
42#--- liba_y.s
43  .section        greetings,"R",@
44  .asciz  "bye"
45
46
47# "greetings" section
48# CHECK: - Type:            DATA
49# CHECK:   Segments:
50# CHECK:     - SectionOffset:   7
51# CHECK:       InitFlags:       0
52# CHECK:       Offset:
53# CHECK:         Opcode:          I32_CONST
54# CHECK:         Value:           1024
55# CHECK:       Content:         68656C6C6F00776F726C6400
56# "weahters" section.
57# CHECK: - SectionOffset:   25
58# CHECK:   InitFlags:       0
59# CHECK:   Offset:
60# CHECK:     Opcode:          I32_CONST
61# CHECK:     Value:           1036
62# CHECK:   Content:         636C6F75647900
63