| ; Test that the --stack-first option places the stack at the start of linear |
| ; memory. In this case the --stack-first option is being passed along with a |
| ; stack size of 512. This means (since the stack grows down) the stack pointer |
| ; global should be initialized to 512. |
| ; Also test that __heap_base is still aligned with the --stack-first option. |
| |
| RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %p/Inputs/stack-first.s -o %t.o |
| RUN: wasm-ld -z stack-size=512 --stack-first --export=__data_end --export=__heap_base --export=someByte -o %t.wasm %t.o |
| RUN: obj2yaml %t.wasm | FileCheck %s |
| |
| CHECK: - Type: GLOBAL |
| CHECK-NEXT: Globals: |
| CHECK-NEXT: - Index: 0 |
| CHECK-NEXT: Type: I32 |
| CHECK-NEXT: Mutable: true |
| CHECK-NEXT: InitExpr: |
| CHECK-NEXT: Opcode: I32_CONST |
| CHECK-NEXT: Value: 512 |
| CHECK-NEXT: - Index: 1 |
| CHECK-NEXT: Type: I32 |
| CHECK-NEXT: Mutable: false |
| CHECK-NEXT: InitExpr: |
| CHECK-NEXT: Opcode: I32_CONST |
| CHECK-NEXT: Value: 512 |
| CHECK-NEXT: - Index: 2 |
| CHECK-NEXT: Type: I32 |
| CHECK-NEXT: Mutable: false |
| CHECK-NEXT: InitExpr: |
| CHECK-NEXT: Opcode: I32_CONST |
| CHECK-NEXT: Value: 513 |
| CHECK-NEXT: - Index: 3 |
| CHECK-NEXT: Type: I32 |
| CHECK-NEXT: Mutable: false |
| CHECK-NEXT: InitExpr: |
| CHECK-NEXT: Opcode: I32_CONST |
| CHECK-NEXT: Value: 528 |
| CHECK-NEXT: - Type: EXPORT |
| CHECK-NEXT: Exports: |
| CHECK-NEXT: - Name: memory |
| CHECK-NEXT: Kind: MEMORY |
| CHECK-NEXT: Index: 0 |
| CHECK-NEXT: - Name: _start |
| CHECK-NEXT: Kind: FUNCTION |
| CHECK-NEXT: Index: 0 |
| CHECK-NEXT: - Name: someByte |
| CHECK-NEXT: Kind: GLOBAL |
| CHECK-NEXT: Index: 1 |
| CHECK-NEXT: - Name: __data_end |
| CHECK-NEXT: Kind: GLOBAL |
| CHECK-NEXT: Index: 2 |
| CHECK-NEXT: - Name: __heap_base |
| CHECK-NEXT: Kind: GLOBAL |
| CHECK-NEXT: Index: 3 |