mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 08:08:50 +00:00
Merge pull request #4976 from voutilad/openbsd-linker
Fix linking of programs on OpenBSD
This commit is contained in:
@@ -9,7 +9,7 @@ foreign libc {
|
|||||||
@(link_name="write")
|
@(link_name="write")
|
||||||
_unix_write :: proc(fd: i32, buf: rawptr, size: int) -> int ---
|
_unix_write :: proc(fd: i32, buf: rawptr, size: int) -> int ---
|
||||||
|
|
||||||
when ODIN_OS == .NetBSD {
|
when ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
|
||||||
@(link_name="__errno") __error :: proc() -> ^i32 ---
|
@(link_name="__errno") __error :: proc() -> ^i32 ---
|
||||||
} else {
|
} else {
|
||||||
__error :: proc() -> ^i32 ---
|
__error :: proc() -> ^i32 ---
|
||||||
|
|||||||
@@ -343,7 +343,7 @@ AT_REMOVEDIR :: 0x08
|
|||||||
|
|
||||||
@(default_calling_convention="c")
|
@(default_calling_convention="c")
|
||||||
foreign libc {
|
foreign libc {
|
||||||
@(link_name="__error") __error :: proc() -> ^c.int ---
|
@(link_name="__errno") __error :: proc() -> ^c.int ---
|
||||||
|
|
||||||
@(link_name="fork") _unix_fork :: proc() -> pid_t ---
|
@(link_name="fork") _unix_fork :: proc() -> pid_t ---
|
||||||
@(link_name="getthrid") _unix_getthrid :: proc() -> int ---
|
@(link_name="getthrid") _unix_getthrid :: proc() -> int ---
|
||||||
|
|||||||
@@ -701,6 +701,13 @@ gb_internal i32 linker_stage(LinkerData *gen) {
|
|||||||
// This points the linker to where the entry point is
|
// This points the linker to where the entry point is
|
||||||
link_settings = gb_string_appendc(link_settings, "-e _main ");
|
link_settings = gb_string_appendc(link_settings, "-e _main ");
|
||||||
}
|
}
|
||||||
|
} else if (build_context.metrics.os == TargetOs_openbsd) {
|
||||||
|
// OpenBSD ports install shared libraries in /usr/local/lib. Also, we must explicitly link libpthread.
|
||||||
|
platform_lib_str = gb_string_appendc(platform_lib_str, "-lpthread -Wl,-L/usr/local/lib ");
|
||||||
|
// Until the LLVM back-end can be adapted to emit endbr64 instructions on amd64, we
|
||||||
|
// need to pass -z nobtcfi in order to allow the resulting program to run under
|
||||||
|
// OpenBSD 7.4 and newer. Once support is added at compile time, this can be dropped.
|
||||||
|
platform_lib_str = gb_string_appendc(platform_lib_str, "-Wl,-z,nobtcfi ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!build_context.no_rpath) {
|
if (!build_context.no_rpath) {
|
||||||
|
|||||||
Reference in New Issue
Block a user