From e47cd7d15cee80e0a78fb7a4ec0d53e117d37379 Mon Sep 17 00:00:00 2001 From: midipix Date: Tue, 5 Mar 2024 01:11:15 +0000 Subject: driver: finalized -dlopen, including the 'self' and 'force' special arguments. --- src/driver/slbt_driver_ctx.c | 6 ++++-- src/driver/slbt_split_argv.c | 11 +++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'src/driver') 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; -- cgit v1.2.3