From 43b5367790422f1f658d96d96c9e73694c7051f2 Mon Sep 17 00:00:00 2001 From: Kwarde Date: Thu, 26 Jun 2025 10:33:33 +0200 Subject: [PATCH] perror(): Print unknown errors too with errno --- console.asm | 9 ++++++++- tests.asm | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/console.asm b/console.asm index b6e1ec7..0057acc 100644 --- a/console.asm +++ b/console.asm @@ -11,6 +11,7 @@ section .rodata ; Errors (perror) perrorMsg db "%s: %s",10,0 + perrorInvalid db "%s: Unknown error (errno %d)",10,0 errorMsgs dq em0,em1,em2,em3,em4,em5,em6,em7,em8,em9,em10,em11,em12,em13,em14,em15,em16,em17,em18,em19,em20,em21,em22,em23,em24,em25,em26,em27,em28,em29,em30,em31,em32,em33,em34 em0 db "No error",0 em1 db "Operation not permitted",0 @@ -263,12 +264,18 @@ perror: jge .quit neg rax cmp rax, 34 - jg .quit + jg .unknown mov rsi, rdi lea rdi, [rel perrorMsg] lea rdx, [errorMsgs + rax*8] mov rdx, [rdx] call printf + jmp .quit + .unknown: + mov rsi, rdi + lea rdi, [rel perrorInvalid] + mov rdx, rax + call printf .quit: pop rax ret diff --git a/tests.asm b/tests.asm index 5a51bea..e65378f 100644 --- a/tests.asm +++ b/tests.asm @@ -91,6 +91,7 @@ section .rodata msgPerror1 db "TEST perror(",34,"ErrTest",34,") (rax=0):",NL,EOS msgPerror2 db "TEST perror(",34,"ErrTest",34,") (rax=-22):",NL,EOS msgPerror3 db "TEST perror(",34,"ErrTest",34,") (rax=7):",NL,EOS + msgPerror4 db "TEST perror(",34,"ErrTest",34,") (rax=-50)",NL,EOS perrorStr db "ErrTest",EOS ; min() / minu() msgMin db NL,"# min() / minu()",EOS @@ -282,6 +283,13 @@ _start: mov rax, 7 lea rdi, [rel perrorStr] call perror + + ; TEST: perror (err=-50) + lea rdi, [rel msgPerror4] + call print + mov rax, -50 + lea rdi, [rel perrorStr] + call perror %ENDIF %IF TEST_min lea rdi, [rel msgMin]