mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 19:08:21 +08:00
The really painful part of this PR was updating all the test files. I had some help from Gemini GLI there which did a pretty good job (got maybe 80% of the updates done). Fixes: #151015
81 lines
3.4 KiB
Plaintext
81 lines
3.4 KiB
Plaintext
; 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
|
|
|
|
; Check that the default is `--stack-first`
|
|
RUN: wasm-ld -z stack-size=512 --export=__data_end --export=__heap_base --export=someByte -o %t.wasm %t.o
|
|
RUN: obj2yaml %t.wasm | FileCheck %s
|
|
|
|
; Check `--no-stack-first`
|
|
RUN: wasm-ld -z stack-size=512 --no-stack-first --export=__data_end --export=__heap_base --export=someByte -o %t.wasm %t.o
|
|
RUN: obj2yaml %t.wasm | FileCheck %s --check-prefix=NOT-FIRST
|
|
|
|
; Check `--stack-first`
|
|
RUN: wasm-ld -z stack-size=512 --no-stack-first --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
|
|
|
|
NOT-FIRST: - Type: GLOBAL
|
|
NOT-FIRST-NEXT: Globals:
|
|
NOT-FIRST-NEXT: - Index: 0
|
|
NOT-FIRST-NEXT: Type: I32
|
|
NOT-FIRST-NEXT: Mutable: true
|
|
NOT-FIRST-NEXT: InitExpr:
|
|
NOT-FIRST-NEXT: Opcode: I32_CONST
|
|
NOT-FIRST-NEXT: Value: 1552
|
|
NOT-FIRST-NEXT: - Index: 1
|
|
NOT-FIRST-NEXT: Type: I32
|
|
NOT-FIRST-NEXT: Mutable: false
|
|
NOT-FIRST-NEXT: InitExpr:
|
|
NOT-FIRST-NEXT: Opcode: I32_CONST
|
|
NOT-FIRST-NEXT: Value: 1024
|
|
|