diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-11-22 17:30:34 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-11-22 17:30:34 -0700 |
| commit | c7170e4a5480581db5f30913eebd9ad4f7cd121e (patch) | |
| tree | fba79b8f4241c94f886e7708d18081e8fc0e31fe /src/stage1/codegen.cpp | |
| parent | 98d5bfbd4d21e99363a0a68ef5a0d0104c302ecb (diff) | |
| parent | abc717f203060f7ab16d36f2afe681d838b46801 (diff) | |
| download | zig-c7170e4a5480581db5f30913eebd9ad4f7cd121e.tar.gz zig-c7170e4a5480581db5f30913eebd9ad4f7cd121e.zip | |
Support PIE (Position Independent Executables)
Closes #4503
Revives #3960
Merges branch 'pie' into master
Diffstat (limited to 'src/stage1/codegen.cpp')
| -rw-r--r-- | src/stage1/codegen.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/stage1/codegen.cpp b/src/stage1/codegen.cpp index 26fe00228e..d0bb9b4411 100644 --- a/src/stage1/codegen.cpp +++ b/src/stage1/codegen.cpp @@ -9043,6 +9043,7 @@ Buf *codegen_generate_builtin_source(CodeGen *g) { buf_appendf(contents, "pub const have_error_return_tracing = %s;\n", bool_to_str(g->have_err_ret_tracing)); buf_appendf(contents, "pub const valgrind_support = false;\n"); buf_appendf(contents, "pub const position_independent_code = %s;\n", bool_to_str(g->have_pic)); + buf_appendf(contents, "pub const position_independent_executable = %s;\n", bool_to_str(g->have_pie)); buf_appendf(contents, "pub const strip_debug_info = %s;\n", bool_to_str(g->strip_debug_symbols)); buf_appendf(contents, "pub const code_model = CodeModel.default;\n"); @@ -9170,6 +9171,14 @@ static void init(CodeGen *g) { reloc_mode = LLVMRelocStatic; } + if (g->have_pic) { + ZigLLVMSetModulePICLevel(g->module); + } + + if (g->have_pie) { + ZigLLVMSetModulePIELevel(g->module); + } + const char *target_specific_cpu_args = ""; const char *target_specific_features = ""; |
