From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 08 Oct 2025 07:13:58 +0200 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1v6MUw-005USA-0y for lore@lore.pengutronix.de; Wed, 08 Oct 2025 07:13:58 +0200 Received: from localhost ([127.0.0.1] helo=metis.whiteo.stw.pengutronix.de) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1v6MUw-0006S4-2N; Wed, 08 Oct 2025 07:13:58 +0200 Received: from dude03.red.stw.pengutronix.de ([2a0a:edc0:0:1101:1d::39]) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1v6MUh-0006Ro-Cg; Wed, 08 Oct 2025 07:13:43 +0200 From: Holger Assmann To: ptxdist@pengutronix.de Date: Wed, 8 Oct 2025 07:13:16 +0200 Message-ID: <20251008051341.937149-1-h.assmann@pengutronix.de> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [ptxdist] [PATCH v2] ldd: switch to version provided by glibc X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Cc: Holger Assmann Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false Until now, the ldd version installed on the target has been a script copied from projectroot. Besides not having been updated since v2.7 (we are at v2.40+ now), this approach does not account for the various architectures PTXdist can build BSPs for. We already have access to a recent version of ldd, as it comes with glibc from the active toolchain. We can hence drop the local ldd script and directly install the tool from there. Signed-off-by: Holger Assmann --- Changes v1 -> v2: * added migration helper to migrate_ptx --- projectroot/usr/bin/ldd | 213 ------------------------------------ rules/glibc.in | 12 ++ rules/glibc.make | 4 + rules/ldd.in | 7 -- rules/ldd.make | 38 ------- scripts/migrate/migrate_ptx | 7 ++ 6 files changed, 23 insertions(+), 258 deletions(-) delete mode 100644 projectroot/usr/bin/ldd delete mode 100644 rules/ldd.in delete mode 100644 rules/ldd.make diff --git a/projectroot/usr/bin/ldd b/projectroot/usr/bin/ldd deleted file mode 100644 index b3629a42f..000000000 --- a/projectroot/usr/bin/ldd +++ /dev/null @@ -1,213 +0,0 @@ -#! /bin/sh -# Copyright (C) 1996-2004, 2005, 2006, 2007 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; if not, write to the Free -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA. - - -# This is the `ldd' command, which lists what shared libraries are -# used by given dynamically-linked executables. It works by invoking the -# run-time dynamic linker as a command and setting the environment -# variable LD_TRACE_LOADED_OBJECTS to a non-empty value. - -# We should be able to find the translation right at the beginning. -TEXTDOMAIN=libc -TEXTDOMAINDIR=/usr/share/locale - -RTLDLIST="/lib/ld-linux.so.3 /lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /lib/ld.so.1 /lib64/ld64.so.1" -warn= -bind_now= -verbose= -filename_magic_regex="((^|/)lib|.so$)" - -while test $# -gt 0; do - case "$1" in - --vers | --versi | --versio | --version) - echo 'ldd (GNU libc) 2.7' - printf $"Copyright (C) %s Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -" "2007" - printf $"Written by %s and %s. -" "Roland McGrath" "Ulrich Drepper" - exit 0 - ;; - --h | --he | --hel | --help) - echo $"Usage: ldd [OPTION]... FILE... - --help print this help and exit - --version print version information and exit - -d, --data-relocs process data relocations - -r, --function-relocs process data and function relocations - -u, --unused print unused direct dependencies - -v, --verbose print all information -For bug reporting instructions, please see: -." - exit 0 - ;; - -d | --d | --da | --dat | --data | --data- | --data-r | --data-re | \ - --data-rel | --data-relo | --data-reloc | --data-relocs) - warn=yes - shift - ;; - -r | --f | --fu | --fun | --func | --funct | --functi | --functio | \ - --function | --function- | --function-r | --function-re | --function-rel | \ - --function-relo | --function-reloc | --function-relocs) - warn=yes - bind_now=yes - shift - ;; - -v | --verb | --verbo | --verbos | --verbose) - verbose=yes - shift - ;; - -u | --u | --un | --unu | --unus | --unuse | --unused) - unused=yes - shift - ;; - --v | --ve | --ver) - echo >&2 $"ldd: option \`$1' is ambiguous" - exit 1 - ;; - --) # Stop option processing. - shift; break - ;; - -*) - echo >&2 'ldd:' $"unrecognized option" "\`$1'" - echo >&2 $"Try \`ldd --help' for more information." - exit 1 - ;; - *) - break - ;; - esac -done - -nonelf () -{ - # Maybe extra code for non-ELF binaries. - return 1; -} - -add_env="LD_TRACE_LOADED_OBJECTS=1 LD_WARN=$warn LD_BIND_NOW=$bind_now" -add_env="$add_env LD_LIBRARY_VERSION=\$verify_out" -add_env="$add_env LD_VERBOSE=$verbose" -if test "$unused" = yes; then - add_env="$add_env LD_DEBUG=\"$LD_DEBUG${LD_DEBUG:+,}unused\"" -fi - -# The following use of cat is needed to make ldd work in SELinux -# environments where the executed program might not have permissions -# to write to the console/tty. But only bash 3.x supports the pipefail -# option, and we don't bother to handle the case for older bash versions. -if set -o pipefail 2> /dev/null; then - try_trace() { - eval $add_env '"$@"' | cat - } -else - try_trace() { - eval $add_env '"$@"' - } -fi - -case $# in -0) - echo >&2 'ldd:' $"missing file arguments" - echo >&2 $"Try \`ldd --help' for more information." - exit 1 - ;; -1) - single_file=t - ;; -*) - single_file=f - ;; -esac - -result=0 -for file do - # We don't list the file name when there is only one. - test $single_file = t || echo "${file}:" - case $file in - */*) : - ;; - *) file=./$file - ;; - esac - if test ! -e "$file"; then - echo "ldd: ${file}:" $"No such file or directory" >&2 - result=1 - elif test ! -f "$file"; then - echo "ldd: ${file}:" $"not regular file" >&2 - result=1 - elif test -r "$file"; then - if test ! -x "$file" && eval echo "$file" \ - | egrep -v "$filename_magic_regex" > /dev/null; then - echo 'ldd:' $"warning: you do not have execution permission for"\ - "\`$file'" >&2 - fi - RTLD= - ret=1 - for rtld in ${RTLDLIST}; do - if test -x $rtld; then - verify_out=`${rtld} --verify "$file" 2>/dev/null` - ret=$? - case $ret in - [02]) RTLD=${rtld}; break;; - esac - fi - done - case $ret in - 0) - # If the program exits with exit code 5, it means the process has been - # invoked with __libc_enable_secure. Fall back to running it through - # the dynamic linker. - if test -x "$file"; then - try_trace "$file" - else - try_trace "${RTLD}" "$file" - fi - rc=$? - if [ $rc = 5 ]; then - try_trace "$RTLD" "$file" - rc=$? - fi - [ $rc = 0 ] || result=1 - ;; - 1) - # This can be a non-ELF binary or no binary at all. - nonelf "$file" || { - echo $" not a dynamic executable" - result=1 - } - ;; - 2) - try_trace "$RTLD" "$file" || result=1 - ;; - *) - echo 'ldd:' ${RTLD} $"exited with unknown exit code" "($ret)" >&2 - exit 1 - ;; - esac - else - echo 'ldd:' $"error: you do not have read permission for" "\`$file'" >&2 - result=1 - fi -done - -exit $result -# Local Variables: -# mode:ksh -# End: diff --git a/rules/glibc.in b/rules/glibc.in index 3d57cd2c6..b63621395 100644 --- a/rules/glibc.in +++ b/rules/glibc.in @@ -45,6 +45,18 @@ config GLIBC_LD You don't want to deselect this, unless you have a pure static system. This is why this options hasn't a prompt. +config GLIBC_LDD + bool + prompt "Install ldd from glibc" + select GLIBC_LD + help + ldd prints the shared objects (shared libraries) required + by each program or shared object specified on the command + line. + + Selecting this installs the ldd version deployed with the + toolchain for the active platform. + config GLIBC_C bool default y diff --git a/rules/glibc.make b/rules/glibc.make index f90f2d8f0..58fafa070 100644 --- a/rules/glibc.make +++ b/rules/glibc.make @@ -176,6 +176,10 @@ ifdef PTXCONF_GLIBC_LDCONFIG_RC_ONCE /etc/rc.once.d/ldconfig) endif +ifdef PTXCONF_GLIBC_LDD + @$(call install_copy_toolchain_usr, glibc, bin/ldd) +endif + ifdef PTXCONF_GLIBC_I18N_BIN_LOCALE @$(call install_copy_toolchain_usr, glibc, bin/locale) endif diff --git a/rules/ldd.in b/rules/ldd.in deleted file mode 100644 index 66422c2ab..000000000 --- a/rules/ldd.in +++ /dev/null @@ -1,7 +0,0 @@ -## SECTION=debug_tools - -config LDD - tristate - prompt "ldd" - help - ldd prints shared library dependencies of object files diff --git a/rules/ldd.make b/rules/ldd.make deleted file mode 100644 index ac9bbc3fa..000000000 --- a/rules/ldd.make +++ /dev/null @@ -1,38 +0,0 @@ -# -*-makefile-*- -# -# Copyright (C) 2006 by Sascha Hauer -# (C) 2010 by Michael Olbrich -# -# For further information about the PTXdist project and license conditions -# see the README file. -# - -# -# We provide this package -# -PACKAGES-$(PTXCONF_LDD) += ldd - -# This is the version from the glibc we have stolen from -LDD_VERSION := 2.7 -LDD_LICENSE := LGPL-2.1-or-later - -# ---------------------------------------------------------------------------- -# Target-Install -# ---------------------------------------------------------------------------- - -$(STATEDIR)/ldd.targetinstall: - @$(call targetinfo) - - @$(call install_init, ldd) - @$(call install_fixup, ldd,PRIORITY,optional) - @$(call install_fixup, ldd,SECTION,base) - @$(call install_fixup, ldd,AUTHOR,"Robert Schwebel ") - @$(call install_fixup, ldd,DESCRIPTION,missing) - - @$(call install_alternative, ldd, 0, 0, 0755, /usr/bin/ldd) - - @$(call install_finish, ldd) - - @$(call touch) - -# vim: syntax=make diff --git a/scripts/migrate/migrate_ptx b/scripts/migrate/migrate_ptx index dae0415ce..ec8cff52e 100755 --- a/scripts/migrate/migrate_ptx +++ b/scripts/migrate/migrate_ptx @@ -501,3 +501,10 @@ s/^\(\(# \)\?PTXCONF_LIGHTTPD_PCRE\)\>/\12/ # /^\(PTXCONF_MESALIB_DRI_\)SWRAST\([^_]*$\)/N s/^\(\(# \)\?PTXCONF_MESALIB_DRI_\)SWRAST\([^\n]*\n\)\(.*\)$/\1SOFTPIPE\3\1LLVMPIPE\3\4/ + +# from : ptxdist-2025.09.0 +# to : ptxdist-2025.10.0 +# symbol : LDD -> GLIBC_LDD +# reason : switch to LDD provided by toolchain +# +s/^\(\(# \)\?PTXCONF_\)LDD\>/\1GLIBC_LDD/ -- 2.47.3