diff --git a/src/link.cpp b/src/link.cpp index d9b784129d895972328d42faea296a8dc2a190ff..1a454531b588d355a840c674580e8bb132093807 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 d2936c3b5291be9454927f6278be6575640d134e..f60a1185e7800b456970fe1de5bdf473ccdc73d4 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)); }