Do not accidentally include in-tree readline headers
authorTom Tromey <tom@tromey.com>
Wed, 26 Sep 2018 12:54:17 +0000 (06:54 -0600)
committerTom Tromey <tom@tromey.com>
Sun, 7 Oct 2018 04:46:56 +0000 (22:46 -0600)
PR build/17077 points out that when --with-system-readline is given,
gdb will still pick up the in-tree readline headers.  Normally this is
not a big problem, because readline is very stable and so the ABI does
not change much; but it is clearly a bug to do this, and could bite at
some point.

The basic problem is that OPCODES_CFLAGS uses -I$(OPCODES_SRC)/..  so
that #include "opcodes/..." works.  However, this also makes it so the

This patch fixes the problem in a mildly hacky way: remove the
offending -I option, and change gdb to use #include "../opcodes/..."
instead.  This continues to make it clear where the header comes from,
without allowing incorrect behavior.

Tested by rebuilding and then looking at the *.Po files.

gdb/ChangeLog
2018-10-06  Tom Tromey  <tom@tromey.com>

PR build/17077:
* Makefile.in (OPCODES_CFLAGS): Remove "-I$(OPCODES_SRC)/..".
* arc-tdep.c, frv-tdep.c, lm32-tdep.c, mep-tdep.c,
microblaze-tdep.c, or1k-tdep.h: Use ../opcodes, not opcodes, in
#include.

gdb/ChangeLog
gdb/Makefile.in
gdb/arc-tdep.c
gdb/frv-tdep.c
gdb/lm32-tdep.c
gdb/mep-tdep.c
gdb/microblaze-tdep.c
gdb/or1k-tdep.h

index e6f821dc8f62369e8c0109e97360f6ccef521519..0454d156f8f15e394e3759872d7dfb883437779f 100644 (file)
@@ -1,3 +1,11 @@
+2018-10-06  Tom Tromey  <tom@tromey.com>
+
+       PR build/17077:
+       * Makefile.in (OPCODES_CFLAGS): Remove "-I$(OPCODES_SRC)/..".
+       * arc-tdep.c, frv-tdep.c, lm32-tdep.c, mep-tdep.c,
+       microblaze-tdep.c, or1k-tdep.h: Use ../opcodes, not opcodes, in
+       #include.
+
 2018-10-06  Tom Tromey  <tom@tromey.com>
 
        * python/py-breakpoint.c (bppy_get_location): Handle a
index 8d780ac75883ad229889c7dd64e4b604751260d7..5b3a952fce8a1d2e77deea45da5c725ab8839d19 100644 (file)
@@ -446,8 +446,7 @@ OPCODES = $(OPCODES_DIR)/libopcodes.a
 # Where are the other opcode tables which only have header file
 # versions?
 OP_INCLUDE = $(INCLUDE_DIR)/opcode
-# Some source files like to use #include "opcodes/file.h"
-OPCODES_CFLAGS = -I$(OP_INCLUDE) -I$(OPCODES_SRC)/..
+OPCODES_CFLAGS = -I$(OP_INCLUDE)
 
 # The simulator is usually nonexistent; targets that include one
 # should set this to list all the .o or .a files to be linked in.
index fad91709786acffa0790f1b7b78cb1902d2d9edf..b9dcbbc1e5a6e69050830da0841be053938739a6 100644 (file)
@@ -33,7 +33,7 @@
 
 /* ARC header files.  */
 #include "opcode/arc.h"
-#include "opcodes/arc-dis.h"
+#include "../opcodes/arc-dis.h"
 #include "arc-tdep.h"
 
 /* Standard headers.  */
index 1eed441f2b34a7e4522a8fb5c1af82613fd8b32e..dafab756543b1ac92942f7de8618ec933ca405fa 100644 (file)
@@ -29,7 +29,7 @@
 #include "dis-asm.h"
 #include "sim-regno.h"
 #include "gdb/sim-frv.h"
-#include "opcodes/frv-desc.h"  /* for the H_SPR_... enums */
+#include "../opcodes/frv-desc.h"       /* for the H_SPR_... enums */
 #include "symtab.h"
 #include "elf-bfd.h"
 #include "elf/frv.h"
index 942852140d78dfc1a7617416d549c39f809a0c76..694d30ee1cdd8e2fd0a1d7bd906467c6fa40774e 100644 (file)
@@ -35,7 +35,7 @@
 #include "regcache.h"
 #include "trad-frame.h"
 #include "reggroups.h"
-#include "opcodes/lm32-desc.h"
+#include "../opcodes/lm32-desc.h"
 #include <algorithm>
 
 /* Macros to extract fields from an instruction.  */
index 4b5bfcb9e73a1f70df64449ecabb58e6dd71f06f..ae9c4debcae9603b9e68fa3bb6df31dbbbd90b58 100644 (file)
@@ -48,8 +48,8 @@
 
 /* Get the user's customized MeP coprocessor register names from
    libopcodes.  */
-#include "opcodes/mep-desc.h"
-#include "opcodes/mep-opc.h"
+#include "../opcodes/mep-desc.h"
+#include "../opcodes/mep-opc.h"
 
 \f
 /* The gdbarch_tdep structure.  */
index 4dbfd1b050ae016ee96f9f6a6073ef376b535d4f..018b713a18ec8cd31ddd24af3d90ef5cf7d3b8d4 100644 (file)
@@ -34,8 +34,8 @@
 #include "dwarf2-frame.h"
 #include "osabi.h"
 #include "target-descriptions.h"
-#include "opcodes/microblaze-opcm.h"
-#include "opcodes/microblaze-dis.h"
+#include "../opcodes/microblaze-opcm.h"
+#include "../opcodes/microblaze-dis.h"
 #include "microblaze-tdep.h"
 #include "remote.h"
 
index 4a93540c3a3f75b5e5b0c7cc9e6525db4166ec63..b630c7705312d2154196af5f0edef46a2a59ce9c 100644 (file)
@@ -24,8 +24,8 @@
 #define TARGET_OR1K
 #endif
 
-#include "opcodes/or1k-desc.h"
-#include "opcodes/or1k-opc.h"
+#include "../opcodes/or1k-desc.h"
+#include "../opcodes/or1k-opc.h"
 
 /* General Purpose Registers */
 #define OR1K_ZERO_REGNUM          0