[Skiboot] [PATCH] hdata/test: Build with -Wno-error=unterminated-string-initialization

Reza Arbab arbab at linux.ibm.com
Thu Jan 30 03:01:04 AEDT 2025


Six bytes of the HDIF header are used as an eye catcher:

  struct HDIF_common_hdr {
  	...
  	char    id[6];          /* eye catcher string */
  	...
  }

We assign all six characters of this string without a terminating nul,
so now that GCC 15 enables -Werror=unterminated-string-initialization by
default, the build breaks:

  In file included from hdata/test/../spira.h:7,
                   from hdata/test/../cpu-common.c:5,
                   from hdata/test/hdata_to_dt.c:148:
  hdata/test/../spira.c:35:32: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-initialization]
     35 |         .hdr = HDIF_SIMPLE_HDR("PROCIN", 1, struct proc_init_data),
        |                                ^~~~~~~~
  hdata/test/../hdif.h:45:68: note: in definition of macro 'HDIF_ID'
     45 | #define HDIF_ID(_id)            .d1f0 = CPU_TO_BE16(0xd1f0), .id = _id
        |                                                                    ^~~
  hdata/test/../spira.c:35:16: note: in expansion of macro 'HDIF_SIMPLE_HDR'
     35 |         .hdr = HDIF_SIMPLE_HDR("PROCIN", 1, struct proc_init_data),
        |                ^~~~~~~~~~~~~~~
  hdata/test/../spira.h:797:33: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-initialization]
    797 | #define CPU_CTL_HDIF_SIG        "CPUCTL"
        |                                 ^~~~~~~~
  hdata/test/../hdif.h:45:68: note: in definition of macro 'HDIF_ID'
     45 | #define HDIF_ID(_id)            .d1f0 = CPU_TO_BE16(0xd1f0), .id = _id
        |                                                                    ^~~
  hdata/test/../spira.c:73:16: note: in expansion of macro 'HDIF_SIMPLE_HDR'
     73 |         .hdr = HDIF_SIMPLE_HDR(CPU_CTL_HDIF_SIG, 2, struct cpu_ctl_init_data),
        |                ^~~~~~~~~~~~~~~
  hdata/test/../spira.c:73:32: note: in expansion of macro 'CPU_CTL_HDIF_SIG'
     73 |         .hdr = HDIF_SIMPLE_HDR(CPU_CTL_HDIF_SIG, 2, struct cpu_ctl_init_data),
        |                                ^~~~~~~~~~~~~~~~
  hdata/test/../spira.h:30:33: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-initialization]
     30 | #define SPIRAH_HDIF_SIG         "SPIRAH"
        |                                 ^~~~~~~~
  hdata/test/../hdif.h:45:68: note: in definition of macro 'HDIF_ID'
     45 | #define HDIF_ID(_id)            .d1f0 = CPU_TO_BE16(0xd1f0), .id = _id
        |                                                                    ^~~
  hdata/test/../spira.c:126:16: note: in expansion of macro 'HDIF_SIMPLE_HDR'
    126 |         .hdr = HDIF_SIMPLE_HDR(SPIRAH_HDIF_SIG, SPIRAH_VERSION, struct spirah),
        |                ^~~~~~~~~~~~~~~
  hdata/test/../spira.c:126:32: note: in expansion of macro 'SPIRAH_HDIF_SIG'
    126 |         .hdr = HDIF_SIMPLE_HDR(SPIRAH_HDIF_SIG, SPIRAH_VERSION, struct spirah),
        |                                ^~~~~~~~~~~~~~~

To ignore the spurious error, build the single testcase that trips this
with -Wno-error=unterminated-string-initialization.

Signed-off-by: Reza Arbab <arbab at linux.ibm.com>
---
 hdata/test/Makefile.check | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hdata/test/Makefile.check b/hdata/test/Makefile.check
index 81d55614a5b7..5950bf95f399 100644
--- a/hdata/test/Makefile.check
+++ b/hdata/test/Makefile.check
@@ -13,6 +13,8 @@ coverage: hdata-coverage
 LCOV_EXCLUDE += $(HDATA_TEST:%=%.c) hdata/test/stubs.c
 LCOV_EXCLUDE += /usr/include/valgrind/memcheck.h
 
+hdata/test/hdata_to_dt hdata/test/hdata_to_dt-gcov: HOSTCFLAGS += $(call try-cflag,$(HOSTCC),-Wno-error=unterminated-string-initialization)
+
 hdata/test/hdata_to_dt-check: hdata/test/hdata_to_dt-check-q
 hdata/test/hdata_to_dt-check: hdata/test/hdata_to_dt-check-dt
 
-- 
2.43.5



More information about the Skiboot mailing list