]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
guix: glibc 2.27
authortobtoht <tob@featherwallet.org>
Mon, 27 Feb 2023 13:39:31 +0000 (14:39 +0100)
committertobtoht <tob@featherwallet.org>
Mon, 27 Feb 2023 20:27:04 +0000 (21:27 +0100)
contrib/AppImage/build-appimage.sh
contrib/guix/libexec/build.sh
contrib/guix/manifest.scm
contrib/guix/patches/glibc-2.24-elfm-loadaddr-dynamic-rewrite.patch [deleted file]
contrib/guix/patches/glibc-2.24-guix-prefix.patch [deleted file]
contrib/guix/patches/glibc-2.24-no-build-time-cxx-header-run.patch [deleted file]
contrib/guix/patches/glibc-2.27-dont-redefine-nss-database.patch [deleted file]
contrib/guix/patches/glibc-2.27-fcommon.patch [moved from contrib/guix/patches/glibc-2.24-fcommon.patch with 80% similarity]
contrib/guix/patches/glibc-2.27-guix-prefix.patch
contrib/guix/patches/glibc-ldd-x86_64.patch

index fde0a827e3328f2d7de4d0e5db2856f9807917bb..9dff56893dafcc44c07b65002d1db51850863cd9 100755 (executable)
@@ -16,7 +16,8 @@ cp "src/assets/images/appicons/64x64.png" "$APPDIR/feather.png"
 cp "build/bin/feather" "$APPDIR/usr/bin/feather"
 chmod +x "$APPDIR/usr/bin/feather"
 
-export LD_LIBRARY_PATH=/feather/contrib/depends/x86_64-linux-gnu/lib/:/gnu/store:/gnu/store/yk91cxchassi5ykxsyd4vci32vncgjkf-gcc-cross-x86_64-linux-gnu-10.3.0-lib/x86_64-linux-gnu/lib
+# libgcc_s.so.1 not found
+export LD_LIBRARY_PATH=/feather/contrib/depends/x86_64-linux-gnu/lib/:/gnu/store:/gnu/store/0wfxmi621h9xn4169xzhzd1p5g91cj9m-gcc-cross-x86_64-linux-gnu-10.3.0-lib/x86_64-linux-gnu/lib/
 
 # linuxdeployqt glibc moaning bypass
 mkdir -p "$APPDIR/usr/share/doc/libc6"
index 93fe429fdd8172f7c68bc6295985c74907902d4e..03f1a9270148e90db2e1b672787a1f02d9d78b62 100755 (executable)
@@ -197,13 +197,6 @@ case "$HOST" in
     *mingw*)  HOST_LDFLAGS="-Wl,--no-insert-timestamp" ;;
 esac
 
-# Using --no-tls-get-addr-optimize retains compatibility with glibc 2.18, by
-# avoiding a PowerPC64 optimisation available in glibc 2.22 and later.
-# https://sourceware.org/binutils/docs-2.35/ld/PowerPC64-ELF64.html
-case "$HOST" in
-    *powerpc64*) HOST_LDFLAGS="${HOST_LDFLAGS} -Wl,--no-tls-get-addr-optimize" ;;
-esac
-
 # Build the depends tree, overriding variables that assume multilib gcc
 make -C contrib/depends --jobs="$JOBS" HOST="$HOST" \
                                    ${V:+V=1} \
index 3a4ca4284471eacdd0eff90f8e24308c20511e95..c5f55e89febb3bb863e1f1d046850919801ee38b 100644 (file)
@@ -169,7 +169,7 @@ chain for " target " development."))
                                        #:key
                                        (base-gcc-for-libc base-gcc)
                                        (base-kernel-headers base-linux-kernel-headers)
-                                       (base-libc (make-glibc-with-bind-now (make-glibc-without-werror glibc-2.24)))
+                                       (base-libc (hardened-glibc (make-glibc-without-werror glibc-2.27)))
                                        (base-gcc (make-gcc-rpath-link (hardened-gcc base-gcc))))
   "Convenience wrapper around MAKE-CROSS-TOOLCHAIN with default values
 desirable for building Feather Wallet release binaries."
