aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2022-10-25 08:47:05 -0400
committerJussi Pakkanen <jpakkane@gmail.com>2022-10-25 18:09:36 +0300
commitd67c4c6ab015ec4fd442f01431175deb74d8b158 (patch)
tree4e21b8fcbf733e2f2829e90ea725e2fb88a3a375
parent32bc64e63210cee6df7364a39005d89cdfdc6b71 (diff)
downloadmeson-d67c4c6ab015ec4fd442f01431175deb74d8b158.zip
meson-d67c4c6ab015ec4fd442f01431175deb74d8b158.tar.gz
meson-d67c4c6ab015ec4fd442f01431175deb74d8b158.tar.bz2
nasm: Use an hello world test that works on 32bits too
Fixes: #10956
-rw-r--r--test cases/nasm/2 asm language/hello.asm40
-rw-r--r--test cases/nasm/2 asm language/meson.build4
2 files changed, 29 insertions, 15 deletions
diff --git a/test cases/nasm/2 asm language/hello.asm b/test cases/nasm/2 asm language/hello.asm
index b153c8c..1e3e8fd 100644
--- a/test cases/nasm/2 asm language/hello.asm
+++ b/test cases/nasm/2 asm language/hello.asm
@@ -1,21 +1,31 @@
-%include "config.asm"
-
-global main
-extern puts
+; hello.asm a first program for nasm for Linux, Intel, gcc
+;
+; assemble: nasm -f elf -l hello.lst hello.asm
+; link: gcc -o hello hello.o
+; run: hello
+; output is: Hello World
-section .data
- hi db 'Hello, World', 0
+%include "config.asm"
%ifdef FOO
%define RETVAL HELLO
%endif
-section .text
-main:
- push rbp
- lea rdi, [rel hi]
- call puts wrt ..plt
- pop rbp
- mov ebx,RETVAL
- mov eax,1
- int 0x80
+ SECTION .data ; data section
+msg: db "Hello World",10 ; the string to print, 10=cr
+len: equ $-msg ; "$" means "here"
+ ; len is a value, not an address
+
+ SECTION .text ; code section
+ global main ; make label available to linker
+main: ; standard gcc entry point
+
+ mov edx,len ; arg3, length of string to print
+ mov ecx,msg ; arg2, pointer to string
+ mov ebx,1 ; arg1, where to write, screen
+ mov eax,4 ; write sysout command to int 80 hex
+ int 0x80 ; interrupt 80 hex, call kernel
+
+ mov ebx,RETVAL ; exit code, 0=normal
+ mov eax,1 ; exit command to kernel
+ int 0x80 ; interrupt 80 hex, call kernel
diff --git a/test cases/nasm/2 asm language/meson.build b/test cases/nasm/2 asm language/meson.build
index e1ef10a..f6fbff8 100644
--- a/test cases/nasm/2 asm language/meson.build
+++ b/test cases/nasm/2 asm language/meson.build
@@ -17,7 +17,11 @@ config_file = configure_file(
output_format: 'nasm',
)
+cc = meson.get_compiler('c')
+link_args = cc.get_supported_link_arguments(['-no-pie'])
+
exe = executable('hello', 'hello.asm',
nasm_args: '-DFOO',
+ link_args: link_args,
)
test('hello', exe)