| # RUN: split-file %s %t | |
| # RUN: llvm-mc -filetype=obj --triple=wasm32-unknown-unknown -o %t/main.o %t/main.s | |
| # RUN: llvm-mc -filetype=obj --triple=wasm32-unknown-unknown -o %t/extra.o %t/extra.s | |
| # RUN: wasm-ld --relocatable -o %t/reloc.o %t/main.o %t/extra.o | |
| # RUN: obj2yaml %t/reloc.o | FileCheck %s | |
| # --relocatable must preserve per-segment linking flags (RETAIN, STRINGS). The plain | |
| # "retained" chunk in extra.s coalesces with the retained one in main.o, so RETAIN must | |
| # survive the flag union rather than be overwritten by the flag-less chunk. | |
| #--- main.s | |
| .globl _start | |
| _start: | |
| .functype _start () -> () | |
| end_function | |
| .section retained,"R",@ | |
| .asciz "keep" | |
| .section .rodata.str,"S",@ | |
| .asciz "merge" | |
| .section plain,"",@ | |
| .asciz "drop" | |
| #--- extra.s | |
| .section retained,"",@ | |
| .asciz "more" | |
| # CHECK: SegmentInfo: | |
| # CHECK: Name: .rodata.str | |
| # CHECK-NEXT: Alignment: 0 | |
| # CHECK-NEXT: Flags: [ STRINGS ] | |
| # CHECK: Name: retained | |
| # CHECK-NEXT: Alignment: 0 | |
| # CHECK-NEXT: Flags: [ RETAIN ] | |
| # CHECK: Name: plain | |
| # CHECK-NEXT: Alignment: 0 | |
| # CHECK-NEXT: Flags: [ ] |