From: Marcus Shawcroft Date: Mon, 4 Feb 2013 12:57:44 +0000 (+0000) Subject: Adding aarch64-newlib-tdep support. X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=cf0dbd6fe7b21f961021ddc9ba9105cbacfbdc90;p=deliverable%2Fbinutils-gdb.git Adding aarch64-newlib-tdep support. * 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". --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 032ac1da5a..475c671380 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2013-02-04 Jim MacArthur + Marcus Shawcroft + Nigel Stephens + Yufeng Zhang + + * 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 Marcus Shawcroft Nigel Stephens diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 2a0e4ac2dd..0d834ac623 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -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 index 0000000000..47ce68704e --- /dev/null +++ b/gdb/aarch64-newlib-tdep.c @@ -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 . */ + +#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); +} diff --git a/gdb/configure.tgt b/gdb/configure.tgt index 92514ff690..12baeba821 100644 --- a/gdb/configure.tgt +++ b/gdb/configure.tgt @@ -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*) diff --git a/gdb/defs.h b/gdb/defs.h index 10089b0d2c..d8a1adb0ce 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -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 */ }; diff --git a/gdb/osabi.c b/gdb/osabi.c index 54300d6aca..a123ea05bc 100644 --- a/gdb/osabi.c +++ b/gdb/osabi.c @@ -74,6 +74,7 @@ static const char * const gdb_osabi_names[] = "Symbian", "OpenVMS", "LynxOS178", + "Newlib", "" };