summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/slibtool/slibtool.h1
-rw-r--r--src/logic/slbt_exec_ar.c14
2 files changed, 14 insertions, 1 deletions
diff --git a/include/slibtool/slibtool.h b/include/slibtool/slibtool.h
index ffa41c2..bd5b31d 100644
--- a/include/slibtool/slibtool.h
+++ b/include/slibtool/slibtool.h
@@ -128,6 +128,7 @@ enum slbt_custom_error {
SLBT_ERR_AR_INVALID_ARMAP_STRING_TABLE,
SLBT_ERR_AR_INVALID_ARMAP_MEMBER_OFFSET,
SLBT_ERR_AR_INVALID_ARMAP_NAME_OFFSET,
+ SLBT_ERR_AR_DLUNIT_NOT_SPECIFIED,
SLBT_ERR_AR_OUTPUT_NOT_SPECIFIED,
SLBT_ERR_AR_OUTPUT_NOT_APPLICABLE,
};
diff --git a/src/logic/slbt_exec_ar.c b/src/logic/slbt_exec_ar.c
index 2abf7f2..ad8896c 100644
--- a/src/logic/slbt_exec_ar.c
+++ b/src/logic/slbt_exec_ar.c
@@ -307,7 +307,19 @@ int slbt_exec_ar(const struct slbt_driver_ctx * dctx)
(void)0;
} else if (cctx->fmtflags & SLBT_OUTPUT_ARCHIVE_DLSYMS) {
- (void)0;
+ if (!cctx->dlunit)
+ slbt_dprintf(fderr,
+ "%s: missing -Wdlunit: generation of a dlsyms vtable "
+ "requires the name of the dynamic library, executable "
+ "program, or dynamic module for which the vtable would "
+ "be generated.\n",
+ dctx->program);
+
+ return slbt_exec_ar_fail(
+ ectx,meta,
+ SLBT_CUSTOM_ERROR(
+ dctx,
+ SLBT_ERR_AR_DLUNIT_NOT_SPECIFIED));
} else if (!(cctx->drvflags & SLBT_DRIVER_MODE_AR_ACTIONS)) {
if (cctx->drvflags & SLBT_DRIVER_VERBOSITY_ERRORS)