From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1726) id 22F4A3858D38; Tue, 26 Mar 2024 12:14:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 22F4A3858D38 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1711455295; bh=VnX1T7SZC5NFUVCECTw9xPvSRSxDgePgfJw8KE+nH24=; h=From:To:Subject:Date:From; b=A2MG8VA/mlaLxg83rIqg5zLdAIx2mTh7S2xhcAEXsIjBGDvkw1monD5jxS+sZ2uYf WOY6JhSe6RKRitCEgiWu9xXpwIuv6NrYMfnWCbh4HWlTD7+o44fn+jHsBJAacuwv6b uIXr/NiD3NmcwNy/1eUnJDpNbQe0IoqsTP26hLYw= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Andrew Burgess To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdb: fix possible uninitialised variable use X-Act-Checkin: binutils-gdb X-Git-Author: Andrew Burgess X-Git-Refname: refs/heads/master X-Git-Oldrev: c7c9820071f8b81a64221f5cfafb3cbfeafe7916 X-Git-Newrev: 24df37a10f8773ad5db07dc000f694d6405e3a36 Message-Id: <20240326121455.22F4A3858D38@sourceware.org> Date: Tue, 26 Mar 2024 12:14:55 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D24df37a10f87= 73ad5db07dc000f694d6405e3a36 commit 24df37a10f8773ad5db07dc000f694d6405e3a36 Author: Andrew Burgess Date: Tue Mar 26 12:05:07 2024 +0000 gdb: fix possible uninitialised variable use =20 After this commit: =20 commit 198ff6ff819c240545f9fc68b39636fd376d4ba9 Date: Tue Jan 30 15:37:23 2024 +0000 =20 gdb/gdbserver: share x86/linux tdesc caching =20 a possible use of an uninitialised variable was introduced, the 'tdesc' variable in i386_linux_core_read_description might be read without being written too if 'xcr0' was 0. =20 This is fixed in this commit. I've updated the function to follow the same pattern as amd64_linux_core_read_description, if xcr0 is 0 then we select a default xcr0 value and use that to select a tdesc. Diff: --- gdb/i386-linux-tdep.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c index ed1442236e8..2e84384306d 100644 --- a/gdb/i386-linux-tdep.c +++ b/gdb/i386-linux-tdep.c @@ -700,17 +700,15 @@ i386_linux_core_read_description (struct gdbarch *gdb= arch, x86_xsave_layout layout; uint64_t xcr0 =3D i386_linux_core_read_xsave_info (abfd, layout); =20 - const struct target_desc *tdesc; - if (xcr0 !=3D 0) - tdesc =3D i386_linux_read_description (xcr0); - - if (tdesc !=3D NULL) - return tdesc; + if (xcr0 =3D=3D 0) + { + if (bfd_get_section_by_name (abfd, ".reg-xfp") !=3D nullptr) + xcr0 =3D X86_XSTATE_SSE_MASK; + else + xcr0 =3D X86_XSTATE_X87_MASK; + } =20 - if (bfd_get_section_by_name (abfd, ".reg-xfp") !=3D NULL) - return i386_linux_read_description (X86_XSTATE_SSE_MASK); - else - return i386_linux_read_description (X86_XSTATE_X87_MASK); + return i386_linux_read_description (xcr0); } =20 /* Similar to i386_supply_fpregset, but use XSAVE extended state. */