mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
Fix windows-nat.c for -Wnarrowing
Sergio pointed out that the Windows builder was failing due to the -Wnarrowing patch, with: ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '3221225477' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing] {-1, GDB_SIGNAL_UNKNOWN}}; ^ ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '3221225725' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing] ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '2147483651' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing] ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '2147483652' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing] ../../binutils-gdb/gdb/windows-nat.c:301:27: error: narrowing conversion of '3221225614' from 'DWORD {aka long unsigned int}' to 'int' inside { } [-Wnarrowing] Looking into this, I found two things. First, in struct xlate_exception, it is better to have "them" be of type DWORD, as that's the type actually in use. Second, struct xlate_exception and xlate are not used in this file, because the code in windows_nat_target::resume is #if'd out. This patch changes the type of "them", but also similarly #if's out this object. In order to avoid a narrowing warning from the -1 entry, at Pedro's suggestion I have removed this and changed windows_nat_target::resume to use ranged for. Tested by rebuilding using the mingw toolchain on x86-64 Fedora 28. I also tested it by temporarily removing the "#if 0"s and rebuilding. gdb/ChangeLog 2018-08-29 Tom Tromey <tom@tromey.com> * windows-nat.c (struct xlate_exception) <them>: Change type to DWORD. (xlate): Fix formatting. Remove last entry. (struct xlate_exception, xlate): Comment out. (windows_nat_target::resume): Use ranged for.
This commit is contained in:
parent
df28970fcc
commit
73c13fe69a
@ -1,3 +1,11 @@
|
||||
2018-08-29 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* windows-nat.c (struct xlate_exception) <them>: Change type to
|
||||
DWORD.
|
||||
(xlate): Fix formatting. Remove last entry.
|
||||
(struct xlate_exception, xlate): Comment out.
|
||||
(windows_nat_target::resume): Use ranged for.
|
||||
|
||||
2018-08-29 Jim Wilson <jimw@sifive.com>
|
||||
|
||||
* riscv-linux-nat.c: Include elf/common.h instead of elf.h.
|
||||
|
@ -280,26 +280,29 @@ static const int *mappings;
|
||||
a segment register or not. */
|
||||
static segment_register_p_ftype *segment_register_p;
|
||||
|
||||
/* See windows_nat_target::resume to understand why this is commented
|
||||
out. */
|
||||
#if 0
|
||||
/* This vector maps the target's idea of an exception (extracted
|
||||
from the DEBUG_EVENT structure) to GDB's idea. */
|
||||
|
||||
struct xlate_exception
|
||||
{
|
||||
int them;
|
||||
DWORD them;
|
||||
enum gdb_signal us;
|
||||
};
|
||||
|
||||
static const struct xlate_exception
|
||||
xlate[] =
|
||||
static const struct xlate_exception xlate[] =
|
||||
{
|
||||
{EXCEPTION_ACCESS_VIOLATION, GDB_SIGNAL_SEGV},
|
||||
{STATUS_STACK_OVERFLOW, GDB_SIGNAL_SEGV},
|
||||
{EXCEPTION_BREAKPOINT, GDB_SIGNAL_TRAP},
|
||||
{DBG_CONTROL_C, GDB_SIGNAL_INT},
|
||||
{EXCEPTION_SINGLE_STEP, GDB_SIGNAL_TRAP},
|
||||
{STATUS_FLOAT_DIVIDE_BY_ZERO, GDB_SIGNAL_FPE},
|
||||
{-1, GDB_SIGNAL_UNKNOWN}};
|
||||
{STATUS_FLOAT_DIVIDE_BY_ZERO, GDB_SIGNAL_FPE}
|
||||
};
|
||||
|
||||
#endif /* 0 */
|
||||
|
||||
struct windows_nat_target final : public x86_nat_target<inf_child_target>
|
||||
{
|
||||
@ -1408,12 +1411,11 @@ windows_nat_target::resume (ptid_t ptid, int step, enum gdb_signal sig)
|
||||
structure when passing the exception to the inferior.
|
||||
Note that this seems possible in the exception handler itself. */
|
||||
{
|
||||
int i;
|
||||
for (i = 0; xlate[i].them != -1; i++)
|
||||
if (xlate[i].us == sig)
|
||||
for (const xlate_exception &x : xlate)
|
||||
if (x.us == sig)
|
||||
{
|
||||
current_event.u.Exception.ExceptionRecord.ExceptionCode
|
||||
= xlate[i].them;
|
||||
= x.them;
|
||||
continue_status = DBG_EXCEPTION_NOT_HANDLED;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user