projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ubsan: tic4x: left shift cannot be represented in type 'int'
[deliverable/binutils-gdb.git]
/
opcodes
/
mcore-dis.c
diff --git
a/opcodes/mcore-dis.c
b/opcodes/mcore-dis.c
index 887d0129ce470589490a735af320e0f4bbf4f92d..584e38787cf713011b27949e13044c910bc5aefa 100644
(file)
--- a/
opcodes/mcore-dis.c
+++ b/
opcodes/mcore-dis.c
@@
-1,5
+1,5
@@
/* Disassemble Motorola M*Core instructions.
/* Disassemble Motorola M*Core instructions.
- Copyright (C) 1993-20
16
Free Software Foundation, Inc.
+ Copyright (C) 1993-20
20
Free Software Foundation, Inc.
This file is part of the GNU opcodes library.
This file is part of the GNU opcodes library.
@@
-25,7
+25,7
@@
#define DEFINE_TABLE
#include "mcore-opc.h"
#define DEFINE_TABLE
#include "mcore-opc.h"
-#include "dis
-asm
.h"
+#include "dis
assemble
.h"
/* Mask for each mcore_opclass: */
static const unsigned short imsk[] = {
/* Mask for each mcore_opclass: */
static const unsigned short imsk[] = {
@@
-196,18
+196,14
@@
print_insn_mcore (bfd_vma memaddr,
case BR:
{
case BR:
{
-
long val = inst & 0x3FF
;
+
uint32_t val = ((inst & 0x3FF) ^ 0x400) - 0x400
;
- if (inst & 0x400)
- val |= 0xFFFFFC00;
-
- (*print_func) (stream, "\t0x%lx", (long)(memaddr + 2 + (val << 1)));
+ val = memaddr + 2 + (val << 1);
+ (*print_func) (stream, "\t0x%x", val);
if (strcmp (mcore_table[i].name, "bsr") == 0)
{
/* For bsr, we'll try to get a symbol for the target. */
if (strcmp (mcore_table[i].name, "bsr") == 0)
{
/* For bsr, we'll try to get a symbol for the target. */
- val = memaddr + 2 + (val << 1);
-
if (info->print_address_func && val != 0)
{
(*print_func) (stream, "\t// ");
if (info->print_address_func && val != 0)
{
(*print_func) (stream, "\t// ");
@@
-219,19
+215,18
@@
print_insn_mcore (bfd_vma memaddr,
case BL:
{
case BL:
{
- long val;
- val = (inst & 0x000F);
- (*print_func) (stream, "\t%s, 0x%lx",
+ uint32_t val = inst & 0x000F;
+ (*print_func) (stream, "\t%s, 0x%x",
grname[(inst >> 4) & 0xF],
grname[(inst >> 4) & 0xF],
- (
long
) (memaddr - (val << 1)));
+ (
uint32_t
) (memaddr - (val << 1)));
}
break;
case LR:
{
}
break;
case LR:
{
- u
nsigned long
val;
+ u
int32_t
val;
- val = (memaddr + 2 + ((inst & 0xFF) << 2)) &
0xFFFFFFFC
;
+ val = (memaddr + 2 + ((inst & 0xFF) << 2)) &
~3
;
/* We are not reading an instruction, so allow
reads to extend beyond the next symbol. */
/* We are not reading an instruction, so allow
reads to extend beyond the next symbol. */
@@
-244,27
+239,27
@@
print_insn_mcore (bfd_vma memaddr,
}
if (info->endian == BFD_ENDIAN_LITTLE)
}
if (info->endian == BFD_ENDIAN_LITTLE)
- val = (ibytes[3] << 24) | (ibytes[2] << 16)
-
| (ibytes[1] << 8) | (ibytes[0]
);
+ val = (
((unsigned)
ibytes[3] << 24) | (ibytes[2] << 16)
+
| (ibytes[1] << 8) | (ibytes[0])
);
else
else
- val = (ibytes[0] << 24) | (ibytes[1] << 16)
-
| (ibytes[2] << 8) | (ibytes[3]
);
+ val = (
((unsigned)
ibytes[0] << 24) | (ibytes[1] << 16)
+
| (ibytes[2] << 8) | (ibytes[3])
);
/* Removed [] around literal value to match ABI syntax 12/95. */
/* Removed [] around literal value to match ABI syntax 12/95. */
- (*print_func) (stream, "\t%s, 0x%
l
X", grname[(inst >> 8) & 0xF], val);
+ (*print_func) (stream, "\t%s, 0x%X", grname[(inst >> 8) & 0xF], val);
if (val == 0)
if (val == 0)
- (*print_func) (stream, "\t// from address pool at 0x%
l
x",
- (
long
) (memaddr + 2
-
+ ((inst & 0xFF) << 2)) & 0xFFFFFFFC
);
+ (*print_func) (stream, "\t// from address pool at 0x%x",
+ (
uint32_t
) (memaddr + 2
+
+ ((inst & 0xFF) << 2)) & ~3
);
}
break;
case LJ:
{
}
break;
case LJ:
{
- u
nsigned long
val;
+ u
int32_t
val;
- val = (memaddr + 2 + ((inst & 0xFF) << 2)) &
0xFFFFFFFC
;
+ val = (memaddr + 2 + ((inst & 0xFF) << 2)) &
~3
;
/* We are not reading an instruction, so allow
reads to extend beyond the next symbol. */
/* We are not reading an instruction, so allow
reads to extend beyond the next symbol. */
@@
-277,14
+272,14
@@
print_insn_mcore (bfd_vma memaddr,
}
if (info->endian == BFD_ENDIAN_LITTLE)
}
if (info->endian == BFD_ENDIAN_LITTLE)
- val = (ibytes[3] << 24) | (ibytes[2] << 16)
-
| (ibytes[1] << 8) | (ibytes[0]
);
+ val = (
((unsigned)
ibytes[3] << 24) | (ibytes[2] << 16)
+
| (ibytes[1] << 8) | (ibytes[0])
);
else
else
- val = (ibytes[0] << 24) | (ibytes[1] << 16)
-
| (ibytes[2] << 8) | (ibytes[3]
);
+ val = (
((unsigned)
ibytes[0] << 24) | (ibytes[1] << 16)
+
| (ibytes[2] << 8) | (ibytes[3])
);
/* Removed [] around literal value to match ABI syntax 12/95. */
/* Removed [] around literal value to match ABI syntax 12/95. */
- (*print_func) (stream, "\t0x%
l
X", val);
+ (*print_func) (stream, "\t0x%X", val);
/* For jmpi/jsri, we'll try to get a symbol for the target. */
if (info->print_address_func && val != 0)
{
/* For jmpi/jsri, we'll try to get a symbol for the target. */
if (info->print_address_func && val != 0)
{
@@
-293,9
+288,9
@@
print_insn_mcore (bfd_vma memaddr,
}
else
{
}
else
{
- (*print_func) (stream, "\t// from address pool at 0x%
l
x",
- (
long
) (memaddr + 2
-
+ ((inst & 0xFF) << 2)) & 0xFFFFFFFC
);
+ (*print_func) (stream, "\t// from address pool at 0x%x",
+ (
uint32_t
) (memaddr + 2
+
+ ((inst & 0xFF) << 2)) & ~3
);
}
}
break;
}
}
break;
This page took
0.027183 seconds
and
4
git commands to generate.