diff options
author | midipix <writeonce@midipix.org> | 2024-03-13 21:33:14 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2024-03-13 21:34:36 +0000 |
commit | b48cb77c5fe44e3392ecb9f4335c6a9b7401c89d (patch) | |
tree | baa2e81b290a5c3ba91eb693b1ebd0950ccc809a /src | |
parent | 198205f4097928184ed5bfa288bb4dfbba1e2b5f (diff) | |
download | slibtool-b48cb77c5fe44e3392ecb9f4335c6a9b7401c89d.tar.bz2 slibtool-b48cb77c5fe44e3392ecb9f4335c6a9b7401c89d.tar.xz |
link mode: properly interpret -static when output is an executable program.
Diffstat (limited to 'src')
-rw-r--r-- | src/driver/slbt_driver_ctx.c | 2 | ||||
-rw-r--r-- | src/logic/linkcmd/slbt_linkcmd_executable.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/driver/slbt_driver_ctx.c b/src/driver/slbt_driver_ctx.c index 6737815..9479e54 100644 --- a/src/driver/slbt_driver_ctx.c +++ b/src/driver/slbt_driver_ctx.c @@ -788,10 +788,12 @@ int slbt_lib_get_driver_ctx( case TAG_SHARED: cmdshared = entry; + cctx.drvflags |= SLBT_DRIVER_PREFER_SHARED; break; case TAG_STATIC: cmdstatic = entry; + cctx.drvflags |= SLBT_DRIVER_PREFER_STATIC; break; case TAG_WEAK: diff --git a/src/logic/linkcmd/slbt_linkcmd_executable.c b/src/logic/linkcmd/slbt_linkcmd_executable.c index 76c0b1d..a1f8b1c 100644 --- a/src/logic/linkcmd/slbt_linkcmd_executable.c +++ b/src/logic/linkcmd/slbt_linkcmd_executable.c @@ -100,7 +100,8 @@ slbt_hidden int slbt_exec_link_create_executable( fdcwd = slbt_driver_fdcwd(dctx); /* fpic */ - fpic = (dctx->cctx->drvflags & SLBT_DRIVER_SHARED); + fpic = (dctx->cctx->drvflags & SLBT_DRIVER_SHARED); + fpic &= !(dctx->cctx->drvflags & SLBT_DRIVER_PREFER_STATIC); /* input argument adjustment */ for (parg=ectx->cargv; *parg; parg++) |