diff --git a/src/link.cpp b/src/link.cpp index d9b784129d..1a454531b5 100644 --- a/src/link.cpp +++ b/src/link.cpp @@ -1775,6 +1775,10 @@ static void construct_linker_job_elf(LinkJob *lj) { lj->args.append("--eh-frame-hdr"); } + if (g->linker_rdynamic) { + lj->args.append("--export-dynamic"); + } + lj->args.append("-m"); lj->args.append(getLDMOption(g->zig_target)); diff --git a/src/main.cpp b/src/main.cpp index d2936c3b52..f60a1185e7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -790,6 +790,11 @@ static int main0(int argc, char **argv) { return EXIT_FAILURE; } dynamic_linker = buf_ptr(linker_args.at(i)); + } else if (buf_eql_str(arg, "-E") || + buf_eql_str(arg, "--export-dynamic") || + buf_eql_str(arg, "-export-dynamic")) + { + rdynamic = true; } else { fprintf(stderr, "warning: unsupported linker arg: %s\n", buf_ptr(arg)); }