Adding aarch64-newlib-tdep support.
authorMarcus Shawcroft <mshawcroft@sourceware.org>
Mon, 4 Feb 2013 12:57:44 +0000 (12:57 +0000)
committerMarcus Shawcroft <mshawcroft@sourceware.org>
Mon, 4 Feb 2013 12:57:44 +0000 (12:57 +0000)
        * aarch64-newlib-tdep.c: New file.
        * configure.tgt: Add aarch64-newlib-tdep.o to gdb_target_obs of
        aarch64*-*-elf.
        * defs.h (enum gdb_osabi): Add GDB_OSABI_NEWLIB.
        * Makefile.in (ALL_64_TARGET_OBS): Add aarch64-newlib-tdep.o.
        (ALLDEPFILES): Add aarch64-newlib-tdep.c.
        * osabi.c (gdb_osabi_names): Add "Newlib".

gdb/ChangeLog
gdb/Makefile.in
gdb/aarch64-newlib-tdep.c [new file with mode: 0644]
gdb/configure.tgt
gdb/defs.h
gdb/osabi.c

index 032ac1da5a1165f4c5e01ea7989e86b5de46d859..475c671380ffcc8569cfbd887f7bcb6ce5c2e292 100644 (file)
@@ -1,3 +1,16 @@
+2013-02-04  Jim MacArthur  <jim.macarthur@arm.com>
+           Marcus Shawcroft  <marcus.shawcroft@arm.com>
+           Nigel Stephens  <nigel.stephens@arm.com>
+           Yufeng Zhang  <yufeng.zhang@arm.com>
+
+       * aarch64-newlib-tdep.c: New file.
+       * configure.tgt: Add aarch64-newlib-tdep.o to gdb_target_obs of
+       aarch64*-*-elf.
+       * defs.h (enum gdb_osabi): Add GDB_OSABI_NEWLIB.
+       * Makefile.in (ALL_64_TARGET_OBS): Add aarch64-newlib-tdep.o.
+       (ALLDEPFILES): Add aarch64-newlib-tdep.c.
+       * osabi.c (gdb_osabi_names): Add "Newlib".
+
 2013-02-04  Jim MacArthur  <jim.macarthur@arm.com>
            Marcus Shawcroft  <marcus.shawcroft@arm.com>
            Nigel Stephens  <nigel.stephens@arm.com>
index 2a0e4ac2dde36c337e46395eb075f7c0f2e47339..0d834ac623ae9e005f60a6e9c2399fd8cfeb9c50 100644 (file)
@@ -521,7 +521,7 @@ TARGET_OBS = @TARGET_OBS@
 # All target-dependent objects files that require 64-bit CORE_ADDR
 # (used with --enable-targets=all --enable-64-bit-bfd).
 ALL_64_TARGET_OBS = \
-       aarch64-tdep.o aarch64-linux-tdep.o \
+       aarch64-tdep.o aarch64-linux-tdep.o aarch64-newlib-tdep.o \
        alphabsd-tdep.o alphafbsd-tdep.o alpha-linux-tdep.o alpha-mdebug-tdep.o \
        alphanbsd-tdep.o alphaobsd-tdep.o alpha-osf1-tdep.o alpha-tdep.o \
        amd64fbsd-tdep.o amd64-darwin-tdep.o amd64-dicos-tdep.o \
@@ -1421,7 +1421,7 @@ force_update:
 MAKEOVERRIDES=
 
 ALLDEPFILES = \
-       aarch64-tdep.c aarch64-linux-tdep.c \
+       aarch64-tdep.c aarch64-linux-tdep.c aarch64-newlib-tdep.c \
        aix-thread.c \
        alpha-nat.c alphabsd-nat.c alpha-linux-nat.c \
        alpha-tdep.c alpha-mdebug-tdep.c \
diff --git a/gdb/aarch64-newlib-tdep.c b/gdb/aarch64-newlib-tdep.c
new file mode 100644 (file)
index 0000000..47ce687
--- /dev/null
@@ -0,0 +1,47 @@
+/* Target-dependent code for Newlib AArch64.
+
+   Copyright (C) 2011-2013 Free Software Foundation, Inc.
+   Contributed by ARM Ltd.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "defs.h"
+
+#include "gdbarch.h"
+#include "aarch64-tdep.h"
+#include "osabi.h"
+
+/* Implement the 'init_osabi' method of struct gdb_osabi_handler.  */
+
+static void
+aarch64_newlib_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+  /* Jump buffer - support for longjmp.
+     Offset of original PC in jump buffer (in registers).  */
+  tdep->jb_pc = 11;
+}
+
+/* Provide a prototype to silence -Wmissing-prototypes.  */
+extern initialize_file_ftype _initialize_aarch64_newlib_tdep;
+
+void
+_initialize_aarch64_newlib_tdep (void)
+{
+  gdbarch_register_osabi (bfd_arch_aarch64, 0, GDB_OSABI_NEWLIB,
+                         aarch64_newlib_init_abi);
+}
index 92514ff690fb60f4d0e4bc5f81821bac55deb73a..12baeba8216f478bd5d8393be0568f3e0dbef397 100644 (file)
@@ -33,7 +33,7 @@ esac
 case "${targ}" in
 aarch64*-*-elf)
        # Target: AArch64 embedded system
-       gdb_target_obs="aarch64-tdep.o"
+       gdb_target_obs="aarch64-tdep.o aarch64-newlib-tdep.o"
        ;;
 
 aarch64*-*-linux*)
index 10089b0d2c552d5c4a9b9bdbb5e515d2490398bf..d8a1adb0ceee80a157d0df99482036ab9f666740 100644 (file)
@@ -595,6 +595,7 @@ enum gdb_osabi
   GDB_OSABI_SYMBIAN,
   GDB_OSABI_OPENVMS,
   GDB_OSABI_LYNXOS178,
+  GDB_OSABI_NEWLIB,
 
   GDB_OSABI_INVALID            /* keep this last */
 };
index 54300d6aca4bf757d547765727bf69c8677d0b89..a123ea05bce253dd07c71d8d818d9a0e877dc0a4 100644 (file)
@@ -74,6 +74,7 @@ static const char * const gdb_osabi_names[] =
   "Symbian",
   "OpenVMS",
   "LynxOS178",
+  "Newlib",
 
   "<invalid>"
 };