Skip to content

Commit 6bfc294

Browse files
committed
linux compatibility for exit, if anyone finds a cleaner way, fix me please
Signed-off-by: TymianekPL <[email protected]>
1 parent 60b29b3 commit 6bfc294

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

starlib/process.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module;
22
#ifdef _WIN32
33
#include <Windows.h>
44
#else
5-
#error Unsupported platform
5+
// no includes here
66
#endif
77

88
module process;
@@ -12,6 +12,14 @@ void starlib::process::Exit(int code)
1212
#ifdef _WIN32
1313
ExitProcess(static_cast<UINT>(code));
1414
#else
15-
#error Unsupported platform
15+
asm volatile(
16+
"mov $60, %%rax\n\t" // I do not want to comment on that. Just.. no.
17+
"movq %0, %%rdi\n\t"
18+
"syscall\n\t"
19+
:
20+
: "r"(static_cast<long>(code))
21+
: "rax", "rdi"
22+
);
23+
__builtin_unreachable();
1624
#endif
1725
}

starlib/starlib.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,3 @@ extern "C" void DefaultMain(void)
55
starlib::process::Exit(1);
66
}
77

8-
extern "C" void DefaultMain(void)
9-
{
10-
11-
}

testing/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ target_link_libraries(testing PRIVATE starlib)
1010
if(MSVC)
1111
target_link_options(testing PRIVATE /NODEFAULTLIB /ENTRY:DefaultMain)
1212
else()
13-
target_link_libraries(testing PRIVATE -nostdlib++)
13+
target_link_options(testing PRIVATE -nostdlib -nostartfiles -nodefaultlibs -Wl,-e,DefaultMain)
1414
endif()

0 commit comments

Comments
 (0)