@@ -558,33 +558,14 @@ inspecting signatures in Mach-O binaries.")
 (define (make-glibc-without-werror glibc)
   (package-with-extra-configure-variable glibc "enable_werror" "no"))
 
-(define (make-glibc-with-stack-protector glibc)
-  (package-with-extra-configure-variable glibc "--enable-stack-protector" "all"))
-
-(define (make-glibc-with-bind-now glibc)
-  (package-with-extra-configure-variable glibc "--enable-bind-now" "yes"))
-
-(define-public glibc-2.24
-  (package
-    (inherit glibc-2.31)
-    (version "2.24")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://sourceware.org/git/glibc.git")
-                    (commit "0d7f1ed30969886c8dde62fbf7d2c79967d4bace")))
-              (file-name (git-file-name "glibc" "0d7f1ed30969886c8dde62fbf7d2c79967d4bace"))
-              (sha256
-               (base32
-                "0g5hryia5v1k0qx97qffgwzrz4lr4jw3s5kj04yllhswsxyjbic3"))
-              (patches (search-our-patches "glibc-ldd-x86_64.patch"
-                                           "glibc-versioned-locpath.patch"
-                                           "glibc-2.24-elfm-loadaddr-dynamic-rewrite.patch"
-                                           "glibc-2.24-no-build-time-cxx-header-run.patch"
-                                           "glibc-2.24-fcommon.patch"
-                                           "glibc-2.24-guix-prefix.patch"))))))
+;; https://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html
+(define (hardened-glibc glibc)
+  (package-with-extra-configure-variable (
+    package-with-extra-configure-variable glibc
+    "--enable-stack-protector" "all")
+    "--enable-bind-now" "yes"))
 
