From patchwork Thu Feb 3 16:52:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 3250 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF78EC433FE for ; Thu, 3 Feb 2022 16:52:11 +0000 (UTC) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by mx.groups.io with SMTP id smtpd.web08.285.1643907130985895200 for ; Thu, 03 Feb 2022 08:52:11 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=OmGiQgcn; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.53, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f53.google.com with SMTP id e8so6307418wrc.0 for ; Thu, 03 Feb 2022 08:52:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=/Z9kKwgYCspnSrJNGuUqn6nWSCgDCOpQ99SAc70SC2k=; b=OmGiQgcnGTbXVXL3jKzhYZP/eLW1Mut5NpApxqOUXMXqhvFeHVtG/NDYeKAsNkAa2Y agcbwvUV5KpRawAX7lqbVZMb5pm+fn8LBPPIZPUV+cHcANNN3RnHM9EdNOGFPPVsL4JM IFpHfR7Rzi1FWodL6tAZV6F+M14KG+yWi4uuU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=/Z9kKwgYCspnSrJNGuUqn6nWSCgDCOpQ99SAc70SC2k=; b=eYSLEXb8wuiKyYkkb0Wb1xtuslkmy8l3/bJMevS2bIEJn0ENH+gXmATMkBmDO5d2NM N85pZfeQMg0dmYaYLXQrGVS6J6H37kYqfa7itz2ck/tx+OYdALitHMxT+bAbaxLgyoY2 2NJOxizBiy1c6mZS85aOpWKBRP4gCNRGtI5piCgv1qLEk7OYlI+Tgp63ws73/s1OFBh2 2aWPPUbnu+xeV0Q9wbXt7xGzZKxXKgBVmsLdXJHjrC1qV5kB5PZ8XQE1pnvf0Lggl5ow HzMFEMhghD87FqoT9ItVW0qh36LXHqi0syOZ3S3EKRbrV/a8EksbASUWdSfqf93qqM1T Z3GQ== X-Gm-Message-State: AOAM530adswLkEySB8eND/5K0lB6Fb+7sCTGpe8TQIkUsv+RZ342Mib7 cCeEyvQr7g0YEegaf0+S3QQwvPTPZGxweg== X-Google-Smtp-Source: ABdhPJzE3NHv+sUYSHxySlwxkm4wKP+h/96oIzinnnCboYON7gO6fCG0diEipAkW/JRgJ7PoLdE/YA== X-Received: by 2002:a5d:67cd:: with SMTP id n13mr30559558wrw.351.1643907128568; Thu, 03 Feb 2022 08:52:08 -0800 (PST) Received: from hex.int.rpsys.net ([2001:8b0:aba:5f3c:e772:7635:2207:1103]) by smtp.gmail.com with ESMTPSA id i13sm21089185wrf.3.2022.02.03.08.52.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Feb 2022 08:52:08 -0800 (PST) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 1/2] prelink: Drop support for it Date: Thu, 3 Feb 2022 16:52:06 +0000 Message-Id: <20220203165207.2401847-1-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 03 Feb 2022 16:52:11 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/161290 Prelink is being dropped by glibc in 2.36. It already causes issues with binary corruption, has a number of open bugs and is of questionable benefit without disabling load address randomization and PIE executables. We disabled it by default a while back but left people able to use it. We would be unable to maintain it alone without glibc support so remove the remaining pieces. Signed-off-by: Richard Purdie --- meta/conf/distro/include/maintainers.inc | 1 - meta/lib/oe/package_manager/ipk/rootfs.py | 37 ---- meta/lib/oe/utils.py | 11 -- .../0001-Add-MIPS-gnu-hash-support.patch | 110 ----------- .../prelink/prelink/macros.prelink | 5 - .../prelink/prelink/prelink.conf | 18 -- .../prelink/prelink/prelink.cron.daily | 40 ---- .../prelink/prelink/prelink.default | 22 --- meta/recipes-devtools/prelink/prelink_git.bb | 185 ------------------ scripts/sstate-sysroot-cruft.sh | 12 -- 10 files changed, 441 deletions(-) delete mode 100644 meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch delete mode 100644 meta/recipes-devtools/prelink/prelink/macros.prelink delete mode 100644 meta/recipes-devtools/prelink/prelink/prelink.conf delete mode 100644 meta/recipes-devtools/prelink/prelink/prelink.cron.daily delete mode 100644 meta/recipes-devtools/prelink/prelink/prelink.default delete mode 100644 meta/recipes-devtools/prelink/prelink_git.bb diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc index cb289a0eee9..32ec391eb9e 100644 --- a/meta/conf/distro/include/maintainers.inc +++ b/meta/conf/distro/include/maintainers.inc @@ -577,7 +577,6 @@ RECIPE_MAINTAINER:pn-popt = "Yi Zhao " RECIPE_MAINTAINER:pn-powertop = "Alexander Kanavin " RECIPE_MAINTAINER:pn-ppp = "Hongxu Jia " RECIPE_MAINTAINER:pn-ppp-dialin = "Hongxu Jia " -RECIPE_MAINTAINER:pn-prelink = "Mark Hatle " RECIPE_MAINTAINER:pn-procps = "Alexander Kanavin " RECIPE_MAINTAINER:pn-pseudo = "Richard Purdie " RECIPE_MAINTAINER:pn-psmisc = "Alexander Kanavin " diff --git a/meta/lib/oe/package_manager/ipk/rootfs.py b/meta/lib/oe/package_manager/ipk/rootfs.py index 26dbee6f6ac..10a831994ee 100644 --- a/meta/lib/oe/package_manager/ipk/rootfs.py +++ b/meta/lib/oe/package_manager/ipk/rootfs.py @@ -145,51 +145,14 @@ class PkgRootfs(DpkgOpkgRootfs): self.pm.recover_packaging_data() bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS'), True) - - def _prelink_file(self, root_dir, filename): - bb.note('prelink %s in %s' % (filename, root_dir)) - prelink_cfg = oe.path.join(root_dir, - self.d.expand('${sysconfdir}/prelink.conf')) - if not os.path.exists(prelink_cfg): - shutil.copy(self.d.expand('${STAGING_DIR_NATIVE}${sysconfdir_native}/prelink.conf'), - prelink_cfg) - - cmd_prelink = self.d.expand('${STAGING_DIR_NATIVE}${sbindir_native}/prelink') - self._exec_shell_cmd([cmd_prelink, - '--root', - root_dir, - '-amR', - '-N', - '-c', - self.d.expand('${sysconfdir}/prelink.conf')]) - ''' Compare two files with the same key twice to see if they are equal. If they are not equal, it means they are duplicated and come from different packages. - 1st: Comapre them directly; - 2nd: While incremental image creation is enabled, one of the - files could be probaly prelinked in the previous image - creation and the file has been changed, so we need to - prelink the other one and compare them. ''' def _file_equal(self, key, f1, f2): - - # Both of them are not prelinked if filecmp.cmp(f1, f2): return True - - if bb.data.inherits_class('image-prelink', self.d): - if self.image_rootfs not in f1: - self._prelink_file(f1.replace(key, ''), f1) - - if self.image_rootfs not in f2: - self._prelink_file(f2.replace(key, ''), f2) - - # Both of them are prelinked - if filecmp.cmp(f1, f2): - return True - # Not equal return False diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index 136650e6f74..84790b7dffa 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py @@ -537,17 +537,6 @@ class ThreadedPool: for worker in self.workers: worker.join() -def write_ld_so_conf(d): - # Some utils like prelink may not have the correct target library paths - # so write an ld.so.conf to help them - ldsoconf = d.expand("${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf") - if os.path.exists(ldsoconf): - bb.utils.remove(ldsoconf) - bb.utils.mkdirhier(os.path.dirname(ldsoconf)) - with open(ldsoconf, "w") as f: - f.write(d.getVar("base_libdir") + '\n') - f.write(d.getVar("libdir") + '\n') - class ImageQAFailed(Exception): def __init__(self, description, name=None, logfile=None): self.description = description diff --git a/meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch b/meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch deleted file mode 100644 index da0275bfcdf..00000000000 --- a/meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 05240e13668422c4f9118f2cde953ec875d0d68f Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 14 Jan 2020 01:37:22 -0800 -Subject: [PATCH] Add MIPS gnu hash support - -Upstream-Status: Pending -Signed-off-by: Khem Raj ---- - src/arch-mips.c | 1 + - src/prelink.c | 1 + - src/prelink.h | 5 +++++ - 3 files changed, 7 insertions(+) - ---- a/src/arch-mips.c -+++ b/src/arch-mips.c -@@ -324,6 +324,7 @@ mips_adjust_dyn (DSO *dso, int n, GElf_D - case DT_MIPS_BASE_ADDRESS: - case DT_MIPS_RLD_MAP: - case DT_MIPS_OPTIONS: -+ case DT_MIPS_XHASH: - if (dyn->d_un.d_ptr >= start) - dyn->d_un.d_ptr += adjust; - return 1; ---- a/src/prelink.c -+++ b/src/prelink.c -@@ -425,6 +425,7 @@ prelink_prepare (DSO *dso) - { - case SHT_HASH: - case SHT_GNU_HASH: -+ case SHT_MIPS_XHASH: - case SHT_DYNSYM: - case SHT_REL: - case SHT_RELA: ---- a/src/prelink.h -+++ b/src/prelink.h -@@ -114,6 +114,11 @@ typedef uint8_t Elf64_Byte; - #define SHT_MIPS_ABIFLAGS 0x7000002a - #endif - -+#ifndef SHT_MIPS_XHASH -+#define DT_MIPS_XHASH 0x70000036 -+#define SHT_MIPS_XHASH 0x7000002b -+#endif -+ - #ifndef RSS_UNDEF - #define RSS_UNDEF 0 - #endif ---- a/src/dso.c -+++ b/src/dso.c -@@ -109,6 +109,11 @@ read_dynamic (DSO *dso) - dso->info_DT_GNU_HASH = dyn.d_un.d_val; - dso->info_set_mask |= (1ULL << DT_GNU_HASH_BIT); - } -+ else if (dyn.d_tag == DT_MIPS_XHASH) -+ { -+ dso->info_DT_GNU_HASH = dyn.d_un.d_val; -+ dso->info_set_mask |= (1ULL << DT_GNU_HASH_BIT); -+ } - else if (dyn.d_tag == DT_TLSDESC_PLT) - { - dso->info_DT_TLSDESC_PLT = dyn.d_un.d_val; -@@ -1463,6 +1468,7 @@ adjust_dso (DSO *dso, GElf_Addr start, G - break; - case SHT_HASH: - case SHT_GNU_HASH: -+ case SHT_MIPS_XHASH: - case SHT_NOBITS: - case SHT_STRTAB: - break; ---- a/src/space.c -+++ b/src/space.c -@@ -61,6 +61,7 @@ print_sections (DSO *dso, GElf_Ehdr *ehd - { SHT_GNU_versym, "VERSYM" }, - { SHT_GNU_LIBLIST, "LIBLIST" }, - { SHT_GNU_HASH, "GNU_HASH" }, -+ { SHT_MIPS_XHASH, "MIPS_XHASH" }, - { 0, NULL } - }; - -@@ -183,6 +184,7 @@ readonly_is_movable (DSO *dso, GElf_Ehdr - { - case SHT_HASH: - case SHT_GNU_HASH: -+ case SHT_MIPS_XHASH: - case SHT_DYNSYM: - case SHT_REL: - case SHT_RELA: -@@ -558,6 +560,7 @@ find_readonly_space (DSO *dso, GElf_Shdr - { - case SHT_HASH: - case SHT_GNU_HASH: -+ case SHT_MIPS_XHASH: - case SHT_DYNSYM: - case SHT_STRTAB: - case SHT_GNU_verdef: ---- a/src/exec.c -+++ b/src/exec.c -@@ -65,7 +65,11 @@ update_dynamic_tags (DSO *dso, GElf_Shdr - || (dynamic_info_is_set (dso, DT_GNU_HASH_BIT) - && dso->info_DT_GNU_HASH == old_shdr[j].sh_addr - && old_shdr[j].sh_type == SHT_GNU_HASH -- && set_dynamic (dso, DT_GNU_HASH, shdr[i].sh_addr, 1))) -+ && set_dynamic (dso, DT_GNU_HASH, shdr[i].sh_addr, 1)) -+ || (dynamic_info_is_set (dso, DT_GNU_HASH_BIT) -+ && dso->info_DT_GNU_HASH == old_shdr[j].sh_addr -+ && old_shdr[j].sh_type == SHT_MIPS_XHASH -+ && set_dynamic (dso, DT_MIPS_XHASH, shdr[i].sh_addr, 1))) - return 1; - } - diff --git a/meta/recipes-devtools/prelink/prelink/macros.prelink b/meta/recipes-devtools/prelink/prelink/macros.prelink deleted file mode 100644 index cb166958850..00000000000 --- a/meta/recipes-devtools/prelink/prelink/macros.prelink +++ /dev/null @@ -1,5 +0,0 @@ -# rpm-4.1 verifies prelinked libraries using a prelink undo helper. -# Note: The 2nd token is used as argv[0] and "library" is a -# placeholder that will be deleted and replaced with the appropriate -# library file path. -%__prelink_undo_cmd /usr/sbin/prelink prelink -y library diff --git a/meta/recipes-devtools/prelink/prelink/prelink.conf b/meta/recipes-devtools/prelink/prelink/prelink.conf deleted file mode 100644 index 562f23c59d2..00000000000 --- a/meta/recipes-devtools/prelink/prelink/prelink.conf +++ /dev/null @@ -1,18 +0,0 @@ -# This config file contains a list of directories both with binaries -# and libraries prelink should consider by default. -# If a directory name is prefixed with `-l ', the directory hierarchy -# will be walked as long as filesystem boundaries are not crossed. -# If a directory name is prefixed with `-h ', symbolic links in a -# directory hierarchy are followed. --l /usr/local/sbin --l /sbin --l /usr/sbin --l /usr/local/bin --l /bin --l /usr/bin --l /usr/X11R6/bin --l /usr/games --l /usr/local/lib{,32,64,x32} --l /lib{,32,64,x32} --l /usr/lib{,32,64,x32} --l /usr/X11R6/lib{,32,64,x32} diff --git a/meta/recipes-devtools/prelink/prelink/prelink.cron.daily b/meta/recipes-devtools/prelink/prelink/prelink.cron.daily deleted file mode 100644 index 0b3c07322c7..00000000000 --- a/meta/recipes-devtools/prelink/prelink/prelink.cron.daily +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -. /etc/default/prelink - -renice +19 -p $$ >/dev/null 2>&1 - -if [ "$PRELINKING" != yes ]; then - if [ -f /etc/prelink.cache ]; then - echo /usr/sbin/prelink -uav > /var/log/prelink.log - /usr/sbin/prelink -uav >> /var/log/prelink.log 2>&1 - rm -f /etc/prelink.cache - # Restart init if needed - [ -n "$(find `ldd /sbin/init | awk '{ print $3 }'` /sbin/init -ctime -1 2>/dev/null )" ] && /sbin/telinit u - fi - exit 0 -fi - -if [ ! -f /etc/prelink.cache -o -f /var/lib/misc/prelink.force ] \ - || grep -q '^prelink-ELF0.[0-2]' /etc/prelink.cache; then - # If cache does not exist or is from older prelink versions or - # if we were asked to explicitely, force full prelinking - rm -f /etc/prelink.cache /var/lib/misc/prelink.force - PRELINK_OPTS="$PRELINK_OPTS -f" - date > /var/lib/misc/prelink.full -elif [ -n "$PRELINK_FULL_TIME_INTERVAL" \ - -a "`find /var/lib/misc/prelink.full -mtime -${PRELINK_FULL_TIME_INTERVAL} 2>/dev/null`" \ - = /var/lib/misc/prelink.full ]; then - # If prelink without -q has been run in the last - # PRELINK_FULL_TIME_INTERVAL days, just use quick mode - PRELINK_OPTS="$PRELINK_OPTS -q" -else - date > /var/lib/misc/prelink.full -fi - -echo /usr/sbin/prelink -av $PRELINK_OPTS > /var/log/prelink.log -/usr/sbin/prelink -av $PRELINK_OPTS >> /var/log/prelink.log 2>&1 -# Restart init if needed -[ -n "$(find `ldd /sbin/init | awk '{ print $3 }'` /sbin/init -ctime -1 2>/dev/null )" ] && /sbin/telinit u - -exit 0 diff --git a/meta/recipes-devtools/prelink/prelink/prelink.default b/meta/recipes-devtools/prelink/prelink/prelink.default deleted file mode 100644 index d8802f820ae..00000000000 --- a/meta/recipes-devtools/prelink/prelink/prelink.default +++ /dev/null @@ -1,22 +0,0 @@ -# Set this to no to disable prelinking altogether -# or to yes to enable it. -# (if you change this from yes to no prelink -ua -# will be run next night to undo prelinking) -PRELINKING=yes - -# Options to pass to prelink -# -m Try to conserve virtual memory by allowing overlapping -# assigned virtual memory slots for libraries which -# never appear together in one binary -# -R Randomize virtual memory slot assignments for libraries. -# This makes it slightly harder for various buffer overflow -# attacks, since library addresses will be different on each -# host using -R. -PRELINK_OPTS=-mR - -# How often should full prelink be run (in days) -# Normally, prelink will be run in quick mode, every -# $PRELINK_FULL_TIME_INTERVAL days it will be run -# in normal mode. Comment this line out if prelink -# should be run in normal mode always. -PRELINK_FULL_TIME_INTERVAL=14 diff --git a/meta/recipes-devtools/prelink/prelink_git.bb b/meta/recipes-devtools/prelink/prelink_git.bb deleted file mode 100644 index 24713b61f84..00000000000 --- a/meta/recipes-devtools/prelink/prelink_git.bb +++ /dev/null @@ -1,185 +0,0 @@ -SECTION = "devel" -# Need binutils for libiberty.a -# Would need transfig-native for documentation if it wasn't disabled -DEPENDS = "elfutils binutils" -SUMMARY = "An ELF prelinking utility" -HOMEPAGE = "http://git.yoctoproject.org/cgit.cgi/prelink-cross/about/" -DESCRIPTION = "The prelink package contains a utility which modifies ELF shared libraries \ -and executables, so that far fewer relocations need to be resolved at \ -runtime and thus programs come up faster." -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b" -SRCREV = "f9975537dbfd9ade0fc813bd5cf5fcbe41753a37" -PV = "1.0+git${SRCPV}" - -# -# The cron script attempts to re-prelink the system daily -- on -# systems where users are adding applications, this might be reasonable -# but for embedded, we should be re-running prelink -a after an update. -# -# Default is prelinking is enabled. -# -SUMMARY:${PN}-cron = "Cron scripts to control automatic prelinking" -DESCRIPTION:${PN}-cron = "Cron scripts to control automatic prelinking. \ -See: ${sysconfdir}/cron.daily/prelink for configuration information." - -FILES:${PN}-cron = "${sysconfdir}/cron.daily ${sysconfdir}/default" - -PACKAGES =+ "${PN}-cron" - -SRC_URI = "git://git.yoctoproject.org/prelink-cross.git;branch=cross_prelink_staging \ - file://0001-Add-MIPS-gnu-hash-support.patch \ - file://prelink.conf \ - file://prelink.cron.daily \ - file://prelink.default \ - file://macros.prelink \ - " -UPSTREAM_CHECK_COMMITS = "1" - -# error: error.h: No such file or directory -COMPATIBLE_HOST:libc-musl = 'null' - -TARGET_OS_ORIG := "${TARGET_OS}" -OVERRIDES:append = ":${TARGET_OS_ORIG}" - -S = "${WORKDIR}/git" - -inherit autotools - -BBCLASSEXTEND = "native" - -EXTRA_OECONF = "--with-pkgversion=${PV}-${PR} \ - --with-bugurl=http://bugzilla.yoctoproject.org/" - -PACKAGECONFIG ??= "" -PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux" - -# -# For target prelink we need to ensure paths match the lib path layout -# including for any configured multilibs -# -python do_linkerpaths () { - values = all_multilib_tune_list(["TUNE_ARCH", "baselib", "ABIEXTENSION"], d) - - arches = values["TUNE_ARCH"] - baselibs = values["baselib"] - abis = values["ABIEXTENSION"] - - def replace_lines(f, search, replacement, d, firstonly = False, secondonly = False): - f = d.expand(f) - if search == replacement: - return - bb.debug(2, "Replacing %s with %s in %s" % (search, replacement, f)) - with open(f, "r") as data: - lines = data.readlines() - with open(f, "w") as data: - for line in lines: - if not secondonly and not firstonly: - line = line.replace(search, replacement) - elif secondonly and search in line: - secondonly = False - elif firstonly and search and search in line: - line = line.replace(search, replacement) - search = None - data.write(line) - - def replace_lines_rtld(f, search, replacement, section, d): - f = d.expand(f) - bb.debug(2, "Replacing %s with %s in %s" % (search, replacement, f)) - with open(f, "r") as data: - lines = data.readlines() - found = False - found2 = False - with open(f, "w") as data: - for line in lines: - if section in line: - if section == "else" and "if" in line: - found = False - else: - found = True - if found and "dst_LIB =" in line: - found2 = True - elif "}" in line: - found = False - found2 = False - if found2: - line = line.replace(search, replacement) - data.write(line) - - for i, arch in enumerate(arches): - tune_baselib = baselibs[i] - abi = abis[i] - - bits = 32 - if arch == "powerpc": - replace_lines("${S}/src/arch-ppc.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d) - elif arch == "powerpc64": - replace_lines("${S}/src/arch-ppc64.c", "/lib64/ld64.so.1", "/" + tune_baselib + "/ld64.so.1", d) - bits = 64 - elif arch == "x86_64": - if abi == "x32": - replace_lines("${S}/src/arch-x86_64.c", "/libx32/ld-linux-x32.so.2", "/" + tune_baselib + "/ld-linux-x32.so.2", d) - else: - replace_lines("${S}/src/arch-x86_64.c", "/lib64/ld-linux-x86-64.so.2", "/" + tune_baselib + "/ld-linux-x86-64.so.2", d) - bits = 64 - elif arch == "arm": - replace_lines("${S}/src/arch-arm.c", "/lib/ld-linux.so.3", "/" + tune_baselib + "/ld-linux.so.3", d) - replace_lines("${S}/src/arch-arm.c", "/lib/ld-linux-armhf.so.3", "/" + tune_baselib + "/ld-linux-armhf.so.3", d) - elif arch == "mips" or arch == "mipsel": - replace_lines("${S}/src/arch-mips.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d, firstonly=True) - replace_lines("${S}/src/arch-mips.c", "/lib32/ld.so.1", "/" + tune_baselib + "/ld.so.1", d) - elif arch == "mips64" or arch == "mips64el": - replace_lines("${S}/src/arch-mips.c", "/lib/ld.so.1", "/" + tune_baselib + "/ld.so.1", d, secondonly=True) - replace_lines("${S}/src/arch-mips.c", "/lib64/ld.so.1", "/" + tune_baselib + "/ld.so.1", d) - bits = 64 - elif arch.endswith("86"): - replace_lines("${S}/src/arch-i386.c", "/lib/ld-linux.so.2", "/" + tune_baselib + "/ld-linux.so.2", d) - if bits == 32 and tune_baselib != "lib": - replace_lines_rtld("${S}/src/rtld/rtld.c", "lib", tune_baselib, "else", d) - if bits == 64 and tune_baselib != "lib64": - replace_lines_rtld("${S}/src/rtld/rtld.c", "lib64", tune_baselib, "use_64bit", d) -} - -python () { - overrides = d.getVar("OVERRIDES").split(":") - if "class-target" in overrides: - bb.build.addtask('do_linkerpaths', 'do_configure', 'do_patch', d) -} - -do_configure:prepend () { - # Disable documentation! - echo "all:" > ${S}/doc/Makefile.am -} - -do_install:append () { - install -d ${D}${sysconfdir}/cron.daily ${D}${sysconfdir}/default ${D}${sysconfdir}/rpm - install -m 0644 ${WORKDIR}/prelink.conf ${D}${sysconfdir}/prelink.conf - install -m 0644 ${WORKDIR}/prelink.cron.daily ${D}${sysconfdir}/cron.daily/prelink - install -m 0644 ${WORKDIR}/prelink.default ${D}${sysconfdir}/default/prelink - install -m 0644 ${WORKDIR}/macros.prelink ${D}${sysconfdir}/rpm/macros.prelink -} - -# If we ae doing a cross install, we want to avoid prelinking. -# Prelinking during a cross install should be handled by the image-prelink -# bbclass. If the user desires this to run on the target at first boot -# they will need to create a custom boot script. -pkg_postinst:prelink() { -#!/bin/sh - -if [ "x$D" != "x" ]; then - exit 0 -fi - -prelink -a -} - -pkg_prerm:prelink() { -#!/bin/sh - -if [ "x$D" != "x" ]; then - exit 1 -fi - -prelink -au -} - diff --git a/scripts/sstate-sysroot-cruft.sh b/scripts/sstate-sysroot-cruft.sh index fbf1ca3c431..9c948e932de 100755 --- a/scripts/sstate-sysroot-cruft.sh +++ b/scripts/sstate-sysroot-cruft.sh @@ -145,18 +145,6 @@ WHITELIST="${WHITELIST} \ .*/var/cache/fontconfig/ \ " -# created by oe.utils.write_ld_so_conf which is used from few bbclasses and recipes: -# meta/classes/image-prelink.bbclass: oe.utils.write_ld_so_conf(d) -# meta/classes/insane.bbclass: oe.utils.write_ld_so_conf(d) -# meta/classes/insane.bbclass: oe.utils.write_ld_so_conf(d) -# meta/recipes-gnome/gobject-introspection/gobject-introspection_1.48.0.bb: oe.utils.write_ld_so_conf(d) -# meta/recipes-gnome/gobject-introspection/gobject-introspection_1.48.0.bb: oe.utils.write_ld_so_conf(d) -# introduced in oe-core commit 7fd1d7e639c2ed7e0699937a5cb245c187b7c811 -# and more visible since added to gobject-introspection in 10e0c1a3a452baa05d160a92a54b2e33cf0fd061 -WHITELIST="${WHITELIST} \ - [^/]*/etc/ld.so.conf \ -" - SYSROOTS="`readlink -f ${tmpdir}`/sysroots/" mkdir ${OUTPUT} From patchwork Thu Feb 3 16:52:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 3249 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id E2BE4C433EF for ; Thu, 3 Feb 2022 16:52:11 +0000 (UTC) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by mx.groups.io with SMTP id smtpd.web09.306.1643907130894285990 for ; Thu, 03 Feb 2022 08:52:11 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=D2/RCzGO; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.53, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f53.google.com with SMTP id s10so3653133wra.5 for ; Thu, 03 Feb 2022 08:52:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=17OKCSy7GmiwNRC/kwqVSJws5Yj13N6Dxo4jKhCHTvs=; b=D2/RCzGOi2Eum7kFBJHYmCvx0Gbci8snYXdFeuFQfPk8RMCWacTCYh0/TnAgbhITQa MM6w9vQaoSvBnBgteAEc/e17Qsia1dbmSwACenqGT+qIRaAt712uOQv2JzgHk46MYkJt +dnLw/kvu56YRAgCfSAuPFtOnDZKk4QOk3rhQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=17OKCSy7GmiwNRC/kwqVSJws5Yj13N6Dxo4jKhCHTvs=; b=1MudSX8Lml9nF1v3ru16ZXeJxHkrygCOie0yGlzrdZX3GH7eakPLz/b9LZIWR6TCNZ 4SYiZn79Aw2RldmR8wFKyxwZKjD68+1e7z7kgOQQ3HNn0HZ/gmyZqrDRegCM/Y2tpt6Z hSV36iT1geNansIjlgyu2SNIiGU7hS0wK+EhcxZEmEUu97Zy4YITpENOs5HtkrJJJpNY tVdSQaoeAMvYMo9AGLj/BAN6OCfAyY2TXZIp3rFjZHH1vkeuGujy+FruKaHCQarcj7lO SNbgKii496v5tL9YgqLZc4H2w33XAmYWiheOcAhtoxRriABg+F9IngmX36U72tnL4pT2 SjuQ== X-Gm-Message-State: AOAM533NbLtDUFJwEfEAs7NnMVkcmsFq3t1XW2tNSe0b6k9AHUDaVQtA QP9axi/WcPnI8oZG6rZ1Otu02XUO3fpENg== X-Google-Smtp-Source: ABdhPJypPPcfmTkWV6M8hEnuyg5jftmdLXDWBFp63acfY7wOwyo/yn8tsiE6aUOY3UMqsuOzsLeLKA== X-Received: by 2002:a5d:43c2:: with SMTP id v2mr3709358wrr.455.1643907129109; Thu, 03 Feb 2022 08:52:09 -0800 (PST) Received: from hex.int.rpsys.net ([2001:8b0:aba:5f3c:e772:7635:2207:1103]) by smtp.gmail.com with ESMTPSA id i13sm21089185wrf.3.2022.02.03.08.52.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Feb 2022 08:52:08 -0800 (PST) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 2/2] glibc: Drop prelink patch Date: Thu, 3 Feb 2022 16:52:07 +0000 Message-Id: <20220203165207.2401847-2-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220203165207.2401847-1-richard.purdie@linuxfoundation.org> References: <20220203165207.2401847-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 03 Feb 2022 16:52:11 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/161289 With the removal of prelink, we no longer need the glibc patch for it either. Signed-off-by: Richard Purdie --- ...ke-_dl_build_local_scope-breadth-fir.patch | 53 ------------------- meta/recipes-core/glibc/glibc_2.34.bb | 1 - 2 files changed, 54 deletions(-) delete mode 100644 meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch diff --git a/meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch b/meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch deleted file mode 100644 index fb0a609dbbd..00000000000 --- a/meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 50b605dece16606dd9d1c737e579c13725eab11d Mon Sep 17 00:00:00 2001 -From: Mark Hatle -Date: Thu, 18 Aug 2016 14:07:58 -0500 -Subject: [PATCH] elf/dl-deps.c: Make _dl_build_local_scope breadth first - -According to the ELF specification: - -When resolving symbolic references, the dynamic linker examines the symbol -tables with a breadth-first search. - -This function was using a depth first search. By doing so the conflict -resolution reported to the prelinker (when LD_TRACE_PRELINKING=1 is set) -was incorrect. This caused problems when their were various circular -dependencies between libraries. The problem usually manifested itself by -the wrong IFUNC being executed. - -[BZ# 20488] - -Upstream-Status: Submitted [libc-alpha] - -Signed-off-by: Mark Hatle ---- - elf/dl-deps.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - -diff --git a/elf/dl-deps.c b/elf/dl-deps.c -index 087a49b212..c09f9334f2 100644 ---- a/elf/dl-deps.c -+++ b/elf/dl-deps.c -@@ -73,13 +73,19 @@ _dl_build_local_scope (struct link_map **list, struct link_map *map) - { - struct link_map **p = list; - struct link_map **q; -+ struct link_map **r; - - *p++ = map; - map->l_reserved = 1; -- if (map->l_initfini) -- for (q = map->l_initfini + 1; *q; ++q) -- if (! (*q)->l_reserved) -- p += _dl_build_local_scope (p, *q); -+ -+ for (r = list; r < p; ++r) -+ if ((*r)->l_initfini) -+ for (q = (*r)->l_initfini + 1; *q; ++q) -+ if (! (*q)->l_reserved) -+ { -+ *p++ = *q; -+ (*q)->l_reserved = 1; -+ } - return p - list; - } - diff --git a/meta/recipes-core/glibc/glibc_2.34.bb b/meta/recipes-core/glibc/glibc_2.34.bb index f67ef7818c4..67464d6ce0c 100644 --- a/meta/recipes-core/glibc/glibc_2.34.bb +++ b/meta/recipes-core/glibc/glibc_2.34.bb @@ -42,7 +42,6 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \ file://0021-eglibc-Resolve-__fpscr_values-on-SH4.patch \ file://0022-eglibc-Forward-port-cross-locale-generation-support.patch \ file://0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \ - file://0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch \ file://0026-intl-Emit-no-lines-in-bison-generated-files.patch \ file://0027-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch \ file://0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \