From 308b201fd4b8474b73364b4b287f5251f5db1038 Mon Sep 17 00:00:00 2001 From: Jeremiah Orians Date: Tue, 28 Jan 2020 04:24:29 -0500 Subject: [PATCH] Fixed getcwd to better match --- test/common_amd64/functions/getcwd.c | 9 ++++++++- test/common_armv7l/functions/getcwd.c | 9 ++++++++- test/common_knight/functions/getcwd.c | 9 ++++++++- test/common_x86/functions/getcwd.c | 9 ++++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/test/common_amd64/functions/getcwd.c b/test/common_amd64/functions/getcwd.c index d2cf1a3..fd5320c 100644 --- a/test/common_amd64/functions/getcwd.c +++ b/test/common_amd64/functions/getcwd.c @@ -19,7 +19,7 @@ //CONSTANT PATH_MAX 4096 #define PATH_MAX 4096 -char* getcwd(char* buf, size_t size) +int _getcwd(char* buf, size_t size) { asm("LOAD_EFFECTIVE_ADDRESS_rdi %16" "LOAD_INTEGER_rdi" @@ -29,6 +29,13 @@ char* getcwd(char* buf, size_t size) "SYSCALL"); } +char* getcwd(char* buf, size_t size) +{ + int c = _getcwd(buf, size); + if(0 == c) return NULL; + return buf; +} + char* getwd(char* buf) { return getcwd(buf, PATH_MAX); diff --git a/test/common_armv7l/functions/getcwd.c b/test/common_armv7l/functions/getcwd.c index 672d93e..ef079a0 100644 --- a/test/common_armv7l/functions/getcwd.c +++ b/test/common_armv7l/functions/getcwd.c @@ -19,7 +19,7 @@ //CONSTANT PATH_MAX 4096 #define PATH_MAX 4096 -char* getcwd(char* buf, size_t size) +int _getcwd(char* buf, size_t size) { asm("!4 R0 SUB R12 ARITH_ALWAYS" "!0 R0 LOAD32 R0 MEMORY" @@ -29,6 +29,13 @@ char* getcwd(char* buf, size_t size) "SYSCALL_ALWAYS"); } +char* getcwd(char* buf, size_t size) +{ + int c = _getcwd(buf, size); + if(0 == c) return NULL; + return buf; +} + char* getwd(char* buf) { return getcwd(buf, PATH_MAX); diff --git a/test/common_knight/functions/getcwd.c b/test/common_knight/functions/getcwd.c index 7f1b596..c5244bd 100644 --- a/test/common_knight/functions/getcwd.c +++ b/test/common_knight/functions/getcwd.c @@ -19,13 +19,20 @@ //CONSTANT PATH_MAX 4096 #define PATH_MAX 4096 -char* getcwd(char* buf, size_t size) +int _getcwd(char* buf, size_t size) { asm("LOAD R0 R14 0" "LOAD R1 R14 4" "GETCWD"); } +char* getcwd(char* buf, size_t size) +{ + int c = _getcwd(buf, size); + if(0 == c) return NULL; + return buf; +} + char* getwd(char* buf) { return getcwd(buf, PATH_MAX); diff --git a/test/common_x86/functions/getcwd.c b/test/common_x86/functions/getcwd.c index 4c30795..95ae9b1 100644 --- a/test/common_x86/functions/getcwd.c +++ b/test/common_x86/functions/getcwd.c @@ -19,7 +19,7 @@ //CONSTANT PATH_MAX 4096 #define PATH_MAX 4096 -char* getcwd(char* buf, size_t size) +int _getcwd(char* buf, size_t size) { asm("LOAD_EFFECTIVE_ADDRESS_ebx %8" "LOAD_INTEGER_ebx" @@ -29,6 +29,13 @@ char* getcwd(char* buf, size_t size) "INT_80"); } +char* getcwd(char* buf, size_t size) +{ + int c = _getcwd(buf, size); + if(0 == c) return NULL; + return buf; +} + char* getwd(char* buf) { return getcwd(buf, PATH_MAX);