From 6b2fa6f84296ba76206459a8f6e380f7bd3f817f Mon Sep 17 00:00:00 2001 From: midipix Date: Thu, 7 Mar 2024 04:34:06 +0000 Subject: link mode: dependency logic: limit the scope of -shrext to the current library. --- src/host/slbt_host_flavor.c | 3 --- src/logic/slbt_exec_ctx.c | 14 +++++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/host/slbt_host_flavor.c b/src/host/slbt_host_flavor.c index 2372f38..07a3ae3 100644 --- a/src/host/slbt_host_flavor.c +++ b/src/host/slbt_host_flavor.c @@ -146,9 +146,6 @@ slbt_hidden void slbt_init_flavor_settings( } memcpy(psettings,settings,sizeof(*settings)); - - if (cctx->shrext) - psettings->dsosuffix = cctx->shrext; } diff --git a/src/logic/slbt_exec_ctx.c b/src/logic/slbt_exec_ctx.c index ea3f323..cfcfc2a 100644 --- a/src/logic/slbt_exec_ctx.c +++ b/src/logic/slbt_exec_ctx.c @@ -212,6 +212,7 @@ int slbt_ectx_get_exec_ctx( char * ch; char * mark; const char * dmark; + const char * dsoext; char * slash; char * arname; struct slbt_archive_ctx ** dlactxv; @@ -381,6 +382,9 @@ int slbt_ectx_get_exec_ctx( /* linking: arfilename, lafilename, laifilename, dsobasename, dsofilename, mapfilename */ if (dctx->cctx->mode == SLBT_MODE_LINK && dctx->cctx->libname) { + if (!(dsoext = dctx->cctx->shrext)) + dsoext = dctx->cctx->settings.dsosuffix; + /* arprefix, dsoprefix */ if (dctx->cctx->drvflags & SLBT_DRIVER_MODULE) { ictx->ctx.sonameprefix = ""; @@ -437,7 +441,7 @@ int slbt_ectx_get_exec_ctx( ictx->ctx.ldirname, dsoprefix, dctx->cctx->libname, - dctx->cctx->settings.dsosuffix); + dsoext); ch++; /* mapfilename */ @@ -459,7 +463,7 @@ int slbt_ectx_get_exec_ctx( dctx->cctx->libname, dctx->cctx->release ? "-" : "", dctx->cctx->release ? dctx->cctx->release : "", - dctx->cctx->settings.dsosuffix); + dsoext); ch++; /* rpathfilename */ @@ -468,7 +472,7 @@ int slbt_ectx_get_exec_ctx( ictx->ctx.ldirname, dsoprefix, dctx->cctx->libname, - dctx->cctx->settings.dsosuffix); + dsoext); ch++; /* default implib file name */ @@ -526,7 +530,7 @@ int slbt_ectx_get_exec_ctx( dsoprefix, dctx->cctx->libname, dctx->cctx->release, - dctx->cctx->settings.dsosuffix); + dsoext); ch++; } @@ -538,7 +542,7 @@ int slbt_ectx_get_exec_ctx( dsoprefix, dctx->cctx->libname, dctx->cctx->release, - dctx->cctx->settings.dsosuffix); + dsoext); ch++; } -- cgit v1.2.3