diff options
author | midipix <writeonce@midipix.org> | 2024-03-10 05:50:50 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2024-03-10 05:50:50 +0000 |
commit | 39ce397bc705086b8856cc5c578244aabf093aa9 (patch) | |
tree | cc5fabb9de612c2c20a7b2310a8c3f21bfcd662a /src | |
parent | de1edb142b4b0ba768db5e324819149df8695e5a (diff) | |
download | slibtool-39ce397bc705086b8856cc5c578244aabf093aa9.tar.bz2 slibtool-39ce397bc705086b8856cc5c578244aabf093aa9.tar.xz |
link mode: handle the combination of dlopen/dlpreopen and --disable-shared.
Diffstat (limited to 'src')
-rw-r--r-- | src/internal/slibtool_linkcmd_impl.h | 3 | ||||
-rw-r--r-- | src/logic/linkcmd/slbt_linkcmd_archive.c | 2 | ||||
-rw-r--r-- | src/logic/linkcmd/slbt_linkcmd_dsolib.c | 5 | ||||
-rw-r--r-- | 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); } |