From 8a60efe714e636c9f958058a8dfb12de81bdcbfa Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Thu, 31 May 2018 11:18:02 -0400 Subject: [PATCH] Fix Alpha native GDB build [Commit log by Simon Marchi] I get this error: CXX linux-nat.o /home/simark/src/binutils-gdb/gdb/linux-nat.c: In function 'void save_stop_reason(lwp_info*)': /home/simark/src/binutils-gdb/gdb/linux-nat.c:2718:9: error: duplicated 'if' condition [-Werror=duplicated-cond] else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code)) ^~ In file included from /home/simark/src/binutils-gdb/gdb/linux-nat.c:31:0: /home/simark/src/binutils-gdb/gdb/nat/linux-ptrace.h:173:41: note: previously used here # define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == TRAP_BRKPT) ~~~~~^~~~~~~~~~~~~~ /home/simark/src/binutils-gdb/gdb/linux-nat.c:2709:13: note: in expansion of macro 'GDB_ARCH_IS_TRAP_BRKPT' else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)) ^~~~~~~~~~~~~~~~~~~~~~ For Alpha, we currently define GDB_ARCH_IS_TRAP_BRKPT and GDB_ARCH_IS_TRAP_HWBKPT both to ((X) == TRAP_BRKPT), which causes the two if branches to be duplicated. Alpha doesn't have hardware breakpoints, so the Linux kernel for Alpha never sets si_code to TRAP_HWBKPT. We can just remove the special definitions of these macros for __alpha__ and rely on the default ones. Since the kernel will never report TRAP_HWBKPT, we will just never enter the "hardware breakpoint" branch on Alpha (which is fine since it doesn't have them). gdb/ChangeLog: * nat/linux-ptrace.h [__alpha__] (GDB_ARCH_IS_TRAP_BRKPT, GDB_ARCH_IS_TRAP_HWBKPT): Remove definitions. --- gdb/ChangeLog | 6 ++++++ gdb/nat/linux-ptrace.h | 5 ----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c6c862f035e..8af7e67ed36 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2018-05-31 Uros Bizjak + + * nat/linux-ptrace.h [__alpha__] + (GDB_ARCH_IS_TRAP_BRKPT, GDB_ARCH_IS_TRAP_HWBKPT): Remove + definitions. + 2018-05-31 Maciej W. Rozycki * arch-utils.c (gdbarch_info_fill): Set `default_byte_order' to diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h index dc180fbf82a..98b44a82a6b 100644 --- a/gdb/nat/linux-ptrace.h +++ b/gdb/nat/linux-ptrace.h @@ -156,8 +156,6 @@ struct buffer; Beginning with Linux 4.6, the MIPS port reports proper TRAP_BRKPT and TRAP_HWBKPT codes, so we also match them. - The Alpha kernel uses TRAP_BRKPT for all traps. - The generic Linux target code should use GDB_ARCH_IS_TRAP_* instead of TRAP_* to abstract out these peculiarities. */ #if defined __i386__ || defined __x86_64__ @@ -169,9 +167,6 @@ struct buffer; #elif defined __mips__ # define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == SI_KERNEL || (X) == TRAP_BRKPT) # define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == SI_KERNEL || (X) == TRAP_HWBKPT) -#elif defined __alpha__ -# define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == TRAP_BRKPT) -# define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == TRAP_BRKPT) #else # define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == TRAP_BRKPT) # define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == TRAP_HWBKPT) -- 2.30.2