-(define-public glibc-2.27/bitcoin-patched
+(define-public glibc-2.27
   (package
     (inherit glibc-2.31)
     (version "2.27")
@@ -592,14 +573,15 @@ inspecting signatures in Mach-O binaries.")
               (method git-fetch)
               (uri (git-reference
                     (url "https://sourceware.org/git/glibc.git")
-                    (commit "23158b08a0908f381459f273a984c6fd328363cb")))
-              (file-name (git-file-name "glibc" "23158b08a0908f381459f273a984c6fd328363cb"))
+                    (commit "73886db6218e613bd6d4edf529f11e008a6c2fa6")))
+              (file-name (git-file-name "glibc" "73886db6218e613bd6d4edf529f11e008a6c2fa6"))
               (sha256
                (base32
-                "1b2n1gxv9f4fd5yy68qjbnarhf8mf4vmlxk10i3328c1w5pmp0ca"))
+                "0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq"))
               (patches (search-our-patches "glibc-ldd-x86_64.patch"
+                                           "glibc-versioned-locpath.patch"
                                            "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
-                                           "glibc-2.27-dont-redefine-nss-database.patch"
+                                           "glibc-2.27-fcommon.patch"
                                            "glibc-2.27-guix-prefix.patch"))))))
 
 (define-public linuxdeployqt
@@ -696,13 +678,7 @@ inspecting signatures in Mach-O binaries.")
                  (make-nsis-for-gcc-10 nsis-x86_64)
                  osslsigncode))
           ((string-contains target "-linux-")
-           (list cmake
-                 (cond ((string-contains target "riscv64-")
-                        (make-bitcoin-cross-toolchain target
-                                                      #:base-libc (make-glibc-with-stack-protector
-                                                        (make-glibc-with-bind-now (make-glibc-without-werror glibc-2.27/bitcoin-patched)))))
-                       (else
-                        (make-bitcoin-cross-toolchain target)))))
+           (list (make-bitcoin-cross-toolchain target) cmake))
           ((string-contains target "darwin")
            (list clang-toolchain-10 binutils cmake xorriso python-signapple))
           (else '())))))
diff --git a/contrib/guix/patches/glibc-2.24-elfm-loadaddr-dynamic-rewrite.patch b/contrib/guix/patches/glibc-2.24-elfm-loadaddr-dynamic-rewrite.patch
deleted file mode 100644 (file)
index 5c4d0c6..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-https://sourceware.org/git/?p=glibc.git;a=commit;h=a68ba2f3cd3cbe32c1f31e13c20ed13487727b32
-
-commit 6b02af31e9a721bb15a11380cd22d53b621711f8
-Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
-Date:   Wed Oct 18 17:26:23 2017 +0100
-
-    [AARCH64] Rewrite elf_machine_load_address using _DYNAMIC symbol
-    
-    This patch rewrites aarch64 elf_machine_load_address to use special _DYNAMIC
-    symbol instead of _dl_start.
-    
-    The static address of _DYNAMIC symbol is stored in the first GOT entry.
-    Here is the change which makes this solution work (part of binutils 2.24):
-    https://sourceware.org/ml/binutils/2013-06/msg00248.html
-    
-    i386, x86_64 targets use the same method to do this as well.
-    
-    The original implementation relies on a trick that R_AARCH64_ABS32 relocation
-    being resolved at link time and the static address fits in the 32bits.
-    However, in LP64, normally, the address is defined to be 64 bit.
-    
-    Here is the C version one which should be portable in all cases.
-    
-            * sysdeps/aarch64/dl-machine.h (elf_machine_load_address): Use
-            _DYNAMIC symbol to calculate load address.
-
-diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h
-index e86d8b5b63..5a5b8a5de5 100644
---- a/sysdeps/aarch64/dl-machine.h
-+++ b/sysdeps/aarch64/dl-machine.h
-@@ -49,26 +49,11 @@ elf_machine_load_address (void)
-   /* To figure out the load address we use the definition that for any symbol:
-      dynamic_addr(symbol) = static_addr(symbol) + load_addr
--     The choice of symbol is arbitrary. The static address we obtain
--     by constructing a non GOT reference to the symbol, the dynamic
--     address of the symbol we compute using adrp/add to compute the
--     symbol's address relative to the PC.
--     This depends on 32bit relocations being resolved at link time
--     and that the static address fits in the 32bits.  */
--
--  ElfW(Addr) static_addr;
--  ElfW(Addr) dynamic_addr;
--
--  asm ("                                      \n"
--"     adrp    %1, _dl_start;                  \n"
--"     add     %1, %1, #:lo12:_dl_start        \n"
--"     ldr     %w0, 1f                         \n"
--"     b       2f                              \n"
--"1:                                           \n"
--"     .word   _dl_start                       \n"
--"2:                                           \n"
--    : "=r" (static_addr),  "=r" (dynamic_addr));
--  return dynamic_addr - static_addr;
-+    _DYNAMIC sysmbol is used here as its link-time address stored in
-+    the special unrelocated first GOT entry.  */
-+
-+    extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
-+    return (ElfW(Addr)) &_DYNAMIC - elf_machine_dynamic ();
- }
- /* Set up the loaded object described by L so its unrelocated PLT
diff --git a/contrib/guix/patches/glibc-2.24-guix-prefix.patch b/contrib/guix/patches/glibc-2.24-guix-prefix.patch
deleted file mode 100644 (file)
index 875e8cd..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Without ffile-prefix-map, the debug symbols will contain paths for the
-guix store which will include the hashes of each package. However, the
-hash for the same package will differ when on different architectures.
-In order to be reproducible regardless of the architecture used to build
-the package, map all guix store prefixes to something fixed, e.g. /usr.
-
-We might be able to drop this in favour of using --with-nonshared-cflags
-when we being using newer versions of glibc.
-
---- a/Makeconfig
-+++ b/Makeconfig
-@@ -950,6 +950,10 @@ object-suffixes-for-libc += .oS
- # shared objects.  We don't want to use CFLAGS-os because users may, for
- # example, make that processor-specific.
- CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
-+
-+# Map Guix store paths to /usr
-+CFLAGS-.oS += `find /gnu/store -maxdepth 1 -mindepth 1 -type d -exec echo -n " -ffile-prefix-map={}=/usr" \;`
-+
- CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
- libtype.oS = lib%_nonshared.a
- endif
--- 
-2.35.1
-
diff --git a/contrib/guix/patches/glibc-2.24-no-build-time-cxx-header-run.patch b/contrib/guix/patches/glibc-2.24-no-build-time-cxx-header-run.patch
deleted file mode 100644 (file)
index 11fe7fd..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-https://sourceware.org/git/?p=glibc.git;a=commit;h=fc3e1337be1c6935ab58bd13520f97a535cf70cc
-
-commit dc23a45db566095e83ff0b7a57afc87fb5ca89a1
-Author: Florian Weimer <fweimer@redhat.com>
-Date:   Wed Sep 21 10:45:32 2016 +0200
-
-    Avoid running $(CXX) during build to obtain header file paths
-    
-    This reduces the build time somewhat and is particularly noticeable
-    during rebuilds with few code changes.
-
-diff --git a/Makerules b/Makerules
-index 7e4077ee50..c338850de5 100644
---- a/Makerules
-+++ b/Makerules
-@@ -121,14 +121,10 @@ ifneq (,$(CXX))
- # will be used instead of /usr/include/stdlib.h and /usr/include/math.h.
- before-compile := $(common-objpfx)cstdlib $(common-objpfx)cmath \
-                 $(before-compile)
--cstdlib=$(shell echo "\#include <cstdlib>" | $(CXX) -M -MP -x c++ - \
--              | sed -n "/cstdlib:/{s/:$$//;p}")
--$(common-objpfx)cstdlib: $(cstdlib)
-+$(common-objpfx)cstdlib: $(c++-cstdlib-header)
-       $(INSTALL_DATA) $< $@T
-       $(move-if-change) $@T $@
--cmath=$(shell echo "\#include <cmath>" | $(CXX) -M -MP -x c++ - \
--              | sed -n "/cmath:/{s/:$$//;p}")
--$(common-objpfx)cmath: $(cmath)
-+$(common-objpfx)cmath: $(c++-cmath-header)
-       $(INSTALL_DATA) $< $@T
-       $(move-if-change) $@T $@
- endif
-diff --git a/config.make.in b/config.make.in
-index 95c6f36876..04a8b3ed7f 100644
---- a/config.make.in
-+++ b/config.make.in
-@@ -45,6 +45,8 @@ defines = @DEFINES@
- sysheaders = @sysheaders@
- sysincludes = @SYSINCLUDES@
- c++-sysincludes = @CXX_SYSINCLUDES@
-+c++-cstdlib-header = @CXX_CSTDLIB_HEADER@
-+c++-cmath-header = @CXX_CMATH_HEADER@
- all-warnings = @all_warnings@
- enable-werror = @enable_werror@
-diff --git a/configure b/configure
-index 17625e1041..6ff252744b 100755
---- a/configure
-+++ b/configure
-@@ -635,6 +635,8 @@ BISON
- INSTALL_INFO
- PERL
- BASH_SHELL
-+CXX_CMATH_HEADER
-+CXX_CSTDLIB_HEADER
- CXX_SYSINCLUDES
- SYSINCLUDES
- AUTOCONF
-@@ -5054,6 +5056,18 @@ fi
-+# Obtain some C++ header file paths.  This is used to make a local
-+# copy of those headers in Makerules.
-+if test -n "$CXX"; then
-+  find_cxx_header () {
-+    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
-+  }
-+  CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
-+  CXX_CMATH_HEADER="$(find_cxx_header cmath)"
-+fi
-+
-+
-+
- # Test if LD_LIBRARY_PATH contains the notation for the current directory
- # since this would lead to problems installing/building glibc.
- # LD_LIBRARY_PATH contains the current directory if one of the following
-diff --git a/configure.ac b/configure.ac
-index 33bcd62180..9938ab0dc2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1039,6 +1039,18 @@ fi
- AC_SUBST(SYSINCLUDES)
- AC_SUBST(CXX_SYSINCLUDES)
-+# Obtain some C++ header file paths.  This is used to make a local
-+# copy of those headers in Makerules.
-+if test -n "$CXX"; then
-+  find_cxx_header () {
-+    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
-+  }
-+  CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
-+  CXX_CMATH_HEADER="$(find_cxx_header cmath)"
-+fi
-+AC_SUBST(CXX_CSTDLIB_HEADER)
-+AC_SUBST(CXX_CMATH_HEADER)
-+
- # Test if LD_LIBRARY_PATH contains the notation for the current directory
- # since this would lead to problems installing/building glibc.
- # LD_LIBRARY_PATH contains the current directory if one of the following
diff --git a/contrib/guix/patches/glibc-2.27-dont-redefine-nss-database.patch b/contrib/guix/patches/glibc-2.27-dont-redefine-nss-database.patch
deleted file mode 100644 (file)
index 16a595d..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-commit 78a90c2f74a2012dd3eff302189e47ff6779a757
-Author: Andreas Schwab <schwab@linux-m68k.org>
-Date:   Fri Mar 2 23:07:14 2018 +0100
-
-    Fix multiple definitions of __nss_*_database (bug 22918)
-    
-    (cherry picked from commit eaf6753f8aac33a36deb98c1031d1bad7b593d2d)
-
-diff --git a/nscd/gai.c b/nscd/gai.c
-index d081747797..576fd0045b 100644
---- a/nscd/gai.c
-+++ b/nscd/gai.c
-@@ -45,3 +45,6 @@
- #ifdef HAVE_LIBIDN
- # include <libidn/idn-stub.c>
- #endif
-+
-+/* Some variables normally defined in libc.  */
-+service_user *__nss_hosts_database attribute_hidden;
-diff --git a/nss/nsswitch.c b/nss/nsswitch.c
-index d5e655974f..b0f0c11a3e 100644
---- a/nss/nsswitch.c
-+++ b/nss/nsswitch.c
-@@ -62,7 +62,7 @@ static service_library *nss_new_service (name_database *database,
- /* Declare external database variables.  */
- #define DEFINE_DATABASE(name)                                               \
--  extern service_user *__nss_##name##_database attribute_hidden;            \
-+  service_user *__nss_##name##_database attribute_hidden;                   \
-   weak_extern (__nss_##name##_database)
- #include "databases.def"
- #undef DEFINE_DATABASE
-diff --git a/nss/nsswitch.h b/nss/nsswitch.h
-index eccb535ef5..63573b9ebc 100644
---- a/nss/nsswitch.h
-+++ b/nss/nsswitch.h
-@@ -226,10 +226,10 @@ libc_hidden_proto (__nss_hostname_digits_dots)
- #define MAX_NR_ADDRS    48
- /* Prototypes for __nss_*_lookup2 functions.  */
--#define DEFINE_DATABASE(arg)                              \
--  service_user *__nss_##arg##_database attribute_hidden;    \
--  int __nss_##arg##_lookup2 (service_user **, const char *, \
--                           const char *, void **);        \
-+#define DEFINE_DATABASE(arg)                                                \
-+  extern service_user *__nss_##arg##_database attribute_hidden;                     \
-+  int __nss_##arg##_lookup2 (service_user **, const char *,                 \
-+                           const char *, void **);                          \
-   libc_hidden_proto (__nss_##arg##_lookup2)
- #include "databases.def"
- #undef DEFINE_DATABASE
-diff --git a/posix/tst-rfc3484-2.c b/posix/tst-rfc3484-2.c
-index f509534ca9..8c64ac59ff 100644
---- a/posix/tst-rfc3484-2.c
-+++ b/posix/tst-rfc3484-2.c
-@@ -58,6 +58,7 @@ _res_hconf_init (void)
- #undef        USE_NSCD
- #include "../sysdeps/posix/getaddrinfo.c"
-+service_user *__nss_hosts_database attribute_hidden;
- /* This is the beginning of the real test code.  The above defines
-    (among other things) the function rfc3484_sort.  */
-diff --git a/posix/tst-rfc3484-3.c b/posix/tst-rfc3484-3.c
-index ae44087a10..1c61aaf844 100644
---- a/posix/tst-rfc3484-3.c
-+++ b/posix/tst-rfc3484-3.c
-@@ -58,6 +58,7 @@ _res_hconf_init (void)
- #undef        USE_NSCD
- #include "../sysdeps/posix/getaddrinfo.c"
-+service_user *__nss_hosts_database attribute_hidden;
- /* This is the beginning of the real test code.  The above defines
-    (among other things) the function rfc3484_sort.  */
-diff --git a/posix/tst-rfc3484.c b/posix/tst-rfc3484.c
-index 7f191abbbc..8f45848e44 100644
---- a/posix/tst-rfc3484.c
-+++ b/posix/tst-rfc3484.c
-@@ -58,6 +58,7 @@ _res_hconf_init (void)
- #undef        USE_NSCD
- #include "../sysdeps/posix/getaddrinfo.c"
-+service_user *__nss_hosts_database attribute_hidden;
- /* This is the beginning of the real test code.  The above defines
-    (among other things) the function rfc3484_sort.  */
similarity index 80%
rename from contrib/guix/patches/glibc-2.24-fcommon.patch
rename to contrib/guix/patches/glibc-2.27-fcommon.patch
index 2bc32ede90560ca5af11bce336f89c63df561daf..f3baacab98eed9f5358deb9c836e72de3b3c455a 100644 (file)
@@ -18,15 +18,15 @@ Date:   Fri May 6 11:03:04 2022 +0100
     https://sourceware.org/git/?p=glibc.git;a=commit;h=7650321ce037302bfc2f026aa19e0213b8d02fe6
 
 diff --git a/Makeconfig b/Makeconfig
-index ee379f5852..63c4a2f234 100644
+index 86a71e5802..aa2166be60 100644
 --- a/Makeconfig
 +++ b/Makeconfig
-@@ -824,7 +824,7 @@ ifeq       "$(strip $(+cflags))" ""
- +cflags       := $(default_cflags)
+@@ -896,7 +896,7 @@ ifeq       "$(strip $(+cflags))" ""
  endif # $(+cflags) == ""
  
--+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags)
-++cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) -fcommon
+ +cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) \
+-         $(+stack-protector)
++         $(+stack-protector) -fcommon
  +gcc-nowarn := -w
  
  # Don't duplicate options if we inherited variables from the parent.
index d777af74f01884964aee8c5960e46e5c338b8958..6648bc6c053dfe6ba49dad88c14facd792e9b00b 100644 (file)
@@ -20,6 +20,3 @@ when we being using newer versions of glibc.
  libtype.o := lib%.a
  object-suffixes += .o
  ifeq (yes,$(build-shared))
--- 
-2.35.1
-
index b1b6d5a54863cbcb6a2d92e3bdb9127defbb4d99..a23b095caa7509e58aae69da18872e8d2db9c214 100644 (file)
@@ -1,8 +1,8 @@
 By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
 it's in 'lib/' for us.  This patch fixes that.
 
---- glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed  2012-12-25 04:02:13.000000000 +0100
-+++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed  2013-09-15 23:08:03.000000000 +0200
+--- a/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
++++ b/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
 @@ -1,3 +1,3 @@
  /LD_TRACE_LOADED_OBJECTS=1/a\
  add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"