enabled debug function names in stdlib,string

This commit is contained in:
georgemoralis 2023-11-14 09:23:01 +02:00
parent 5084145cd9
commit 283055e68e
2 changed files with 75 additions and 18 deletions

View File

@ -4,6 +4,7 @@
#include "common/debug.h" #include "common/debug.h"
#include "common/log.h" #include "common/log.h"
#include <core/hle/libraries/libs.h>
namespace Core::Libraries::LibC { namespace Core::Libraries::LibC {
@ -12,6 +13,7 @@ constexpr bool log_file_libc = true; // disable it to disable logging
void PS4_SYSV_ABI exit(int code) { std::exit(code); } void PS4_SYSV_ABI exit(int code) { std::exit(code); }
int PS4_SYSV_ABI atexit(void (*func)()) { int PS4_SYSV_ABI atexit(void (*func)()) {
PRINT_FUNCTION_NAME();
int rt = std::atexit(func); int rt = std::atexit(func);
if (rt != 0) { if (rt != 0) {
LOG_ERROR_IF(log_file_libc, "atexit returned {}\n", rt); LOG_ERROR_IF(log_file_libc, "atexit returned {}\n", rt);
@ -20,25 +22,44 @@ int PS4_SYSV_ABI atexit(void (*func)()) {
return rt; return rt;
} }
void* PS4_SYSV_ABI malloc(size_t size) { return std::malloc(size); } void* PS4_SYSV_ABI malloc(size_t size) {
PRINT_FUNCTION_NAME();
return std::malloc(size);
}
void PS4_SYSV_ABI free(void* ptr) { std::free(ptr); } void PS4_SYSV_ABI free(void* ptr) {
PRINT_FUNCTION_NAME();
std::free(ptr);
}
typedef int(PS4_SYSV_ABI* pfunc_QsortCmp)(const void*, const void*); typedef int(PS4_SYSV_ABI* pfunc_QsortCmp)(const void*, const void*);
thread_local static pfunc_QsortCmp compair_ps4; thread_local static pfunc_QsortCmp compair_ps4;
int qsort_compair(const void* arg1, const void* arg2) { return compair_ps4(arg1, arg2); } int qsort_compair(const void* arg1, const void* arg2) { PRINT_FUNCTION_NAME();return compair_ps4(arg1, arg2); }
void PS4_SYSV_ABI qsort(void* ptr, size_t count, size_t size, int(PS4_SYSV_ABI* comp)(const void*, const void*)) { void PS4_SYSV_ABI qsort(void* ptr, size_t count, size_t size, int(PS4_SYSV_ABI* comp)(const void*, const void*)) {
PRINT_FUNCTION_NAME();
compair_ps4 = comp; compair_ps4 = comp;
std::qsort(ptr, count, size, qsort_compair); std::qsort(ptr, count, size, qsort_compair);
} }
int PS4_SYSV_ABI rand() { return std::rand(); } int PS4_SYSV_ABI rand() {
PRINT_FUNCTION_NAME();
return std::rand();
}
unsigned long int PS4_SYSV_ABI _Stoul(const char* str, char** endptr, int base) { return std::strtoul(str, endptr, base); } unsigned long int PS4_SYSV_ABI _Stoul(const char* str, char** endptr, int base) {
PRINT_FUNCTION_NAME();
return std::strtoul(str, endptr, base);
}
void PS4_SYSV_ABI srand(unsigned int seed) { return std::srand(seed); } void PS4_SYSV_ABI srand(unsigned int seed) {
PRINT_FUNCTION_NAME();
return std::srand(seed);
}
s64 PS4_SYSV_ABI time(s64* pt) { return std::time(pt); } s64 PS4_SYSV_ABI time(s64* pt) {
PRINT_FUNCTION_NAME();
return std::time(pt);
}
} // namespace Core::Libraries::LibC } // namespace Core::Libraries::LibC

View File

@ -2,32 +2,68 @@
#include <cstdlib> #include <cstdlib>
#include <cstring> #include <cstring>
#include "common/log.h"
#include <core/hle/libraries/libs.h>
namespace Core::Libraries::LibC { namespace Core::Libraries::LibC {
int PS4_SYSV_ABI memcmp(const void* s1, const void* s2, size_t n) { return std::memcmp(s1, s2, n); } int PS4_SYSV_ABI memcmp(const void* s1, const void* s2, size_t n) {
PRINT_FUNCTION_NAME();
return std::memcmp(s1, s2, n);
}
void* PS4_SYSV_ABI memcpy(void* dest, const void* src, size_t n) { return std::memcpy(dest, src, n); } void* PS4_SYSV_ABI memcpy(void* dest, const void* src, size_t n) {
PRINT_FUNCTION_NAME();
return std::memcpy(dest, src, n);
}
void* PS4_SYSV_ABI memset(void* s, int c, size_t n) { return std::memset(s, c, n); } void* PS4_SYSV_ABI memset(void* s, int c, size_t n) {
PRINT_FUNCTION_NAME();
return std::memset(s, c, n);
}
int PS4_SYSV_ABI strcmp(const char* str1, const char* str2) { return std::strcmp(str1, str2); } int PS4_SYSV_ABI strcmp(const char* str1, const char* str2) {
PRINT_FUNCTION_NAME();
return std::strcmp(str1, str2);
}
char* PS4_SYSV_ABI strncpy(char* dest, const char* src, size_t count) { return std::strncpy(dest, src, count); } char* PS4_SYSV_ABI strncpy(char* dest, const char* src, size_t count) {
PRINT_FUNCTION_NAME();
return std::strncpy(dest, src, count);
}
void* PS4_SYSV_ABI memmove(void* dest, const void* src, std::size_t count) { return std::memmove(dest, src, count); } void* PS4_SYSV_ABI memmove(void* dest, const void* src, std::size_t count) {
PRINT_FUNCTION_NAME();
return std::memmove(dest, src, count);
}
char* PS4_SYSV_ABI strcpy(char* dest, const char* src) { return std::strcpy(dest, src); } char* PS4_SYSV_ABI strcpy(char* dest, const char* src) {
PRINT_FUNCTION_NAME();
return std::strcpy(dest, src);
}
char* PS4_SYSV_ABI strcat(char* dest, const char* src) { return std::strcat(dest, src); } char* PS4_SYSV_ABI strcat(char* dest, const char* src) {
PRINT_FUNCTION_NAME();
return std::strcat(dest, src);
}
size_t PS4_SYSV_ABI strlen(const char* str) { return std::strlen(str); } size_t PS4_SYSV_ABI strlen(const char* str) {
PRINT_FUNCTION_NAME();
return std::strlen(str);
}
int PS4_SYSV_ABI strncmp(const char* str1, const char* str2, size_t num) { return std::strncmp(str1, str2, num); } int PS4_SYSV_ABI strncmp(const char* str1, const char* str2, size_t num) {
PRINT_FUNCTION_NAME();
return std::strncmp(str1, str2, num);
}
char* PS4_SYSV_ABI strrchr(char* str, int character) { return (char*)std::strrchr(str, character); } char* PS4_SYSV_ABI strrchr(char* str, int character) {
PRINT_FUNCTION_NAME();
return (char*)std::strrchr(str, character);
}
char* PS4_SYSV_ABI strdup(const char* str1) { char* PS4_SYSV_ABI strdup(const char* str1) {
PRINT_FUNCTION_NAME();
char* dup = (char*)std::malloc(std::strlen(str1) + 1); char* dup = (char*)std::malloc(std::strlen(str1) + 1);
if (dup != NULL) strcpy(dup, str1); if (dup != NULL) strcpy(dup, str1);
return dup; return dup;