summaryrefslogtreecommitdiff
path: root/config/coreboot/fam15h/patches
diff options
context:
space:
mode:
authorAlper Nebi Yasak <alpernebiyasak@gmail.com>2025-04-29 19:50:04 +0300
committerAlper Nebi Yasak <alpernebiyasak@gmail.com>2025-04-29 19:54:12 +0300
commit685685ab0e4f86927fbd9b1c332a7c39c457846c (patch)
tree3a737d634028d144efed6ab48a70f1fedbe2f3ee /config/coreboot/fam15h/patches
parent02110f2bc1df6f856dcd2d6a20d4ced58c9ec497 (diff)
coreboot: fam15h: Add patches to fix build with GCC 15 as host compiler
Building the fam15h tree results in one of the same nonstring errors we also had when building the default tree. Copy the relevant patch from the default tree, while dropping a hunk that we don't need in this old version. Another build error is about bool being a reserved keyword now: .../lbmk/src/coreboot/fam15h/util/romcc/romcc.c:7140:13: error: 'bool' cannot be used here 7140 | static void bool(struct compile_state *state, struct triple *def) | ^~~~ .../lbmk/src/coreboot/fam15h/util/romcc/romcc.c:7140:13: note: 'bool' is a keyword with '-std=c23' onwards .../lbmk/src/coreboot/fam15h/util/romcc/romcc.c:7140:18: error: expected identifier or '(' before 'struct' 7140 | static void bool(struct compile_state *state, struct triple *def) | ^~~~~~ .../lbmk/src/coreboot/fam15h/util/romcc/romcc.c: In function 'mkcond_expr': .../lbmk/src/coreboot/fam15h/util/romcc/romcc.c:7708:19: error: expected ')' before ',' token 7708 | bool(state, test); | ^ | ) [...] Fix that by adding a patch that renames the function to bool_(). Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Diffstat (limited to 'config/coreboot/fam15h/patches')
-rw-r--r--config/coreboot/fam15h/patches/0013-Fix-build-with-GCC-15-as-host-compiler.patch39
-rw-r--r--config/coreboot/fam15h/patches/0014-util-romcc-Fix-build-with-GCC-15.patch119
2 files changed, 158 insertions, 0 deletions
diff --git a/config/coreboot/fam15h/patches/0013-Fix-build-with-GCC-15-as-host-compiler.patch b/config/coreboot/fam15h/patches/0013-Fix-build-with-GCC-15-as-host-compiler.patch
new file mode 100644
index 00000000..b08c9edf
--- /dev/null
+++ b/config/coreboot/fam15h/patches/0013-Fix-build-with-GCC-15-as-host-compiler.patch
@@ -0,0 +1,39 @@
+From 281151d85240bd8a60545b6415e0f44ce6a2af33 Mon Sep 17 00:00:00 2001
+From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
+Date: Tue, 29 Apr 2025 17:31:13 +0300
+Subject: [PATCH] WIP: Fix build with GCC 15 as host compiler
+
+GCC 15 now considers the unterminated-string-initialization warning as
+part of -Werror by default. Coreboot compiles host utilities with the
+system compiler, which results in getting this error in some files.
+
+Mark a hexadecimal translation table in cbfstool code as "nonstring" to
+avoid the warning-turned-error.
+
+The bios log prefixes are non-null-terminated as well, but I couldn't
+figure out how to mark them as non-strings. Temporarily disable the
+warning with a pragma to avoid the error. That pragma causes an error on
+GCC 14, so disable pragma warnings along with it to avoid that as well.
+
+Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
+---
+ util/cbfstool/common.c | 2 +-
+ 1 files changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c
+index 7154bc9d5425..cb08c9e8ec11 100644
+--- a/util/cbfstool/common.c
++++ b/util/cbfstool/common.c
+@@ -192,7 +192,7 @@ uint64_t intfiletype(const char *name)
+
+ char *bintohex(uint8_t *data, size_t len)
+ {
+- static const char translate[16] = "0123456789abcdef";
++ static const char translate[16] __attribute__((__nonstring__)) = "0123456789abcdef";
+
+ char *result = malloc(len * 2 + 1);
+ if (result == NULL)
+
+--
+2.49.0
+
diff --git a/config/coreboot/fam15h/patches/0014-util-romcc-Fix-build-with-GCC-15.patch b/config/coreboot/fam15h/patches/0014-util-romcc-Fix-build-with-GCC-15.patch
new file mode 100644
index 00000000..d9de94c6
--- /dev/null
+++ b/config/coreboot/fam15h/patches/0014-util-romcc-Fix-build-with-GCC-15.patch
@@ -0,0 +1,119 @@
+From 74dc3c0a4603bc635c8bc5e95490cdf168af5f41 Mon Sep 17 00:00:00 2001
+From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
+Date: Tue, 29 Apr 2025 19:46:14 +0300
+Subject: [PATCH] util/romcc: Fix build with GCC 15
+
+With GCC 15, we get build errors complaining bool is a reserved keyword,
+so cannot be used as a function name. Rename our bool() to bool_().
+
+Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
+---
+ util/romcc/romcc.c | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/util/romcc/romcc.c b/util/romcc/romcc.c
+index 378bfc50f290..b375e0fc83cb 100644
+--- a/util/romcc/romcc.c
++++ b/util/romcc/romcc.c
+@@ -7137,7 +7137,7 @@ static void integral(struct compile_state *state, struct triple *def)
+ }
+
+
+-static void bool(struct compile_state *state, struct triple *def)
++static void bool_(struct compile_state *state, struct triple *def)
+ {
+ if (!TYPE_ARITHMETIC(def->type->type) &&
+ ((def->type->type & TYPE_MASK) != TYPE_POINTER)) {
+@@ -7705,7 +7705,7 @@ static struct triple *mkcond_expr(
+ struct triple *def, *val, *var, *jmp1, *jmp2, *top, *mid, *end;
+ struct type *result_type;
+ unsigned int left_type, right_type;
+- bool(state, test);
++ bool_(state, test);
+ left_type = left->type->type;
+ right_type = right->type->type;
+ result_type = 0;
+@@ -11036,7 +11036,7 @@ static struct triple *unary_expr(struct compile_state *state)
+ case TOK_BANG:
+ eat(state, TOK_BANG);
+ right = read_expr(state, cast_expr(state));
+- bool(state, right);
++ bool_(state, right);
+ def = lfalse_expr(state, right);
+ break;
+ case TOK_SIZEOF:
+@@ -11363,10 +11363,10 @@ static struct triple *land_expr(struct compile_state *state)
+ while(peek(state) == TOK_LOGAND) {
+ struct triple *left, *right;
+ left = read_expr(state, def);
+- bool(state, left);
++ bool_(state, left);
+ eat(state, TOK_LOGAND);
+ right = read_expr(state, or_expr(state));
+- bool(state, right);
++ bool_(state, right);
+
+ def = mkland_expr(state,
+ ltrue_expr(state, left),
+@@ -11382,10 +11382,10 @@ static struct triple *lor_expr(struct compile_state *state)
+ while(peek(state) == TOK_LOGOR) {
+ struct triple *left, *right;
+ left = read_expr(state, def);
+- bool(state, left);
++ bool_(state, left);
+ eat(state, TOK_LOGOR);
+ right = read_expr(state, land_expr(state));
+- bool(state, right);
++ bool_(state, right);
+
+ def = mklor_expr(state,
+ ltrue_expr(state, left),
+@@ -11400,7 +11400,7 @@ static struct triple *conditional_expr(struct compile_state *state)
+ def = lor_expr(state);
+ if (peek(state) == TOK_QUEST) {
+ struct triple *test, *left, *right;
+- bool(state, def);
++ bool_(state, def);
+ test = ltrue_expr(state, read_expr(state, def));
+ eat(state, TOK_QUEST);
+ left = read_expr(state, expr(state));
+@@ -11676,7 +11676,7 @@ static void if_statement(struct compile_state *state, struct triple *first)
+ eat(state, TOK_IF);
+ eat(state, TOK_LPAREN);
+ test = expr(state);
+- bool(state, test);
++ bool_(state, test);
+ /* Cleanup and invert the test */
+ test = lfalse_expr(state, read_expr(state, test));
+ eat(state, TOK_RPAREN);
+@@ -11719,7 +11719,7 @@ static void for_statement(struct compile_state *state, struct triple *first)
+ eat(state, TOK_SEMI);
+ if (peek(state) != TOK_SEMI) {
+ test = expr(state);
+- bool(state, test);
++ bool_(state, test);
+ test = ltrue_expr(state, read_expr(state, test));
+ }
+ eat(state, TOK_SEMI);
+@@ -11767,7 +11767,7 @@ static void while_statement(struct compile_state *state, struct triple *first)
+ eat(state, TOK_WHILE);
+ eat(state, TOK_LPAREN);
+ test = expr(state);
+- bool(state, test);
++ bool_(state, test);
+ test = ltrue_expr(state, read_expr(state, test));
+ eat(state, TOK_RPAREN);
+ /* Generate the needed pieces */
+@@ -11818,7 +11818,7 @@ static void do_statement(struct compile_state *state, struct triple *first)
+ eat(state, TOK_WHILE);
+ eat(state, TOK_LPAREN);
+ test = read_expr(state, expr(state));
+- bool(state, test);
++ bool_(state, test);
+ eat(state, TOK_RPAREN);
+ eat(state, TOK_SEMI);
+ /* Thread the pieces together */
+
+--
+2.49.0
+