From patchwork Tue Sep 1 02:33:09 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matt Turner X-Patchwork-Id: 142569 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 312AB4BA798E for ; Tue, 1 Sep 2026 02:34:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 312AB4BA798E Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=JGB8iTKb X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-yw1-x1134.google.com (mail-yw1-x1134.google.com [IPv6:2607:f8b0:4864:20::1134]) by sourceware.org (Postfix) with ESMTPS id A465B4BA23ED for ; Tue, 1 Sep 2026 02:33:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A465B4BA23ED Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A465B4BA23ED Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::1134 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788230005; cv=none; b=XFwQjLN30kaROI5Bn5AEUTdrgz7bNPo2BNiQVMy2wiCQYhEtEZUq66AEFpxYEq6WahW/Th0Sri6PmIOdGPT+tVOgsj7w5StvLrr41IH/4EEE0TeSYojOT0z5SqzeHSoYBXtPltFB49uEAhGpWjM28BpWyD/20LzhMaJwmSFE1jM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1788230005; c=relaxed/simple; bh=A4mZB7kplfwZ69GzNshJBc9I1OB2+pr+Ufe4H6T4/AE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=vKZBDuHTdasfmd1sF42b3ptOk0zYWl4bOcHjk9TTucS/z3AmsVUVfcIjj4+1Jg+s2yq7YAnC4N2pTQ2KydjG18BAKxYGxBsRM9hGmzt7YRSxZc8oshUAyKEoNwM6mJbzOIp7vj4CkPNIhObF/HqYxCYsfDTav1q3E8LPspvIM9c= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=JGB8iTKb DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A465B4BA23ED Received: by mail-yw1-x1134.google.com with SMTP id 00721157ae682-81f36179d72so49437597b3.2 for ; Mon, 31 Aug 2026 19:33:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788230005; x=1788834805; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=R21kZVLV9T+nCC3J25pz9Pi11OAlQ2wyKnI3bgL46DM=; b=JGB8iTKb7XwwmzzerzGR0LuBcaPnBtf+5a5PzjVzmKD2u+h88fGF6aioRboJtJ8HSX pUiUNe4M47cECUvJfHWYa6xK3gVRZacuhJ3qYstkz6GX+w83mIhjcZco/Nr4w097yAqP nA++GT0Bg+hHi7V9pbCxJqwZRL9OspWZXpwJ9tZIPCP2zhlmRm67RlEuw8r3k1ScdNCG Y+vZ4yI0ynOd1z24rjj44LZo7HBsNHp5vlxb4DH1tvSxpHFk5GCOFw724kDddrhY247E qfYrxo8RChtB4aSrI7jyx4yHvRoPtmdjdNNsiiU629mzHbFuhTvtIu/8ET6yeYoFoSlC 0yvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788230005; x=1788834805; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=R21kZVLV9T+nCC3J25pz9Pi11OAlQ2wyKnI3bgL46DM=; b=JoN6PpAuAzeuV73PWZhAZmlk7+x8yqK1f/6cHSq5y4Go3cvVewxIz6+oTwuJxqqb+S FWUyg/y8CCIUHdm3rnsm4Gp2KZ97g6fYYJnxX8pPlgXwvYiXUH367t1TKlNvtN6FCgBV +45+091BS2I26pThHgKYGAUBEHE8FxW/cPKWdk0a7rYk+17CfXxLrnSgShELLqKHECwX TpG9Nig5QFB44X1uh74m0lHogz3fSd+wUT1KrGWz3q9pC//zyCvivynY16DCb9SjRnfV NpJ5JY3CAdEzOg5FrVJlNX6fDR2Pw/49ituplFRn5zY74QE5wIsiMS8jH20kH7d6B/Gp d0LQ== X-Gm-Message-State: AFuF++mW2pc8233RgFwq4PcmwnvPAjjxYeJOS+bZ6ACZmzrI79FGncRB PcmIGFgVFQb7NY9O8QxDphLkukM6XKHP8QUEXmTjUfQeP6P7wHo0iPCjZssUMg== X-Gm-Gg: AYBFou3tjDp+5PLAqjI0UHTIbv5PPdKEfr6X9/QN9nEKwyusPUg6Q1Q4WiRIeWS8mP2 iXF80D5XLxX0Wn8a+BR6Ehv92jUrf757KioqdI7EELAGW3w6sgW80lTqy119pUOmX6xITWPmD/5 hE0PEY+NY317Mc3ceM9HUTMrkSIAAoO7PAoomIVGWx9H3dk8qCxO80r2IEpjG666BSiE869RxHa Tht1XTb0dJcI2GXIGvJJmLwAIUWp6LOSG6VVhPrS2h+BzN34uLydKaCqcThfeZVl7MO1/L8zN1S I18Bsi8SILAILpSTH1kG+S4AlYfktJZjKVKtiQTjJ4u6c+OwTmwd93Z/ETg1Y8GLcQ3A8lx08oZ KphCOUibh6J2/V8+t+XFVIxJzNGeC8SwhZtBrD5hsvTFnIRGfFue+lCdU0uvaCtnYpApAy01Hjy 6YbCcwGN8PQrNIX5Op9hQFV/zKgk0RaPq6k4wpVT1ou71WzOID5G17tZnQoQJt5YUogIyf/9y6y oI06QYWmbOWOk47tJkt+Mu/sKc4oMDZuKEvnJuc X-Received: by 2002:a05:690c:dd3:b0:80d:f376:5ba9 with SMTP id 00721157ae682-85d6c7e2969mr107972277b3.24.1788230004978; Mon, 31 Aug 2026 19:33:24 -0700 (PDT) Received: from localhost (107-220-129-194.lightspeed.chrlnc.sbcglobal.net. [107.220.129.194]) by smtp.gmail.com with ESMTPSA id 00721157ae682-85e66cad342sm66012937b3.40.2026.08.31.19.33.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 19:33:24 -0700 (PDT) From: Matt Turner To: binutils@sourceware.org Cc: Magnus Lindholm , Alan Modra , Matt Turner Subject: [PATCH 02/11] alpha: set DF_TEXTREL rather than DT_TEXTREL in info->flags Date: Mon, 31 Aug 2026 22:33:09 -0400 Message-ID: <20260901023318.3503991-3-mattst88@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260901023318.3503991-1-mattst88@gmail.com> References: <20260901023318.3503991-1-mattst88@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org elf64_alpha_calc_dynrel_sizes ORs DT_TEXTREL (22) into info->flags where it means DF_TEXTREL (4). The value happens to include the DF_TEXTREL bit, so DT_TEXTREL still appeared, but DT_FLAGS also gained DF_SYMBOLIC and DF_STATIC_TLS: a shared library with a text relocation against a global symbol was treated by the dynamic linker as if linked with -Bsymbolic, and dlopen of it could fail for lack of static TLS. The stray DF_STATIC_TLS also fed back into the link: elf64_alpha_relax_sec reads info->flags to decide that a general dynamic TLS reference may as well be relaxed to initial exec, so such a library was relaxed differently too. Present since commit fcfbdf319ee in 2001, which introduced both this and the correct DF_TEXTREL a few lines above it. --- bfd/elf64-alpha.c | 2 +- ld/testsuite/ld-alpha/textrel.d | 9 +++++++++ ld/testsuite/ld-alpha/textrel.s | 13 +++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 ld/testsuite/ld-alpha/textrel.d create mode 100644 ld/testsuite/ld-alpha/textrel.s diff --git ./bfd/elf64-alpha.c ./bfd/elf64-alpha.c index 4fc1a542704..a97acdc41de 100644 --- ./bfd/elf64-alpha.c +++ ./bfd/elf64-alpha.c @@ -2667,7 +2667,7 @@ elf64_alpha_calc_dynrel_sizes (struct alpha_elf_link_hash_entry *h, entries * sizeof (Elf64_External_Rela) * relent->count; if ((sec->flags & SEC_READONLY) != 0) { - info->flags |= DT_TEXTREL; + info->flags |= DF_TEXTREL; info->callbacks->minfo (_("%pB: dynamic relocation against `%pT' in " "read-only section `%pA'\n"), diff --git ./ld/testsuite/ld-alpha/textrel.d ./ld/testsuite/ld-alpha/textrel.d new file mode 100644 index 00000000000..e319ab203d3 --- /dev/null +++ ./ld/testsuite/ld-alpha/textrel.d @@ -0,0 +1,9 @@ +#source: textrel.s +#ld: -shared -melf64alpha -z notext +#readelf: -d + +# Only DT_TEXTREL, with no DT_FLAGS carrying the SYMBOLIC and STATIC_TLS +# bits of the value of DT_TEXTREL. +#... + +0x0+16 +\(TEXTREL\) +0x0 + +0x0+0 +\(NULL\) +0x0 diff --git ./ld/testsuite/ld-alpha/textrel.s ./ld/testsuite/ld-alpha/textrel.s new file mode 100644 index 00000000000..bbd0675363d --- /dev/null +++ ./ld/testsuite/ld-alpha/textrel.s @@ -0,0 +1,13 @@ + .text + .globl _start +_start: + ret + + .data + .globl var +var: + .quad 0 + + # A dynamic relocation against a global symbol in a read-only section. + .section .rodata,"a",@progbits + .quad var