]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
This commit was manufactured by cvs2svn to create branch
authornobody <>
Tue, 20 May 2003 21:35:29 +0000 (21:35 +0000)
committernobody <>
Tue, 20 May 2003 21:35:29 +0000 (21:35 +0000)
'carlton_dictionary-branch'.

Cherrypick from master 2003-05-20 21:35:28 UTC Kris Warkentin <kewarken@qnx.com> 'Fix regset numbering.':
    gdb/config/i386/nto.mt
    gdb/config/i386/tm-nto.h
    gdb/config/tm-nto.h
    gdb/i386-nto-tdep.c
    gdb/mi/mi-symbol-cmds.c
    gdb/nto-tdep.c
    gdb/nto-tdep.h
    gdb/testsuite/gdb.asm/s390x.inc
    gdb/testsuite/gdb.mi/mi1-symbol.exp
    opcodes/po/ro.po

gdb/config/i386/nto.mt [new file with mode: 0644]
gdb/config/i386/tm-nto.h [new file with mode: 0644]
gdb/config/tm-nto.h [new file with mode: 0644]
gdb/i386-nto-tdep.c [new file with mode: 0644]
gdb/mi/mi-symbol-cmds.c [new file with mode: 0644]
gdb/nto-tdep.c [new file with mode: 0644]
gdb/nto-tdep.h [new file with mode: 0644]
gdb/testsuite/gdb.asm/s390x.inc [new file with mode: 0644]
gdb/testsuite/gdb.mi/mi1-symbol.exp [new file with mode: 0644]
opcodes/po/ro.po [new file with mode: 0644]

diff --git a/gdb/config/i386/nto.mt b/gdb/config/i386/nto.mt
new file mode 100644 (file)
index 0000000..6655f3e
--- /dev/null
@@ -0,0 +1,4 @@
+# Target: Intel 386 running qnx6.
+TDEPFILES = i386-tdep.o i387-tdep.o corelow.o solib.o solib-svr4.o \
+       i386-nto-tdep.o nto-tdep.o remote-nto.o
+TM_FILE = tm-nto.h
diff --git a/gdb/config/i386/tm-nto.h b/gdb/config/i386/tm-nto.h
new file mode 100644 (file)
index 0000000..ff5eb78
--- /dev/null
@@ -0,0 +1,33 @@
+/* QNX Neutrino target header.
+   Copyright 2003 Free Software Foundation, Inc.
+
+   This code was donated by QNX Software Systems 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 2 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef TM_NTO_H
+#define TM_NTO_H 1
+
+/* Pick up most of what we need from the generic i386 target include file.  */
+#include "i386/tm-i386.h"
+#include "tm-nto.h"
+
+#include "solib.h"
+
+#endif /* TM_NTO_H */
diff --git a/gdb/config/tm-nto.h b/gdb/config/tm-nto.h
new file mode 100644 (file)
index 0000000..359ff06
--- /dev/null
@@ -0,0 +1,61 @@
+/* Target machine sub-description for QNX Neutrino version 6.
+   This is included by other tm-*.h files to specify nto specific
+   stuff. 
+
+   Copyright 2003 Free Software Foundation, Inc.
+
+   This code was donated by QNX Software Systems 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 2 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _TM_QNXNTO_H
+#define _TM_QNXNTO_H
+
+#include "tm-sysv4.h"
+
+/* Setup the valid realtime signal range.  */
+#define REALTIME_LO 41
+#define REALTIME_HI 56
+
+/* Set up the undefined useable signals.  */
+#define RAW_SIGNAL_LO 32
+#define RAW_SIGNAL_HI (REALTIME_LO - 1)
+
+#define TARGET_SIGNAL_RAW_VALUES \
+TARGET_SIGNAL_RAW0, \
+TARGET_SIGNAL_RAW1, \
+TARGET_SIGNAL_RAW2, \
+TARGET_SIGNAL_RAW3, \
+TARGET_SIGNAL_RAW4, \
+TARGET_SIGNAL_RAW5, \
+TARGET_SIGNAL_RAW6, \
+TARGET_SIGNAL_RAW7, \
+TARGET_SIGNAL_RAW8
+
+#define TARGET_SIGNAL_RAW_TABLE \
+{"SIGNAL32", "Signal 32"}, \
+{"SIGNAL33", "Signal 33"}, \
+{"SIGNAL34", "Signal 34"}, \
+{"SIGNAL35", "Signal 35"}, \
+{"SIGNAL36", "Signal 36"}, \
+{"SIGNAL37", "Signal 37"}, \
+{"SIGNAL38", "Signal 38"}, \
+{"SIGNAL39", "Signal 39"}, \
+{"SIGNAL40", "Signal 40"}
+
+#endif /* _TM_QNXNTO_H */
diff --git a/gdb/i386-nto-tdep.c b/gdb/i386-nto-tdep.c
new file mode 100644 (file)
index 0000000..b35dd2a
--- /dev/null
@@ -0,0 +1,298 @@
+/* i386-nto-tdep.c - i386 specific functionality for QNX Neutrino.
+
+   Copyright 2003 Free Software Foundation, Inc.
+
+   Contributed by QNX Software Systems 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 2 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "gdb_string.h"
+#include "gdb_assert.h"
+#include "defs.h"
+#include "frame.h"
+#include "target.h"
+#include "regcache.h"
+#include "solib-svr4.h"
+#include "i386-tdep.h"
+#include "nto-tdep.h"
+#include "osabi.h"
+#include "i387-tdep.h"
+
+#ifndef X86_CPU_FXSR
+#define X86_CPU_FXSR (1L << 12)
+#endif
+
+/* Why 13?  Look in our /usr/include/x86/context.h header at the
+   x86_cpu_registers structure and you'll see an 'exx' junk register
+   that is just filler.  Don't ask me, ask the kernel guys.  */
+#define NUM_GPREGS 13
+
+/* Map a GDB register number to an offset in the reg structure.  */
+static int regmap[] = {
+  (7 * 4),                     /* eax */
+  (6 * 4),                     /* ecx */
+  (5 * 4),                     /* edx */
+  (4 * 4),                     /* ebx */
+  (11 * 4),                    /* esp */
+  (2 * 4),                     /* epb */
+  (1 * 4),                     /* esi */
+  (0 * 4),                     /* edi */
+  (8 * 4),                     /* eip */
+  (10 * 4),                    /* eflags */
+  (9 * 4),                     /* cs */
+  (12 * 4),                    /* ss */
+  (-1 * 4)                     /* filler */
+};
+
+/* Given a gdb regno, return the offset into Neutrino's register structure
+   or -1 if register is unknown.  */
+static int
+nto_reg_offset (int regno)
+{
+  return (regno >= 0 && regno < NUM_GPREGS) ? regmap[regno] : -1;
+}
+
+static void
+i386nto_supply_gregset (char *gpregs)
+{
+  unsigned regno;
+  int empty = 0;
+
+  for (regno = 0; regno < FP0_REGNUM; regno++)
+    {
+      int offset = nto_reg_offset (regno);
+      if (offset == -1)
+       supply_register (regno, (char *) &empty);
+      else
+       supply_register (regno, gpregs + offset);
+    }
+}
+
+static void
+i386nto_supply_fpregset (char *fpregs)
+{
+  if (nto_cpuinfo_valid && nto_cpuinfo_flags | X86_CPU_FXSR)
+    i387_supply_fxsave (fpregs);
+  else
+    i387_supply_fsave (fpregs);
+}
+
+static void
+i386nto_supply_regset (int regset, char *data)
+{
+  switch (regset)
+    {
+    case NTO_REG_GENERAL:      /* QNX has different ordering of GP regs than GDB.  */
+      i386nto_supply_gregset (data);
+      break;
+    case NTO_REG_FLOAT:
+      i386nto_supply_fpregset (data);
+      break;
+    }
+}
+
+static int
+i386nto_regset_id (int regno)
+{
+  if (regno == -1)
+    return NTO_REG_END;
+  else if (regno < FP0_REGNUM)
+    return NTO_REG_GENERAL;
+  else if (regno < FPC_REGNUM)
+    return NTO_REG_FLOAT;
+
+  return -1;                   /* Error.  */
+}
+
+static int
+i386nto_register_area (int regno, int regset, unsigned *off)
+{
+  int len;
+
+  *off = 0;
+  if (regset == NTO_REG_GENERAL)
+    {
+      if (regno == -1)
+       return NUM_GPREGS * 4;
+
+      *off = nto_reg_offset (regno);
+      if (*off == -1)
+       return 0;
+      return 4;
+    }
+  else if (regset == NTO_REG_FLOAT)
+    {
+      unsigned off_adjust, regsize, regset_size;
+
+      if (nto_cpuinfo_valid && nto_cpuinfo_flags | X86_CPU_FXSR)
+       {
+         off_adjust = 32;
+         regsize = 16;
+         regset_size = 512;
+       }
+      else
+       {
+         off_adjust = 28;
+         regsize = 10;
+         regset_size = 128;
+       }
+
+      if (regno == -1)
+       return regset_size;
+
+      *off = (regno - FP0_REGNUM) * regsize + off_adjust;
+      return 10;
+      /* Why 10 instead of regsize?  GDB only stores 10 bytes per FP
+         register so if we're sending a register back to the target,
+         we only want pdebug to write 10 bytes so as not to clobber
+         the reserved 6 bytes in the fxsave structure.  */
+    }
+  return -1;
+}
+
+static int
+i386nto_regset_fill (int regset, char *data)
+{
+  if (regset == NTO_REG_GENERAL)
+    {
+      int regno;
+
+      for (regno = 0; regno < NUM_GPREGS; regno++)
+       {
+         int offset = nto_reg_offset (regno);
+         if (offset != -1)
+           regcache_collect (regno, data + offset);
+       }
+    }
+  else if (regset == NTO_REG_FLOAT)
+    {
+      if (nto_cpuinfo_valid && nto_cpuinfo_flags | X86_CPU_FXSR)
+       i387_fill_fxsave (data, -1);
+      else
+       i387_fill_fsave (data, -1);
+    }
+  else
+    return -1;
+
+  return 0;
+}
+
+static struct link_map_offsets *
+i386nto_svr4_fetch_link_map_offsets (void)
+{
+  static struct link_map_offsets lmo;
+  static struct link_map_offsets *lmp = NULL;
+
+  if (lmp == NULL)
+    {
+      lmp = &lmo;
+
+      lmo.r_debug_size = 8;    /* The actual size is 20 bytes, but
+                                  only 8 bytes are used.  */
+      lmo.r_map_offset = 4;
+      lmo.r_map_size = 4;
+
+      lmo.link_map_size = 20;  /* The actual size is 552 bytes, but
+                                  only 20 bytes are used.  */
+      lmo.l_addr_offset = 0;
+      lmo.l_addr_size = 4;
+
+      lmo.l_name_offset = 4;
+      lmo.l_name_size = 4;
+
+      lmo.l_next_offset = 12;
+      lmo.l_next_size = 4;
+
+      lmo.l_prev_offset = 16;
+      lmo.l_prev_size = 4;
+    }
+
+  return lmp;
+}
+
+static int
+i386nto_pc_in_sigtramp (CORE_ADDR pc, char *name)
+{
+  return name && strcmp ("__signalstub", name) == 0;
+}
+
+#define SIGCONTEXT_OFFSET 136
+static CORE_ADDR
+i386nto_sigcontext_addr (struct frame_info *frame)
+{
+  if (get_next_frame (frame))
+    return get_frame_base (get_next_frame (frame)) + SIGCONTEXT_OFFSET;
+
+  return read_register (SP_REGNUM) + SIGCONTEXT_OFFSET;
+}
+
+static void
+init_i386nto_ops (void)
+{
+  current_nto_target.nto_regset_id = i386nto_regset_id;
+  current_nto_target.nto_supply_gregset = i386nto_supply_gregset;
+  current_nto_target.nto_supply_fpregset = i386nto_supply_fpregset;
+  current_nto_target.nto_supply_altregset = nto_dummy_supply_regset;
+  current_nto_target.nto_supply_regset = i386nto_supply_regset;
+  current_nto_target.nto_register_area = i386nto_register_area;
+  current_nto_target.nto_regset_fill = i386nto_regset_fill;
+  current_nto_target.nto_fetch_link_map_offsets =
+    i386nto_svr4_fetch_link_map_offsets;
+}
+
+static void
+i386nto_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+  /* NTO uses ELF.  */
+  i386_elf_init_abi (info, gdbarch);
+
+  /* Neutrino rewinds to look more normal.  */
+  set_gdbarch_decr_pc_after_break (gdbarch, 0);
+
+  /* NTO has shared libraries.  */
+  set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section);
+  set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
+
+  set_gdbarch_pc_in_sigtramp (gdbarch, i386nto_pc_in_sigtramp);
+  tdep->sigcontext_addr = i386nto_sigcontext_addr;
+  tdep->sc_pc_offset = 56;
+  tdep->sc_sp_offset = 68;
+
+  /* Setjmp()'s return PC saved in EDX (5).  */
+  tdep->jb_pc_offset = 20;     /* 5x32 bit ints in.  */
+
+  set_solib_svr4_fetch_link_map_offsets (gdbarch,
+                                        i386nto_svr4_fetch_link_map_offsets);
+
+  /* Our loader handles solib relocations slightly differently than svr4.  */
+  TARGET_SO_RELOCATE_SECTION_ADDRESSES = nto_relocate_section_addresses;
+
+  /* Supply a nice function to find our solibs.  */
+  TARGET_SO_FIND_AND_OPEN_SOLIB = nto_find_and_open_solib;
+
+  init_i386nto_ops ();
+}
+
+void
+_initialize_i386nto_tdep (void)
+{
+  gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_QNXNTO,
+                         i386nto_init_abi);
+}
diff --git a/gdb/mi/mi-symbol-cmds.c b/gdb/mi/mi-symbol-cmds.c
new file mode 100644 (file)
index 0000000..1d86d21
--- /dev/null
@@ -0,0 +1,67 @@
+/* MI Command Set - symbol commands.
+   Copyright 2003 Free Software Foundation, Inc.
+
+   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 2 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "defs.h"
+#include "mi-cmds.h"
+#include "symtab.h"
+#include "ui-out.h"
+
+/* SYMBOL-LIST-LINES:
+
+   Print the list of all pc addresses and lines of code for
+   the provided (full or base) source file name.  The entries
+   are sorted in ascending PC order. */
+
+enum mi_cmd_result
+mi_cmd_symbol_list_lines (char *command, char **argv, int argc)
+{
+  char *filename;
+  struct symtab *s;
+  int i;
+  struct cleanup *cleanup_stack, *cleanup_tuple;
+
+  if (argc != 1)
+    error ("mi_cmd_symbol_list_lines: Usage: SOURCE_FILENAME");
+
+  filename = argv[0];
+  s = lookup_symtab (filename);
+
+  if (s == NULL)
+    error ("mi_cmd_symbol_list_lines: Unknown source file name.");
+
+  /* Now, dump the associated line table.  The pc addresses are already
+     sorted by increasing values in the symbol table, so no need to
+     perform any other sorting. */
+
+  cleanup_stack = make_cleanup_ui_out_list_begin_end (uiout, "lines");
+
+  if (LINETABLE (s) != NULL && LINETABLE (s)->nitems > 0)
+    for (i = 0; i < LINETABLE (s)->nitems; i++)
+    {
+      cleanup_tuple = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
+      ui_out_field_core_addr (uiout, "pc", LINETABLE (s)->item[i].pc);
+      ui_out_field_int (uiout, "line", LINETABLE (s)->item[i].line);
+      do_cleanups (cleanup_tuple);
+    }
+
+  do_cleanups (cleanup_stack);
+
+  return MI_CMD_DONE;
+}
diff --git a/gdb/nto-tdep.c b/gdb/nto-tdep.c
new file mode 100644 (file)
index 0000000..94f156e
--- /dev/null
@@ -0,0 +1,335 @@
+/* nto-tdep.c - general QNX Neutrino target functionality.
+
+   Copyright 2003 Free Software Foundation, Inc.
+
+   Contributed by QNX Software Systems 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 2 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "gdb_stat.h"
+#include "gdb_string.h"
+#include "nto-tdep.h"
+#include "top.h"
+#include "cli/cli-decode.h"
+#include "cli/cli-cmds.h"
+#include "inferior.h"
+#include "gdbarch.h"
+#include "bfd.h"
+#include "elf-bfd.h"
+#include "solib-svr4.h"
+#include "gdbcore.h"
+
+#ifdef __CYGWIN__
+#include <sys/cygwin.h>
+#endif
+
+#ifdef __CYGWIN__
+static char default_nto_target[] = "C:\\QNXsdk\\target\\qnx6";
+#elif defined(__sun__) || defined(linux)
+static char default_nto_target[] = "/opt/QNXsdk/target/qnx6";
+#else
+static char default_nto_target[] = "";
+#endif
+
+struct nto_target_ops current_nto_target;
+
+static char *
+nto_target (void)
+{
+  char *p = getenv ("QNX_TARGET");
+
+#ifdef __CYGWIN__
+  static char buf[PATH_MAX];
+  if (p)
+    cygwin_conv_to_posix_path (p, buf);
+  else
+    cygwin_conv_to_posix_path (default_nto_target, buf);
+  return buf;
+#else
+  return p ? p : default_nto_target;
+#endif
+}
+
+/* Take a string such as i386, rs6000, etc. and map it onto CPUTYPE_X86,
+   CPUTYPE_PPC, etc. as defined in nto-share/dsmsgs.h.  */
+int
+nto_map_arch_to_cputype (const char *arch)
+{
+  if (!strcmp (arch, "i386") || !strcmp (arch, "x86"))
+    return CPUTYPE_X86;
+  if (!strcmp (arch, "rs6000") || !strcmp (arch, "ppc"))
+    return CPUTYPE_PPC;
+  if (!strcmp (arch, "mips"))
+    return CPUTYPE_MIPS;
+  if (!strcmp (arch, "arm"))
+    return CPUTYPE_ARM;
+  if (!strcmp (arch, "sh"))
+    return CPUTYPE_SH;
+  return CPUTYPE_UNKNOWN;
+}
+
+int
+nto_find_and_open_solib (char *solib, unsigned o_flags, char **temp_pathname)
+{
+  char *buf, arch_path[PATH_MAX], *nto_root, *endian;
+  const char *arch;
+  char *path_fmt = "%s/lib:%s/usr/lib:%s/usr/photon/lib\
+:%s/usr/photon/dll:%s/lib/dll";
+
+  nto_root = nto_target ();
+  if (strcmp (TARGET_ARCHITECTURE->arch_name, "i386") == 0)
+    {
+      arch = "x86";
+      endian = "";
+    }
+  else if (strcmp (TARGET_ARCHITECTURE->arch_name, "rs6000") == 0)
+    {
+      arch = "ppc";
+      endian = "be";
+    }
+  else
+    {
+      arch = TARGET_ARCHITECTURE->arch_name;
+      endian = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? "be" : "le";
+    }
+
+  sprintf (arch_path, "%s/%s%s", nto_root, arch, endian);
+
+  buf = alloca (strlen (path_fmt) + strlen (arch_path) * 5 + 1);
+  sprintf (buf, path_fmt, arch_path, arch_path, arch_path, arch_path,
+          arch_path);
+
+  return openp (buf, 1, solib, o_flags, 0, temp_pathname);
+}
+
+void
+nto_init_solib_absolute_prefix (void)
+{
+  char buf[PATH_MAX * 2], arch_path[PATH_MAX];
+  char *nto_root, *endian;
+  const char *arch;
+
+  nto_root = nto_target ();
+  if (strcmp (TARGET_ARCHITECTURE->arch_name, "i386") == 0)
+    {
+      arch = "x86";
+      endian = "";
+    }
+  else if (strcmp (TARGET_ARCHITECTURE->arch_name, "rs6000") == 0)
+    {
+      arch = "ppc";
+      endian = "be";
+    }
+  else
+    {
+      arch = TARGET_ARCHITECTURE->arch_name;
+      endian = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? "be" : "le";
+    }
+
+  sprintf (arch_path, "%s/%s%s", nto_root, arch, endian);
+
+  sprintf (buf, "set solib-absolute-prefix %s", arch_path);
+  execute_command (buf, 0);
+}
+
+char **
+nto_parse_redirection (char *pargv[], char **pin, char **pout, char **perr)
+{
+  char **argv;
+  char *in, *out, *err, *p;
+  int argc, i, n;
+
+  for (n = 0; pargv[n]; n++);
+  if (n == 0)
+    return NULL;
+  in = "";
+  out = "";
+  err = "";
+
+  argv = xcalloc (n + 1, sizeof argv[0]);
+  argc = n;
+  for (i = 0, n = 0; n < argc; n++)
+    {
+      p = pargv[n];
+      if (*p == '>')
+       {
+         p++;
+         if (*p)
+           out = p;
+         else
+           out = pargv[++n];
+       }
+      else if (*p == '<')
+       {
+         p++;
+         if (*p)
+           in = p;
+         else
+           in = pargv[++n];
+       }
+      else if (*p++ == '2' && *p++ == '>')
+       {
+         if (*p == '&' && *(p + 1) == '1')
+           err = out;
+         else if (*p)
+           err = p;
+         else
+           err = pargv[++n];
+       }
+      else
+       argv[i++] = pargv[n];
+    }
+  *pin = in;
+  *pout = out;
+  *perr = err;
+  return argv;
+}
+
+/* The struct lm_info, LM_ADDR, and nto_truncate_ptr are copied from
+   solib-svr4.c to support nto_relocate_section_addresses
+   which is different from the svr4 version.  */
+
+struct lm_info
+{
+  /* Pointer to copy of link map from inferior.  The type is char *
+     rather than void *, so that we may use byte offsets to find the
+     various fields without the need for a cast.  */
+  char *lm;
+};
+
+static CORE_ADDR
+LM_ADDR (struct so_list *so)
+{
+  struct link_map_offsets *lmo = nto_fetch_link_map_offsets ();
+
+  return (CORE_ADDR) extract_signed_integer (so->lm_info->lm +
+                                            lmo->l_addr_offset,
+                                            lmo->l_addr_size);
+}
+
+static CORE_ADDR
+nto_truncate_ptr (CORE_ADDR addr)
+{
+  if (TARGET_PTR_BIT == sizeof (CORE_ADDR) * 8)
+    /* We don't need to truncate anything, and the bit twiddling below
+       will fail due to overflow problems.  */
+    return addr;
+  else
+    return addr & (((CORE_ADDR) 1 << TARGET_PTR_BIT) - 1);
+}
+
+Elf_Internal_Phdr *
+find_load_phdr (bfd *abfd)
+{
+  Elf_Internal_Phdr *phdr;
+  unsigned int i;
+
+  if (!elf_tdata (abfd))
+    return NULL;
+
+  phdr = elf_tdata (abfd)->phdr;
+  for (i = 0; i < elf_elfheader (abfd)->e_phnum; i++, phdr++)
+    {
+      if (phdr->p_type == PT_LOAD && (phdr->p_flags & PF_X))
+       return phdr;
+    }
+  return NULL;
+}
+
+void
+nto_relocate_section_addresses (struct so_list *so, struct section_table *sec)
+{
+  /* Neutrino treats the l_addr base address field in link.h as different than
+     the base address in the System V ABI and so the offset needs to be
+     calculated and applied to relocations.  */
+  Elf_Internal_Phdr *phdr = find_load_phdr (sec->bfd);
+  unsigned vaddr = phdr ? phdr->p_vaddr : 0;
+
+  sec->addr = nto_truncate_ptr (sec->addr + LM_ADDR (so) - vaddr);
+  sec->endaddr = nto_truncate_ptr (sec->endaddr + LM_ADDR (so) - vaddr);
+}
+
+static void
+fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
+                     int which, CORE_ADDR reg_addr)
+{
+  nto_regset_t regset;
+  
+/* See corelow.c:get_core_registers for values of WHICH.  */
+  if (which == 0)
+    {
+      memcpy ((char *) &regset, core_reg_sect,
+             min (core_reg_size, sizeof (regset)));
+      nto_supply_gregset ((char *) &regset);
+    }
+  else if (which == 2)
+    {
+      memcpy ((char *) &regset, core_reg_sect,
+             min (core_reg_size, sizeof (regset)));
+      nto_supply_fpregset ((char *) &regset);
+    }
+}
+
+void
+nto_dummy_supply_regset (char *regs)
+{
+  /* Do nothing.  */
+}
+
+/* Register that we are able to handle ELF file formats using standard
+   procfs "regset" structures.  */
+static struct core_fns regset_core_fns = {
+  bfd_target_elf_flavour,      /* core_flavour */
+  default_check_format,                /* check_format */
+  default_core_sniffer,                /* core_sniffer */
+  fetch_core_registers,                /* core_read_registers */
+  NULL                         /* next */
+};
+
+void
+_initialize_nto_tdep (void)
+{
+  add_setshow_cmd ("nto-debug", class_maintenance, var_zinteger,
+                 &nto_internal_debugging, "Set QNX NTO internal debugging.\n\
+When non-zero, nto specific debug info is\n\
+displayed. Different information is displayed\n\
+for different positive values.",  "Show QNX NTO internal debugging.\n",
+                 NULL, NULL, &setdebuglist, &showdebuglist);
+
+  /* We use SIG45 for pulses, or something, so nostop, noprint
+     and pass them.  */
+  signal_stop_update (target_signal_from_name ("SIG45"), 0);
+  signal_print_update (target_signal_from_name ("SIG45"), 0);
+  signal_pass_update (target_signal_from_name ("SIG45"), 1);
+
+  /* By default we don't want to stop on these two, but we do want to pass.  */
+#if defined(SIGSELECT)
+  signal_stop_update (SIGSELECT, 0);
+  signal_print_update (SIGSELECT, 0);
+  signal_pass_update (SIGSELECT, 1);
+#endif
+
+#if defined(SIGPHOTON)
+  signal_stop_update (SIGPHOTON, 0);
+  signal_print_update (SIGPHOTON, 0);
+  signal_pass_update (SIGPHOTON, 1);
+#endif
+
+  /* Register core file support.  */
+  add_core_fns (&regset_core_fns);
+}
diff --git a/gdb/nto-tdep.h b/gdb/nto-tdep.h
new file mode 100644 (file)
index 0000000..e22e8fd
--- /dev/null
@@ -0,0 +1,156 @@
+/* nto-tdep.h - QNX Neutrino target header.
+
+   Copyright 2003 Free Software Foundation, Inc.
+
+   Contributed by QNX Software Systems 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 2 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _NTO_TDEP_H
+#define _NTO_TDEP_H
+
+#include "defs.h"
+#include "solist.h"
+
+/* Generic functions in nto-tdep.c.  */
+
+extern void nto_init_solib_absolute_prefix (void);
+
+char **nto_parse_redirection (char *start_argv[], char **in,
+                             char **out, char **err);
+
+int proc_iterate_over_mappings (int (*func) (int, CORE_ADDR));
+
+void nto_relocate_section_addresses (struct so_list *, struct section_table *);
+
+int nto_map_arch_to_cputype (const char *);
+
+int nto_find_and_open_solib (char *, unsigned, char **);
+
+/* Dummy function for initializing nto_target_ops on targets which do
+   not define a particular regset.  */
+void nto_dummy_supply_regset (char *regs);
+
+/* Target operations defined for Neutrino targets (<target>-nto-tdep.c).  */
+
+struct nto_target_ops
+{
+  int nto_internal_debugging;
+  unsigned nto_cpuinfo_flags;
+  int nto_cpuinfo_valid;
+
+  int (*nto_regset_id) (int);
+  void (*nto_supply_gregset) (char *);
+  void (*nto_supply_fpregset) (char *);
+  void (*nto_supply_altregset) (char *);
+  void (*nto_supply_regset) (int, char *);
+  int (*nto_register_area) (int, int, unsigned *);
+  int (*nto_regset_fill) (int, char *);
+  struct link_map_offsets *(*nto_fetch_link_map_offsets) (void);
+};
+
+extern struct nto_target_ops current_nto_target;
+
+/* For 'maintenance debug nto-debug' command.  */
+#define nto_internal_debugging \
+       (current_nto_target.nto_internal_debugging)
+
+/* The CPUINFO flags from the remote.  Currently used by
+   i386 for fxsave but future proofing other hosts.
+   This is initialized in procfs_attach or nto_start_remote
+   depending on our host/target.  It would only be invalid
+   if we were talking to an older pdebug which didn't support
+   the cpuinfo message.  */
+#define nto_cpuinfo_flags \
+       (current_nto_target.nto_cpuinfo_flags)
+
+/* True if successfully retrieved cpuinfo from remote.  */
+#define nto_cpuinfo_valid \
+       (current_nto_target.nto_cpuinfo_valid)
+
+/* Given a register, return an id that represents the Neutrino
+   regset it came from.  If reg == -1 update all regsets.  */
+#define nto_regset_id(reg) \
+       (*current_nto_target.nto_regset_id) (reg)
+
+#define nto_supply_gregset(regs) \
+       (*current_nto_target.nto_supply_gregset) (regs)
+
+#define nto_supply_fpregset(regs) \
+       (*current_nto_target.nto_supply_fpregset) (regs)
+
+#define nto_supply_altregset(regs) \
+       (*current_nto_target.nto_supply_altregset) (regs)
+
+/* Given a regset, tell gdb about registers stored in data.  */
+#define nto_supply_regset(regset, data) \
+       (*current_nto_target.nto_supply_regset) (regset, data)
+
+/* Given a register and regset, calculate the offset into the regset
+   and stuff it into the last argument.  If regno is -1, calculate the
+   size of the entire regset.  Returns length of data, -1 if unknown
+   regset, 0 if unknown register.  */
+#define nto_register_area(reg, regset, off) \
+       (*current_nto_target.nto_register_area) (reg, regset, off)
+
+/* Build the Neutrino register set info into the data buffer.  
+   Return -1 if unknown regset, 0 otherwise.  */
+#define nto_regset_fill(regset, data) \
+       (*current_nto_target.nto_regset_fill) (regset, data)
+
+/* Gives the fetch_link_map_offsets function exposure outside of
+   solib-svr4.c so that we can override relocate_section_addresses().  */
+#define nto_fetch_link_map_offsets() \
+       (*current_nto_target.nto_fetch_link_map_offsets) ()
+
+/* Keep this consistant with neutrino syspage.h.  */
+enum
+{
+  CPUTYPE_X86,
+  CPUTYPE_PPC,
+  CPUTYPE_MIPS,
+  CPUTYPE_SPARE,
+  CPUTYPE_ARM,
+  CPUTYPE_SH,
+  CPUTYPE_UNKNOWN
+};
+
+enum
+{
+  OSTYPE_QNX4,
+  OSTYPE_NTO
+};
+
+/* These correspond to the DSMSG_* versions in dsmsgs.h. */
+enum
+{
+  NTO_REG_GENERAL,
+  NTO_REG_FLOAT,
+  NTO_REG_SYSTEM,
+  NTO_REG_ALT,
+  NTO_REG_END
+};
+
+typedef char qnx_reg64[8];
+
+typedef struct _debug_regs
+{
+  qnx_reg64 padding[1024];
+} nto_regset_t;
+
+#endif
diff --git a/gdb/testsuite/gdb.asm/s390x.inc b/gdb/testsuite/gdb.asm/s390x.inc
new file mode 100644 (file)
index 0000000..4e5bf2e
--- /dev/null
@@ -0,0 +1,68 @@
+### entry point code
+        .macro gdbasm_startup
+
+        # Align the stack pointer to an 8-byte boundary.
+        lghi %r0,-16
+        ngr %r15,%r0
+
+        # Reserve space for the standard stack frame:
+        # back chain, and space for the callee to save its registers.
+        aghi %r15,-168
+        
+        # Zero this frame's back chain pointer.
+        xc 0(8,%r15),0(%r15)
+        .endm
+
+
+### Call a function.
+        .macro gdbasm_call subr
+        brasl %r14, \subr
+        .endm
+
+
+### Exit with a zero status.
+        .macro gdbasm_exit0
+        lghi %r2, 0
+        svc 1
+        .endm
+
+### Standard subroutine prologue.
+        .macro gdbasm_enter
+
+        # Save all the callee-saves registers.  What the heck.
+        stmg %r6,%r15,48(%r15)
+
+        # Allocate the stack frame, and write the back chain pointer.
+        # Keep the original SP in %r11.
+        lgr %r11,%r15
+        aghi %r15,-168
+        stg %r11,0(%r15)
+        .endm
+
+
+### Standard subroutine epilogue.
+        .macro gdbasm_leave
+
+        # Restore all our registers.  This also pops the frame, and
+       # restores our return address.
+        lmg %r6,%r15,216(%r15)
+
+        # Jump to the return address.
+        br %r14
+
+        .endm
+
+### Several nops.
+        .macro gdbasm_several_nops
+        lr %r0, %r0
+        lr %r0, %r0
+        lr %r0, %r0
+        lr %r0, %r0
+        .endm
+
+### Declare an `int' variable.
+        .macro gdbasm_datavar name value
+        .data
+\name:
+        .long \value
+        .endm
diff --git a/gdb/testsuite/gdb.mi/mi1-symbol.exp b/gdb/testsuite/gdb.mi/mi1-symbol.exp
new file mode 100644 (file)
index 0000000..f0da197
--- /dev/null
@@ -0,0 +1,61 @@
+# Copyright 2003 Free Software Foundation, Inc.
+
+# 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@prep.ai.mit.edu
+
+#
+# The goal is not to test gdb functionality, which is done by other tests,
+# but to verify the correct output response to MI operations.
+#
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi1"
+
+gdb_exit
+if [mi_gdb_start] {
+    continue
+}
+
+set testfile "basics"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
+     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+mi_run_to_main
+
+proc test_list_lines {} {
+    global mi_gdb_prompt
+    global hex
+    global decimal
+    global srcfile
+
+    # Test list-lines.
+    # Tests:
+    # -symbol-list-lines ${srcfile} 
+
+    mi_gdb_test "-symbol-list-lines ${srcfile}" \
+           "\\^done,lines=\[\{pc=\"$hex\",line=\"$decimal\"\}.*\]" \
+             "symbol-list-lines for source file ${srcfile}"
+
+}
+
+test_list_lines
+
+mi_gdb_exit
+return 0
diff --git a/opcodes/po/ro.po b/opcodes/po/ro.po
new file mode 100644 (file)
index 0000000..72077ed
--- /dev/null
@@ -0,0 +1,446 @@
+# Mesajele în limba român? pentru pachetul opcodes
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Eugen Hoanca <eugenh@urban-grafx.ro>, 2003
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: opcodes 2.12.91\n"
+"POT-Creation-Date: 2002-07-23 15:55-0400\n"
+"PO-Revision-Date: 2003-04-28 08:32+0300\n"
+"Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: alpha-opc.c:335
+msgid "branch operand unaligned"
+msgstr "ramurã operand nealiniatã"
+
+#: alpha-opc.c:358 alpha-opc.c:380
+msgid "jump hint unaligned"
+msgstr "sugestie sãriturã(jump) nealiniatã"
+
+#: arc-dis.c:52
+msgid "Illegal limm reference in last instruction!\n"
+msgstr "referinþã limm ilegalã în ultima instrucþiune!\n"
+
+#: arm-dis.c:507
+msgid "<illegal precision>"
+msgstr "<precizie ilegalã>"
+
+#: arm-dis.c:1010
+#, c-format
+msgid "Unrecognised register name set: %s\n"
+msgstr "Setare nume registru necunoscutã: %s\n"
+
+#: arm-dis.c:1017
+#, c-format
+msgid "Unrecognised disassembler option: %s\n"
+msgstr "Opþiune dezasamblor necunoscutã: %s\n"
+
+#: arm-dis.c:1191
+msgid ""
+"\n"
+"The following ARM specific disassembler options are supported for use with\n"
+"the -M switch:\n"
+msgstr ""
+"\n"
+"Opþiunile ARM de dezasamblor specifice urmãtoare sunt permise cu folosirea\n"
+"switch-ului -M:\n"
+
+#: avr-dis.c:118 avr-dis.c:128
+msgid "undefined"
+msgstr "nedefinit(ã)"
+
+#: avr-dis.c:180
+msgid "Internal disassembler error"
+msgstr "Eroare internã de dezasamblor"
+
+#: avr-dis.c:228
+#, c-format
+msgid "unknown constraint `%c'"
+msgstr "constrângere necunoscutã `%c'"
+
+#: cgen-asm.c:346 fr30-ibld.c:195 frv-ibld.c:195 m32r-ibld.c:195
+#: openrisc-ibld.c:195 xstormy16-ibld.c:195
+#, c-format
+msgid "operand out of range (%ld not between %ld and %ld)"
+msgstr "operand în afara intervalului (%ld nu este între %ld ºi %ld)"
+
+#: cgen-asm.c:367
+#, c-format
+msgid "operand out of range (%lu not between %lu and %lu)"
+msgstr "operand în afara intervalului (%lu nu este între %lu ºi %lu)"
+
+#: d30v-dis.c:312
+#, c-format
+msgid "<unknown register %d>"
+msgstr "<registru necunoscut %d>"
+
+#. Can't happen.
+#: dis-buf.c:57
+#, c-format
+msgid "Unknown error %d\n"
+msgstr "Eroare necunoscutã %d\n"
+
+#: dis-buf.c:62
+#, c-format
+msgid "Address 0x%x is out of bounds.\n"
+msgstr "Adresa 0x%x este în afara limitelor (out of bounds).\n"
+
+#: fr30-asm.c:323 frv-asm.c:595 m32r-asm.c:325 openrisc-asm.c:244
+#: xstormy16-asm.c:231
+#, c-format
+msgid "Unrecognized field %d while parsing.\n"
+msgstr "Câmp necunoscut %d în analizã(parsing).\n"
+
+#: fr30-asm.c:373 frv-asm.c:645 m32r-asm.c:375 openrisc-asm.c:294
+#: xstormy16-asm.c:281
+msgid "missing mnemonic in syntax string"
+msgstr "mnemonicã lipsã în sintaxã"
+
+#. We couldn't parse it.
+#: fr30-asm.c:509 fr30-asm.c:513 fr30-asm.c:600 fr30-asm.c:702 frv-asm.c:781
+#: frv-asm.c:785 frv-asm.c:872 frv-asm.c:974 m32r-asm.c:511 m32r-asm.c:515
+#: m32r-asm.c:602 m32r-asm.c:704 openrisc-asm.c:430 openrisc-asm.c:434
+#: openrisc-asm.c:521 openrisc-asm.c:623 xstormy16-asm.c:417
+#: xstormy16-asm.c:421 xstormy16-asm.c:508 xstormy16-asm.c:610
+msgid "unrecognized instruction"
+msgstr "instrucþiune necunoscutã"
+
+#: fr30-asm.c:556 frv-asm.c:828 m32r-asm.c:558 openrisc-asm.c:477
+#: xstormy16-asm.c:464
+#, c-format
+msgid "syntax error (expected char `%c', found `%c')"
+msgstr "eroare de sintaxã ( se aºtepta %c', s-a primit `%c')"
+
+#: fr30-asm.c:566 frv-asm.c:838 m32r-asm.c:568 openrisc-asm.c:487
+#: xstormy16-asm.c:474
+#, c-format
+msgid "syntax error (expected char `%c', found end of instruction)"
+msgstr "eroare de sintaxã (s-a aºteptat char `%c' s-a primit sfârºit de instrucþiune)"
+
+#: fr30-asm.c:594 frv-asm.c:866 m32r-asm.c:596 openrisc-asm.c:515
+#: xstormy16-asm.c:502
+msgid "junk at end of line"
+msgstr "resturi(junk) la sfârºit de linie"
+
+#: fr30-asm.c:701 frv-asm.c:973 m32r-asm.c:703 openrisc-asm.c:622
+#: xstormy16-asm.c:609
+msgid "unrecognized form of instruction"
+msgstr "formã de instrucþiune necunoscutã"
+
+#: fr30-asm.c:713 frv-asm.c:985 m32r-asm.c:715 openrisc-asm.c:634
+#: xstormy16-asm.c:621
+#, c-format
+msgid "bad instruction `%.50s...'"
+msgstr "instrucþiune greºitã `%.50s...'"
+
+#: fr30-asm.c:716 frv-asm.c:988 m32r-asm.c:718 openrisc-asm.c:637
+#: xstormy16-asm.c:624
+#, c-format
+msgid "bad instruction `%.50s'"
+msgstr "instrucþiune greºitã `%.50s'"
+
+#. Default text to print if an instruction isn't recognized.
+#: fr30-dis.c:39 frv-dis.c:39 m32r-dis.c:39 mmix-dis.c:282 openrisc-dis.c:39
+#: xstormy16-dis.c:39
+msgid "*unknown*"
+msgstr "*necunoscut(ã)*"
+
+#: fr30-dis.c:318 frv-dis.c:360 m32r-dis.c:249 openrisc-dis.c:136
+#: xstormy16-dis.c:169
+#, c-format
+msgid "Unrecognized field %d while printing insn.\n"
+msgstr "Câmp necunoscut %d la tipãrirea insn.\n"
+
+#: fr30-ibld.c:166 frv-ibld.c:166 m32r-ibld.c:166 openrisc-ibld.c:166
+#: xstormy16-ibld.c:166
+#, c-format
+msgid "operand out of range (%ld not between %ld and %lu)"
+msgstr "operand în afara limitelor (%ld nu este între %ld ºi %lu)"
+
+#: fr30-ibld.c:179 frv-ibld.c:179 m32r-ibld.c:179 openrisc-ibld.c:179
+#: xstormy16-ibld.c:179
+#, c-format
+msgid "operand out of range (%lu not between 0 and %lu)"
+msgstr "operand în afara limitelor (%lu nu este între 0 ºi %lu)"
+
+#: fr30-ibld.c:730 frv-ibld.c:820 m32r-ibld.c:659 openrisc-ibld.c:633
+#: xstormy16-ibld.c:678
+#, c-format
+msgid "Unrecognized field %d while building insn.\n"
+msgstr "Câmp necunoscut %d în construire(building) insn.\n"
+
+#: fr30-ibld.c:937 frv-ibld.c:1103 m32r-ibld.c:792 openrisc-ibld.c:735
+#: xstormy16-ibld.c:826
+#, c-format
+msgid "Unrecognized field %d while decoding insn.\n"
+msgstr "Câmp necunoscut %d în decodare insn.\n"
+
+#: fr30-ibld.c:1086 frv-ibld.c:1348 m32r-ibld.c:902 openrisc-ibld.c:815
+#: xstormy16-ibld.c:939
+#, c-format
+msgid "Unrecognized field %d while getting int operand.\n"
+msgstr "Câmp necunoscut %d în preluare operand int.\n"
+
+#: fr30-ibld.c:1215 frv-ibld.c:1573 m32r-ibld.c:992 openrisc-ibld.c:875
+#: xstormy16-ibld.c:1032
+#, c-format
+msgid "Unrecognized field %d while getting vma operand.\n"
+msgstr "Câmp necunoscut %d în preluare operand vma.\n"
+
+#: fr30-ibld.c:1349 frv-ibld.c:1807 m32r-ibld.c:1090 openrisc-ibld.c:944
+#: xstormy16-ibld.c:1134
+#, c-format
+msgid "Unrecognized field %d while setting int operand.\n"
+msgstr "Câmp necunoscut %d în setare operand int.\n"
+
+#: fr30-ibld.c:1471 frv-ibld.c:2029 m32r-ibld.c:1176 openrisc-ibld.c:1001
+#: xstormy16-ibld.c:1224
+#, c-format
+msgid "Unrecognized field %d while setting vma operand.\n"
+msgstr "Câmp necunoscut %d în setare operand vma.\n"
+
+#: h8300-dis.c:385
+#, c-format
+msgid "Hmmmm %x"
+msgstr "Hmmmm %x"
+
+#: h8300-dis.c:396
+#, c-format
+msgid "Don't understand %x \n"
+msgstr "Nu înþeleg %x \n"
+
+#: h8500-dis.c:143
+#, c-format
+msgid "can't cope with insert %d\n"
+msgstr "nu fac faþã la inserarea %d\n"
+
+#. Couldn't understand anything.
+#: h8500-dis.c:350
+#, c-format
+msgid "%02x\t\t*unknown*"
+msgstr "%02x\t\t*necunoscut(ã)*"
+
+#: i386-dis.c:1649
+msgid "<internal disassembler error>"
+msgstr "<eroare internã de dezasamblor>"
+
+#: m10200-dis.c:199
+#, c-format
+msgid "unknown\t0x%02x"
+msgstr "necunoscut(ã)\t0x%02x"
+
+#: m10200-dis.c:339
+#, c-format
+msgid "unknown\t0x%04lx"
+msgstr "necunoscut(ã)\t0x%04lx"
+
+#: m10300-dis.c:685
+#, c-format
+msgid "unknown\t0x%04x"
+msgstr "necunoscut(ã)\t0x%04x"
+
+#: m68k-dis.c:429
+#, c-format
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<eroare internã în tabel opcode: %s %s>\n"
+
+#: m68k-dis.c:1007
+#, c-format
+msgid "<function code %d>"
+msgstr "<cod funcþie %d>"
+
+#: m88k-dis.c:255
+#, c-format
+msgid "# <dis error: %08x>"
+msgstr "# <eroare dez: %08x>"
+
+#: mips-dis.c:337
+#, c-format
+msgid "# internal error, undefined modifier(%c)"
+msgstr "# eroare internã, modificator nedefinit(%c)"
+
+#: mips-dis.c:1209
+#, c-format
+msgid "# internal disassembler error, unrecognised modifier (%c)"
+msgstr "# eroare internã de dezasamblor, modificator necunoscut (%c)"
+
+#: mmix-dis.c:34
+#, c-format
+msgid "Bad case %d (%s) in %s:%d\n"
+msgstr "Caz greºit %d (%s) in %s: %d\n"
+
+#: mmix-dis.c:44
+#, c-format
+msgid "Internal: Non-debugged code (test-case missing): %s:%d"
+msgstr "Intern: cod ne-depanat (caz test lipsã) %s:%d"
+
+#: mmix-dis.c:53
+msgid "(unknown)"
+msgstr "(necunoscut)"
+
+#: mmix-dis.c:517
+#, c-format
+msgid "*unknown operands type: %d*"
+msgstr "*tip necunoscut de operanzi: %d*"
+
+#. I and Z are output operands and can`t be immediate
+#. * A is an address and we can`t have the address of
+#. * an immediate either. We don't know how much to increase
+#. * aoffsetp by since whatever generated this is broken
+#. * anyway!
+#.
+#: ns32k-dis.c:628
+msgid "$<undefined>"
+msgstr "$<nedefinit>"
+
+#: ppc-opc.c:777 ppc-opc.c:810
+msgid "invalid conditional option"
+msgstr "opþiune condiþionalã invalidã"
+
+#: ppc-opc.c:812
+msgid "attempt to set y bit when using + or - modifier"
+msgstr "se încearcã setarea bitului y în folosirea modificatorilor + sau -"
+
+#: ppc-opc.c:844 ppc-opc.c:896
+msgid "offset not a multiple of 4"
+msgstr "offsetul nu este multiplu de 4"
+
+#: ppc-opc.c:869
+msgid "offset not between -2048 and 2047"
+msgstr "offsetul nu este între -2048 ºi 2047"
+
+#: ppc-opc.c:894
+msgid "offset not between -8192 and 8191"
+msgstr "offsetul nu este între -8192 ºi 8191"
+
+#: ppc-opc.c:922
+msgid "ignoring least significant bits in branch offset"
+msgstr "se ignorã cei mai puþin semnificanþi biþi în offsetul ramurii(branch)"
+
+#: ppc-opc.c:956 ppc-opc.c:993
+msgid "illegal bitmask"
+msgstr "bitmask ilegal"
+
+#: ppc-opc.c:1066
+msgid "value out of range"
+msgstr "valoare în afara intervalului"
+
+#: ppc-opc.c:1142
+msgid "index register in load range"
+msgstr "registru index în interval de încãrcare"
+
+#: ppc-opc.c:1158
+msgid "invalid register operand when updating"
+msgstr "registru de operand invalid în updatare"
+
+#. Mark as non-valid instruction
+#: sparc-dis.c:750
+msgid "unknown"
+msgstr "necunoscut(ã)"
+
+#: sparc-dis.c:825
+#, c-format
+msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
+msgstr "Eroare internã:  opcode.h sparc greºit: \"%s\", %#.8lx, %#.8lx\n"
+
+#: sparc-dis.c:836
+#, c-format
+msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
+msgstr "Eroare internã: opcode.h sparc greºit: \"%s\", %#.8lx, %#.8lx\n"
+
+#: sparc-dis.c:885
+#, c-format
+msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
+msgstr "Eroare internã:  opcode.h sparc greºit: \"%s\" == \"%s\"\n"
+
+#: v850-dis.c:224
+#, c-format
+msgid "unknown operand shift: %x\n"
+msgstr "schimbare(shift) de oberand necunoscutã: %x\n"
+
+#: v850-dis.c:236
+#, c-format
+msgid "unknown pop reg: %d\n"
+msgstr "pop reg necunoscut: %d\n"
+
+#. The functions used to insert and extract complicated operands.
+#. Note: There is a conspiracy between these functions and
+#. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
+#. containing the string 'out of range' will be ignored unless a
+#. specific command line option is given to GAS.
+#: v850-opc.c:68
+msgid "displacement value is not in range and is not aligned"
+msgstr "valoarea deplasãrii în afara intervalului ºi nealiniatã"
+
+#: v850-opc.c:69
+msgid "displacement value is out of range"
+msgstr "valoare deplasare în afara intervalului"
+
+#: v850-opc.c:70
+msgid "displacement value is not aligned"
+msgstr "valoarea deplasãrii nu este aliniatã"
+
+#: v850-opc.c:72
+msgid "immediate value is out of range"
+msgstr "valoare directã(immediate) în afara intervalului"
+
+#: v850-opc.c:83
+msgid "branch value not in range and to odd offset"
+msgstr "valoare ramurã(branch) în afara intervalului ºi la offset impar"
+
+#: v850-opc.c:85 v850-opc.c:117
+msgid "branch value out of range"
+msgstr "valoare ramurã(branch) în afara intervalului"
+
+#: v850-opc.c:88 v850-opc.c:120
+msgid "branch to odd offset"
+msgstr "ramurã(branch) la offset impar"
+
+#: v850-opc.c:115
+msgid "branch value not in range and to an odd offset"
+msgstr "valoare ramurã(branch) în afara intervalului ºi la offset impar"
+
+#: v850-opc.c:346
+msgid "invalid register for stack adjustment"
+msgstr "registru invalid pentru modificare stivã"
+
+#: v850-opc.c:370
+msgid "immediate value not in range and not even"
+msgstr "valoare directã(immediate) în afara intervalului ºi imparã"
+
+#: v850-opc.c:375
+msgid "immediate value must be even"
+msgstr "valoarea directã(immediate) trebuie sã fie parã"
+
+#: xstormy16-asm.c:74
+msgid "Bad register in preincrement"
+msgstr "Registru greºit în preincrementare"
+
+#: xstormy16-asm.c:79
+msgid "Bad register in postincrement"
+msgstr "Registru greºit în postincrementare"
+
+#: xstormy16-asm.c:81
+msgid "Bad register name"
+msgstr "Nume registru greºit"
+
+#: xstormy16-asm.c:85
+msgid "Label conflicts with register name"
+msgstr "Eticheta(label) se aflã în conflict cu numele de registru"
+
+#: xstormy16-asm.c:89
+msgid "Label conflicts with `Rx'"
+msgstr "Eticheta(label) se aflã în conflict cu `Rx'"
+
+#: xstormy16-asm.c:91
+msgid "Bad immediate expression"
+msgstr "Expresie directã(immediate) greºitã"
+
+#: xstormy16-asm.c:120
+msgid "Small operand was not an immediate number"
+msgstr "Operandul redus nu a fost un numãr direct(immediate)"