* [Qemu-arm] [PATCH] libvixl: Avoid std::abs() of 64-bit type
@ 2016-01-25 16:30 Peter Maydell
0 siblings, 0 replies; only message in thread
From: Peter Maydell @ 2016-01-25 16:30 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-arm, Franz-Josef Haider, patches
The std::abs() function did not get a version that works on
'long long' until C++11. Avoid it, so that we can compile on
32-bit platforms (where int64_t is 'long long') with older
compilers (which don't support C++11).
Reported-by: Franz-Josef Haider <Franz-Josef.Haider@student.uibk.ac.at>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
I've reported this as an upstream VIXL bug and expect it will
be fixed in a future version. I didn't use llabs() because of
its undefined behaviour if the input value happens to be the
most negative integer.
---
disas/libvixl/vixl/a64/disasm-a64.cc | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/disas/libvixl/vixl/a64/disasm-a64.cc b/disas/libvixl/vixl/a64/disasm-a64.cc
index 20caba4..7a58a5c 100644
--- a/disas/libvixl/vixl/a64/disasm-a64.cc
+++ b/disas/libvixl/vixl/a64/disasm-a64.cc
@@ -2688,8 +2688,12 @@ void Disassembler::AppendRegisterNameToOutput(const Instruction* instr,
void Disassembler::AppendPCRelativeOffsetToOutput(const Instruction* instr,
int64_t offset) {
USE(instr);
+ uint64_t abs_offset = offset;
char sign = (offset < 0) ? '-' : '+';
- AppendToOutput("#%c0x%" PRIx64, sign, std::abs(offset));
+ if (offset < 0) {
+ abs_offset = -abs_offset;
+ }
+ AppendToOutput("#%c0x%" PRIx64, sign, abs_offset);
}
--
1.9.1
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2016-01-25 16:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-25 16:30 [Qemu-arm] [PATCH] libvixl: Avoid std::abs() of 64-bit type Peter Maydell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).