diff options
author | midipix <writeonce@midipix.org> | 2024-03-05 01:11:15 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2024-03-05 02:10:46 +0000 |
commit | e47cd7d15cee80e0a78fb7a4ec0d53e117d37379 (patch) | |
tree | 9f5d8a988db33f1941f9e61f3a6771ec32eeed86 /src/driver | |
parent | 8ef9e14afc6d97e6cf2da17995c3278f7309cf25 (diff) | |
download | slibtool-e47cd7d15cee80e0a78fb7a4ec0d53e117d37379.tar.bz2 slibtool-e47cd7d15cee80e0a78fb7a4ec0d53e117d37379.tar.xz |
driver: finalized -dlopen, including the 'self' and 'force' special arguments.
Diffstat (limited to 'src/driver')
-rw-r--r-- | src/driver/slbt_driver_ctx.c | 6 | ||||
-rw-r--r-- | src/driver/slbt_split_argv.c | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/driver/slbt_driver_ctx.c b/src/driver/slbt_driver_ctx.c index 0e4ebda..8f4f2dc 100644 --- a/src/driver/slbt_driver_ctx.c +++ b/src/driver/slbt_driver_ctx.c @@ -722,8 +722,6 @@ int slbt_lib_get_driver_ctx( break; case TAG_DLOPEN: - break; - case TAG_DLPREOPEN: ndlopen++; break; @@ -1011,6 +1009,10 @@ int slbt_lib_get_driver_ctx( for (entry=meta->entries; entry->fopt || entry->arg; entry++) { if (entry->fopt) { switch (entry->tag) { + case TAG_DLOPEN: + ctx->cctx.drvflags |= SLBT_DRIVER_DLOPEN_FORCE; + break; + case TAG_DLPREOPEN: if (!strcmp(entry->arg,"self")) { ctx->cctx.drvflags |= SLBT_DRIVER_DLPREOPEN_SELF; diff --git a/src/driver/slbt_split_argv.c b/src/driver/slbt_split_argv.c index df0db37..894ed9d 100644 --- a/src/driver/slbt_split_argv.c +++ b/src/driver/slbt_split_argv.c @@ -472,10 +472,6 @@ slbt_hidden int slbt_split_argv( *targv++ = argv[i++]; *targv++ = argv[i]; - } else if (!(strcmp("dlopen",&argv[i][1]))) { - *targv++ = argv[i++]; - *targv++ = argv[i]; - } else if (!(strcmp("weak",&argv[i][1]))) { *targv++ = argv[i++]; *targv++ = argv[i]; @@ -502,6 +498,13 @@ slbt_hidden int slbt_split_argv( *targv++ = argv[i++]; *targv++ = argv[i]; + } else if (!(strcmp("dlopen",&argv[i][1]))) { + if (!argv[i+1]) + return -1; + + *targv++ = argv[i++]; + *targv++ = argv[i]; + } else if (!(strcmp("dlpreopen",&argv[i][1]))) { if (!argv[i+1]) return -1; |