1a0f095ebSSam Clegg; Test that the --stack-first option places the stack at the start of linear 2a0f095ebSSam Clegg; memory. In this case the --stack-first option is being passed along with a 3a0f095ebSSam Clegg; stack size of 512. This means (since the stack grows down) the stack pointer 4a0f095ebSSam Clegg; global should be initialized to 512. 5*13ca0c87SAyke van Laethem; Also test that __heap_base is still aligned with the --stack-first option. 6a0f095ebSSam Clegg 7*13ca0c87SAyke van LaethemRUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %p/Inputs/stack-first.s -o %t.o 8*13ca0c87SAyke van LaethemRUN: wasm-ld -z stack-size=512 --stack-first --export=__data_end --export=__heap_base --export=someByte -o %t.wasm %t.o 9a0f095ebSSam CleggRUN: obj2yaml %t.wasm | FileCheck %s 10a0f095ebSSam Clegg 11a0f095ebSSam CleggCHECK: - Type: GLOBAL 12a0f095ebSSam CleggCHECK-NEXT: Globals: 13a0f095ebSSam CleggCHECK-NEXT: - Index: 0 14a0f095ebSSam CleggCHECK-NEXT: Type: I32 15a0f095ebSSam CleggCHECK-NEXT: Mutable: true 16a0f095ebSSam CleggCHECK-NEXT: InitExpr: 17a0f095ebSSam CleggCHECK-NEXT: Opcode: I32_CONST 18a0f095ebSSam CleggCHECK-NEXT: Value: 512 19a0f095ebSSam CleggCHECK-NEXT: - Index: 1 20a0f095ebSSam CleggCHECK-NEXT: Type: I32 21a0f095ebSSam CleggCHECK-NEXT: Mutable: false 22a0f095ebSSam CleggCHECK-NEXT: InitExpr: 23a0f095ebSSam CleggCHECK-NEXT: Opcode: I32_CONST 24a0f095ebSSam CleggCHECK-NEXT: Value: 512 25a0f095ebSSam CleggCHECK-NEXT: - Index: 2 26a0f095ebSSam CleggCHECK-NEXT: Type: I32 27a0f095ebSSam CleggCHECK-NEXT: Mutable: false 28a0f095ebSSam CleggCHECK-NEXT: InitExpr: 29a0f095ebSSam CleggCHECK-NEXT: Opcode: I32_CONST 30*13ca0c87SAyke van LaethemCHECK-NEXT: Value: 513 31*13ca0c87SAyke van LaethemCHECK-NEXT: - Index: 3 32*13ca0c87SAyke van LaethemCHECK-NEXT: Type: I32 33*13ca0c87SAyke van LaethemCHECK-NEXT: Mutable: false 34*13ca0c87SAyke van LaethemCHECK-NEXT: InitExpr: 35*13ca0c87SAyke van LaethemCHECK-NEXT: Opcode: I32_CONST 36*13ca0c87SAyke van LaethemCHECK-NEXT: Value: 528 37a0f095ebSSam CleggCHECK-NEXT: - Type: EXPORT 38a0f095ebSSam CleggCHECK-NEXT: Exports: 39a0f095ebSSam CleggCHECK-NEXT: - Name: memory 40a0f095ebSSam CleggCHECK-NEXT: Kind: MEMORY 41a0f095ebSSam CleggCHECK-NEXT: Index: 0 42caa0db13SSam CleggCHECK-NEXT: - Name: _start 43caa0db13SSam CleggCHECK-NEXT: Kind: FUNCTION 44caa0db13SSam CleggCHECK-NEXT: Index: 0 45*13ca0c87SAyke van LaethemCHECK-NEXT: - Name: someByte 46a0f095ebSSam CleggCHECK-NEXT: Kind: GLOBAL 477d4ec5afSSam CleggCHECK-NEXT: Index: 1 48*13ca0c87SAyke van LaethemCHECK-NEXT: - Name: __data_end 497d4ec5afSSam CleggCHECK-NEXT: Kind: GLOBAL 50a0f095ebSSam CleggCHECK-NEXT: Index: 2 51*13ca0c87SAyke van LaethemCHECK-NEXT: - Name: __heap_base 52*13ca0c87SAyke van LaethemCHECK-NEXT: Kind: GLOBAL 53*13ca0c87SAyke van LaethemCHECK-NEXT: Index: 3 54