From c2623283de6d87f02307e14bc4176826115e5f44 Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 17 Feb 2019 11:03:53 -0500 Subject: mdso_{asmgen|objgen}_symentry: support compiler-generated .gotrefs. --- src/logic/mdso_asmgen_symentry.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/logic') diff --git a/src/logic/mdso_asmgen_symentry.c b/src/logic/mdso_asmgen_symentry.c index 67ea686..cba360d 100644 --- a/src/logic/mdso_asmgen_symentry.c +++ b/src/logic/mdso_asmgen_symentry.c @@ -13,10 +13,11 @@ #include "mdso_errinfo_impl.h" static const char * const asm_lines[] = { - "\t.section " MDSO_STRS_SECTION ",\"r0\"\n\n", - ".symstr:\n", - "\t.ascii\t\"%s\\0\"\n\n" - "\t.section " MDSO_SYMS_SECTION ",\"r\"\n", + "\t.section " MDSO_STRS_SECTION "$%s,\"r0\"\n\n", + ".symstr_%s:\n", + "\t.ascii\t\"%s\\0\"\n" + "\t.linkonce discard\n\n", + "\t.section " MDSO_SYMS_SECTION "$%s,\"r\"\n", 0 }; @@ -56,11 +57,14 @@ int mdso_asmgen_symentry( if ((mdso_dprintf(fdout,"__imp_%s%s:\n",uscore,sym)) < 0) return MDSO_FILE_ERROR(dctx); - if ((mdso_dprintf(fdout,"\t%s\t.symstr\n",ptrsize)) < 0) + if ((mdso_dprintf(fdout,"\t%s\t.symstr_%s\n",ptrsize,sym)) < 0) return MDSO_FILE_ERROR(dctx); if ((mdso_dprintf(fdout,"\t%s\t.dsometa_%s\n",ptrsize,dctx->cctx->libname)) < 0) return MDSO_FILE_ERROR(dctx); + if ((mdso_dprintf(fdout,"\t.linkonce discard\n")) < 0) + return MDSO_FILE_ERROR(dctx); + return 0; } -- cgit v1.2.3