diff options
author | midipix <writeonce@midipix.org> | 2021-04-16 09:32:49 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2021-04-16 10:24:26 +0000 |
commit | 9c5ba5eba6c7c5274d7e9e6203ee5aad2fb438fb (patch) | |
tree | 21201c8095604556aa4464ed626697147cd0805b | |
parent | bd56f89f1a29adcefa7c9836a5ff4f5e78f45be6 (diff) | |
download | slibtool-9c5ba5eba6c7c5274d7e9e6203ee5aad2fb438fb.tar.bz2 slibtool-9c5ba5eba6c7c5274d7e9e6203ee5aad2fb438fb.tar.xz |
link mode: legacy libtool compatibility: support linking against -module libs.
-rw-r--r-- | src/logic/slbt_exec_link.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c index 3836f14..ea5dccf 100644 --- a/src/logic/slbt_exec_link.c +++ b/src/logic/slbt_exec_link.c @@ -583,15 +583,23 @@ static int slbt_exec_link_adjust_argument_vector( return ret; } - *aarg++ = *carg++; - *aarg++ = ++mark; + dlen = strlen(dctx->cctx->settings.dsoprefix); + + /* -module? (todo: non-portable usage, display warning) */ + if (strncmp(++slash,dctx->cctx->settings.dsoprefix,dlen)) { + *--slash = '/'; + strcpy(*carg,arg); + *aarg++ = *carg++; + } else { + *aarg++ = *carg++; + *aarg++ = ++mark; - ++slash; - slash += strlen(dctx->cctx->settings.dsoprefix); + slash += dlen; - sprintf(mark,"-l%s",slash); - dot = strrchr(mark,'.'); - *dot = 0; + sprintf(mark,"-l%s",slash); + dot = strrchr(mark,'.'); + *dot = 0; + } } else { *aarg++ = *carg++; } |