On Wed, Aug 18, 2021 at 9:50 AM Richard Purdie <
[email protected]> wrote:

> The merge of libdl into libc in glibc 2.34 causes problems for pseudo. Add
> a fix
> that works around this issue.


I have made an incremental change which fixes the build failures on
rv32/rv64

https://git.openembedded.org/openembedded-core-contrib/commit/?h=yoe/mut&id=da5c9b3c3c7e66c52ea2f79343e6009ff410f2ca


>
> Signed-off-by: Richard Purdie <[email protected]>
> ---
>  .../pseudo/files/glibc234.patch               | 86 +++++++++++++++++++
>  meta/recipes-devtools/pseudo/pseudo_git.bb    |  1 +
>  2 files changed, 87 insertions(+)
>  create mode 100644 meta/recipes-devtools/pseudo/files/glibc234.patch
>
> diff --git a/meta/recipes-devtools/pseudo/files/glibc234.patch
> b/meta/recipes-devtools/pseudo/files/glibc234.patch
> new file mode 100644
> index 00000000000..86fad5a3def
> --- /dev/null
> +++ b/meta/recipes-devtools/pseudo/files/glibc234.patch
> @@ -0,0 +1,86 @@
> +pseudo_wrappers/pseudo_util: Add versioning to dl* symbols to work with
> glibc 2.34
> +
> +From glibc 2.34 onwards, libdl is merged into libc. We need to work with
> libaries
> +linked with older libc and newer ones without requiring glibc 2.34 to be
> linked
> +in. To do this, use an older verison of the symbols. Sadly this is highly
> arch
> +specific.
> +
> +Upstream-Status: Pending
> +Signed-off-by: Richard Purdie <[email protected]>
> +
> +Index: git/pseudo_util.c
> +===================================================================
> +--- git.orig/pseudo_util.c
> ++++ git/pseudo_util.c
> +@@ -28,6 +28,11 @@
> + #include "pseudo.h"
> + #include "pseudo_ipc.h"
> + #include "pseudo_db.h"
> ++#include "pseudo_dlsymvers.h"
> ++
> ++#if defined(__GLIBC__)
> ++__asm__(".symver dlsym,dlsym@GLIBC_" DLSYMVER);
> ++#endif
> +
> + struct pseudo_variables {
> +       char *key;
> +Index: git/pseudo_wrappers.c
> +===================================================================
> +--- git.orig/pseudo_wrappers.c
> ++++ git/pseudo_wrappers.c
> +@@ -28,6 +28,7 @@
> +
> + /* include this to get PSEUDO_PORT_* definitions */
> + #include "pseudo.h"
> ++#include "pseudo_dlsymvers.h"
> +
> + /* used for various specific function arguments */
> + #include <dirent.h>
> +@@ -122,6 +123,12 @@ pseudo_reinit_libpseudo(void) {
> +       _libpseudo_init();
> + }
> +
> ++#if defined(__GLIBC__)
> ++__asm__(".symver dlerror,dlerror@GLIBC_" DLSYMVER);
> ++__asm__(".symver dlvsym,dlvsym@GLIBC_" DLVSYMVER);
> ++__asm__(".symver dlsym,dlsym@GLIBC_" DLSYMVER);
> ++#endif
> ++
> + static void
> + pseudo_init_one_wrapper(pseudo_function *func) {
> +       int (*f)(void) = (int (*)(void)) NULL;
> +Index: git/pseudo_dlsymvers.h
> +===================================================================
> +--- /dev/null
> ++++ git/pseudo_dlsymvers.h
> +@@ -0,0 +1,30 @@
> ++/*
> ++ * Copyright (c) 2021 Richard Purdie
> ++ *
> ++ * SPDX-License-Identifier: LGPL-2.1-only
> ++ *
> ++ */
> ++
> ++/* We need to use the older symbols in libdl.so rather than the newer
> ones
> ++   merged into libc.so in glibc 2.34 onwards since libpseudo needs to
> link/work
> ++   with newer libcs and bianries compiles with older ones */
> ++
> ++#if defined(__GLIBC__)
> ++#if defined(__aarch64__)
> ++#define DLSYMVER "2.17"
> ++#define DLVSYMVER "2.17"
> ++#elif defined(__x86_64__)
> ++#define DLSYMVER "2.2.5"
> ++#define DLVSYMVER "2.2.5"
> ++#elif defined(__arm__)
> ++#define DLSYMVER "2.4"
> ++#define DLVSYMVER "2.4"
> ++#elif defined(__mips__)
> ++#define DLSYMVER "2.0"
> ++#define DLVSYMVER "2.2"
> ++#else
> ++#define DLSYMVER "2.0"
> ++#define DLVSYMVER "2.1"
> ++#endif
> ++#endif
> ++
> diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb
> b/meta/recipes-devtools/pseudo/pseudo_git.bb
> index dacaef1a66b..c7684f00cbd 100644
> --- a/meta/recipes-devtools/pseudo/pseudo_git.bb
> +++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
> @@ -2,6 +2,7 @@ require pseudo.inc
>
>  SRC_URI = "git://git.yoctoproject.org/pseudo;branch=oe-core \
>             file://0001-configure-Prune-PIE-flags.patch \
> +           file://glibc234.patch \
>             file://fallback-passwd \
>             file://fallback-group \
>             "
> --
> 2.30.2
>
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#155001): 
https://lists.openembedded.org/g/openembedded-core/message/155001
Mute This Topic: https://lists.openembedded.org/mt/84976709/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to