From f2ebbaf795a4a6a8ee3934e21f07f3b13fd17069 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 8 Jul 2026 00:44:20 +0000 Subject: [PATCH 1/4] Include GOT sections If any of the libraries linked against is built as position independent code, weak undefined symbols and comdat symbols may have GOT relocations. We observed this in the LLVM runtime libraries (libc.a/libm.a) but this behavior is not specific to Clang/LLVM toolchains. Including the GOT sections into the data section to handle them gracefully. --- .../script_include/section_copy_to_ram_data.incl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rp2_common/pico_standard_link/script_include/section_copy_to_ram_data.incl b/src/rp2_common/pico_standard_link/script_include/section_copy_to_ram_data.incl index a47340064..96190bfc6 100644 --- a/src/rp2_common/pico_standard_link/script_include/section_copy_to_ram_data.incl +++ b/src/rp2_common/pico_standard_link/script_include/section_copy_to_ram_data.incl @@ -29,6 +29,8 @@ SECTIONS *(.data*) *(.sdata*) + *(.got) + *(.got.*) . = ALIGN(4); PROVIDE_HIDDEN (__emutls_array_start = .); From 631ebcdf85a1baa010af10ba2b3d9b65de52de41 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 8 Jul 2026 23:21:15 +0000 Subject: [PATCH 2/4] Move got section addtion to section_default_data.incl -- tested against clang toolchain (current and upcoming) in pico2 ARM core. --- .../script_include/section_copy_to_ram_data.incl | 2 -- .../script_include/section_default_data.incl | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/rp2_common/pico_standard_link/script_include/section_copy_to_ram_data.incl b/src/rp2_common/pico_standard_link/script_include/section_copy_to_ram_data.incl index 96190bfc6..a47340064 100644 --- a/src/rp2_common/pico_standard_link/script_include/section_copy_to_ram_data.incl +++ b/src/rp2_common/pico_standard_link/script_include/section_copy_to_ram_data.incl @@ -29,8 +29,6 @@ SECTIONS *(.data*) *(.sdata*) - *(.got) - *(.got.*) . = ALIGN(4); PROVIDE_HIDDEN (__emutls_array_start = .); diff --git a/src/rp2_common/pico_standard_link/script_include/section_default_data.incl b/src/rp2_common/pico_standard_link/script_include/section_default_data.incl index d05ee9747..be0f48bd2 100644 --- a/src/rp2_common/pico_standard_link/script_include/section_default_data.incl +++ b/src/rp2_common/pico_standard_link/script_include/section_default_data.incl @@ -30,6 +30,10 @@ SECTIONS *(.data*) *(.sdata*) + /* if linked against non PIC archives, ARM targets may generate dynamic data relocations via got sections */ + *(.got) + *(.got.*) + . = ALIGN(4); *(.after_data.*) . = ALIGN(4); From 2e18d5339f4fc95e262ba0900d376900c2aed25a Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 8 Jul 2026 23:24:29 +0000 Subject: [PATCH 3/4] Fix formatting --- .../pico_standard_link/script_include/section_default_data.incl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rp2_common/pico_standard_link/script_include/section_default_data.incl b/src/rp2_common/pico_standard_link/script_include/section_default_data.incl index be0f48bd2..71ac509d4 100644 --- a/src/rp2_common/pico_standard_link/script_include/section_default_data.incl +++ b/src/rp2_common/pico_standard_link/script_include/section_default_data.incl @@ -31,7 +31,7 @@ SECTIONS *(.sdata*) /* if linked against non PIC archives, ARM targets may generate dynamic data relocations via got sections */ - *(.got) + *(.got) *(.got.*) . = ALIGN(4); From e066c7fb458075e5976456fdfae194312ea7fb0e Mon Sep 17 00:00:00 2001 From: Prabhu Rajasekaran Date: Wed, 8 Jul 2026 22:17:33 -0700 Subject: [PATCH 4/4] Update src/rp2_common/pico_standard_link/script_include/section_default_data.incl Co-authored-by: Petr Hosek --- .../pico_standard_link/script_include/section_default_data.incl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rp2_common/pico_standard_link/script_include/section_default_data.incl b/src/rp2_common/pico_standard_link/script_include/section_default_data.incl index 71ac509d4..0c2d8b7fc 100644 --- a/src/rp2_common/pico_standard_link/script_include/section_default_data.incl +++ b/src/rp2_common/pico_standard_link/script_include/section_default_data.incl @@ -30,7 +30,7 @@ SECTIONS *(.data*) *(.sdata*) - /* if linked against non PIC archives, ARM targets may generate dynamic data relocations via got sections */ + /* if linked against non PIC archives, ARM targets may generate dynamic data relocations via got sections */ *(.got) *(.got.*)