// RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %s -o %t.o // RUN: wasm-ld -O1 %t.o -o %t.wasm --no-gc-sections --no-entry // RUN: obj2yaml %t.wasm | FileCheck %s --check-prefixes=COMMON,MERGE // Check that the default is the same as -O1 (since we default to -O1) // RUN: wasm-ld %t.o -o %t.wasm --no-gc-sections --no-entry // RUN: obj2yaml %t.wasm | FileCheck %s --check-prefixes=COMMON,MERGE // Check that -O0 disables merging // RUN: wasm-ld -O0 %t.o -o %t2.wasm --no-gc-sections --no-entry // RUN: obj2yaml %t2.wasm | FileCheck --check-prefixes=COMMON,NOMERGE %s // Check relocatable // RUN: wasm-ld -r %t.o -o %t2.o // RUN: obj2yaml %t2.o | FileCheck --check-prefixes=RELOC %s .section .rodata1,"S",@ .asciz "abc" foo: .ascii "a" .size foo, 1 bar: .asciz "bc" .asciz "bc" .size bar, 6 .section .rodata_relocs,"",@ negative_addend: .int32 foo-10 .size negative_addend, 4 .globl foo .globl bar .export_name foo, foo .export_name bar, bar // COMMON: - Type: GLOBAL // COMMON-NEXT: Globals: // COMMON-NEXT: - Index: 0 // COMMON-NEXT: Type: I32 // COMMON-NEXT: Mutable: true // COMMON-NEXT: InitExpr: // COMMON-NEXT: Opcode: I32_CONST // COMMON-NEXT: Value: 66576 // COMMON-NEXT: - Index: 1 // COMMON-NEXT: Type: I32 // COMMON-NEXT: Mutable: false // COMMON-NEXT: InitExpr: // COMMON-NEXT: Opcode: I32_CONST // MERGE-NEXT: Value: 1024 // NOMERGE-NEXT: Value: 1028 // COMMON-NEXT: - Index: 2 // COMMON-NEXT: Type: I32 // COMMON-NEXT: Mutable: false // COMMON-NEXT: InitExpr: // COMMON-NEXT: Opcode: I32_CONST // MERGE-NEXT: Value: 1025 // NOMERGE-NEXT: Value: 1029 // COMMON-NEXT: - Type: EXPORT // COMMON-NEXT: Exports: // COMMON-NEXT: - Name: memory // COMMON-NEXT: Kind: MEMORY // COMMON-NEXT: Index: 0 // COMMON-NEXT: - Name: foo // COMMON-NEXT: Kind: GLOBAL // COMMON-NEXT: Index: 1 // COMMON-NEXT: - Name: bar // COMMON-NEXT: Kind: GLOBAL // COMMON-NEXT: Index: 2 // // COMMON: - Type: DATA // COMMON-NEXT: Segments: // COMMON-NEXT: - SectionOffset: 7 // COMMON-NEXT: InitFlags: 0 // COMMON-NEXT: Offset: // COMMON-NEXT: Opcode: I32_CONST // COMMON-NEXT: Value: 1024 // MERGE-NEXT: Content: '61626300' // NOMERGE-NEXT: Content: '6162630061626300626300' // RELOC: - Type: DATA // RELOC-NEXT: Relocations: // RELOC-NEXT: - Type: R_WASM_MEMORY_ADDR_I32 // RELOC-NEXT: Index: 0 // RELOC-NEXT: Offset: 0xF // RELOC-NEXT: Addend: -10 // RELOC-NEXT: Segments: // RELOC-NEXT: - SectionOffset: 6 // RELOC-NEXT: InitFlags: 0 // RELOC-NEXT: Offset: // RELOC-NEXT: Opcode: I32_CONST // RELOC-NEXT: Value: 0 // RELOC-NEXT: Content: '61626300' // RELOC-NEXT: - SectionOffset: 15 // RELOC-NEXT: InitFlags: 0 // RELOC-NEXT: Offset: // RELOC-NEXT: Opcode: I32_CONST // RELOC-NEXT: Value: 4 // RELOC-NEXT: Content: F6FFFFFF