From 43e6c14091dee9c32fe1dee62466450e57f6c13a Mon Sep 17 00:00:00 2001
From: Bernd Edlinger <bernd.edlinger@hotmail.de>
Date: Sun, 16 Feb 2020 21:43:33 +0100
Subject: [PATCH] Fix build with gcc-4.8.x
Use an explicit conversion from unique_ptr<T> to
displaced_step_closure_up to avoid a compiler bug
with gcc-4.8.4:
../../binutils-gdb/gdb/amd64-tdep.c:1514:10: error: cannot bind
'std::unique_ptr<amd64_displaced_step_closure>' lvalue to
'std::unique_ptr<amd64_displaced_step_closure>&&'
gdb:
2020-02-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
* aarch64-tdep.c (aarch64_displaced_step_copy_insn): Use an explicit
conversion.
* amd64-tdep.c (amd64_displaced_step_copy_insn): Likewise.
* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Likewise.
* i386-tdep.c (i386_displaced_step_copy_insn): Likewise.
* rs6000-tdep.c (ppc_displaced_step_copy_insn): Likewise.
* s390-tdep.c (s390_displaced_step_copy_insn): Likewise.
---
gdb/aarch64-tdep.c | 3 ++-
gdb/amd64-tdep.c | 3 ++-
gdb/arm-linux-tdep.c | 3 ++-
gdb/i386-tdep.c | 3 ++-
gdb/rs6000-tdep.c | 3 ++-
gdb/s390-tdep.c | 3 ++-
6 files changed, 12 insertions(+), 6 deletions(-)
@@ -3053,7 +3053,8 @@ aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
dsc = NULL;
}
- return dsc;
+ /* This is a work around for a problem with g++ 4.8. */
+ return displaced_step_closure_up (dsc.release ());
}
/* Implement the "displaced_step_fixup" gdbarch method. */
@@ -1511,7 +1511,8 @@ amd64_displaced_step_copy_insn (struct gdbarch *gdbarch,
displaced_step_dump_bytes (gdb_stdlog, buf, len);
}
- return dsc;
+ /* This is a work around for a problem with g++ 4.8. */
+ return displaced_step_closure_up (dsc.release ());
}
static int
@@ -1131,7 +1131,8 @@ arm_linux_displaced_step_copy_insn (struct gdbarch *gdbarch,
arm_displaced_init_closure (gdbarch, from, to, dsc.get ());
- return dsc;
+ /* This is a work around for a problem with g++ 4.8. */
+ return displaced_step_closure_up (dsc.release ());
}
/* Implementation of `gdbarch_stap_is_single_operand', as defined in
@@ -831,7 +831,8 @@ i386_displaced_step_copy_insn (struct gdbarch *gdbarch,
displaced_step_dump_bytes (gdb_stdlog, buf, len);
}
- return closure;
+ /* This is a work around for a problem with g++ 4.8. */
+ return displaced_step_closure_up (closure.release ());
}
/* Fix up the state of registers and memory after having single-stepped
@@ -894,7 +894,8 @@ ppc_displaced_step_copy_insn (struct gdbarch *gdbarch,
displaced_step_dump_bytes (gdb_stdlog, buf, len);
}
- return closure;
+ /* This is a work around for a problem with g++ 4.8. */
+ return displaced_step_closure_up (closure.release ());
}
/* Fix up the state of registers and memory after having single-stepped
@@ -477,7 +477,8 @@ s390_displaced_step_copy_insn (struct gdbarch *gdbarch,
displaced_step_dump_bytes (gdb_stdlog, buf, len);
}
- return closure;
+ /* This is a work around for a problem with g++ 4.8. */
+ return displaced_step_closure_up (closure.release ());
}
/* Fix up the state of registers and memory after having single-stepped
--
1.9.1