libc separate stdlib functions to libc_stdlib
This commit is contained in:
parent
f5526977d3
commit
fd535bae6b
|
@ -36,6 +36,8 @@ set(LIBC_SOURCES src/core/hle/libraries/Libc/Libc.cpp
|
||||||
src/core/hle/libraries/libc/libc_math.h
|
src/core/hle/libraries/libc/libc_math.h
|
||||||
src/core/hle/libraries/libc/libc_string.cpp
|
src/core/hle/libraries/libc/libc_string.cpp
|
||||||
src/core/hle/libraries/libc/libc_string.h
|
src/core/hle/libraries/libc/libc_string.h
|
||||||
|
src/core/hle/libraries/libc/libc_stdlib.cpp
|
||||||
|
src/core/hle/libraries/libc/libc_stdlib.h
|
||||||
)
|
)
|
||||||
set(USERSERVICE_SOURCES src/core/hle/libraries/libuserservice/user_service.cpp
|
set(USERSERVICE_SOURCES src/core/hle/libraries/libuserservice/user_service.cpp
|
||||||
src/core/hle/libraries/libuserservice/user_service.h
|
src/core/hle/libraries/libuserservice/user_service.h
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include "core/hle/libraries/libc/libc_math.h"
|
#include "core/hle/libraries/libc/libc_math.h"
|
||||||
#include "core/hle/libraries/libc/libc_stdio.h"
|
#include "core/hle/libraries/libc/libc_stdio.h"
|
||||||
#include "core/hle/libraries/libc/libc_string.h"
|
#include "core/hle/libraries/libc/libc_string.h"
|
||||||
|
#include "core/hle/libraries/libc/libc_stdlib.h"
|
||||||
#include "ErrorCodes.h"
|
#include "ErrorCodes.h"
|
||||||
#include "Libs.h"
|
#include "Libs.h"
|
||||||
|
|
||||||
|
@ -66,8 +67,8 @@ void LibC_Register(SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("Q3VBxCXhUHs", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::string::memcpy);
|
LIB_FUNCTION("Q3VBxCXhUHs", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::string::memcpy);
|
||||||
LIB_FUNCTION("8zTFvBIAIN8", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::memset);
|
LIB_FUNCTION("8zTFvBIAIN8", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::memset);
|
||||||
LIB_FUNCTION("XKRegsFpEpk", "libc", 1, "libc", 1, 1, catchReturnFromMain);
|
LIB_FUNCTION("XKRegsFpEpk", "libc", 1, "libc", 1, 1, catchReturnFromMain);
|
||||||
LIB_FUNCTION("uMei1W9uyNo", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::exit);
|
LIB_FUNCTION("uMei1W9uyNo", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::stdlib::exit);
|
||||||
LIB_FUNCTION("8G2LB+A3rzg", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::atexit);
|
LIB_FUNCTION("8G2LB+A3rzg", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::stdlib::atexit);
|
||||||
LIB_FUNCTION("-QgqOT5u2Vk", "libc", 1, "libc", 1, 1, _Assert);
|
LIB_FUNCTION("-QgqOT5u2Vk", "libc", 1, "libc", 1, 1, _Assert);
|
||||||
LIB_FUNCTION("hcuQgD53UxM", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::stdio::printf);
|
LIB_FUNCTION("hcuQgD53UxM", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::stdio::printf);
|
||||||
LIB_FUNCTION("Q2V+iqvjgC0", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::stdio::vsnprintf);
|
LIB_FUNCTION("Q2V+iqvjgC0", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::stdio::vsnprintf);
|
||||||
|
@ -76,8 +77,8 @@ void LibC_Register(SymbolsResolver* sym) {
|
||||||
LIB_FUNCTION("ZtjspkJQ+vw", "libc", 1, "libc", 1, 1, _Fsin);
|
LIB_FUNCTION("ZtjspkJQ+vw", "libc", 1, "libc", 1, 1, _Fsin);
|
||||||
LIB_FUNCTION("AEJdIVZTEmo", "libc", 1, "libc", 1, 1, qsort);
|
LIB_FUNCTION("AEJdIVZTEmo", "libc", 1, "libc", 1, 1, qsort);
|
||||||
LIB_FUNCTION("Ovb2dSJOAuE", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::strcmp);
|
LIB_FUNCTION("Ovb2dSJOAuE", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::strcmp);
|
||||||
LIB_FUNCTION("gQX+4GDQjpM", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::malloc);
|
LIB_FUNCTION("gQX+4GDQjpM", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::stdlib::malloc);
|
||||||
LIB_FUNCTION("tIhsqj0qsFE", "libc", 1, "libc", 1, 1,Core::Libraries::LibC::free);
|
LIB_FUNCTION("tIhsqj0qsFE", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::stdlib::free);
|
||||||
LIB_FUNCTION("j4ViWNHEgww", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::strlen);
|
LIB_FUNCTION("j4ViWNHEgww", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::strlen);
|
||||||
LIB_FUNCTION("6sJWiWSRuqk", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::strncpy);
|
LIB_FUNCTION("6sJWiWSRuqk", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::strncpy);
|
||||||
LIB_FUNCTION("+P6FRGH4LfA", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::memmove);
|
LIB_FUNCTION("+P6FRGH4LfA", "libc", 1, "libc", 1, 1, Core::Libraries::LibC::string::memmove);
|
||||||
|
|
|
@ -2,33 +2,8 @@
|
||||||
|
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
#include <cstdlib>
|
|
||||||
|
|
||||||
|
|
||||||
namespace Core::Libraries::LibC {
|
namespace Core::Libraries::LibC {
|
||||||
|
|
||||||
void PS4_SYSV_ABI exit(int code) { std::exit(code); }
|
|
||||||
|
|
||||||
int PS4_SYSV_ABI atexit(void (*func)()) {
|
|
||||||
int rt = std::atexit(func);
|
|
||||||
if (rt != 0) {
|
|
||||||
BREAKPOINT();
|
|
||||||
}
|
|
||||||
return rt;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void* PS4_SYSV_ABI malloc(size_t size) { return std::malloc(size); }
|
|
||||||
|
|
||||||
void PS4_SYSV_ABI free(void* ptr) { std::free(ptr); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// math
|
|
||||||
|
|
||||||
}; // namespace Core::Libraries::LibC
|
}; // namespace Core::Libraries::LibC
|
|
@ -7,11 +7,7 @@ namespace Core::Libraries::LibC {
|
||||||
|
|
||||||
// HLE functions
|
// HLE functions
|
||||||
|
|
||||||
void PS4_SYSV_ABI exit(int code);
|
|
||||||
int PS4_SYSV_ABI atexit(void (*func)());
|
|
||||||
|
|
||||||
void* PS4_SYSV_ABI malloc(size_t size);
|
|
||||||
void PS4_SYSV_ABI free(void* ptr);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
#include "libc_stdlib.h"
|
||||||
|
|
||||||
|
#include <Util/log.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
namespace Core::Libraries::LibC::stdlib {
|
||||||
|
constexpr bool log_file_libc = true; // disable it to disable logging
|
||||||
|
|
||||||
|
void PS4_SYSV_ABI exit(int code) { std::exit(code); }
|
||||||
|
|
||||||
|
int PS4_SYSV_ABI atexit(void (*func)()) {
|
||||||
|
int rt = std::atexit(func);
|
||||||
|
if (rt != 0) {
|
||||||
|
LOG_ERROR_IF(log_file_libc, "atexit returned {}\n", rt);
|
||||||
|
BREAKPOINT();
|
||||||
|
}
|
||||||
|
return rt;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* PS4_SYSV_ABI malloc(size_t size) { return std::malloc(size); }
|
||||||
|
|
||||||
|
void PS4_SYSV_ABI free(void* ptr) { std::free(ptr); }
|
||||||
|
|
||||||
|
} // namespace Core::Libraries::LibC::stdlib
|
|
@ -0,0 +1,12 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <types.h>
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
namespace Core::Libraries::LibC::stdlib {
|
||||||
|
void PS4_SYSV_ABI exit(int code);
|
||||||
|
int PS4_SYSV_ABI atexit(void (*func)());
|
||||||
|
void* PS4_SYSV_ABI malloc(size_t size);
|
||||||
|
void PS4_SYSV_ABI free(void* ptr);
|
||||||
|
} // namespace Core::Libraries::LibC::stdlib
|
Loading…
Reference in New Issue