| Message ID | 20260930193657.733-10-oleg.tolmatcev@gmail.com |
|---|---|
| State | New |
| Headers |
Return-Path: <binutils-bounces~patchwork=sourceware.org@sourceware.org> 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 A3D134BA2E37 for <patchwork@sourceware.org>; Wed, 30 Sep 2026 19:39:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A3D134BA2E37 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=fhFdYNeV X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm2-x11.google.com (mail-wm2-x11.google.com [IPv6:2a00:1450:4864:31::11]) by sourceware.org (Postfix) with ESMTPS id E333D4BA2E17 for <binutils@sourceware.org>; Wed, 30 Sep 2026 19:38:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E333D4BA2E17 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 E333D4BA2E17 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:31::11 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1790797083; cv=none; b=WeuarlHSl7o3V4UnsIulu0Npzdnbnru3cSW1I0tZmkPG6vpfvX1u8jL+3pnZllJy8TbZqXmGcj7jkmzzk/UVPe2XDyP9wkMKSEEOtORhcygBVMEVgglCvt02PEzbqFrtIi9gcek8lIp9IXkJQKyeq9dKvcvVjAp1QLoKCLyFCCE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1790797083; c=relaxed/simple; bh=8HvMurvpg82WUk6PL3/ygmp8vnEdbruuwp/MVOcX7hU=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=e7mgfWq3QJb5EKqYOeP/SwXDaSVqZVvhCghbfnb4p1HXVoJUomWgPPHqsXN88xnQ1SB+mOMeIlymXdtFt8wiTwPjp+vL58SfVrdEEt7Y10FLsN0gtPBYSTPJgI9Od99FIbZ4ie3X6sSQ50riUhJOi6bjToPjJ4P2Y/Y0hGZnlJA= 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=fhFdYNeV DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E333D4BA2E17 Received: by mail-wm2-x11.google.com with SMTP id 5b1f17b1804b1-49e8185e037so33319405e9.3 for <binutils@sourceware.org>; Wed, 30 Sep 2026 12:38:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790797082; x=1791401882; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=LB1RFCdDQgTo/1Xcy6Xa/3rtWOjVRIpCPMUXG1QPjV4=; b=fhFdYNeV8T9YTCCtFAtrm1DP/h02gFC+rZwqFqVWjLLqrZE7Cvf5x0dBGiBsNS42BE lz0Ldxbz2Z5G8bEnA90Y6r0y8RZsAQ3X3guLRJ7Z9sQoxpamWc+tD0ry7TnCHP4GMjkL oVsfseOBbkwuBmUy8VHDCFDKmzCHfAPYmjEkdr3uCY7ubVegS9N61vQJHnvrroYmE083 VUfc/fJGgfUmjopfDtCD7zFIT0UnWB1XPalzIWoU+s8ej4YcL/d+OahIVtW6rcAej9PR ifm8/fJLrh8R/NE5vyRFUWFaV6Uugcaexsf3U34lPLMYPMW026Aycewk1uT5gQShAFI8 esUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790797082; x=1791401882; h=content-transfer-encoding:mime-version: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=LB1RFCdDQgTo/1Xcy6Xa/3rtWOjVRIpCPMUXG1QPjV4=; b=y7dtjuEDxwMIPKrSCLbxboqn1NphiW5ypEQNg48o8PCNpLPB5c5L2zU1KuCCj4yZdf IGiKaTsFDyiRXVdkbcWqgdAL8vSaxPAjbeOD8ix7rjeJGdChcfbWz6+IjudwtAmXgiDV BL16VmnhHpchLoyCU32gsXjliSFzH0fxouc8981y0CAYl/mgPaM1NJgmbZ+FcSgb1hfn w0Ds3rif1EZJ12sJ4u7XaYplcIDhwEOFIH2EOCPNwimjbFCYZXGNVcQT5AwHec4eGNRz 9nbgVP93+HyDswglId8sXB45GVyp3Er6H5MZSKZmR8JNtK/8d1xBj9rNenPuHnohMy6M aSHg== X-Gm-Message-State: AFuF++mqUsCtlaaOhBhshyG1O3byx6Cm+HxqnZZRqyS7pdKN4FPLGfDP wtUKwNhYqCK16dQHFKh5+GU1xsmkby6j5rJkZsKycfiosrBVfm7egjONZh0GJA== X-Gm-Gg: AYBFou0tusn2TrLJNKt6CIvlMNkp2do7eiRiyoCMUIKPpurMnWyOLhjIzr4xEQqjYqM zXHGZXiYR/HW4nqTaMRWkvXgnKzLDg+975o/YZwGoyo4PxaI6NSQuRjAP3CBPDB+Vva1JZSL1nG OKdODmqAJaQfIrQNzF9yRD+VGXizM/bcLIg4UqCvbrWkDTc0ws4aUpR/1GG0T26AD6DSHh8n4cg eYUgRz7x8yymhrdJwkL6CPEKku/xDiUyr3O1FOANFHAozKppAgr/MpMsB6Fh4CApa5lLXWikhil z0ybOXTQ8F5J37TujLNYev3v/iEucZcMPiUq2IrnlcwYPqbeqRRCik0hZua8/V4cUc1dloHaKMM v6I7e1m2loNdyCkktWtE82mLh4TUrwWeGQ/NXDVXWNNnhcgYEncg1tp0nL4GHUgXfu07PKpioIE hP8qpxWSQfyXuQ+Uq2MPIgfpudN9q5RhbtiKaOTmXres9I3E5LDQOWtAQU1M14AwNtuNIUGdU9b yXjO4g8kp0aQDzMwkSj0/Gc2GcAV2JMg5sy6vCEEHcbhKuakZ7BXJisYAz8cU88rDd3sFNe0pP0 Hw== X-Received: by 2002:a05:600c:6815:b0:49f:ec98:f030 with SMTP id 5b1f17b1804b1-4a01b11e205mr39205215e9.33.1790797081642; Wed, 30 Sep 2026 12:38:01 -0700 (PDT) Received: from Mein-PC (p200300ed8f0406002186408458360e23.dip0.t-ipconnect.de. [2003:ed:8f04:600:2186:4084:5836:e23]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4a01f979c05sm8518815e9.3.2026.09.30.12.38.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Sep 2026 12:38:01 -0700 (PDT) From: Oleg Tolmatcev <oleg.tolmatcev@gmail.com> To: binutils@sourceware.org Cc: Oleg Tolmatcev <oleg.tolmatcev@gmail.com> Subject: [PATCH] ld/pdb: Report failures to write the PDB file Date: Wed, 30 Sep 2026 21:36:59 +0200 Message-ID: <20260930193657.733-10-oleg.tolmatcev@gmail.com> X-Mailer: git-send-email 2.56.0.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_PBL, 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 <binutils.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/binutils>, <mailto:binutils-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/binutils/> List-Post: <mailto:binutils@sourceware.org> List-Help: <mailto:binutils-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/binutils>, <mailto:binutils-request@sourceware.org?subject=subscribe> Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org |
| Series |
ld/pdb: Report failures to write the PDB file
|
|
Checks
| Context | Check | Description |
|---|---|---|
| linaro-tcwg-bot/tcwg_binutils_build--master-arm | success | Build passed |
| linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 | success | Build passed |
| linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 | success | Test passed |
| linaro-tcwg-bot/tcwg_binutils_check--master-arm | success | Test passed |
Commit Message
Oleg Tolmatcev
Sept. 30, 2026, 7:36 p.m. UTC
The streams of a PDB file are only written out when it is closed, so ignoring the return value of bfd_close means that write errors go unreported: ld leaves a truncated PDB file behind and exits successfully. ld/ * pdb.c (create_pdb_file): Check the return value of bfd_close. --- ld/pdb.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
Comments
On 30.09.2026 21:36, Oleg Tolmatcev wrote: > The streams of a PDB file are only written out when it is closed, so > ignoring the return value of bfd_close means that write errors go > unreported: ld leaves a truncated PDB file behind and exits > successfully. Yet then ... > --- a/ld/pdb.c > +++ b/ld/pdb.c > @@ -5410,7 +5410,11 @@ create_pdb_file (bfd *abfd, const char *pdb_name, const unsigned char *guid) > ret = true; > > end: > - bfd_close (pdb); > + if (!bfd_close (pdb)) > + { > + einfo (_("%P: warning: cannot write PDB file: %E\n")); > + ret = false; > + } ... why does it only say "warning"? Hmm, the (apparently sole) caller of the after_write_object_contents() hook (in bfd/coffcode.h) doesn't check the return value. Hence I guess linking would still succeed? Wouldn't the (truncated) .pdb file then still be left around? Jan
пт, 2 окт. 2026 г. в 12:19, Jan Beulich <jbeulich@suse.com>: > > On 30.09.2026 21:36, Oleg Tolmatcev wrote: > > The streams of a PDB file are only written out when it is closed, so > > ignoring the return value of bfd_close means that write errors go > > unreported: ld leaves a truncated PDB file behind and exits > > successfully. > > Yet then ... > > > --- a/ld/pdb.c > > +++ b/ld/pdb.c > > @@ -5410,7 +5410,11 @@ create_pdb_file (bfd *abfd, const char *pdb_name, const unsigned char *guid) > > ret = true; > > > > end: > > - bfd_close (pdb); > > + if (!bfd_close (pdb)) > > + { > > + einfo (_("%P: warning: cannot write PDB file: %E\n")); > > + ret = false; > > + } > > ... why does it only say "warning"? Hmm, the (apparently sole) caller > of the after_write_object_contents() hook (in bfd/coffcode.h) doesn't > check the return value. Hence I guess linking would still succeed? > Wouldn't the (truncated) .pdb file then still be left around? > > Jan Yes it will be left around. I will send a v2 which removes the .pdb file on failure and aborts. Oleg
diff --git a/ld/pdb.c b/ld/pdb.c index b349de94263..3885340d567 100644 --- a/ld/pdb.c +++ b/ld/pdb.c @@ -5410,7 +5410,11 @@ create_pdb_file (bfd *abfd, const char *pdb_name, const unsigned char *guid) ret = true; end: - bfd_close (pdb); + if (!bfd_close (pdb)) + { + einfo (_("%P: warning: cannot write PDB file: %E\n")); + ret = false; + } htab_delete (strings.hashmap);