All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] package/xenomai: fix build with glibc >= 2.34
@ 2021-12-18  9:56 Fabrice Fontaine
  2021-12-18 21:17 ` Yann E. MORIN
  0 siblings, 1 reply; 2+ messages in thread
From: Fabrice Fontaine @ 2021-12-18  9:56 UTC (permalink / raw)
  To: buildroot; +Cc: Romain Naour, Fabrice Fontaine, Thomas De Schampheleire

Fix the following build failure with glibc >= 2.34:

In file included from timerobj.c:32:
In function 'threadobj_set_current',
    inlined from 'server_prologue' at timerobj.c:94:2:
../../include/copperplate/threadobj.h:252:9: error: 'pthread_setspecific' expecting 1 byte in a region of size 0 [-Werror=stringop-overread]
  252 |         pthread_setspecific(threadobj_tskey, thobj);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fixes:
 - http://autobuild.buildroot.org/results/ed93f916eda304b30f320816c85d1b0d4488c699

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 ...id-addresses-for-pthread_setspecific.patch | 57 +++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch

diff --git a/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch b/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch
new file mode 100644
index 0000000000..0c39a4ecf7
--- /dev/null
+++ b/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch
@@ -0,0 +1,57 @@
+From 627d488db3aa71406e32d4d8934629e8b0f35905 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sat, 16 Oct 2021 15:46:33 +0200
+Subject: [PATCH] lib/{cobalt,copperplate}: Use valid addresses for
+ pthread_setspecific
+
+glibx 2.34 and newer annotated pthread_setspecific in a way that gcc-11
+complains about non-NULL pointers that are outside of what is considered
+valid. So use dummy addresses instead. namely the related pthread keys.
+Those pointers will never be dereferenced in both use cases.
+
+See also https://sourceware.org/bugzilla/show_bug.cgi?id=28458.
+
+Reported-by: Vitaly Chikunov <vt@altlinux.org>
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+
+[Retrieved from:
+https://source.denx.de/Xenomai/xenomai/-/commit/627d488db3aa71406e32d4d8934629e8b0f35905]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ include/copperplate/threadobj.h | 6 +++++-
+ lib/cobalt/printf.c             | 2 +-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/include/copperplate/threadobj.h b/include/copperplate/threadobj.h
+index 7e6904f4c..c8363415b 100644
+--- a/include/copperplate/threadobj.h
++++ b/include/copperplate/threadobj.h
+@@ -173,7 +173,11 @@ void threadobj_save_timeout(struct threadobj_corespec *corespec,
+ #define __THREAD_M_SPARE6	(1 << 22)
+ #define __THREAD_M_SPARE7	(1 << 23)
+ 
+-#define THREADOBJ_IRQCONTEXT    ((struct threadobj *)-2UL)
++/*
++ * We need to use a valid address here. The object will never be dereferenced
++ * when it is identified as IRQ context, so the pthread key itself is fine.
++ */
++#define THREADOBJ_IRQCONTEXT	((struct threadobj *)&threadobj_tskey)
+ 
+ struct traceobj;
+ struct syncobj;
+diff --git a/lib/cobalt/printf.c b/lib/cobalt/printf.c
+index 8982ddc93..0aa5940c6 100644
+--- a/lib/cobalt/printf.c
++++ b/lib/cobalt/printf.c
+@@ -729,7 +729,7 @@ done:
+ 	pthread_cond_init(&printer_wakeup, NULL);
+ 	spawn_printer_thread();
+ 	/* We just need a non-zero TSD to trigger the dtor upon unwinding. */
+-	pthread_setspecific(cleanup_key, (void *)1);
++	pthread_setspecific(cleanup_key, &cleanup_key);
+ 
+ 	atexit(rt_print_flush_buffers);
+ }
+-- 
+GitLab
+
-- 
2.33.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/xenomai: fix build with glibc >= 2.34
  2021-12-18  9:56 [Buildroot] [PATCH 1/1] package/xenomai: fix build with glibc >= 2.34 Fabrice Fontaine
@ 2021-12-18 21:17 ` Yann E. MORIN
  0 siblings, 0 replies; 2+ messages in thread
From: Yann E. MORIN @ 2021-12-18 21:17 UTC (permalink / raw)
  To: Fabrice Fontaine; +Cc: Romain Naour, Thomas De Schampheleire, buildroot

Fabrice, All,

On 2021-12-18 10:56 +0100, Fabrice Fontaine spake thusly:
> Fix the following build failure with glibc >= 2.34:
> 
> In file included from timerobj.c:32:
> In function 'threadobj_set_current',
>     inlined from 'server_prologue' at timerobj.c:94:2:
> ../../include/copperplate/threadobj.h:252:9: error: 'pthread_setspecific' expecting 1 byte in a region of size 0 [-Werror=stringop-overread]
>   252 |         pthread_setspecific(threadobj_tskey, thobj);
>       |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> Fixes:
>  - http://autobuild.buildroot.org/results/ed93f916eda304b30f320816c85d1b0d4488c699
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  ...id-addresses-for-pthread_setspecific.patch | 57 +++++++++++++++++++
>  1 file changed, 57 insertions(+)
>  create mode 100644 package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch
> 
> diff --git a/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch b/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch
> new file mode 100644
> index 0000000000..0c39a4ecf7
> --- /dev/null
> +++ b/package/xenomai/3.0.10/0003-lib-cobalt-copperplate-Use-valid-addresses-for-pthread_setspecific.patch
> @@ -0,0 +1,57 @@
> +From 627d488db3aa71406e32d4d8934629e8b0f35905 Mon Sep 17 00:00:00 2001
> +From: Jan Kiszka <jan.kiszka@siemens.com>
> +Date: Sat, 16 Oct 2021 15:46:33 +0200
> +Subject: [PATCH] lib/{cobalt,copperplate}: Use valid addresses for
> + pthread_setspecific
> +
> +glibx 2.34 and newer annotated pthread_setspecific in a way that gcc-11
> +complains about non-NULL pointers that are outside of what is considered
> +valid. So use dummy addresses instead. namely the related pthread keys.
> +Those pointers will never be dereferenced in both use cases.
> +
> +See also https://sourceware.org/bugzilla/show_bug.cgi?id=28458.
> +
> +Reported-by: Vitaly Chikunov <vt@altlinux.org>
> +Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> +
> +[Retrieved from:
> +https://source.denx.de/Xenomai/xenomai/-/commit/627d488db3aa71406e32d4d8934629e8b0f35905]
> +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> +---
> + include/copperplate/threadobj.h | 6 +++++-
> + lib/cobalt/printf.c             | 2 +-
> + 2 files changed, 6 insertions(+), 2 deletions(-)
> +
> +diff --git a/include/copperplate/threadobj.h b/include/copperplate/threadobj.h
> +index 7e6904f4c..c8363415b 100644
> +--- a/include/copperplate/threadobj.h
> ++++ b/include/copperplate/threadobj.h
> +@@ -173,7 +173,11 @@ void threadobj_save_timeout(struct threadobj_corespec *corespec,
> + #define __THREAD_M_SPARE6	(1 << 22)
> + #define __THREAD_M_SPARE7	(1 << 23)
> + 
> +-#define THREADOBJ_IRQCONTEXT    ((struct threadobj *)-2UL)
> ++/*
> ++ * We need to use a valid address here. The object will never be dereferenced
> ++ * when it is identified as IRQ context, so the pthread key itself is fine.
> ++ */
> ++#define THREADOBJ_IRQCONTEXT	((struct threadobj *)&threadobj_tskey)
> + 
> + struct traceobj;
> + struct syncobj;
> +diff --git a/lib/cobalt/printf.c b/lib/cobalt/printf.c
> +index 8982ddc93..0aa5940c6 100644
> +--- a/lib/cobalt/printf.c
> ++++ b/lib/cobalt/printf.c
> +@@ -729,7 +729,7 @@ done:
> + 	pthread_cond_init(&printer_wakeup, NULL);
> + 	spawn_printer_thread();
> + 	/* We just need a non-zero TSD to trigger the dtor upon unwinding. */
> +-	pthread_setspecific(cleanup_key, (void *)1);
> ++	pthread_setspecific(cleanup_key, &cleanup_key);
> + 
> + 	atexit(rt_print_flush_buffers);
> + }
> +-- 
> +GitLab
> +
> -- 
> 2.33.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-12-18 21:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-18  9:56 [Buildroot] [PATCH 1/1] package/xenomai: fix build with glibc >= 2.34 Fabrice Fontaine
2021-12-18 21:17 ` Yann E. MORIN

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.