Don't pass -m64 to libcc1 on aarch64-linux.
authorYao Qi <yao.qi@linaro.org>
Wed, 17 Jan 2018 12:48:52 +0000 (12:48 +0000)
committerYao Qi <yao.qi@linaro.org>
Wed, 17 Jan 2018 12:48:52 +0000 (12:48 +0000)
Nowadays, if we use "compile" on aarch64-linux, we'll get the following
error,

(gdb) compile code -- ;
aarch64-none-linux-gnu-gcc: error: unrecognized command line option '-m64'

because the default gcc_target_options returns "-m64" and
"-mcmodel=large", neither is useful to aarch64-linux.

gdb:

2018-01-17  Yao Qi  <yao.qi@linaro.org>

* aarch64-linux-tdep.c (aarch64_linux_gcc_target_options): New
function.
(aarch64_linux_init_abi): Install it to gdbarch hook
gcc_target_options.

gdb/ChangeLog
gdb/aarch64-linux-tdep.c

index c831a5c30f957f0e08b17e7fa94c873a93314fef..a798d0618395a5d7f4bc374c897b53626f3b7405 100644 (file)
@@ -1,3 +1,10 @@
+2018-01-17  Yao Qi  <yao.qi@linaro.org>
+
+       * aarch64-linux-tdep.c (aarch64_linux_gcc_target_options): New
+       function.
+       (aarch64_linux_init_abi): Install it to gdbarch hook
+       gcc_target_options.
+
 2018-01-15  Pedro Alves  <palves@redhat.com>
 
        * common/signals-state-save-restore.c
index 1a82406aae3283d4c3922638c2f13316afac3c19..1f3e888e40d002f588a34171cc6578804ea6e654 100644 (file)
@@ -1001,6 +1001,15 @@ aarch64_linux_syscall_record (struct regcache *regcache,
   return 0;
 }
 
+/* Implement the "gcc_target_options" gdbarch method.  */
+
+static char *
+aarch64_linux_gcc_target_options (struct gdbarch *gdbarch)
+{
+  /* GCC doesn't know "-m64".  */
+  return NULL;
+}
+
 static void
 aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
@@ -1225,6 +1234,8 @@ aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
   set_gdbarch_displaced_step_location (gdbarch, linux_displaced_step_location);
   set_gdbarch_displaced_step_hw_singlestep (gdbarch,
                                            aarch64_displaced_step_hw_singlestep);
+
+  set_gdbarch_gcc_target_options (gdbarch, aarch64_linux_gcc_target_options);
 }
 
 void