diff options
author | midipix <writeonce@midipix.org> | 2016-04-17 16:17:35 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-04-17 17:35:35 -0400 |
commit | fbb80bbae0922694102e7afb4358d46da28889d2 (patch) | |
tree | 5a649ea2db3c0fe267ab1f656a4d111b699c5fc0 /src/logic | |
parent | 1677f4527a6413758a02fb36b430adf6a921a964 (diff) | |
download | slibtool-fbb80bbae0922694102e7afb4358d46da28889d2.tar.bz2 slibtool-fbb80bbae0922694102e7afb4358d46da28889d2.tar.xz |
link mode: PE support: added symdef generation.
Diffstat (limited to 'src/logic')
-rw-r--r-- | src/logic/slbt_exec_link.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c index 7cf671a..d205623 100644 --- a/src/logic/slbt_exec_link.c +++ b/src/logic/slbt_exec_link.c @@ -504,6 +504,7 @@ static int slbt_exec_link_create_library( char cwd [PATH_MAX]; char output [PATH_MAX]; char soname [PATH_MAX]; + char symfile[PATH_MAX]; struct slbt_deps_meta depsmeta = {0}; /* initial state */ @@ -543,6 +544,17 @@ static int slbt_exec_link_create_library( *ectx->lsoname = soname; } + /* PE: --output-def */ + if (dctx->cctx->drvflags & SLBT_DRIVER_IMAGE_PE) { + if ((size_t)snprintf(symfile,sizeof(symfile),"-Wl,%s", + ectx->deffilename) + >= sizeof(output)) + return -1; + + *ectx->symdefs = "-Wl,--output-def"; + *ectx->symfile = symfile; + } + /* shared object */ *ectx->dpic = "-shared"; *ectx->fpic = "-fPIC"; |