From patchwork Fri Jan 28 18:54:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xi Ruoyao X-Patchwork-Id: 50551 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 18B96394849B for ; Fri, 28 Jan 2022 18:55:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 18B96394849B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1643396125; bh=qo1SLzV2hX4GcJTKXO6R0Bx8u6zt3Rbhh+0QdGiai5k=; h=Subject:To:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=c1ftQzH4Vv9PwPG4TMQkTExwS3qL1Mu03b3ViOjSVFh3wsiUQAX82xgakJ5bPpMuE ufTr8eqI/UCxWPKyj/LaRKBiHsl9TlXOQwqw5NYvi+gG1xHVLUDzLuHIo9LCzIltXu 6TMv8slcNu/IVblujUt+u8g/oiSgRnLUoJ3/YVGw= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mengyan1223.wang (mengyan1223.wang [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id F3A4E385840C for ; Fri, 28 Jan 2022 18:55:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F3A4E385840C Received: from localhost.localdomain (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@mengyan1223.wang) by mengyan1223.wang (Postfix) with ESMTPSA id B99F265B4C; Fri, 28 Jan 2022 13:55:01 -0500 (EST) Message-ID: <9dff16aac870a046c7cc768eef84bcbd6fd4d65c.camel@mengyan1223.wang> Subject: [PATCH] mips: fix elf/tst-dlmopen4 To: libc-alpha@sourceware.org Date: Sat, 29 Jan 2022 02:54:59 +0800 User-Agent: Evolution 3.42.3 MIME-Version: 1.0 X-Spam-Status: No, score=-3037.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_NUMSUBJECT, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Xi Ruoyao via Libc-alpha From: Xi Ruoyao Reply-To: Xi Ruoyao Cc: syq@debian.org, Joseph Myers , Jiaxun Yang Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" MIPS uses DT_MIPS_RLD_MAP and DT_MIPS_RLD_MAP_REL instead of DT_DEBUG, to provide access to r_debug. Reviewed-by: Carlos O'Donell --- elf/tst-dlmopen4.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/elf/tst-dlmopen4.c b/elf/tst-dlmopen4.c index d8bcf7e9d5..de67a30a4b 100644 --- a/elf/tst-dlmopen4.c +++ b/elf/tst-dlmopen4.c @@ -25,17 +25,26 @@ #include #include -#ifndef ELF_MACHINE_GET_R_DEBUG -# define ELF_MACHINE_GET_R_DEBUG(d) \ - (__extension__ ({ \ - struct r_debug_extended *debug; \ - if ((d)->d_tag == DT_DEBUG) \ - debug = (struct r_debug_extended *) (d)->d_un.d_ptr; \ - else \ - debug = NULL; \ - debug; })) +static struct r_debug_extended * +elf_get_r_debug (ElfW(Dyn) *d) +{ +#ifdef __mips__ + if (d->d_tag == DT_MIPS_RLD_MAP_REL) + { + char *ptr = (char *) d; + ptr += d->d_un.d_val; + return *(struct r_debug_extended **) ptr; + } + else if (d->d_tag == DT_MIPS_RLD_MAP) + return *(struct r_debug_extended **) d->d_un.d_ptr; +#else + if (d->d_tag == DT_DEBUG) + return (struct r_debug_extended *) d->d_un.d_ptr; #endif + return NULL; +} + static int do_test (void) { @@ -44,7 +53,7 @@ do_test (void) for (d = _DYNAMIC; d->d_tag != DT_NULL; ++d) { - debug = ELF_MACHINE_GET_R_DEBUG (d); + debug = elf_get_r_debug (d); if (debug != NULL) break; }