From fd2cadbe4749f43551f7df90ee41837d83a6fbc4 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 4 Dec 2021 01:18:42 +0100 Subject: [PATCH] tests: varlocs workaround format-overflow errors MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In function ‘printf’, inlined from ‘handle_attr’ at varlocs.c:932:3: error: ‘%s’ directive argument is null [-Werror=format-overflow=] The warning is technically correct. A %s argument should not be NULL. Although in practice all implementations will print it as "(null)". Workaround this by simply changing the dwarf string functions to return an "" string. The test is for the correct names, either "(null)" or "" would make it fail (also remove a now unnecessary assert, the switch statement will check for unknown opcodes anyway). Signed-off-by: Mark Wielaard --- tests/ChangeLog | 10 ++++++++++ tests/varlocs.c | 11 +++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/tests/ChangeLog b/tests/ChangeLog index 9dceda8..a5673f1 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,13 @@ +2021-12-04 Mark Wielaard + + * varlocs.c (dwarf_encoding_string): Return "" instead + of NULL. + (dwarf_tag_string): Return "" instead of NULL. + (dwarf_attr_string): Return "" instead of NULL. + (dwarf_form_string): Return "" instead of NULL. + (dwarf_opcode_string): Return "" instead of NULL. + (print_expr): Remove assert. + 2021-11-18 Mark Wielaard * Makefile.am (dwfl_proc_attach_LDFLAGS): Add -rdynamic. diff --git a/tests/varlocs.c b/tests/varlocs.c index 152c655..d2c1376 100644 --- a/tests/varlocs.c +++ b/tests/varlocs.c @@ -76,7 +76,7 @@ dwarf_encoding_string (unsigned int code) if (likely (code < sizeof (known) / sizeof (known[0]))) return known[code]; - return NULL; + return ""; } static const char * @@ -88,7 +88,7 @@ dwarf_tag_string (unsigned int tag) DWARF_ALL_KNOWN_DW_TAG #undef DWARF_ONE_KNOWN_DW_TAG default: - return NULL; + return ""; } } @@ -101,7 +101,7 @@ dwarf_attr_string (unsigned int attrnum) DWARF_ALL_KNOWN_DW_AT #undef DWARF_ONE_KNOWN_DW_AT default: - return NULL; + return ""; } } @@ -114,7 +114,7 @@ dwarf_form_string (unsigned int form) DWARF_ALL_KNOWN_DW_FORM #undef DWARF_ONE_KNOWN_DW_FORM default: - return NULL; + return ""; } } @@ -160,7 +160,7 @@ dwarf_opcode_string (unsigned int code) if (likely (code < sizeof (known) / sizeof (known[0]))) return known[code]; - return NULL; + return ""; } // Forward reference for print_expr_block. @@ -198,7 +198,6 @@ print_expr (Dwarf_Attribute *attr, Dwarf_Op *expr, Dwarf_Addr addr, int depth) uint8_t atom = expr->atom; const char *opname = dwarf_opcode_string (atom); - assert (opname != NULL); switch (atom) { -- 2.7.4