From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1039) id 12C9D3858C56; Thu, 4 Apr 2024 22:36:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 12C9D3858C56 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1712270178; bh=d6As55VQ//GvHPL22e+72JVwH8rvWRTf6x1pZ25/4/k=; h=From:To:Subject:Date:From; b=aHabOozq0viC6Q+sgEQOAxrRzI8mf7LFW0bW+4euuuXVL6MeFwk8wo4mr6vN8gxgd k/oHub9DQQvGpcKueyvQRnnBLrHhLuLYq0N4n5u7kdWhKYfmSO3vX4lnXSehaSj6Y0 mSxJDgHfLoZYZkOOJhO933C7xCA6Tc0jCoFNkCXU= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: H.J. Lu To: binutils-cvs@sourceware.org Subject: [binutils-gdb] bfd: Handle bmmap failure in _bfd_mmap_read_temporary X-Act-Checkin: binutils-gdb X-Git-Author: H.J. Lu X-Git-Refname: refs/heads/master X-Git-Oldrev: c2d698fe03a6092d58a07de96068b87836daced0 X-Git-Newrev: 360d244b24e84c50f2c6054908cfafb370a1f13c Message-Id: <20240404223618.12C9D3858C56@sourceware.org> Date: Thu, 4 Apr 2024 22:36:16 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D360d244b24e8= 4c50f2c6054908cfafb370a1f13c commit 360d244b24e84c50f2c6054908cfafb370a1f13c Author: H.J. Lu Date: Thu Apr 4 06:52:27 2024 -0700 bfd: Handle bmmap failure in _bfd_mmap_read_temporary =20 iovec->bmmap may return MAP_FAILED, which happens in GDB on objects with iovec =3D=3D opncls_iovec. Update _bfd_mmap_read_temporary to handle iovec->bmmap failure. =20 * libbfd.c (_bfd_mmap_read_temporary): Handle iovec->bmmap failure. Diff: --- 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 *si= ze_p, && (abfd->flags & BFD_PLUGIN) =3D=3D 0); if (use_mmmap) { - data =3D _bfd_mmap_readonly_temporary (abfd, size, mmap_base, - size_p); - if (data =3D=3D NULL || data =3D=3D MAP_FAILED) - abort (); - *data_p =3D data; - return true; + void *mmaped =3D _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 !=3D MAP_FAILED) + { + if (mmaped =3D=3D NULL) + abort (); + *data_p =3D mmaped; + return true; + } } #endif