Fix -Wmaybe-uninitialized warning in opcodes/i386-dis.c
authorTom Tromey <tromey@adacore.com>
Fri, 21 Apr 2023 13:05:53 +0000 (07:05 -0600)
committerTom Tromey <tromey@adacore.com>
Fri, 21 Apr 2023 15:06:03 +0000 (09:06 -0600)
A recent change in opcodes/i386-dis.c caused a build failure on my
x86-64 Fedora 36 system, which uses:

$ gcc --version
gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-4)
[...]

The error is:

../../binutils-gdb/opcodes/i386-dis.c: In function ‘OP_J’:
../../binutils-gdb/opcodes/i386-dis.c:12705:22: error: ‘val’ may be used uninitialized [-Werror=maybe-uninitialized]
12705 |           disp = val & 0x8000 ? val - 0x10000 : val;
      |                  ~~~~^~~~~~~~

This patch fixes the warning.

opcodes/ChangeLog
2023-04-21  Tom Tromey  <tromey@adacore.com>

* i386-dis.c (OP_J): Check result of get16.

opcodes/ChangeLog
opcodes/i386-dis.c

index d0c338a0f6d3b94e0937b4598bc18370243a664a..890931e6b8ad7e1360e4a9ff813073f00b09eaa7 100644 (file)
@@ -1,3 +1,7 @@
+2023-04-21  Tom Tromey  <tromey@adacore.com>
+
+       * i386-dis.c (OP_J): Check result of get16.
+
 2023-04-12  Claudiu Zissulescu  <claziss@synopsys.com>
 
        * arc-tbl.h: Remove vadds2, vadds2h, vadds4h, vaddsubs,
index 46ba01fe09344586b3c483d5845e764af80be4e1..f021bdaa3e7535c3ea3d1c1477c0b41eb05b15aa 100644 (file)
@@ -12701,7 +12701,8 @@ OP_J (instr_info *ins, int bytemode, int sizeflag)
        {
          int val;
 
-         get16 (ins, &val);
+         if (!get16 (ins, &val))
+           return false;
          disp = val & 0x8000 ? val - 0x10000 : val;
          /* In 16bit mode, address is wrapped around at 64k within
             the same segment.  Otherwise, a data16 prefix on a jump