diff options
author | Nick Clifton <nickc@redhat.com> | 2003-04-01 15:53:47 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2003-04-01 15:53:47 +0000 |
commit | 88da68203dc31691946aa14e84c1728125febc0a (patch) | |
tree | 9c69551f4b3899d786da1d1cb28e49375fa4b425 | |
parent | e0001a05d2e4967ee86f4468cdc4fafea66b92d1 (diff) | |
download | gdb-88da68203dc31691946aa14e84c1728125febc0a.zip gdb-88da68203dc31691946aa14e84c1728125febc0a.tar.gz gdb-88da68203dc31691946aa14e84c1728125febc0a.tar.bz2 |
Add Xtensa port (omitted from previous delta)
-rw-r--r-- | binutils/ChangeLog | 9 | ||||
-rw-r--r-- | binutils/readelf.c | 10 | ||||
-rw-r--r-- | gas/config/xtensa-istack.h | 73 |
3 files changed, 92 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 6b7981b..1be9e59 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,12 @@ +2003-04-01 Bob Wilson <bob.wilson@acm.org> + + * readelf.c: Include "elf/xtensa.h". + (guess_is_rela): Add EM_XTENSA and EM_XTENSA_OLD to list of + targets that use RELA relocations. + (dump_relocations): Call elf_xtensa_reloc_type for + EM_XTENSA and EM_XTENSA_OLD. + (get_machine_name): Handle EM_XTENSA and EM_XTENSA_OLD. + 2003-04-01 Nick Clifton <nickc@redhat.com> * configure.in: Change "arm-pe*" to "arm-*-pe*". Similarly for diff --git a/binutils/readelf.c b/binutils/readelf.c index 00672c1..16733d9 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -88,6 +88,7 @@ #include "elf/x86-64.h" #include "elf/xstormy16.h" #include "elf/iq2000.h" +#include "elf/xtensa.h" #include "bucomm.h" #include "getopt.h" @@ -771,6 +772,8 @@ guess_is_rela (e_machine) case EM_IP2K: case EM_IP2K_OLD: case EM_IQ2000: + case EM_XTENSA: + case EM_XTENSA_OLD: return TRUE; case EM_MMA: @@ -1272,6 +1275,11 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela) case EM_IQ2000: rtype = elf_iq2000_reloc_type (type); break; + + case EM_XTENSA_OLD: + case EM_XTENSA: + rtype = elf_xtensa_reloc_type (type); + break; } if (rtype == NULL) @@ -1757,6 +1765,8 @@ get_machine_name (e_machine) case EM_IP2K_OLD: case EM_IP2K: return "Ubicom IP2xxx 8-bit microcontrollers"; case EM_IQ2000: return "Vitesse IQ2000"; + case EM_XTENSA_OLD: + case EM_XTENSA: return "Tensilica Xtensa Processor"; default: sprintf (buff, _("<unknown>: %x"), e_machine); return buff; diff --git a/gas/config/xtensa-istack.h b/gas/config/xtensa-istack.h new file mode 100644 index 0000000..a1cca2e --- /dev/null +++ b/gas/config/xtensa-istack.h @@ -0,0 +1,73 @@ +/* Declarations for stacks of tokenized Xtensa instructions. + Copyright (C) 2003 Free Software Foundation, Inc. + + This file is part of GAS, the GNU Assembler. + + GAS 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 2, or (at your option) + any later version. + + GAS 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 GAS; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +#ifndef XTENSA_ISTACK_H +#define XTENSA_ISTACK_H + +#include "xtensa-isa.h" + +#define MAX_ISTACK 12 +#define MAX_INSN_ARGS 6 + +enum itype_enum +{ + ITYPE_INSN, + ITYPE_LITERAL, + ITYPE_LABEL +}; + + +/* Literals have 1 token and no opcode. + Labels have 1 token and no opcode. */ + +typedef struct tinsn_struct +{ + enum itype_enum insn_type; + + bfd_boolean is_specific_opcode; + xtensa_opcode opcode; /* Literals have an invalid opcode. */ + int ntok; + expressionS tok[MAX_INSN_ARGS]; +} TInsn; + + +/* tinsn_stack: This is a stack of instructions to be placed. */ + +typedef struct tinsn_stack +{ + int ninsn; + TInsn insn[MAX_ISTACK]; +} IStack; + + +void istack_init PARAMS ((IStack *)); +bfd_boolean istack_empty PARAMS ((IStack *)); +bfd_boolean istack_full PARAMS ((IStack *)); +TInsn * istack_top PARAMS ((IStack *)); +void istack_push PARAMS ((IStack *, TInsn *)); +TInsn * istack_push_space PARAMS ((IStack *)); +void istack_pop PARAMS ((IStack *)); + +/* TInsn utilities. */ +void tinsn_init PARAMS ((TInsn *)); +void tinsn_copy PARAMS ((TInsn *, const TInsn *)); +expressionS *tinsn_get_tok PARAMS ((TInsn *, int)); + +#endif /* !XTENSA_ISTACK_H */ |