diff options
author | midipix <writeonce@midipix.org> | 2019-02-19 08:30:41 -0500 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2019-02-19 08:30:41 -0500 |
commit | 34988f835484e8a4fdc3e9a93930786755a63d05 (patch) | |
tree | 2a3e0b8a853927d15e13d0a297089c0c21d088a0 /src/logic/slbt_exec_compile.c | |
parent | 513f55dd376fbfc0625b00e56340fa17052a75ea (diff) | |
download | slibtool-34988f835484e8a4fdc3e9a93930786755a63d05.tar.bz2 slibtool-34988f835484e8a4fdc3e9a93930786755a63d05.tar.xz |
driver, compile & link mode: support arbitrary & known compiler wrappers.
Diffstat (limited to 'src/logic/slbt_exec_compile.c')
-rw-r--r-- | src/logic/slbt_exec_compile.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/logic/slbt_exec_compile.c b/src/logic/slbt_exec_compile.c index cad5bd8..8efa777 100644 --- a/src/logic/slbt_exec_compile.c +++ b/src/logic/slbt_exec_compile.c @@ -43,6 +43,7 @@ static int slbt_exec_compile_finalize_argument_vector( char ** cap; char ** src; char ** dst; + char * ccwrap; /* vector size */ base = ectx->argv; @@ -89,12 +90,17 @@ static int slbt_exec_compile_finalize_argument_vector( } } - /* (program name) */ - dst = &base[1]; + /* program name, ccwrap */ + if ((ccwrap = (char *)dctx->cctx->ccwrap)) { + base[1] = base[0]; + base[0] = ccwrap; + base++; + } /* join all other args */ src = aargv; cap = aarg; + dst = &base[1]; for (; src<cap; ) *dst++ = *src++; @@ -126,6 +132,7 @@ int slbt_exec_compile( { int ret; char * fpic; + char * ccwrap; struct slbt_exec_ctx * actx = 0; const struct slbt_common_ctx * cctx = dctx->cctx; @@ -153,7 +160,8 @@ int slbt_exec_compile( } /* compile mode */ - ectx->program = ectx->compiler; + ccwrap = (char *)cctx->ccwrap; + ectx->program = ccwrap ? ccwrap : ectx->compiler; ectx->argv = ectx->cargv; /* -fpic */ |