From eab8db228b6224b01bf68d66d28c94e6fd5089eb Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Tue, 2 May 2023 09:40:21 +0200 Subject: [PATCH] base: fix build errors with gcc 12 Fixes #4829 --- repos/base-foc/src/include/base/internal/parent_cap.h | 2 +- repos/base/include/util/string.h | 1 + repos/base/src/include/base/internal/crt0.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/repos/base-foc/src/include/base/internal/parent_cap.h b/repos/base-foc/src/include/base/internal/parent_cap.h index 2f5a5f2487..bcc0382582 100644 --- a/repos/base-foc/src/include/base/internal/parent_cap.h +++ b/repos/base-foc/src/include/base/internal/parent_cap.h @@ -30,7 +30,7 @@ namespace Genode { static inline Parent_capability parent_cap() { - Cap_index::id_t const local_name = (Cap_index::id_t)_parent_cap; + Cap_index::id_t const local_name = (Cap_index::id_t)_parent_cap[0]; static Cap_index *i = cap_map().insert(local_name, Foc::PARENT_CAP); /* diff --git a/repos/base/include/util/string.h b/repos/base/include/util/string.h index 8228e4ab25..071bbe28c3 100644 --- a/repos/base/include/util/string.h +++ b/repos/base/include/util/string.h @@ -111,6 +111,7 @@ namespace Genode { /** * Return length of null-terminated string in bytes */ + __attribute((optimize("no-tree-loop-distribute-patterns"))) inline size_t strlen(const char *s) { size_t res = 0; diff --git a/repos/base/src/include/base/internal/crt0.h b/repos/base/src/include/base/internal/crt0.h index 30f118b8dc..56630dbcbd 100644 --- a/repos/base/src/include/base/internal/crt0.h +++ b/repos/base/src/include/base/internal/crt0.h @@ -41,6 +41,6 @@ extern unsigned char _initial_stack_base[]; * capability prior the execution of the main thread. It corresponds to the * '_parent_cap' symbol defined in 'src/ld/genode.ld'. */ -extern unsigned long _parent_cap; +extern unsigned long _parent_cap[]; #endif /* _INCLUDE__BASE__CRT0_H_ */