diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-07-08 13:51:48 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-07-08 13:51:48 -0400 |
| commit | 4953e84902df3467b6d7491532e48bf33b5e56b9 (patch) | |
| tree | aa7d7fcb91a0e6ca8725d3fbdd586e168f62a27f /src/compiler.cpp | |
| parent | d39dcd6d9db2faf18287b2ff734ffda0d4080e5a (diff) | |
| parent | 201033d83b80d65380aaade37b76eafa17258f16 (diff) | |
| download | zig-4953e84902df3467b6d7491532e48bf33b5e56b9.tar.gz zig-4953e84902df3467b6d7491532e48bf33b5e56b9.zip | |
Merge pull request #2847 from ziglang/glibc-abi-versioning
support glibc version as part of the target
Diffstat (limited to 'src/compiler.cpp')
| -rw-r--r-- | src/compiler.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/compiler.cpp b/src/compiler.cpp index 8bfe87bfcd..5d401f1851 100644 --- a/src/compiler.cpp +++ b/src/compiler.cpp @@ -9,9 +9,13 @@ static Buf saved_stage1_path = BUF_INIT; static Buf saved_lib_dir = BUF_INIT; static Buf saved_special_dir = BUF_INIT; static Buf saved_std_dir = BUF_INIT; + static Buf saved_dynamic_linker_path = BUF_INIT; static bool searched_for_dyn_linker = false; +static Buf saved_libc_path = BUF_INIT; +static bool searched_for_libc = false; + Buf *get_stage1_cache_path(void) { if (saved_stage1_path.list.length != 0) { return &saved_stage1_path; @@ -36,6 +40,28 @@ static void detect_dynamic_linker(Buf *lib_path) { #endif } +const Buf *get_self_libc_path(void) { + for (;;) { + if (saved_libc_path.list.length != 0) { + return &saved_libc_path; + } + if (searched_for_libc) + return nullptr; + ZigList<Buf *> lib_paths = {}; + Error err; + if ((err = os_self_exe_shared_libs(lib_paths))) + return nullptr; + for (size_t i = 0; i < lib_paths.length; i += 1) { + Buf *lib_path = lib_paths.at(i); + if (buf_ends_with_str(lib_path, "libc.so.6")) { + buf_init_from_buf(&saved_libc_path, lib_path); + return &saved_libc_path; + } + } + searched_for_libc = true; + } +} + Buf *get_self_dynamic_linker_path(void) { for (;;) { if (saved_dynamic_linker_path.list.length != 0) { |
