From a2500c761ba3740dd416eaebac808f7c8d93aef7 Mon Sep 17 00:00:00 2001 From: midipix Date: Wed, 28 Feb 2024 21:33:56 +0000 Subject: ar mode: -Wdlsyms: require an accompanying -Wdlunit argument. --- include/slibtool/slibtool.h | 1 + src/logic/slbt_exec_ar.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) 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) -- cgit v1.2.3