From patchwork Fri Jul 31 07:19:27 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aditya Vidyadhar Kamath X-Patchwork-Id: 140316 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 041174BB3BD2 for ; Fri, 31 Jul 2026 07:20:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 041174BB3BD2 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=XncUihLi X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) by sourceware.org (Postfix) with ESMTPS id 142774BB3BC6 for ; Fri, 31 Jul 2026 07:19:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 142774BB3BC6 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 142774BB3BC6 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::102c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1785482396; cv=none; b=qUZihClulq/5HY+t9twgcRc8zK3EZvesxyeo5sbS2p54NQXMOQAAfhDoyCbTEeqMNJE/kkA0IdaKIGwvAZmulptqs7isHJEEIUITM2wj1fTf4OI3uops2Ucf2vLTSpbK22Xg41c8ChqLaKMmvdQB59cCmHZd6ykC6eO8kVpq+lM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1785482396; c=relaxed/simple; bh=zIuie/fj4e1FjRmzclFhlKuCDW74VukDsGViPKhhxOw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Al2RW0ahBEjR2+WUvuFi4Zh+Jcz5xHvMRwppaWLwo3FSGmFP5HTPBLJjXXEPxe7fbpAzfE7jWNA9bnQDKZwgXyZrQcqtyIoOcfV4Xwh2jaDu09ue6ZfxE3zFPcTTlxt07m2SN33EoCboDsnarDqoiEoaoQrugaYIXfQ8TtJNI5M= 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=XncUihLi DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 142774BB3BC6 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-38d489b6b71so731870a91.0 for ; Fri, 31 Jul 2026 00:19:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785482395; x=1786087195; 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=uzZWXeqwEr9Wr+JOEt7o8tiI5ZJLwwk3Gg0bn5xqltw=; b=XncUihLiocsSx26s/NoBO3Qghm6YOCBmKSgQKkJYXGzk6RTHl/uL3RtyWOEKKBtbPr 7GSwJUdh+YxKEj061npeXmKCyx34XIaT08WoUGTKkn+VpuiwWW8TRmptAdIPpkebgYXk ubgTry9WXYo32V7RhS51sUvTHsbfutKT7d6dNd6sr7F0D4AS/JedF0yk+ti+MpE8QxVq KecbbRJiNwvyEc/D+pT+YKqx3DLyrDbVegBM4tGRFx9rlFY+T2spmv9cQT7CBR1RCrWh N66x8zHF1MrihPIz03MoULQZi9Shs7N/ARJ3neZTedzSkuUQ3fXXYE/PvjvwP+p9cdMh YiKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785482395; x=1786087195; 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=uzZWXeqwEr9Wr+JOEt7o8tiI5ZJLwwk3Gg0bn5xqltw=; b=jrf9J5MwsmLhisHSslB5UyZGtDNkpmRi0ajRa8V6/CQWoiJwYVzyJokKZB1dm2PaIK B7F/pnEg23/MokR+nxmfIR18oHXCvAQsM3CHiBSUlz70xTfbkRTen10Ly0iNL1YjCLcI tMk8Q9nur+1G/fvKGEjrExrSlS0ZmjPqxvEC9sdEm47zoeyf/kElJ/zBI20LiOi30p4+ FDuuh1ykNsrmG1iEHiJQdsROE0fCrj+RYnM28JgZgzynlKjv7FpKJbIwno8bf2PDj0k3 ChW0oQqk3Cr7y89bEEQV5KXxgk3AskZqFPJ38C9J8R6YqYGIzuZvLJ6WbFeSTFSMEZra /EqQ== X-Gm-Message-State: AOJu0YwWqvp3huf0QScbbtye5lzVT84zM01JFcfRYDG4IpheD96SEsKD R5Yl6GaLgW+Nzu3EJb/8fvfih84aL+lKx5Qqm6GKxKzr1w416UeK//JU X-Gm-Gg: AR+sD11AnXnxwINSOvAV1o2ClCuaAHVi1Ps/juFmfPN4OChVBe2tQY288zpoaAj1Dn0 7u0qfgof+EdI1njLyyjAjBZ8DPGtIxV0XBStRYBRwPq1yIxtChYw5l2Z0xJMxK/Uv59gjST1Atr qyS2zO5kj3zSOycgKMBwYrXA37eQKJv7zykW3nOUY57eYnpZNOdHGAu2atnKK3GWklc0CchsNzW F8cJ0Gev3u1MvcJnpSkNZ5JO+vCUmzxxiLPHqJFYqoIzXGfT6q/b2tMy906Hx1sy6O9L3eZ8sUl NkLudJ8AXzP2WqZCJGwtgrsDFrqDB8qMW62dOycqedA8lBzgDgixkEkP85PpwqFJoNRL4/f1zxS nf8Y5VxU3+ZuM78A1bCsAdZBWpnAercfdbJ10Pvj53RWnRMyQbySTfQbFcHkjOq9EzKRtX/9wsq vJGVZE5Ey7EojC3s3vMffV6EM+gWnNKf05eTAK2xhIbywrTc46ikXf576mydfo0NPSyTV/41RxU yHfQpqFfNe7D75wG3cxg64fVNmI X-Received: by 2002:a17:90b:17d1:b0:381:6c5:3f63 with SMTP id 98e67ed59e1d1-38fb10cea66mr982886a91.6.1785482394742; Fri, 31 Jul 2026 00:19:54 -0700 (PDT) Received: from localhost.localdomain ([122.171.21.177]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e06f8dbsm2525039eec.22.2026.07.31.00.19.52 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 31 Jul 2026 00:19:54 -0700 (PDT) From: Aditya Vidyadhar Kamath To: amodra@gmail.com Cc: binutils@sourceware.org, Aditya.Kamath1@ibm.com, sangamesh.swamy@in.ibm.com Subject: [PATCH v2] Add support to recognise 32 bit core file formats in AIX 7.3 Date: Fri, 31 Jul 2026 12:49:27 +0530 Message-ID: <20260731071926.86917-2-akamath996@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GB_FREEMAIL_NUM, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_SHORT, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org From: Aditya Kamath In AIX 7.3 when we take core dump and analyse we get, gdb/gdb /tmp/crash32 -c /tmp/core GNU gdb (GDB) 18.0.50.20260728-git Copyright (C) 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "powerpc64-ibm-aix7.2.0.0". Type "show configuration" for configuration details. For bug reporting instructions, please see: . +------------------------------------------------------------------------------+ | Find the GDB manual online at: | | http://www.gnu.org/software/gdb/documentation/. | | For help, type "help". | | Type "apropos word" to search for commands related to "word". | +------------------------------------------------------------------------------+ Reading symbols from /tmp/crash32... "/tmp/core" is not a core dump: file format not recognized The reason being BFD is not able to recognise the same. This patch is a fix for the same. After applying the patch we get, GNU gdb (GDB) 18.0.50.20260728-git Copyright (C) 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "powerpc64-ibm-aix7.2.0.0". Type "show configuration" for configuration details. For bug reporting instructions, please see: . +------------------------------------------------------------------------------+ | Find the GDB manual online at: | | http://www.gnu.org/software/gdb/documentation/. | | For help, type "help". | | Type "apropos word" to search for commands related to "word". | +------------------------------------------------------------------------------+ Reading symbols from /tmp/crash32... Core was generated by `crash32g'. Program terminated with signal SIGSEGV, Segmentation fault. (gdb) bt /0 0x10000628 in main () /1 0x100002d4 in .__start () --- bfd/rs6000-core.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/bfd/rs6000-core.c b/bfd/rs6000-core.c index 0635960eaee..8d1c21cf85f 100644 --- a/bfd/rs6000-core.c +++ b/bfd/rs6000-core.c @@ -151,7 +151,10 @@ typedef union #ifdef AIX_5_CORE # define CORE_DUMPXX_VERSION 267312562 -# define CNEW_IS_CORE_DUMPXX(c) ((c).new_dump.c_version == CORE_DUMPXX_VERSION) +# define CORE_DUMPXX_VERSION_AIX73 267312561 +# define CNEW_IS_CORE_DUMPXX(c) \ + ((c).new_dump.c_version == CORE_DUMPXX_VERSION \ + || (c).new_dump.c_version == CORE_DUMPXX_VERSION_AIX73) #else # define CNEW_IS_CORE_DUMPXX(c) 0 #endif @@ -354,11 +357,19 @@ rs6000coff_core_p (bfd *abfd) return NULL; } - /* This isn't the right handler for 64-bit core files on AIX 5.x. */ + /* This isn't the right handler for 64-bit core files on AIX 5.x. + However, 32-bit processes on AIX 7.x can produce core_dumpxx format + cores with version 0xfeeddb1, which we need to handle here. + The aix5ppc-core.c handler will catch 64-bit cores. */ if (CORE_NEW (core) && CNEW_IS_CORE_DUMPXX (core)) { - bfd_set_error (bfd_error_wrong_format); - return NULL; + /* Check if this is a 64-bit process core. */ + if (CNEW_PROC64 (core.new_dump)) + { + /* Let aix5ppc-core.c handle 64-bit cores. */ + bfd_set_error (bfd_error_wrong_format); + return NULL; + } } /* Copy fields from new or old core structure. */ @@ -371,9 +382,9 @@ rs6000coff_core_p (bfd *abfd) c_lsize = CNEW_LSIZE (core.new_dump); c_loader = CNEW_LOADER (core.new_dump); c_extoff = core.new_dump.c_extctx; -#ifndef BFD64 proc64 = CNEW_PROC64 (core.new_dump); } +#ifndef BFD64 else { c_flag = core.old.c_flag; @@ -382,9 +393,9 @@ rs6000coff_core_p (bfd *abfd) c_stackend = COLD_STACKEND; c_lsize = 0x7ffffff; c_loader = (file_ptr) (ptr_to_uint) COLD_LOADER (core.old); -#endif proc64 = 0; } +#endif if (proc64) { @@ -440,8 +451,11 @@ rs6000coff_core_p (bfd *abfd) } /* Don't check the core file size for a full core, AIX 4.1 includes - additional shared library sections in a full core. */ - if (!(c_flag & (FULL_CORE | CORE_TRUNC))) + additional shared library sections in a full core. + Also skip the check for AIX 7.3 32-bit cores in core_dumpxx format, + as they may have additional sections beyond c_stack + c_size. */ + if (!(c_flag & (FULL_CORE | CORE_TRUNC)) + && !(CORE_NEW (core) && CNEW_IS_CORE_DUMPXX (core) && !proc64)) { /* If the size is wrong, it means we're misinterpreting something. */ if (c_stack + (file_ptr) c_size != statbuf.st_size)