From patchwork Tue Dec 17 18:58:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 1211638 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-108157-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="gM25KRz/"; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="ibLZeDiC"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 47cnV00zr3z9sR0 for ; Wed, 18 Dec 2019 05:58:31 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; q=dns; s= default; b=A0PAYEHppA+Xfs/A4E+SGH5g5BGnPuMRV/E7i434LAXHIBOXrak8L FTRek9+PBgvkuG+c889v7rQ9zFs/uGsAnq9/ob/ZZ96eg3wu/sHKD7vijw+BDZvB LIqSwZXnGlELulqtBnjX/8aNV52HMtx30R8GpM+tC6gy3dbFpj/45A= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; s=default; bh=4uJ3Lk1Z8g3F9u+hqNyLOZZ2j+k=; b=gM25KRz/7QpsoYOwtu2mrh8T7P3J in2zVfhtL4pcg7vXVfb+1cRVtyqrAzVSy+2ENrmjJUAojaY7SOA38/sWtGYsjDzw 9ZZcf4sML+jjv9eWOGe1xe7TSLfwOBrQ/pIxvJbSykK8OKQJs8cyZXPbHfXPOmsS w7KHz0GSZzlKOh8= Received: (qmail 107757 invoked by alias); 17 Dec 2019 18:58:25 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 107748 invoked by uid 89); 17 Dec 2019 18:58:25 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=LD_DEBUG, ld_debug X-HELO: mail-pg1-f196.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id; bh=cFClYSCob12JYUW8KEX3PDsQ9Rmdu+nZEeOdNSvvmO4=; b=ibLZeDiCtnyExizUCpFoC8UUd+H81Hqt1nUUAfc1bwTsgTrrttpMGu89keqQOtlmeQ VLPhFn11xbI3yLRbusKvmWxor+vTH8VC4HsaKAXUiskEkd5/WxtS8srtxa5MXH561aod nKYWLorAEFjXIsC6IiGJ3HhcHZThln3uxqWLxU6sGkw/a2ijEodYI4aagukAJApQukO4 fAfxBOFKR0zOy1+xZcZIdDG/u1KOpQQI96xe11HPpUR4K1HGWcXxjUZmGQvsOpJUaZAS iyqwDh0oTKDxm010bWhVvwnA95DNQYVO9xFmc+UJE/L7PPazRTmHfneML3IKxaW7B+Jv NnXg== From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH] powerpc: Do not run IFUNC resolvers for LD_DEBUG=unused [BZ #24214] Date: Tue, 17 Dec 2019 15:58:16 -0300 Message-Id: <20191217185816.29521-1-adhemerval.zanella@linaro.org> This patch adds the missing bits for powerpc and fixes both tst-ifunc-fault-lazy and tst-ifunc-fault-bindnow failures on powerpc-linux-gnu. Checked on powerpc-linux-gnu and powerpc-linux-gnu-power4. Reviewed-by: Tulio Magno Quites Machado Filho --- sysdeps/powerpc/powerpc32/dl-machine.c | 5 +++-- sysdeps/powerpc/powerpc32/dl-machine.h | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sysdeps/powerpc/powerpc32/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c index d3ce2c17a9..a90cbc1ae3 100644 --- a/sysdeps/powerpc/powerpc32/dl-machine.c +++ b/sysdeps/powerpc/powerpc32/dl-machine.c @@ -414,7 +414,7 @@ __process_machine_rela (struct link_map *map, const Elf32_Sym *refsym, Elf32_Addr *const reloc_addr, Elf32_Addr const finaladdr, - int rinfo) + int rinfo, bool skip_ifunc) { union unaligned { @@ -434,7 +434,8 @@ __process_machine_rela (struct link_map *map, return; case R_PPC_IRELATIVE: - *reloc_addr = ((Elf32_Addr (*) (void)) finaladdr) (); + if (__glibc_likely (!skip_ifunc)) + *reloc_addr = ((Elf32_Addr (*) (void)) finaladdr) (); return; case R_PPC_UADDR32: diff --git a/sysdeps/powerpc/powerpc32/dl-machine.h b/sysdeps/powerpc/powerpc32/dl-machine.h index 528690107b..4b1265282e 100644 --- a/sysdeps/powerpc/powerpc32/dl-machine.h +++ b/sysdeps/powerpc/powerpc32/dl-machine.h @@ -273,7 +273,8 @@ extern void __process_machine_rela (struct link_map *map, const Elf32_Sym *refsym, Elf32_Addr *const reloc_addr, Elf32_Addr finaladdr, - int rinfo) attribute_hidden; + int rinfo, bool skip_ifunc) + attribute_hidden; /* Call _dl_signal_error when a resolved value overflows a relocated area. */ extern void _dl_reloc_overflow (struct link_map *map, @@ -436,7 +437,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, default: __process_machine_rela (map, reloc, sym_map, sym, refsym, - reloc_addr, value, r_type); + reloc_addr, value, r_type, skip_ifunc); } }