* [Buildroot] [PATCH v2 0/2] Add option to ban textrels
@ 2024-05-29 18:22 J. Neuschäfer via buildroot
2024-05-29 18:22 ` [Buildroot] [PATCH v2 1/2] Config.in: ban textrels on musl toolchains J. Neuschäfer via buildroot
2024-05-29 18:22 ` [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb J. Neuschäfer via buildroot
0 siblings, 2 replies; 9+ messages in thread
From: J. Neuschäfer via buildroot @ 2024-05-29 18:22 UTC (permalink / raw)
To: buildroot; +Cc: J. Neuschäfer, Thomas Petazzoni
Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
---
Changes in v2:
- Slightly different wording
- Enable the option by default on musl toolchains
- Add patch to fix build of micropython
Link to v1:
- https://lore.kernel.org/r/20240419-ztext-v1-1-a8d5c2cfcf57@gmx.net
---
J. Neuschäfer (2):
Config.in: ban textrels on musl toolchains
micropython: Add patch to avoid textrel on arm/thumb
Config.in | 14 +++
package/Makefile.in | 4 +
...-Make-non-Thumb2-long-jump-workaround-opt.patch | 130 +++++++++++++++++++++
3 files changed, 148 insertions(+)
---
base-commit: d506e232e7388e70622a1c1b2a3069367d7b305b
change-id: 20240417-ztext-5accbab61c0a
Best regards,
--
J. Neuschäfer <j.neuschaefer@gmx.net>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 1/2] Config.in: ban textrels on musl toolchains
2024-05-29 18:22 [Buildroot] [PATCH v2 0/2] Add option to ban textrels J. Neuschäfer via buildroot
@ 2024-05-29 18:22 ` J. Neuschäfer via buildroot
2024-06-01 20:59 ` Yann E. MORIN
2024-05-29 18:22 ` [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb J. Neuschäfer via buildroot
1 sibling, 1 reply; 9+ messages in thread
From: J. Neuschäfer via buildroot @ 2024-05-29 18:22 UTC (permalink / raw)
To: buildroot; +Cc: J. Neuschäfer, Thomas Petazzoni
musl-libc doesn't support TEXTRELs[1] and programs with TEXTRELs will
crash on start-up under musl.
This patch forbids the use of TEXTRELs on musl, but adds an option to
either forbid them on other libcs as well, or allow them on musl.
[1]: https://www.openwall.com/lists/musl/2020/09/25/4
Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
---
v2:
- slightly different wording
- default to yes on musl toolchains
- fix check-package warnings
- depends on BR2_SHARED_LIBS -> depends on !BR2_STATIC_LIBS
---
Config.in | 14 ++++++++++++++
package/Makefile.in | 4 ++++
2 files changed, 18 insertions(+)
diff --git a/Config.in b/Config.in
index b5a94325c4..92e89ed32d 100644
--- a/Config.in
+++ b/Config.in
@@ -910,6 +910,20 @@ endchoice
comment "RELocation Read Only (RELRO) needs shared libraries"
depends on !BR2_SHARED_LIBS
+config BR2_LINK_ZTEXT
+ bool "Disallow text section relocations (TEXTRELs)"
+ default BR2_TOOLCHAIN_USES_MUSL
+ depends on !BR2_STATIC_LIBS
+ help
+ Pass "-z text" to the linker to detect TEXTRELs and throw an
+ error if they occur.
+
+ This is recommended when building a system with musl-libc,
+ because TEXTRELs are not supported on musl-libc's dynamic
+ loader and will result in a run-time crash:
+
+ https://www.openwall.com/lists/musl/2020/09/25/4
+
config BR2_FORTIFY_SOURCE_ARCH_SUPPORTS
bool
default y
diff --git a/package/Makefile.in b/package/Makefile.in
index f415e55f84..68efd39dba 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -149,6 +149,10 @@ endif
TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS))
+ifeq ($(BR2_LINK_ZTEXT),y)
+TARGET_LDFLAGS += -z text
+endif
+
# By design, _FORTIFY_SOURCE requires gcc optimization to be enabled.
# Therefore, we need to pass _FORTIFY_SOURCE and the optimization level
# through the same mechanism, i.e currently through CFLAGS. Passing
--
2.43.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb
2024-05-29 18:22 [Buildroot] [PATCH v2 0/2] Add option to ban textrels J. Neuschäfer via buildroot
2024-05-29 18:22 ` [Buildroot] [PATCH v2 1/2] Config.in: ban textrels on musl toolchains J. Neuschäfer via buildroot
@ 2024-05-29 18:22 ` J. Neuschäfer via buildroot
2024-06-01 20:51 ` Yann E. MORIN
2024-06-08 17:01 ` Peter Korsgaard
1 sibling, 2 replies; 9+ messages in thread
From: J. Neuschäfer via buildroot @ 2024-05-29 18:22 UTC (permalink / raw)
To: buildroot; +Cc: J. Neuschäfer, Thomas Petazzoni
Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
---
...-Make-non-Thumb2-long-jump-workaround-opt.patch | 130 +++++++++++++++++++++
1 file changed, 130 insertions(+)
diff --git a/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch b/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch
new file mode 100644
index 0000000000..f41c11371a
--- /dev/null
+++ b/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch
@@ -0,0 +1,130 @@
+From 7b050b366b7dacfb43779c51702a892d8f1873d0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=2E=20Neusch=C3=A4fer?= <j.ne@posteo.net>
+Date: Sun, 2 Apr 2023 19:58:42 +0200
+Subject: [PATCH] py/nlrthumb: Make non-Thumb2 long-jump workaround opt-in.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Although the original motivation given for the workaround[1] is correct,
+nlr.o and nlrthumb.o are linked with a small enough distance that the
+problem does not occur, and the workaround isn't necessary. The distance
+between the b instruction and its target (nlr_push_tail) is just 64
+bytes[2], well within the ±2046 byte range addressable by an
+unconditional branch instruction in Thumb mode.
+
+The workaround induces a relocation in the text section (textrel), which
+isn't supported everywhere, notably not on musl-libc[3], where it causes
+a crash on start-up. With the workaround removed, micropython works on an
+ARMv5T Linux system built with musl-libc.
+
+This commit changes nlrthumb.c to use a direct jump by default, but
+leaves the long jump workaround as an option for those cases where it's
+actually needed.
+
+[1]: commit dd376a239dc4f47b0ee7866810fcda151f3cf6dd
+
+Author: Damien George <damien.p.george@gmail.com>
+Date: Fri Sep 1 15:25:29 2017 +1000
+
+ py/nlrthumb: Get working again on standard Thumb arch (ie not Thumb2).
+
+ "b" on Thumb might not be long enough for the jump to nlr_push_tail so
+ it must be done indirectly.
+
+[2]: Excerpt from objdump -d micropython:
+
+000095c4 <nlr_push_tail>:
+ 95c4: b510 push {r4, lr}
+ 95c6: 0004 movs r4, r0
+ 95c8: f02d fd42 bl 37050 <mp_thread_get_state>
+ 95cc: 6943 ldr r3, [r0, #20]
+ 95ce: 6023 str r3, [r4, #0]
+ 95d0: 6144 str r4, [r0, #20]
+ 95d2: 2000 movs r0, #0
+ 95d4: bd10 pop {r4, pc}
+
+000095d6 <nlr_pop>:
+ 95d6: b510 push {r4, lr}
+ 95d8: f02d fd3a bl 37050 <mp_thread_get_state>
+ 95dc: 6943 ldr r3, [r0, #20]
+ 95de: 681b ldr r3, [r3, #0]
+ 95e0: 6143 str r3, [r0, #20]
+ 95e2: bd10 pop {r4, pc}
+
+000095e4 <nlr_push>:
+ 95e4: 60c4 str r4, [r0, #12]
+ 95e6: 6105 str r5, [r0, #16]
+ 95e8: 6146 str r6, [r0, #20]
+ 95ea: 6187 str r7, [r0, #24]
+ 95ec: 4641 mov r1, r8
+ 95ee: 61c1 str r1, [r0, #28]
+ 95f0: 4649 mov r1, r9
+ 95f2: 6201 str r1, [r0, #32]
+ 95f4: 4651 mov r1, sl
+ 95f6: 6241 str r1, [r0, #36] @ 0x24
+ 95f8: 4659 mov r1, fp
+ 95fa: 6281 str r1, [r0, #40] @ 0x28
+ 95fc: 4669 mov r1, sp
+ 95fe: 62c1 str r1, [r0, #44] @ 0x2c
+ 9600: 4671 mov r1, lr
+ 9602: 6081 str r1, [r0, #8]
+ 9604: e7de b.n 95c4 <nlr_push_tail>
+
+[3]: https://www.openwall.com/lists/musl/2020/09/25/4
+
+Signed-off-by: J. Neuschäfer <j.ne@posteo.net>
+Upstream: https://github.com/micropython/micropython/commit/7b050b366b7dacfb43779c51702a892d8f1873d0
+---
+ py/mpconfig.h | 6 ++++++
+ py/nlrthumb.c | 10 +++++++++-
+ 2 files changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/py/mpconfig.h b/py/mpconfig.h
+index af2480266..1aa3e0699 100644
+--- a/py/mpconfig.h
++++ b/py/mpconfig.h
+@@ -587,6 +587,12 @@
+ /*****************************************************************************/
+ /* Python internal features */
+
++// Use a special long jump in nlrthumb.c, which may be necessary if nlr.o and
++// nlrthumb.o are linked far apart from each other.
++#ifndef MICROPY_NLR_THUMB_USE_LONG_JUMP
++#define MICROPY_NLR_THUMB_USE_LONG_JUMP (0)
++#endif
++
+ // Whether to enable import of external modules
+ // When disabled, only importing of built-in modules is supported
+ // When enabled, a port must implement mp_import_stat (among other things)
+diff --git a/py/nlrthumb.c b/py/nlrthumb.c
+index a22c5df5b..e7b24f242 100644
+--- a/py/nlrthumb.c
++++ b/py/nlrthumb.c
+@@ -38,6 +38,14 @@
+
+ __attribute__((naked)) unsigned int nlr_push(nlr_buf_t *nlr) {
+
++ // If you get a linker error here, indicating that a relocation doesn't
++ // fit, try the following (in that order):
++ //
++ // 1. Ensure that nlr.o nlrthumb.o are linked closely together, i.e.
++ // there aren't too many other files between them in the linker list
++ // (PY_CORE_O_BASENAME in py/py.mk)
++ // 2. Set -DMICROPY_NLR_THUMB_USE_LONG_JUMP=1 during the build
++ //
+ __asm volatile (
+ "str r4, [r0, #12] \n" // store r4 into nlr_buf
+ "str r5, [r0, #16] \n" // store r5 into nlr_buf
+@@ -71,7 +79,7 @@ __attribute__((naked)) unsigned int nlr_push(nlr_buf_t *nlr) {
+ "str lr, [r0, #8] \n" // store lr into nlr_buf
+ #endif
+
+- #if !defined(__thumb2__)
++ #if MICROPY_NLR_THUMB_USE_LONG_JUMP
+ "ldr r1, nlr_push_tail_var \n"
+ "bx r1 \n" // do the rest in C
+ ".align 2 \n"
+--
+2.43.0
+
--
2.43.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb
2024-05-29 18:22 ` [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb J. Neuschäfer via buildroot
@ 2024-06-01 20:51 ` Yann E. MORIN
2024-06-08 17:01 ` Peter Korsgaard
1 sibling, 0 replies; 9+ messages in thread
From: Yann E. MORIN @ 2024-06-01 20:51 UTC (permalink / raw)
To: J. Neuschäfer; +Cc: Thomas Petazzoni, buildroot
J., All,
On 2024-05-29 20:22 +0200, J. Neuschäfer via buildroot spake thusly:
> Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
Applied to master, thanks.
Regards,
Yann E. MORIN.
> ---
> ...-Make-non-Thumb2-long-jump-workaround-opt.patch | 130 +++++++++++++++++++++
> 1 file changed, 130 insertions(+)
>
> diff --git a/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch b/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch
> new file mode 100644
> index 0000000000..f41c11371a
> --- /dev/null
> +++ b/package/micropython/0001-py-nlrthumb-Make-non-Thumb2-long-jump-workaround-opt.patch
> @@ -0,0 +1,130 @@
> +From 7b050b366b7dacfb43779c51702a892d8f1873d0 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?J=2E=20Neusch=C3=A4fer?= <j.ne@posteo.net>
> +Date: Sun, 2 Apr 2023 19:58:42 +0200
> +Subject: [PATCH] py/nlrthumb: Make non-Thumb2 long-jump workaround opt-in.
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Although the original motivation given for the workaround[1] is correct,
> +nlr.o and nlrthumb.o are linked with a small enough distance that the
> +problem does not occur, and the workaround isn't necessary. The distance
> +between the b instruction and its target (nlr_push_tail) is just 64
> +bytes[2], well within the ±2046 byte range addressable by an
> +unconditional branch instruction in Thumb mode.
> +
> +The workaround induces a relocation in the text section (textrel), which
> +isn't supported everywhere, notably not on musl-libc[3], where it causes
> +a crash on start-up. With the workaround removed, micropython works on an
> +ARMv5T Linux system built with musl-libc.
> +
> +This commit changes nlrthumb.c to use a direct jump by default, but
> +leaves the long jump workaround as an option for those cases where it's
> +actually needed.
> +
> +[1]: commit dd376a239dc4f47b0ee7866810fcda151f3cf6dd
> +
> +Author: Damien George <damien.p.george@gmail.com>
> +Date: Fri Sep 1 15:25:29 2017 +1000
> +
> + py/nlrthumb: Get working again on standard Thumb arch (ie not Thumb2).
> +
> + "b" on Thumb might not be long enough for the jump to nlr_push_tail so
> + it must be done indirectly.
> +
> +[2]: Excerpt from objdump -d micropython:
> +
> +000095c4 <nlr_push_tail>:
> + 95c4: b510 push {r4, lr}
> + 95c6: 0004 movs r4, r0
> + 95c8: f02d fd42 bl 37050 <mp_thread_get_state>
> + 95cc: 6943 ldr r3, [r0, #20]
> + 95ce: 6023 str r3, [r4, #0]
> + 95d0: 6144 str r4, [r0, #20]
> + 95d2: 2000 movs r0, #0
> + 95d4: bd10 pop {r4, pc}
> +
> +000095d6 <nlr_pop>:
> + 95d6: b510 push {r4, lr}
> + 95d8: f02d fd3a bl 37050 <mp_thread_get_state>
> + 95dc: 6943 ldr r3, [r0, #20]
> + 95de: 681b ldr r3, [r3, #0]
> + 95e0: 6143 str r3, [r0, #20]
> + 95e2: bd10 pop {r4, pc}
> +
> +000095e4 <nlr_push>:
> + 95e4: 60c4 str r4, [r0, #12]
> + 95e6: 6105 str r5, [r0, #16]
> + 95e8: 6146 str r6, [r0, #20]
> + 95ea: 6187 str r7, [r0, #24]
> + 95ec: 4641 mov r1, r8
> + 95ee: 61c1 str r1, [r0, #28]
> + 95f0: 4649 mov r1, r9
> + 95f2: 6201 str r1, [r0, #32]
> + 95f4: 4651 mov r1, sl
> + 95f6: 6241 str r1, [r0, #36] @ 0x24
> + 95f8: 4659 mov r1, fp
> + 95fa: 6281 str r1, [r0, #40] @ 0x28
> + 95fc: 4669 mov r1, sp
> + 95fe: 62c1 str r1, [r0, #44] @ 0x2c
> + 9600: 4671 mov r1, lr
> + 9602: 6081 str r1, [r0, #8]
> + 9604: e7de b.n 95c4 <nlr_push_tail>
> +
> +[3]: https://www.openwall.com/lists/musl/2020/09/25/4
> +
> +Signed-off-by: J. Neuschäfer <j.ne@posteo.net>
> +Upstream: https://github.com/micropython/micropython/commit/7b050b366b7dacfb43779c51702a892d8f1873d0
> +---
> + py/mpconfig.h | 6 ++++++
> + py/nlrthumb.c | 10 +++++++++-
> + 2 files changed, 15 insertions(+), 1 deletion(-)
> +
> +diff --git a/py/mpconfig.h b/py/mpconfig.h
> +index af2480266..1aa3e0699 100644
> +--- a/py/mpconfig.h
> ++++ b/py/mpconfig.h
> +@@ -587,6 +587,12 @@
> + /*****************************************************************************/
> + /* Python internal features */
> +
> ++// Use a special long jump in nlrthumb.c, which may be necessary if nlr.o and
> ++// nlrthumb.o are linked far apart from each other.
> ++#ifndef MICROPY_NLR_THUMB_USE_LONG_JUMP
> ++#define MICROPY_NLR_THUMB_USE_LONG_JUMP (0)
> ++#endif
> ++
> + // Whether to enable import of external modules
> + // When disabled, only importing of built-in modules is supported
> + // When enabled, a port must implement mp_import_stat (among other things)
> +diff --git a/py/nlrthumb.c b/py/nlrthumb.c
> +index a22c5df5b..e7b24f242 100644
> +--- a/py/nlrthumb.c
> ++++ b/py/nlrthumb.c
> +@@ -38,6 +38,14 @@
> +
> + __attribute__((naked)) unsigned int nlr_push(nlr_buf_t *nlr) {
> +
> ++ // If you get a linker error here, indicating that a relocation doesn't
> ++ // fit, try the following (in that order):
> ++ //
> ++ // 1. Ensure that nlr.o nlrthumb.o are linked closely together, i.e.
> ++ // there aren't too many other files between them in the linker list
> ++ // (PY_CORE_O_BASENAME in py/py.mk)
> ++ // 2. Set -DMICROPY_NLR_THUMB_USE_LONG_JUMP=1 during the build
> ++ //
> + __asm volatile (
> + "str r4, [r0, #12] \n" // store r4 into nlr_buf
> + "str r5, [r0, #16] \n" // store r5 into nlr_buf
> +@@ -71,7 +79,7 @@ __attribute__((naked)) unsigned int nlr_push(nlr_buf_t *nlr) {
> + "str lr, [r0, #8] \n" // store lr into nlr_buf
> + #endif
> +
> +- #if !defined(__thumb2__)
> ++ #if MICROPY_NLR_THUMB_USE_LONG_JUMP
> + "ldr r1, nlr_push_tail_var \n"
> + "bx r1 \n" // do the rest in C
> + ".align 2 \n"
> +--
> +2.43.0
> +
>
> --
> 2.43.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] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 1/2] Config.in: ban textrels on musl toolchains
2024-05-29 18:22 ` [Buildroot] [PATCH v2 1/2] Config.in: ban textrels on musl toolchains J. Neuschäfer via buildroot
@ 2024-06-01 20:59 ` Yann E. MORIN
2024-06-09 12:54 ` J. Neuschäfer via buildroot
0 siblings, 1 reply; 9+ messages in thread
From: Yann E. MORIN @ 2024-06-01 20:59 UTC (permalink / raw)
To: J. Neuschäfer; +Cc: Thomas Petazzoni, buildroot
On 2024-05-29 20:22 +0200, J. Neuschäfer via buildroot spake thusly:
> musl-libc doesn't support TEXTRELs[1] and programs with TEXTRELs will
> crash on start-up under musl.
>
> This patch forbids the use of TEXTRELs on musl, but adds an option to
> either forbid them on other libcs as well, or allow them on musl.
In your v1, Thomas suggested that textrels be simply always disabled for
musl, because there is no way they can work. Allowing people to enable
them on musl will only make things reak at runtime, rather than at build
time.
I'm on the same page as Thomas here: if textrels are unsupported on
musl, then let's not allow them at all.
> [1]: https://www.openwall.com/lists/musl/2020/09/25/4
>
> Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
> ---
[--SNIP--]
> diff --git a/Config.in b/Config.in
> index b5a94325c4..92e89ed32d 100644
> --- a/Config.in
> +++ b/Config.in
> @@ -910,6 +910,20 @@ endchoice
> comment "RELocation Read Only (RELRO) needs shared libraries"
> depends on !BR2_SHARED_LIBS
>
> +config BR2_LINK_ZTEXT
> + bool "Disallow text section relocations (TEXTRELs)"
We prefer positive logic:
config BR2_LINK_ZTEXT
bool "Allow text section relocations (TEXTRELs)"
default y # Legacy
depends on !BR2_TOOLCHAIN_USES_MUSL
depends on !BR2_STATIC_LIBS
and in the .mk:
ifeq ($(BR2_LINK_ZTEXT),)
TARGET_LDFLAGS += -z text
endif
(Note the 'default y': textrels were previously always allowed, so we
want to keep that behaviour by default)
Regards,
Yann E. MORIN.
> + default BR2_TOOLCHAIN_USES_MUSL
> + depends on !BR2_STATIC_LIBS
> + help
> + Pass "-z text" to the linker to detect TEXTRELs and throw an
> + error if they occur.
> +
> + This is recommended when building a system with musl-libc,
> + because TEXTRELs are not supported on musl-libc's dynamic
> + loader and will result in a run-time crash:
> +
> + https://www.openwall.com/lists/musl/2020/09/25/4
> +
> config BR2_FORTIFY_SOURCE_ARCH_SUPPORTS
> bool
> default y
> diff --git a/package/Makefile.in b/package/Makefile.in
> index f415e55f84..68efd39dba 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -149,6 +149,10 @@ endif
>
> TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS))
>
> +ifeq ($(BR2_LINK_ZTEXT),y)
> +TARGET_LDFLAGS += -z text
> +endif
> +
> # By design, _FORTIFY_SOURCE requires gcc optimization to be enabled.
> # Therefore, we need to pass _FORTIFY_SOURCE and the optimization level
> # through the same mechanism, i.e currently through CFLAGS. Passing
>
> --
> 2.43.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] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb
2024-05-29 18:22 ` [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb J. Neuschäfer via buildroot
2024-06-01 20:51 ` Yann E. MORIN
@ 2024-06-08 17:01 ` Peter Korsgaard
2024-06-09 4:12 ` Baruch Siach via buildroot
1 sibling, 1 reply; 9+ messages in thread
From: Peter Korsgaard @ 2024-06-08 17:01 UTC (permalink / raw)
To: J. Neuschäfer via buildroot; +Cc: J. Neuschäfer, Thomas Petazzoni
>>>>> "J" == J Neuschäfer via buildroot <buildroot@buildroot.org> writes:
> Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
Committed to 2024.02.x, thanks.
--
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb
2024-06-08 17:01 ` Peter Korsgaard
@ 2024-06-09 4:12 ` Baruch Siach via buildroot
2024-06-09 8:33 ` Peter Korsgaard
0 siblings, 1 reply; 9+ messages in thread
From: Baruch Siach via buildroot @ 2024-06-09 4:12 UTC (permalink / raw)
To: Peter Korsgaard
Cc: J. Neuschäfer, Thomas Petazzoni,
J. Neuschäfer via buildroot
Hi Peter,
On Sat, Jun 08 2024, Peter Korsgaard wrote:
>>>>>> "J" == J Neuschäfer via buildroot <buildroot@buildroot.org> writes:
>
> > Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
>
> Committed to 2024.02.x, thanks.
Not in 2024.02.x as of commit ee6694e9704b ("package/libopenssl:
security bump to version 3.2.2").
baruch
--
~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb
2024-06-09 4:12 ` Baruch Siach via buildroot
@ 2024-06-09 8:33 ` Peter Korsgaard
0 siblings, 0 replies; 9+ messages in thread
From: Peter Korsgaard @ 2024-06-09 8:33 UTC (permalink / raw)
To: Baruch Siach
Cc: J. Neuschäfer, Thomas Petazzoni,
J. Neuschäfer via buildroot
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:
> Hi Peter,
> On Sat, Jun 08 2024, Peter Korsgaard wrote:
>>>>>>> "J" == J Neuschäfer via buildroot <buildroot@buildroot.org> writes:
>>
>> > Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
>>
>> Committed to 2024.02.x, thanks.
> Not in 2024.02.x as of commit ee6694e9704b ("package/libopenssl:
> security bump to version 3.2.2").
Ups, thanks for the heads up - Fixed now.
--
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Buildroot] [PATCH v2 1/2] Config.in: ban textrels on musl toolchains
2024-06-01 20:59 ` Yann E. MORIN
@ 2024-06-09 12:54 ` J. Neuschäfer via buildroot
0 siblings, 0 replies; 9+ messages in thread
From: J. Neuschäfer via buildroot @ 2024-06-09 12:54 UTC (permalink / raw)
To: Yann E. MORIN; +Cc: J. Neuschäfer, Thomas Petazzoni, buildroot
Hello Yann, sorry for the delay,
On Sat, Jun 01, 2024 at 10:59:53PM +0200, Yann E. MORIN wrote:
> On 2024-05-29 20:22 +0200, J. Neuschäfer via buildroot spake thusly:
> > musl-libc doesn't support TEXTRELs[1] and programs with TEXTRELs will
> > crash on start-up under musl.
> >
> > This patch forbids the use of TEXTRELs on musl, but adds an option to
> > either forbid them on other libcs as well, or allow them on musl.
>
> In your v1, Thomas suggested that textrels be simply always disabled for
> musl, because there is no way they can work. Allowing people to enable
> them on musl will only make things reak at runtime, rather than at build
> time.
>
> I'm on the same page as Thomas here: if textrels are unsupported on
> musl, then let's not allow them at all.
Alright, I wasn't fully certain about it, but I'll change the Kconfig
logic accordingly.
>
> > [1]: https://www.openwall.com/lists/musl/2020/09/25/4
> >
> > Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
> > ---
> [--SNIP--]
> > diff --git a/Config.in b/Config.in
> > index b5a94325c4..92e89ed32d 100644
> > --- a/Config.in
> > +++ b/Config.in
> > @@ -910,6 +910,20 @@ endchoice
> > comment "RELocation Read Only (RELRO) needs shared libraries"
> > depends on !BR2_SHARED_LIBS
> >
> > +config BR2_LINK_ZTEXT
> > + bool "Disallow text section relocations (TEXTRELs)"
>
> We prefer positive logic:
>
> config BR2_LINK_ZTEXT
> bool "Allow text section relocations (TEXTRELs)"
> default y # Legacy
> depends on !BR2_TOOLCHAIN_USES_MUSL
> depends on !BR2_STATIC_LIBS
Good idea, this looks a bit easier to understand.
>
> and in the .mk:
>
> ifeq ($(BR2_LINK_ZTEXT),)
> TARGET_LDFLAGS += -z text
> endif
>
> (Note the 'default y': textrels were previously always allowed, so we
> want to keep that behaviour by default)
>
> Regards,
> Yann E. MORIN.
Thanks for your review!
--jn
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-06-09 12:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-29 18:22 [Buildroot] [PATCH v2 0/2] Add option to ban textrels J. Neuschäfer via buildroot
2024-05-29 18:22 ` [Buildroot] [PATCH v2 1/2] Config.in: ban textrels on musl toolchains J. Neuschäfer via buildroot
2024-06-01 20:59 ` Yann E. MORIN
2024-06-09 12:54 ` J. Neuschäfer via buildroot
2024-05-29 18:22 ` [Buildroot] [PATCH v2 2/2] micropython: Add patch to avoid textrel on arm/thumb J. Neuschäfer via buildroot
2024-06-01 20:51 ` Yann E. MORIN
2024-06-08 17:01 ` Peter Korsgaard
2024-06-09 4:12 ` Baruch Siach via buildroot
2024-06-09 8:33 ` Peter Korsgaard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox