Hi Ilya,
On Mon, 2023-02-06 at 23:25 +0100, Ilya Leoshkevich via Elfutils-devel
wrote:
> clang complains:
>
> readelf.c:12205:72: error: parameter 'desc' set but not used
> [-Werror,-Wunused-but-set-parameter]
> handle_bit_registers (const Ebl_Register_Location *regloc, const void
> *desc,
> ^
>
> Apparently handle_bit_registers() is unimplemented, but one line is
> still written for the future. Silence the warning by casting desc to
> void.
Someone else also noticed this and filed a bug report, could you add
the bug URL to the commit message?
https://sourceware.org/bugzilla/show_bug.cgi?id=30084
Also can we just remove this whole function?
It is never really used since as far as I can see we don't have any
backend with a core register sets where a register doesn't have a
number of bits which isn't a multiple of 8 (only ia64 has some 1 bit
registers, but those don't seem part of the core register set).
If we do accidentally try to handle such a register having an abort is
also not very nice. Lets just warn and return/continue. Something like
the attached?
Thanks,
Mark
diff --git a/src/readelf.c b/src/readelf.c
index 51b0e8b9..50bfd1c8 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -12201,24 +12201,17 @@ handle_core_items (Elf *core, const void *desc, size_t descsz,
return colno;
}
-static unsigned int
-handle_bit_registers (const Ebl_Register_Location *regloc, const void *desc,
- unsigned int colno)
-{
- desc += regloc->offset;
-
- abort (); /* XXX */
- return colno;
-}
-
-
static unsigned int
handle_core_register (Ebl *ebl, Elf *core, int maxregname,
const Ebl_Register_Location *regloc, const void *desc,
unsigned int colno)
{
if (regloc->bits % 8 != 0)
- return handle_bit_registers (regloc, desc, colno);
+ {
+ error (0, 0, "Warning: Cannot handle register with %" PRIu8 "bits\n",
+ regloc->bits);
+ return colno;
+ }
desc += regloc->offset;