summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2024-03-10 05:50:50 +0000
committermidipix <writeonce@midipix.org>2024-03-10 05:50:50 +0000
commit39ce397bc705086b8856cc5c578244aabf093aa9 (patch)
treecc5fabb9de612c2c20a7b2310a8c3f21bfcd662a
parentde1edb142b4b0ba768db5e324819149df8695e5a (diff)
downloadslibtool-39ce397bc705086b8856cc5c578244aabf093aa9.tar.bz2
slibtool-39ce397bc705086b8856cc5c578244aabf093aa9.tar.xz
link mode: handle the combination of dlopen/dlpreopen and --disable-shared.
-rw-r--r--src/internal/slibtool_linkcmd_impl.h3
-rw-r--r--src/logic/linkcmd/slbt_linkcmd_archive.c2
-rw-r--r--src/logic/linkcmd/slbt_linkcmd_dsolib.c5
-rw-r--r--src/logic/slbt_exec_link.c4
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);
}