Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
@@ -0,0 +1,44 @@
From b5545c08e6c674c49aef14b47a56a3e92df4d2a7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 17 Feb 2016 07:36:34 +0000
Subject: [pseudo][PATCH] configure: Prune PIE flags
LDFLAGS are not taken from environment and CFLAGS is used for LDFLAGS
however when using security options -fpie and -pie options are coming
as part of ARCH_FLAGS and they get into LDFLAGS of shared objects as
well so we end up with conflicting options -shared -pie, which gold
rejects outright and bfd linker lets the one appearning last in cmdline
take effect. This create quite a unpleasant situation in OE when
security flags are enabled and gold or not-gold options are used
it errors out but errors are not same.
Anyway, with this patch we filter pie options from ARCH_FLAGS
ouright and take control of generating PIC objects
Helps with errors like
| /mnt/oe/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: pseudo_client.o: relocation R_X86_64_PC32 against symbol `pseudo_util_debug_flags' can not be used when making a shared object; recompile with -fPIC
| /mnt/oe/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: final link failed: Bad value
| collect2: error: ld returned 1 exit status
| make: *** [lib/pseudo/lib64/libpseudo.so] Error 1
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Submitted
configure | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configure b/configure
index e5ef9ce..83b0890 100755
--- a/configure
+++ b/configure
@@ -339,3 +339,5 @@ sed -e '
s,@ARCH@,'"$opt_arch"',g
s,@BITS@,'"$opt_bits"',g
' < Makefile.in > Makefile
+
+sed -i -e 's/\-[f]*pie//g' Makefile
--
1.8.3.1
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
#
# Script to re-generate pseudo-prebuilt-2.33.tar.xz
#
# Copyright (C) 2021 Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
for i in x86_64 aarch64 i686; do
if [ ! -e $i-nativesdk-libc.tar.xz ]; then
wget http://downloads.yoctoproject.org/releases/uninative/3.2/$i-nativesdk-libc.tar.xz
fi
tar -xf $i-nativesdk-libc.tar.xz --wildcards \*/lib/libpthread\* \*/lib/libdl\*
cd $i-linux/lib
ln -s libdl.so.2 libdl.so
ln -s libpthread.so.0 libpthread.so
cd ../..
done
tar -cJf pseudo-prebuilt-2.33.tar.xz *-linux
@@ -0,0 +1,3 @@
root:*:0:
mail:*:8:
nobody:*:99:
@@ -0,0 +1,3 @@
root::0:0:root:/home/root:/bin/sh
pseudopasswd:*:1:1:this-is-the-pseudo-passwd:/nonexistent:/bin/sh
nobody:*:65534:65534:nobody:/nonexistent:/bin/sh
@@ -0,0 +1,57 @@
If we link against a newer glibc 2.34 and then try and our LD_PRELOAD is run against a
binary on a host with an older libc, we see symbol errors since in glibc 2.34, pthread
and dl are merged into libc itself.
We need to use the older form of linking so use glibc binaries from an older release
to force this. We only use minimal symbols from these anyway.
pthread_atfork is problematic, particularly on arm so use the internal glibc routine
it maps too. This was always present in the main libc from 2.3.2 onwards.
Yes this is horrible. Better solutions welcome.
There is more info in the bug: [YOCTO #14521]
Upstream-Status: Inappropriate [this patch is native and nativesdk]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Tweak library search order, make prebuilt lib ahead of recipe lib
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
Makefile.in | 2 +-
pseudo_wrappers.c | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
@@ -120,7 +120,7 @@ $(PSEUDODB): pseudodb.o $(SHOBJS) $(DBOBJS) pseudo_ipc.o | $(BIN)
libpseudo: $(LIBPSEUDO)
$(LIBPSEUDO): $(WRAPOBJS) pseudo_client.o pseudo_ipc.o $(SHOBJS) | $(LIB)
- $(CC) $(CFLAGS) $(CFLAGS_PSEUDO) -shared -o $(LIBPSEUDO) \
+ $(CC) $(CFLAGS) -Lprebuilt/$(shell uname -m)-linux/lib/ $(CFLAGS_PSEUDO) -shared -o $(LIBPSEUDO) \
pseudo_client.o pseudo_ipc.o \
$(WRAPOBJS) $(SHOBJS) $(LDFLAGS) $(CLIENT_LDFLAGS)
diff --git a/pseudo_wrappers.c b/pseudo_wrappers.c
--- a/pseudo_wrappers.c
+++ b/pseudo_wrappers.c
@@ -100,10 +100,13 @@ static void libpseudo_atfork_child(void)
pseudo_mutex_holder = 0;
}
+extern void *__dso_handle;
+extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
+
static void
_libpseudo_init(void) {
if (!_libpseudo_initted)
- pthread_atfork(NULL, NULL, libpseudo_atfork_child);
+ __register_atfork (NULL, NULL, libpseudo_atfork_child, &__dso_handle == NULL ? NULL : __dso_handle);
pseudo_getlock();
pseudo_antimagic();
--
2.27.0