Hi,

I was just reading over the code, trying to figure out how the SDK/eSDK 
installer works, and the following stood out to me as a potential bug: 
meta/recipes-core/meta/uninative-tarball.bb uses `patchelf` to reserve 1024 
bytes in the ELF interpreter section, but the check in 
meta/files/toolchain-shar-extract.sh is against paths 2048 bytes long.

If I understand correctly, this is because the ELF patching is actually done by 
the python script scripts/relocate_sdk.py -- presumably because patchelf itself 
is compiled as a dynamically linked executable, so will refer to 
`/usr/local/oe-sdk/hardcoded-buildpath/lib/ld-linux*.so`. (I did quickly check, 
it seems possible to build patchelf statically but that then requires musl I 
believe.)

Anyway, this just stood out to me as being wrong, but as it wasn't a bug I 
experienced, perhaps I misunderstood something.

Robert Kovacsics (1):
  sdk: Fix path length limit to match reserved size

 meta/files/toolchain-shar-extract.sh        | 4 +++-
 meta/recipes-core/meta/uninative-tarball.bb | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)
From 395a3bc51bf0520a838d38ac31012106f19b134d Mon Sep 17 00:00:00 2001
From: Robert Kovacsics <[email protected]>
Date: Thu, 9 May 2024 14:28:17 +0100
Subject: [OE-core][PATCH 1/1] sdk: Fix path length limit to match reserved
 size

---
 meta/files/toolchain-shar-extract.sh        | 4 +++-
 meta/recipes-core/meta/uninative-tarball.bb | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/meta/files/toolchain-shar-extract.sh b/meta/files/toolchain-shar-extract.sh
index 4386b985bb..89d30005fd 100644
--- a/meta/files/toolchain-shar-extract.sh
+++ b/meta/files/toolchain-shar-extract.sh
@@ -164,7 +164,9 @@ else
 fi
 
 # limit the length for target_sdk_dir, ensure the relocation behaviour in relocate_sdk.py has right result.
-if [ ${#target_sdk_dir} -gt 2048 ]; then
+# This is due to ELF interpreter being set to 'a'*1024 in
+# meta/recipes-core/meta/uninative-tarball.bb
+if [ ${#target_sdk_dir} -gt 1024 ]; then
 	echo "Error: The target directory path is too long!!!"
 	exit 1
 fi
diff --git a/meta/recipes-core/meta/uninative-tarball.bb b/meta/recipes-core/meta/uninative-tarball.bb
index 7eebcaf11a..0fd01fdb64 100644
--- a/meta/recipes-core/meta/uninative-tarball.bb
+++ b/meta/recipes-core/meta/uninative-tarball.bb
@@ -58,6 +58,8 @@ fakeroot archive_sdk() {
 	DEST="./${SDK_ARCH}-${SDK_OS}"
 	mv sysroots/${SDK_SYS} $DEST
 	rm sysroots -rf
+	# There is a check in meta/files/toolchain-shar-extract.sh -- make sure to
+	# keep that check up to date if changing the `1024`
 	patchelf --set-interpreter ${@''.join('a' for n in range(1024))} $DEST/usr/bin/patchelf
 	mv $DEST/usr/bin/patchelf $DEST/usr/bin/patchelf-uninative
 	${SDK_ARCHIVE_CMD}
-- 
2.44.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#199181): 
https://lists.openembedded.org/g/openembedded-core/message/199181
Mute This Topic: https://lists.openembedded.org/mt/106006066/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to