libbacktrace: avoid -Wpointer-arith errors

Based on patch from Kirill Müller.

	* configure.ac (ACX_PROG_CC_WARNING_OPTS): Add -Wpointer-arith.
	* pecoff.c (coff_add): Cast void pointers.
	* xcoff.c (xcoff_add): Likewise.
	* configure: Regenerate.
This commit is contained in:
Ian Lance Taylor 2024-08-05 16:46:03 -07:00
parent ecb6153e3b
commit 3a51aaf5f4
4 changed files with 11 additions and 6 deletions

View File

@ -12385,7 +12385,8 @@ save_CFLAGS="$CFLAGS"
for real_option in -W -Wall -Wwrite-strings -Wstrict-prototypes \ for real_option in -W -Wall -Wwrite-strings -Wstrict-prototypes \
-Wmissing-prototypes -Wold-style-definition \ -Wmissing-prototypes -Wold-style-definition \
-Wmissing-format-attribute -Wcast-qual \ -Wmissing-format-attribute -Wcast-qual \
-Wno-attributes -Wno-unknown-attributes; do -Wno-attributes -Wno-unknown-attributes \
-Wpointer-arith; do
# Do the check with the no- prefix removed since gcc silently # Do the check with the no- prefix removed since gcc silently
# accepts any -Wno-* option on purpose # accepts any -Wno-* option on purpose
case $real_option in case $real_option in

View File

@ -145,7 +145,8 @@ AC_SUBST(EXTRA_FLAGS)
ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \ ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \
-Wmissing-prototypes -Wold-style-definition \ -Wmissing-prototypes -Wold-style-definition \
-Wmissing-format-attribute -Wcast-qual \ -Wmissing-format-attribute -Wcast-qual \
-Wno-attributes -Wno-unknown-attributes], -Wno-attributes -Wno-unknown-attributes \
-Wpointer-arith],
[WARN_FLAGS]) [WARN_FLAGS])
AC_ARG_ENABLE([werror], AC_ARG_ENABLE([werror],

View File

@ -704,7 +704,7 @@ coff_add (struct backtrace_state *state, int descriptor,
magic_ok = memcmp (magic, "PE\0", 4) == 0; magic_ok = memcmp (magic, "PE\0", 4) == 0;
fhdr_off += 4; fhdr_off += 4;
memcpy (&fhdr, fhdr_view.data + 4, sizeof fhdr); memcpy (&fhdr, (const unsigned char *) fhdr_view.data + 4, sizeof fhdr);
} }
else else
{ {
@ -738,7 +738,7 @@ coff_add (struct backtrace_state *state, int descriptor,
sects_view_valid = 1; sects_view_valid = 1;
opt_hdr = (const b_coff_optional_header *) sects_view.data; opt_hdr = (const b_coff_optional_header *) sects_view.data;
sects = (const b_coff_section_header *) sects = (const b_coff_section_header *)
(sects_view.data + fhdr.size_of_optional_header); ((const unsigned char *) sects_view.data + fhdr.size_of_optional_header);
is_64 = 0; is_64 = 0;
memset (&image_base, 0, sizeof image_base); memset (&image_base, 0, sizeof image_base);
@ -781,7 +781,8 @@ coff_add (struct backtrace_state *state, int descriptor,
goto fail; goto fail;
syms_view_valid = 1; syms_view_valid = 1;
str_size = coff_read4 (syms_view.data + syms_size); str_size = coff_read4 ((const unsigned char *) syms_view.data
+ syms_size);
str_off = syms_off + syms_size; str_off = syms_off + syms_size;

View File

@ -1203,7 +1203,9 @@ xcoff_add (struct backtrace_state *state, int descriptor, off_t offset,
goto fail; goto fail;
syms_view_valid = 1; syms_view_valid = 1;
memcpy (&str_size, syms_view.data + syms_size, 4); memcpy (&str_size,
(const unsigned char *) syms_view.data + syms_size,
4);
str_off = fhdr.f_symptr + syms_size; str_off = fhdr.f_symptr + syms_size;