From patchwork Thu Apr 4 13:52:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 88027 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 C5C233858410 for ; Thu, 4 Apr 2024 13:53:00 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id 9B1403858C52; Thu, 4 Apr 2024 13:52:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9B1403858C52 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 9B1403858C52 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::42d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712238752; cv=none; b=h76km0lGbO6BTvsrrJN9KRi7Mk9Qma7gyIXrhtMc+EgIV/A8mMP2QFOI0titYfiEY29GZGWNXrOMAXC+COIxw/aaK9/mutPrdhLTC4tP0vMqKAyIY4wml78KzmNvrsSAEkKDl/oA0Iy91pInCu8puk3ZpbC+kiD2XOpWmBJpHNQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712238752; c=relaxed/simple; bh=fYKR22E8b3+Iw8A56JtUKWLqIg+KDaEBj/MkBpucUsY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=VSa9hVmB056RbihvganNizEH4SS8fyM6RMusi7a8w72drkJP/brGLo3SrQoeVO6jI35eMKEyaOTjJNABbaii/dF7vkMHg2mbavHPRXanwZ/KE5vCAbWCJ/kPVB6lBdhlrA3oW8y5yo0x0YyPaaHUfEOfSMeXzWIE5nmWWWidiXA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-6ecf541e19aso272639b3a.1; Thu, 04 Apr 2024 06:52:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712238749; x=1712843549; 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; bh=yIGmhuqevo7zEyKIb9nc49+IW1hVrJk69XL11okSX88=; b=cbi+2GyvfxoUM2Zr439aeKDHdR56ZXygtWGPdwS5spo+cH1gQ30yiNPniNvHp/CwOM 49PImn6vrpntlQV8DiN5dbQefNpu3hkcb90K78XCaqNft2JAM2Pagb870fWLzzcwVeEV Ji1agQbxGwPKkhJZojYVZTEZ7W/jD3PQjcXFPpGm81C23ahVSn/HsUnESxAkx9P9VY2p Z3LAIq5gLJoELhjYMi6Da8i8POpYxEPDLFzP6ep0VAabWLpM5MBKvrsAfbR1mAAxV1OR kJxmHYfWy4/bhiJI0ah2QL7lv/1e55SeRo/nb0QQp+oSE6sn6pwHkhnW8uiVAk5fN3wv GQ7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712238749; x=1712843549; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yIGmhuqevo7zEyKIb9nc49+IW1hVrJk69XL11okSX88=; b=W3LO5iUB2qyvGj31ZstnoIPNgELsesV96zf3ia+KL98IA3/HnljZpt1EJb/n8yAB5C 9xTNUBoJorBe+bNJjhQf3100+AybW1aJbq3zFvRf7nfqhlGmF71r1uZT5kJQJf1+x6Ui c0R+590xtV69iPp8Z6WsFwfCKGDSsRQ8MvJciL93Q8annzv425V1Zi16Jho2FfU9VwlX oEj2inMC+05PWDkEpqSB2wzvnMqPiTZ7yuhre56RUJZMfGzs7UvkhUh7dbca/gjB+4bM i/kxJsyzbbvQ+Njxf6TFYIB3oNxXhEeXFI65bB8AWNinQJtnh0oexOEl9uLx0s4OBEHG ERvQ== X-Forwarded-Encrypted: i=1; AJvYcCWiogYbYPGIsCVayGhe0NYx2UpofpZzB1BjuE9VPLv6dB4vCr5EcIh9P65t5tu+rKevR1u8cnbSd1RDL5ZYQuPSXPvOLP09zb8yQg== X-Gm-Message-State: AOJu0YxkK52ByVAXofHd4eNuKzh2A31DbWif9g05HbZJ2Ml4IevOSNGY 4+nJw3f9h0QN1FWielol/MTndhbxW1NB+WDuoz4UEd6xXZJYQrM0q3dtgCiP X-Google-Smtp-Source: AGHT+IF0qvkda8JHpdp8gKn8BJRN/3PgyWnuzIK6Jvabpjf1rY7/oNO+dHYCE7uBkVCwnm/NJYuY/w== X-Received: by 2002:a05:6a00:ac5:b0:6ea:b1f5:112b with SMTP id c5-20020a056a000ac500b006eab1f5112bmr2498640pfl.21.1712238749595; Thu, 04 Apr 2024 06:52:29 -0700 (PDT) Received: from gnu-cfl-3.localdomain ([172.56.169.48]) by smtp.gmail.com with ESMTPSA id r5-20020a056a00216500b006e4432027d1sm14071107pff.142.2024.04.04.06.52.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 06:52:28 -0700 (PDT) Received: from gnu-cfl-3.. (localhost [IPv6:::1]) by gnu-cfl-3.localdomain (Postfix) with ESMTP id D173B74005D; Thu, 4 Apr 2024 06:52:27 -0700 (PDT) From: "H.J. Lu" To: binutils@sourceware.org Cc: amodra@gmail.com, gdb-patches@sourceware.org Subject: [PATCH v2] bfd: Handle bmmap failure in _bfd_mmap_read_temporary Date: Thu, 4 Apr 2024 06:52:27 -0700 Message-ID: <20240404135227.204529-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 X-Spam-Status: No, score=-3018.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_ABUSEAT, RCVD_IN_DNSWL_NONE, RCVD_IN_SBL_CSS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org iovec->bmmap may return MAP_FAILED, which happens in GDB on objects with iovec == opncls_iovec. Update _bfd_mmap_read_temporary to handle iovec->bmmap failure. * libbfd.c (_bfd_mmap_read_temporary): Handle iovec->bmmap failure. --- bfd/libbfd.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/bfd/libbfd.c b/bfd/libbfd.c index 869f0ed5c66..5126ee207a8 100644 --- a/bfd/libbfd.c +++ b/bfd/libbfd.c @@ -1205,12 +1205,18 @@ _bfd_mmap_read_temporary (void **data_p, size_t *size_p, && (abfd->flags & BFD_PLUGIN) == 0); if (use_mmmap) { - data = _bfd_mmap_readonly_temporary (abfd, size, mmap_base, - size_p); - if (data == NULL || data == MAP_FAILED) - abort (); - *data_p = data; - return true; + void *mmaped = _bfd_mmap_readonly_temporary (abfd, size, + mmap_base, + size_p); + /* MAP_FAILED is returned when called from GDB on an object with + opncls_iovec. Use bfd_read in this case. */ + if (mmaped != MAP_FAILED) + { + if (mmaped == NULL) + abort (); + *data_p = mmaped; + return true; + } } #endif