From 39ce397bc705086b8856cc5c578244aabf093aa9 Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 10 Mar 2024 05:50:50 +0000 Subject: link mode: handle the combination of dlopen/dlpreopen and --disable-shared. --- src/internal/slibtool_linkcmd_impl.h | 3 ++- src/logic/linkcmd/slbt_linkcmd_archive.c | 2 +- src/logic/linkcmd/slbt_linkcmd_dsolib.c | 5 +++-- src/logic/slbt_exec_link.c | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/internal/slibtool_linkcmd_impl.h b/src/internal/slibtool_linkcmd_impl.h index bc57f3d..c0db6e1 100644 --- a/src/internal/slibtool_linkcmd_impl.h +++ b/src/internal/slibtool_linkcmd_impl.h @@ -76,7 +76,8 @@ int slbt_exec_link_create_library( const char * dsobasename, const char * dsofilename, const char * relfilename, - bool fardlopen); + bool fardlopen, + bool fpic); int slbt_exec_link_create_executable( diff --git a/src/logic/linkcmd/slbt_linkcmd_archive.c b/src/logic/linkcmd/slbt_linkcmd_archive.c index 5f1ba52..00fe825 100644 --- a/src/logic/linkcmd/slbt_linkcmd_archive.c +++ b/src/logic/linkcmd/slbt_linkcmd_archive.c @@ -74,7 +74,7 @@ slbt_hidden int slbt_exec_link_create_archive( if (slbt_exec_link_create_library( dctx,ectx, namebuf,namebuf,namebuf, - true) < 0) + true,fpic) < 0) return SLBT_NESTED_ERROR(dctx); } diff --git a/src/logic/linkcmd/slbt_linkcmd_dsolib.c b/src/logic/linkcmd/slbt_linkcmd_dsolib.c index 13eaefb..0f70dcb 100644 --- a/src/logic/linkcmd/slbt_linkcmd_dsolib.c +++ b/src/logic/linkcmd/slbt_linkcmd_dsolib.c @@ -89,7 +89,8 @@ slbt_hidden int slbt_exec_link_create_library( const char * dsobasename, const char * dsofilename, const char * relfilename, - bool fardlopen) + bool fardlopen, + bool fpic) { int fdcwd; char ** parg; @@ -119,7 +120,7 @@ slbt_hidden int slbt_exec_link_create_library( /* input argument adjustment */ for (parg=ectx->cargv; *parg; parg++) - slbt_adjust_object_argument(*parg,true,false,fdcwd); + slbt_adjust_object_argument(*parg,fpic,false,fdcwd); /* .deps */ if (slbt_exec_link_create_dep_file( diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c index be9dc20..b2f1311 100644 --- a/src/logic/slbt_exec_link.c +++ b/src/logic/slbt_exec_link.c @@ -328,7 +328,7 @@ int slbt_exec_link(const struct slbt_driver_ctx * dctx) ectx->dsobasename, ectx->dsofilename, ectx->relfilename, - false)) { + false,true)) { slbt_ectx_free_exec_ctx(ectx); return SLBT_NESTED_ERROR(dctx); } @@ -395,7 +395,7 @@ int slbt_exec_link(const struct slbt_driver_ctx * dctx) ectx->dsobasename, ectx->dsofilename, ectx->relfilename, - false)) { + false,true)) { slbt_ectx_free_exec_ctx(ectx); return SLBT_NESTED_ERROR(dctx); } -- cgit v1.2.3