From 4451024fec461fdcd1ee4f01fa2366685cb4b245 Mon Sep 17 00:00:00 2001
From: midipix <writeonce@midipix.org>
Date: Tue, 5 Mar 2024 00:10:46 +0000
Subject: slbt_get_exec_ctx(): added support for `-dlopen/-dlpreopen force`.

---
 src/logic/slbt_exec_ctx.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/src/logic/slbt_exec_ctx.c b/src/logic/slbt_exec_ctx.c
index 69aecc1..e6fd248 100644
--- a/src/logic/slbt_exec_ctx.c
+++ b/src/logic/slbt_exec_ctx.c
@@ -193,6 +193,7 @@ int  slbt_ectx_get_exec_ctx(
 {
 	struct slbt_exec_ctx_impl *	ictx;
 	struct slbt_driver_ctx_impl *   idctx;
+	uint64_t                        fmask;
 	char **				parg;
 	char **				src;
 	char **				dst;
@@ -587,10 +588,34 @@ int  slbt_ectx_get_exec_ctx(
 				"@PROGRAM@");
 
 		ch++;
+
+		ictx->ctx.mapfilename = ch;
+		ch += sprintf(ch,"%s%s",
+				ictx->ctx.exefilename,
+				dctx->cctx->settings.mapsuffix);
+		ch++;
+
 	}
 
 	/* dlopen, dlpreopen */
 	if ((dlopenv = idctx->dlopenv), (dlactxv = ictx->dlactxv)) {
+		fmask  = SLBT_DRIVER_DLPREOPEN_FORCE;
+		fmask |= SLBT_DRIVER_DLOPEN_FORCE;
+
+		if (dctx->cctx->drvflags & fmask) {
+			if (slbt_ar_get_varchive_ctx(dctx,dlactxv) < 0)
+				return slbt_ectx_free_exec_ctx_impl(
+					ictx,
+					SLBT_NESTED_ERROR(dctx));
+
+			if (slbt_ar_update_syminfo(*dlactxv,&ictx->ctx) < 0)
+				return slbt_ectx_free_exec_ctx_impl(
+					ictx,
+					SLBT_NESTED_ERROR(dctx));
+
+			dlactxv++;
+		}
+
 		for (; *dlopenv; ) {
 			arname = ictx->sbuf;
 			strcpy(arname,*dlopenv);
-- 
cgit v1.2.3