We are using the reloc_nametable zero element as an char array. So make that element an actual array (we are actually after one of the next string arrays in the table).
Signed-off-by: Mark Wielaard <m...@klomp.org> --- backends/ChangeLog | 6 ++++++ backends/common-reloc.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index 7d3578b0..c85dfd2a 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,9 @@ +2020-06-16 Mark Wielard <m...@klomp.org> + + * common-reloc.c (reloc_nametable): Make zero a 1 char array. + Initialize it as an array { '\0' }. + (reloc_type_name): Access zero as an array. + 2020-06-10 Mark Wielard <m...@klomp.org> * aarch64_init.c (aarch64_init): Remove ehlen, return eh. diff --git a/backends/common-reloc.c b/backends/common-reloc.c index 096ed1c7..a91bc87d 100644 --- a/backends/common-reloc.c +++ b/backends/common-reloc.c @@ -45,14 +45,14 @@ static const struct EBLHOOK(reloc_nametable) { - char zero; + char zero[1]; #define RELOC_TYPE(type, uses) \ char name_##type[sizeof R_NAME (type)]; #include RELOC_TYPES #undef RELOC_TYPE } EBLHOOK(reloc_nametable) = { - '\0', + { '\0' }, #define RELOC_TYPE(type, uses) R_NAME (type), #include RELOC_TYPES #undef RELOC_TYPE @@ -92,7 +92,7 @@ EBLHOOK(reloc_type_name) (int reloc, #endif if (reloc >= 0 && reloc < nreloc && EBLHOOK(reloc_nameidx)[reloc] != 0) - return &reloc_namestr[EBLHOOK(reloc_nameidx)[reloc]]; + return reloc_namestr[EBLHOOK(reloc_nameidx)[reloc]]; return NULL; } -- 2.18.4