From c6570d037a1def5d7d25d832b28ca3ce7398657c Mon Sep 17 00:00:00 2001 From: midipix Date: Wed, 20 Feb 2019 18:41:52 -0500 Subject: utility api's: added mdso_output_expsyms_crc32(), mdso_output_expsyms_crc64(). --- src/output/mdso_output_expsyms_crc.c | 76 ++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/output/mdso_output_expsyms_crc.c (limited to 'src') diff --git a/src/output/mdso_output_expsyms_crc.c b/src/output/mdso_output_expsyms_crc.c new file mode 100644 index 0000000..45ff702 --- /dev/null +++ b/src/output/mdso_output_expsyms_crc.c @@ -0,0 +1,76 @@ +/****************************************************************/ +/* mdso: midipix dso scavenger */ +/* Copyright (C) 2015--2019 Z. Gilboa */ +/* Released under GPLv2 and GPLv3; see COPYING.MDSO. */ +/****************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include "mdso_driver_impl.h" +#include "mdso_dprintf_impl.h" +#include "mdso_errinfo_impl.h" + +static int pretty_expsym_crc32( + int fdout, + const char * name) +{ + return mdso_dprintf( + fdout,"%" PRIx32 " %s\n", + mdso_crc32_mbstr((const unsigned char *)name,0), + name); +} + +static int pretty_expsym_crc64( + int fdout, + const char * name) +{ + return mdso_dprintf( + fdout,"%" PRIx64 " %s\n", + mdso_crc64_mbstr((const unsigned char *)name,0), + name); +} + +int mdso_output_expsyms_crc32( + const struct mdso_driver_ctx * dctx, + const struct mdso_unit_ctx * uctx) +{ + int fdout; + const char * const * sym; + + fdout = mdso_driver_fdout(dctx); + + if (!uctx->syms[0]) + return 0; + + for (sym=uctx->syms; *sym; sym++) + if ((pretty_expsym_crc32(fdout,*sym)) < 0) + return MDSO_SYSTEM_ERROR(dctx); + + return 0; +} + +int mdso_output_expsyms_crc64( + const struct mdso_driver_ctx * dctx, + const struct mdso_unit_ctx * uctx) +{ + int fdout; + const char * const * sym; + + fdout = mdso_driver_fdout(dctx); + + if (!uctx->syms[0]) + return 0; + + for (sym=uctx->syms; *sym; sym++) + if ((pretty_expsym_crc64(fdout,*sym)) < 0) + return MDSO_SYSTEM_ERROR(dctx); + + return 0; +} -- cgit v1.2.3