17086418 upgrade gdb to 7.6 s11-update
authorStefan Teleman <stefan.teleman@oracle.com>
Fri, 08 Nov 2013 08:16:59 -0800
branchs11-update
changeset 2814 dff3ca0071d6
parent 2813 db0bfa0fa498
child 2815 d5aa6839ee2e
17086418 upgrade gdb to 7.6
components/gdb/Makefile
components/gdb/README
components/gdb/Solaris/gdbtui
components/gdb/gdb.p5m
components/gdb/patches/gdb.auxv.c.patch
components/gdb/patches/gdb.bfd.elf-bfd.h.patch
components/gdb/patches/gdb.bfd.elf.c.patch
components/gdb/patches/gdb.bfd.elf32-i386.c.patch
components/gdb/patches/gdb.bfd.elf32-sparc.c.patch
components/gdb/patches/gdb.bfd.elf64-sparc.c.patch
components/gdb/patches/gdb.bfd.elfxx-target.h.patch
components/gdb/patches/gdb.data-directory.Makefile.in.patch
components/gdb/patches/gdb.features.Makefile.patch
components/gdb/patches/gdb.features.i386.32bit-solaris.c.patch
components/gdb/patches/gdb.features.i386.64bit-solaris.c.patch
components/gdb/patches/gdb.features.i386.amd64-avx-solaris.c.patch
components/gdb/patches/gdb.features.i386.amd64-avx-solaris.xml.patch
components/gdb/patches/gdb.features.i386.amd64-solaris.xml.patch
components/gdb/patches/gdb.features.i386.i386-avx-solaris.c.patch
components/gdb/patches/gdb.features.i386.i386-avx-solaris.xml.patch
components/gdb/patches/gdb.features.i386.i386-mmx-solaris.c.patch
components/gdb/patches/gdb.features.i386.i386-mmx-solaris.xml.patch
components/gdb/patches/gdb.features.i386.i386-solaris.xml.patch
components/gdb/patches/gdb.features.sparc-cp0.c.patch
components/gdb/patches/gdb.features.sparc-cp0.xml.patch
components/gdb/patches/gdb.features.sparc-cpu.c.patch
components/gdb/patches/gdb.features.sparc-cpu.xml.patch
components/gdb/patches/gdb.features.sparc-fpu.c.patch
components/gdb/patches/gdb.features.sparc-fpu.xml.patch
components/gdb/patches/gdb.features.sparc-solaris.c.patch
components/gdb/patches/gdb.features.sparc-solaris.xml.patch
components/gdb/patches/gdb.features.sparc64-cp0.c.patch
components/gdb/patches/gdb.features.sparc64-cp0.xml.patch
components/gdb/patches/gdb.features.sparc64-cpu.c.patch
components/gdb/patches/gdb.features.sparc64-cpu.xml.patch
components/gdb/patches/gdb.features.sparc64-fpu.c.patch
components/gdb/patches/gdb.features.sparc64-fpu.xml.patch
components/gdb/patches/gdb.features.sparc64-solaris.c.patch
components/gdb/patches/gdb.features.sparc64-solaris.xml.patch
components/gdb/patches/gdb.fork-child.c.patch
components/gdb/patches/gdb.gdb.Makefile.in.patch
components/gdb/patches/gdb.gdb.i386sol2.mh.patch
components/gdb/patches/gdb.gdb.regcache.c.patch
components/gdb/patches/gdb.gdb.regcache.h.patch
components/gdb/patches/gdb.gdb.sol-thread.c.patch
components/gdb/patches/gdb.gdb.sol2-core-regset.c.patch
components/gdb/patches/gdb.gdb.sol2.mh.patch
components/gdb/patches/gdb.gdb.sparc-sol2-nat.c.patch
components/gdb/patches/gdb.i386-32bit-solaris.xml.patch
components/gdb/patches/gdb.i386-64bit-solaris.xml.patch
components/gdb/patches/gdb.include.elf.common.h.patch
components/gdb/patches/gdb.procfs.c.patch
components/gdb/patches/gdb.solib-svr4.patch
components/gdb/patches/gdb.syscalls.amd64-solaris.xml.patch
components/gdb/patches/gdb.syscalls.i386-solaris.xml.patch
components/gdb/patches/gdb.syscalls.sparc-solaris.xml.patch
components/gdb/patches/gdb.syscalls.sparc64-solaris.xml.patch
components/gdb/patches/gdb.target.c.patch
components/gdb/resolve.deps
--- a/components/gdb/Makefile	Wed Nov 06 14:12:13 2013 -0800
+++ b/components/gdb/Makefile	Fri Nov 08 08:16:59 2013 -0800
@@ -20,39 +20,43 @@
 #
 
 #
-# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		gdb
-COMPONENT_VERSION=	6.8
+COMPONENT_VERSION=	7.6
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:a3c5455f30ffb3e6eeafb9e54598b48f9fbf46e3e99f431120360c183ddcc889
+    sha256:8070389a5dcc104eb0be483d582729f98ed4d761ad19cedd3f17b5d2502faa36
 COMPONENT_ARCHIVE_URL=	http://ftp.gnu.org/gnu/gdb/$(COMPONENT_ARCHIVE)
+COMPONENT_PROJECT_URL =	http://www.gnu.org/software/gdb/
 COMPONENT_BUGDB=	utility/gdb
 
 include ../../make-rules/prep.mk
 include ../../make-rules/configure.mk
 include ../../make-rules/ips.mk
 
-# optimization level lowered to -xO3 to address failures in the
-# gdb test suite at -xO4.
+# Build GDB with GCC 4.7.3.
+# In S11.2 COMPILER=gcc defaults to GCC 3.4.3 and we don't want that one.
+GCCHOME=/usr/gcc/4.7
+CC=$(GCCHOME)/bin/gcc
+CXX=$(GCCHOME)/bin/g++
 
-studio_OPT.sparc.32 =	-xO3
-studio_OPT.sparc.64 =	-xO3
-studio_OPT.i386.32 =	-xO3
-studio_OPT.i386.64 =	-xO3
+# GDB wants the GNU utilities
+PATH=/usr/gnu/bin:$(GCCHOME)/bin:/usr/bin:/usr/perl5/bin
 
-IPS_COMPONENT_VERSION =	6.8
-COMPONENT_PROJECT_URL =	http://www.gnu.org/software/gdb/
+CFLAGS_sparc =	-g -O2 -mcpu=ultrasparc -mtune=ultrasparc
+CFLAGS_sparc +=	-mno-unaligned-doubles
+CFLAGS_sparc += -mapp-regs -mhard-float
+CFLAGS_i386 =	-g -O2 -march=opteron -mtune=opteron
+CFLAGS_EXTRA = -Wall -Wno-long-long -Wcast-align -fno-omit-frame-pointer
 
-CURSES_DIR_32 = /usr/gnu/lib
-CURSES_DIR_64 = /usr/gnu/lib/$(MACH64)
-CURSES_DIR = $(CURSES_DIR_$(BITS))
-LDFLAGS += -L$(CURSES_DIR) -R$(CURSES_DIR)
+CFLAGS = $(CC_BITS) $(CFLAGS_EXTRA) $(CFLAGS_$(MACH))
+CXXFLAGS = $(CC_BITS) $(CFLAGS_EXTRA) $(CFLAGS_$(MACH))
+CPPFLAGS = -D_REENTRANT -I/usr/include/ncurses
 
 # `echo $(CFLAGS)` and `echo $(LDFLAGS)` used to
 # work around problem with extra blank characters
@@ -60,14 +64,68 @@
 # nested configure invocations within the gdb build.
 
 CONFIGURE_ENV += CFLAGS="`echo $(CFLAGS)`"
+CONFIGURE_ENV += CPPFLAGS="`echo $(CPPFLAGS)`"
 CONFIGURE_ENV += LDFLAGS="`echo $(LDFLAGS)`"
 
-CONFIGURE_OPTIONS += --with-system-readline
 CONFIGURE_OPTIONS += --with-x=no
 CONFIGURE_OPTIONS += --with-curses
+CONFIGURE_OPTIONS += --disable-werror
+CONFIGURE_OPTIONS += --enable-plugins
+CONFIGURE_OPTIONS += --enable-tui
+CONFIGURE_OPTIONS += --without-auto-load-safe-path
+CONFIGURE_OPTIONS += --with-python=yes
 CONFIGURE_OPTIONS += --with-libexpat-prefix=/usr/lib
 CONFIGURE_OPTIONS += --infodir=$(CONFIGURE_INFODIR)
 
+# Generate the newly added Solaris instruction and
+# register tables which weren't there by default.
+COMPONENT_PRE_CONFIGURE_ACTION = \
+  ( cd  $(SOURCE_DIR)/gdb/features ; \
+    $(GMAKE) all )
+
+COMPONENT_POST_INSTALL_ACTION = \
+  ( cd  $(PROTOUSRDIR)/share/gdb/python/gdb ; \
+      $(PYTHON) -m compileall . ; \
+    cd  $(PROTOUSRDIR)/share/gdb/python/gdb/command ; \
+      $(PYTHON) -m compileall . ; \
+    cd  $(PROTOUSRDIR)/share/gdb/python/gdb/function ; \
+      $(PYTHON) -m compileall . ; \
+    cd  $(PROTOUSRBINDIR64)/ ; \
+      /usr/bin/strip -x gdb ; \
+    cd  $(COMPONENT_DIR) ; \
+      $(INSTALL) -m 0755 $(COMPONENT_DIR)/Solaris/gdbtui \
+	$(PROTOUSRBINDIR)/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdb.info  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdb.info-1  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdb.info-2  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdb.info-3  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdb.info-4  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdb.info-5  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdb.info-6  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdb.info-7  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdbint.info  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdbint.info-1  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/gdbint.info-2  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/annotate.info  \
+	$(PROTOUSRSHAREDIR)/info/ ; \
+      $(INSTALL) -m 0644 $(SOURCE_DIR)/gdb/doc/stabs.info  \
+	$(PROTOUSRSHAREDIR)/info/ )
+
+# Disable ASLR: it's a debugger and we do not want to risk
+# altering the results of the debugging experiment.
+ASLR_MODE=$(ASLR_DISABLE)
+
 # common targets
 build:		$(BUILD_64)
 
--- a/components/gdb/README	Wed Nov 06 14:12:13 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
-#
-
-NAME:             gdb
-VERSION:          6.8
-DESCRIPTION:      GDB: The GNU Project Debugger
-LICENSE:          GPLv3
-BUGTRAQ:          solaris/utility/gnu_compiler
-COMMENTS:         
-
-This file contains information about the emacs package within the Userland
-consolidation. Along with the comments in the Makefile, it documents any
-deviations from standard Userland or emacs practice, as well as miscellaneous
-information needed to understand how this component is put together.
-
-
-We made the following changes to the gdb sources:
-
-gdb/auxv.c (gdb.auxv.c.patch);
-    This patch accounts for differences between the aux vector on
-    solaris versus Linux and big endian (Sparc) versus little
-    endian (AMD/Intel):
-
-    - Solaris pads out the auxv for 32 bit process to 64 bits when
-      being read by a 64 bit process.  Use the native pointer size in
-      gdb itself to determine the auxv field size.
-
-    - On 64 bit Solaris SPARC, i.e. big endian, the type will be in the
-      left 4 bytes for 32 bit processes and the right 4 bytes for 64
-      bit processes.  The padding is 0.
-
-gdb/fork-child.c (gdb.fork-child.c.patch):
-    Solaris could require 2 or 3 exec's to start the debugged process
-    depending on whether the user's SHELL is isaexec'ed or not.  Modify
-    startup_inferior to loop until it finds the correct process rather
-    than assuming a fixed count.
-
-gdb/solib-svr4.c (gdb.solib-svr4.patch):
-    Enhance gdb's dectection of the runtime linker to include amd64 and
-    sparcv9 when debugging 64 bit processes.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/Solaris/gdbtui	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+exec /usr/bin/gdb -tui "[email protected]"
+
--- a/components/gdb/gdb.p5m	Wed Nov 06 14:12:13 2013 -0800
+++ b/components/gdb/gdb.p5m	Fri Nov 08 08:16:59 2013 -0800
@@ -23,8 +23,9 @@
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
 set name=pkg.fmri value=pkg:/developer/debug/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
-set name=pkg.summary value="GDB: The GNU Project Debugger"
-set name=com.oracle.info.description value="GNU GDB"
+set name=pkg.summary value="GDB 7.6"
+set name=pkg.description value='GDB, the GNU Debugger, is a source-level debugger for Ada, C, C++, Objective-C, Pascal and many other languages.  GDB allows you to see what is going on inside another program while it executes, or what another program was doing at the moment it crashed.'
+set name=com.oracle.info.description value='GDB, the GNU Debugger'
 set name=info.classification value="org.opensolaris.category.2008:Development/System"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
@@ -32,57 +33,42 @@
 set name=org.opensolaris.arc-caseid \
     value=LSARC/2009/492
 
-dir path=usr
-dir path=usr/bin
-dir path=usr/share
-dir path=usr/share/info
-dir path=usr/share/locale
-dir path=usr/share/locale/da
-dir path=usr/share/locale/da/LC_MESSAGES
-dir path=usr/share/locale/de
-dir path=usr/share/locale/de/LC_MESSAGES
-dir path=usr/share/locale/es
-dir path=usr/share/locale/es/LC_MESSAGES
-dir path=usr/share/locale/fi
-dir path=usr/share/locale/fi/LC_MESSAGES
-dir path=usr/share/locale/fr
-dir path=usr/share/locale/fr/LC_MESSAGES
-dir path=usr/share/locale/ga
-dir path=usr/share/locale/ga/LC_MESSAGES
-dir path=usr/share/locale/id
-dir path=usr/share/locale/id/LC_MESSAGES
-dir path=usr/share/locale/ja
-dir path=usr/share/locale/ja/LC_MESSAGES
-dir path=usr/share/locale/nl
-dir path=usr/share/locale/nl/LC_MESSAGES
-dir path=usr/share/locale/pt_BR
-dir path=usr/share/locale/pt_BR/LC_MESSAGES
-dir path=usr/share/locale/ro
-dir path=usr/share/locale/ro/LC_MESSAGES
-dir path=usr/share/locale/rw
-dir path=usr/share/locale/rw/LC_MESSAGES
-dir path=usr/share/locale/sv
-dir path=usr/share/locale/sv/LC_MESSAGES
-dir path=usr/share/locale/tr
-dir path=usr/share/locale/tr/LC_MESSAGES
-dir path=usr/share/locale/vi
-dir path=usr/share/locale/vi/LC_MESSAGES
-dir path=usr/share/locale/zh_CN
-dir path=usr/share/locale/zh_CN/LC_MESSAGES
-dir path=usr/share/man
-dir path=usr/share/man/man1
 file usr/bin/$(MACH64)/gdb path=/usr/bin/gdb
-file usr/bin/$(MACH64)/gdbtui path=/usr/bin/gdbtui
+file path=usr/bin/gdbtui mode=0555
+file path=usr/include/gdb/jit-reader.h
+
+file path=usr/share/gdb/python/gdb/__init__.py
+file path=usr/share/gdb/python/gdb/printing.py
+file path=usr/share/gdb/python/gdb/prompt.py
+file path=usr/share/gdb/python/gdb/types.py
+file path=usr/share/gdb/python/gdb/command/__init__.py
+file path=usr/share/gdb/python/gdb/command/explore.py
+file path=usr/share/gdb/python/gdb/command/pretty_printers.py
+file path=usr/share/gdb/python/gdb/command/prompt.py
+file path=usr/share/gdb/python/gdb/command/type_printers.py
+file path=usr/share/gdb/python/gdb/function/__init__.py
+file path=usr/share/gdb/python/gdb/function/strfns.py
+
+file path=usr/share/gdb/syscalls/gdb-syscalls.dtd
+file path=usr/share/gdb/syscalls/i386-solaris.xml variant.arch=i386
+file path=usr/share/gdb/syscalls/amd64-solaris.xml variant.arch=i386
+file path=usr/share/gdb/syscalls/sparc-solaris.xml variant.arch=sparc
+file path=usr/share/gdb/syscalls/sparc64-solaris.xml variant.arch=sparc
+
 file path=usr/share/info/annotate.info
 file path=usr/share/info/gdb.info
 file path=usr/share/info/gdb.info-1
 file path=usr/share/info/gdb.info-2
 file path=usr/share/info/gdb.info-3
 file path=usr/share/info/gdb.info-4
+file path=usr/share/info/gdb.info-5
+file path=usr/share/info/gdb.info-6
+file path=usr/share/info/gdb.info-7
 file path=usr/share/info/gdbint.info
 file path=usr/share/info/gdbint.info-1
 file path=usr/share/info/gdbint.info-2
 file path=usr/share/info/stabs.info
+
 file path=usr/share/locale/da/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/da/LC_MESSAGES/opcodes.mo
 file path=usr/share/locale/de/LC_MESSAGES/opcodes.mo
@@ -93,22 +79,29 @@
 file path=usr/share/locale/fr/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/fr/LC_MESSAGES/opcodes.mo
 file path=usr/share/locale/ga/LC_MESSAGES/opcodes.mo
+file path=usr/share/locale/id/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/id/LC_MESSAGES/opcodes.mo
+file path=usr/share/locale/it/LC_MESSAGES/opcodes.mo
 file path=usr/share/locale/ja/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/nl/LC_MESSAGES/opcodes.mo
 file path=usr/share/locale/pt_BR/LC_MESSAGES/opcodes.mo
 file path=usr/share/locale/ro/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/ro/LC_MESSAGES/opcodes.mo
+file path=usr/share/locale/ru/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/rw/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/sv/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/sv/LC_MESSAGES/opcodes.mo
 file path=usr/share/locale/tr/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/tr/LC_MESSAGES/opcodes.mo
+file path=usr/share/locale/uk/LC_MESSAGES/bfd.mo
+file path=usr/share/locale/uk/LC_MESSAGES/opcodes.mo
 file path=usr/share/locale/vi/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/vi/LC_MESSAGES/opcodes.mo
 file path=usr/share/locale/zh_CN/LC_MESSAGES/bfd.mo
 file path=usr/share/locale/zh_CN/LC_MESSAGES/opcodes.mo
+
 file path=usr/share/man/man1/gdb.1
-file path=usr/share/man/man1/gdbtui.1
+link path=usr/share/man/man1/gdbtui.1 target=gdb.1
 
 license gdb.license license="GPLv3, FDLv1.1, FDLv1.2"
+
--- a/components/gdb/patches/gdb.auxv.c.patch	Wed Nov 06 14:12:13 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
---- gdb-6.8.orig/gdb/auxv.c	Wed Jan 16 08:27:37 2008
-+++ gdb-6.8-64/gdb/auxv.c	Tue Aug 31 14:41:16 2010
[email protected]@ -82,7 +82,15 @@
- target_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
- 		   gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
- {
--  const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr);
-+ 
-+  /*
-+   * Solaris pads out the auxv for 32 bit process to 64 bits when
-+   * being read by a 64 bit process.  Use the native pointer size
-+   * in gdb itself to determine the auxv field size.	
-+   *
-+   * const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr);
-+   */
-+  const int sizeof_auxv_field = sizeof (void *);
-   gdb_byte *ptr = *readptr;
- 
-   if (endptr == ptr)
[email protected]@ -91,7 +99,20 @@
-   if (endptr - ptr < sizeof_auxv_field * 2)
-     return -1;
- 
--  *typep = extract_unsigned_integer (ptr, sizeof_auxv_field);
-+  if (sizeof_auxv_field == 8 && gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) {
-+    /*
-+     * On 64 bit Solaris SPARC, i.e. big endian, the type will be in
-+     * the left 4 bytes for 32 bit processes and the right 4 bytes
-+     * for 64 bit processes.  The padding is 0.
-+     */
-+    *typep = extract_unsigned_integer (ptr, 4);
-+    if (*typep == 0) *typep = extract_unsigned_integer (ptr + 4, 4);
-+  } else {
-+    /*
-+     * Nothing special needs to be done on 32 bit or little endian systems.
-+     */
-+    *typep = extract_unsigned_integer (ptr, sizeof_auxv_field);
-+  }
-   ptr += sizeof_auxv_field;
-   *valp = extract_unsigned_integer (ptr, sizeof_auxv_field);
-   ptr += sizeof_auxv_field;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.bfd.elf-bfd.h.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,14 @@
+--- gdb-7.6/bfd/elf-bfd.h	2013-03-08 09:13:30.000000000 -0800
++++ gdb-7.6/bfd/elf-bfd.h	2013-09-26 22:25:56.705487200 -0700
[email protected]@ -1117,6 +1117,11 @@
+   bfd_boolean (*elf_backend_grok_psinfo)
+     (bfd *, Elf_Internal_Note *);
+ 
++  /* This function, if defined, is called when an NT_LWPSTATUS
++     note is found in a core file.  */
++  bfd_boolean (*elf_backend_grok_lwpstatus)
++    (bfd *, Elf_Internal_Note *);
++
+   /* This function, if defined, is called to write a note to a corefile.  */
+   char *(*elf_backend_write_core_note)
+     (bfd *abfd, char *buf, int *bufsiz, int note_type, ...);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.bfd.elf.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,362 @@
+--- gdb-7.6/bfd/elf.c	2013-03-08 09:13:31.000000000 -0800
++++ gdb-7.6/bfd/elf.c	2013-10-09 17:18:34.783717730 -0700
[email protected]@ -8088,7 +8088,10 @@
+ static bfd_boolean
+ elfcore_grok_prfpreg (bfd *abfd, Elf_Internal_Note *note)
+ {
++  asection *sect = bfd_get_section_by_name (abfd, ".reg2");
++  if (sect == NULL)
+   return elfcore_make_note_pseudosection (abfd, ".reg2", note);
++  return TRUE;
+ }
+ 
+ /* Linux dumps the Intel SSE regs in a note named "LINUX" with a note
[email protected]@ -8341,7 +8344,6 @@
+ }
+ #endif /* defined (HAVE_PSTATUS_T) */
+ 
+-#if defined (HAVE_LWPSTATUS_T)
+ static bfd_boolean
+ elfcore_grok_lwpstatus (bfd *abfd, Elf_Internal_Note *note)
+ {
[email protected]@ -8423,7 +8425,6 @@
+ 
+   return elfcore_maybe_make_sect (abfd, ".reg2", sect);
+ }
+-#endif /* defined (HAVE_LWPSTATUS_T) */
+ 
+ static bfd_boolean
+ elfcore_grok_win32pstatus (bfd *abfd, Elf_Internal_Note *note)
[email protected]@ -8534,14 +8535,17 @@
+       return TRUE;
+ #endif
+ 
+-#if defined (HAVE_PSTATUS_T)
+     case NT_PSTATUS:
+       return elfcore_grok_pstatus (abfd, note);
+-#endif
+ 
+-#if defined (HAVE_LWPSTATUS_T)
+     case NT_LWPSTATUS:
++      if (bed->elf_backend_grok_lwpstatus)
++	if ((*bed->elf_backend_grok_lwpstatus) (abfd, note))
++	  return TRUE;
++#if defined (HAVE_LWPSTATUS_T)
+       return elfcore_grok_lwpstatus (abfd, note);
++#else
++      return TRUE;
+ #endif
+ 
+     case NT_FPREGSET:		/* FIXME: rename to NT_PRFPREG */
[email protected]@ -8881,6 +8885,297 @@
+   return TRUE;
+ }
+ 
++#include <sys/types.h>
++#include <sys/elf.h>
++#include <sys/procfs.h>
++#include <sys/regset.h>
++#include <sys/auxv.h>
++
++static bfd_boolean
++elfcore_grok_solaris_note (bfd *abfd, Elf_Internal_Note *note)
++{
++  asection *sect;
++  size_t gregset_size;
++  size_t fpregset_size;
++  size_t prgregset_size;
++  size_t prgregset_offset;
++  char reg2_section_name[16];
++
++#ifdef DEBUG
++  static const char* note_type[] = { "NONE (0)", "NT_PRSTATUS", "NT_PRFPREG",
++    "NT_PRPSINFO", "NT_PRXREG", "NT_PLATFORM", "NT_AUXV", "NT_GWINDOWS",
++    "NT_ASRS", "NT_LDT", "NT_PSTATUS", "INVALID (11)", "INVALID (12)",
++    "NT_PSINFO", "NT_PRCRED", "NT_UTSNAME", "NT_LWPSTATUS", "NT_LWPSINFO",
++    "NT_PRPRIV", "NT_PRPRIVINFO", "NT_CONTENT", "NT_ZONENAME",
++    "NT_PRCPUXREG", NULL };
++#endif
++
++  if (note == NULL)
++    return TRUE;
++
++  sect = bfd_get_section_by_name (abfd, reg2_section_name);
++
++  switch ((int) note->type)
++  {
++    case SOLARIS_NT_PRSTATUS:
++      if (note->descsz == 508) /* sizeof(prstatus_t) SPARC 32-bit */
++      {
++        gregset_size = 152;
++        fpregset_size = 144;
++        prgregset_size = 152; /* sizeof(prgregset_t) SPARC 32-bit */
++        prgregset_offset = 356; /* offsetof(prstatus_t, pr_reg */
++
++        elf_tdata (abfd)->core->signal =
++          bfd_get_16 (abfd, note->descdata + 136);
++        elf_tdata (abfd)->core->pid =
++          bfd_get_32 (abfd, note->descdata + 216);
++        elf_tdata (abfd)->core->lwpid =
++          bfd_get_32 (abfd, note->descdata + 308);
++        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
++            *(int*)(note->descdata + 308));
++      }
++      else if (note->descsz == 904) /* sizeof(prstatus_t) SPARC 64-bit */
++      {
++        gregset_size = 168;
++        fpregset_size = 288;
++        prgregset_size = 304; /* sizeof(prgregset_t) SPARC 64-bit */
++        prgregset_offset = 600; /* offsetof(prstatus_t, pr_reg */
++
++        elf_tdata (abfd)->core->signal =
++          bfd_get_16 (abfd, note->descdata + 264);
++        elf_tdata (abfd)->core->pid =
++          bfd_get_32 (abfd, note->descdata + 360);
++        elf_tdata (abfd)->core->lwpid =
++          bfd_get_32 (abfd, note->descdata + 520);
++        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
++            *(int*)(note->descdata + 520));
++      }
++      else if (note->descsz == 432) /* sizeof(prstatus_t) Intel 32-bit */
++      {
++        gregset_size = 76;
++        fpregset_size = 380;
++        prgregset_size = 76;
++        prgregset_offset = 356; /* offsetof(prstatus_t, pr_reg */
++
++        elf_tdata (abfd)->core->signal =
++          bfd_get_16 (abfd, note->descdata + 136);
++        elf_tdata (abfd)->core->pid =
++          bfd_get_32 (abfd, note->descdata + 216);
++        elf_tdata (abfd)->core->lwpid =
++          bfd_get_32 (abfd, note->descdata + 308);
++        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
++            *(int*)(note->descdata + 308));
++      }
++      else if (note->descsz == 824) /* sizeof(prstatus_t) Intel 64-bit */
++      {
++        gregset_size = 224;
++        fpregset_size = 528;
++        prgregset_size = 224;
++        prgregset_offset = 600; /* offsetof(prstatus_t, pr_reg */
++
++        elf_tdata (abfd)->core->signal =
++          bfd_get_16 (abfd, note->descdata + 264);
++        elf_tdata (abfd)->core->pid =
++          bfd_get_32 (abfd, note->descdata + 360);
++        elf_tdata (abfd)->core->lwpid =
++          bfd_get_32 (abfd, note->descdata + 520);
++        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
++            *(int*)(note->descdata + 520));
++      }
++
++      sect = bfd_get_section_by_name (abfd, ".reg");
++
++      if (sect != NULL)
++        sect->size = prgregset_size;
++
++      return _bfd_elfcore_make_pseudosection (abfd, ".reg",
++          prgregset_size, note->descpos + prgregset_offset);
++      break;
++    case SOLARIS_NT_PRFPREG:
++      break;
++    case SOLARIS_NT_PRPSINFO:
++      if (note->descsz == 260) /* sizeof(prpsinfo_t) */
++      {
++        elf_tdata (abfd)->core->program
++          = _bfd_elfcore_strndup (abfd, note->descdata + 84, 16);
++        elf_tdata (abfd)->core->command
++          = _bfd_elfcore_strndup (abfd, note->descdata + 100, 80);
++      }
++      break;
++    case SOLARIS_NT_PRXREG:
++    case SOLARIS_NT_PLATFORM:
++    case SOLARIS_NT_GWINDOWS:
++    case SOLARIS_NT_ASRS:
++    case SOLARIS_NT_LDT:
++    case SOLARIS_NT_PSTATUS:
++      break;
++    case SOLARIS_NT_PSINFO:
++      if (note->descsz == 336) /* sizeof(psinfo_t) SPARC */
++      {
++        elf_tdata (abfd)->core->program
++          = _bfd_elfcore_strndup (abfd, note->descdata + 88, 16);
++        elf_tdata (abfd)->core->command
++          = _bfd_elfcore_strndup (abfd, note->descdata + 104, 80);
++      }
++      else if (note->descsz == 360) /* sizeof(psinfo_t) Intel */
++      {
++        elf_tdata (abfd)->core->program
++          = _bfd_elfcore_strndup (abfd, note->descdata + 88, 16);
++        elf_tdata (abfd)->core->command
++          = _bfd_elfcore_strndup (abfd, note->descdata + 104, 80);
++      }
++      break;
++    case SOLARIS_NT_PRCRED:
++    case SOLARIS_NT_UTSNAME:
++      break;
++    case SOLARIS_NT_LWPSTATUS:
++        elf_tdata (abfd)->core->lwpid =
++          bfd_get_32 (abfd, note->descdata + 4);
++        elf_tdata (abfd)->core->signal =
++          bfd_get_16 (abfd, note->descdata + 12);
++        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
++            *(int*)(note->descdata + 4));
++
++        if (note->descsz == 896) /* sizeof(lwpstatus_t) SPARC 32-bit */
++        {
++          gregset_size = 152;
++          fpregset_size = 400;
++          prgregset_size = 152; /* sizeof(prgregset_t) SPARC 32-bit */
++
++          sect = bfd_get_section_by_name (abfd, ".reg");
++          if (sect != NULL)
++            sect->size = sizeof(prgregset_t);
++          else
++          {
++            if ((_bfd_elfcore_make_pseudosection (abfd, ".reg",
++                    prgregset_size,
++                    note->descpos + 356)) != TRUE)
++              return FALSE;
++          }
++          sect = bfd_get_section_by_name (abfd, reg2_section_name);
++
++          if (sect != NULL)
++          {
++            sect->size = fpregset_size;
++            sect->filepos = note->descpos + 496;
++            sect->alignment_power = 2;
++            return TRUE;
++          }
++          else
++            return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
++                fpregset_size, note->descpos + 496);
++        }
++        else if (note->descsz == 1392) /* sizeof(lwpstatus_t) SPARC 64-bit */
++        {
++          gregset_size = 304;
++          fpregset_size = 544;
++          prgregset_size = 304; /* sizeof(prgregset_t) SPARC 64-bit */
++
++          sect = bfd_get_section_by_name (abfd, ".reg");
++          if (sect != NULL)
++            sect->size = sizeof(prgregset_t);
++          else
++          {
++            if ((_bfd_elfcore_make_pseudosection (abfd, ".reg",
++                    prgregset_size,
++                    note->descpos + 544)) != TRUE)
++              return FALSE;
++          }
++          sect = bfd_get_section_by_name (abfd, reg2_section_name);
++
++          if (sect != NULL)
++          {
++            sect->size = fpregset_size;
++            sect->filepos = note->descpos + 848;
++            sect->alignment_power = 2;
++            return TRUE;
++          }
++          else
++            return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
++                fpregset_size, note->descpos + 848);
++        }
++        else if (note->descsz == 800) /* sizeof(lwpstatus_t) Intel 32 */
++        {
++          gregset_size = 76;
++          fpregset_size = 380;
++          prgregset_size = 76;
++
++          sect = bfd_get_section_by_name (abfd, ".reg");
++          if (sect != NULL)
++            sect->size = prgregset_size;
++          else
++          {
++            if ((_bfd_elfcore_make_pseudosection (abfd, ".reg",
++                    prgregset_size,
++                    note->descpos + 356)) != TRUE)
++              return FALSE;
++          }
++          sect = bfd_get_section_by_name (abfd, reg2_section_name);
++
++          if (sect != NULL)
++          {
++            sect->size = fpregset_size;
++            sect->filepos = note->descpos + 420;
++            sect->alignment_power = 2;
++            return TRUE;
++          }
++          else
++            return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
++                fpregset_size, note->descpos + 420);
++        }
++        else if (note->descsz == 1296) /* sizeof(lwpstatus_t) Intel 64 */
++        {
++          gregset_size = 224;
++          fpregset_size = 528;
++          prgregset_size = 224;
++
++          sect = bfd_get_section_by_name (abfd, ".reg");
++          if (sect != NULL)
++            sect->size = prgregset_size;
++          else
++          {
++            if ((_bfd_elfcore_make_pseudosection (abfd, ".reg",
++                    prgregset_size,
++                    note->descpos + 544)) != TRUE)
++              return FALSE;
++          }
++          sect = bfd_get_section_by_name (abfd, reg2_section_name);
++
++          if (sect != NULL)
++          {
++            sect->size = fpregset_size;
++            sect->filepos = note->descpos + 768;
++            sect->alignment_power = 2;
++            return TRUE;
++          }
++          else
++            return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
++                fpregset_size, note->descpos + 768);
++        }
++      break;
++    case SOLARIS_NT_LWPSINFO:
++        if (note->descsz == 128) /* sizeof(lwpsinfo_t) Intel and SPARC */
++        {
++          elf_tdata (abfd)->core->lwpid =
++            bfd_get_32 (abfd, note->descdata + 4);
++        }
++        break;
++    case SOLARIS_NT_PRPRIV:
++    case SOLARIS_NT_PRPRIVINFO:
++    case SOLARIS_NT_CONTENT:
++    case SOLARIS_NT_ZONENAME:
++    case SOLARIS_NT_PRCPUXREG:
++    case SOLARIS_NT_AUXV:
++      break;
++    default:
++      break;
++  }
++
++  /* add support for .auxv sections */
++  sect = bfd_get_section_by_name (abfd, ".auxv");
++  return TRUE;
++}
++
+ static bfd_boolean
+ elfcore_grok_openbsd_note (bfd *abfd, Elf_Internal_Note *note)
+ {
[email protected]@ -9657,6 +9952,13 @@
+ 	      if (! elfcore_grok_spu_note (abfd, &in))
+ 		return FALSE;
+ 	    }
++	  else if (CONST_STRNEQ (in.namedata, "CORE"))
++	    {
++	      if (! elfcore_grok_solaris_note (abfd, &in))
++		return FALSE;
++	      if (! elfcore_grok_note (abfd, &in))
++		return FALSE;
++	    }
+ 	  else
+ 	    {
+ 	      if (! elfcore_grok_note (abfd, &in))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.bfd.elf32-i386.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,172 @@
+--- gdb-7.6/bfd/elf32-i386.c	2013-02-20 19:02:29.000000000 -0800
++++ gdb-7.6/bfd/elf32-i386.c	2013-10-08 09:04:26.769608447 -0700
[email protected]@ -434,6 +434,45 @@
+       offset = 28;
+       size = bfd_get_32 (abfd, note->descdata + 8);
+     }
++  else if (note->namesz == 5 && strncmp (note->namedata, "CORE", 4) == 0)
++  {
++    if (note->descsz == 432) /* sizeof(prstatus_t) Solaris Intel 32 */
++    {
++      /* pr_cursig */
++      elf_tdata (abfd)->core->signal =
++        bfd_get_16 (abfd, note->descdata + 136);
++
++      /* pr_pid */
++      elf_tdata (abfd)->core->pid =
++        bfd_get_32 (abfd, note->descdata + 216);
++
++      /* pr_lwpid */
++      elf_tdata (abfd)->core->lwpid =
++        bfd_get_32 (abfd, note->descdata + 308);
++
++      /* pr_reg */
++      offset = 356;
++      size = 76;
++    }
++    else if (note->descsz == 824) /* sizeof(prstatus_t) Solaris Intel 64 */
++    {
++      /* pr_cursig */
++      elf_tdata (abfd)->core->signal =
++        bfd_get_16 (abfd, note->descdata + 264);
++
++      /* pr_pid */
++      elf_tdata (abfd)->core->pid =
++        bfd_get_32 (abfd, note->descdata + 360);
++
++      /* pr_lwpid */
++      elf_tdata (abfd)->core->lwpid =
++        bfd_get_32 (abfd, note->descdata + 520);
++
++      /* pr_reg */
++      offset = 600;
++      size = 224;
++    }
++  }
+   else
+     {
+       switch (note->descsz)
[email protected]@ -476,6 +515,31 @@
+       elf_tdata (abfd)->core->command
+ 	= _bfd_elfcore_strndup (abfd, note->descdata + 25, 81);
+     }
++  else if (note->namesz == 5 && strncmp (note->namedata, "CORE", 4) == 0)
++  {
++    switch (note->descsz)
++    {
++      default:
++        return FALSE;
++        break;
++      case 260: /* sizeof(prpsinfo_t) on 32-bit Solaris */
++        elf_tdata (abfd)->core->pid =
++          bfd_get_32 (abfd, note->descdata + 16);
++        elf_tdata (abfd)->core->program =
++          _bfd_elfcore_strndup (abfd, note->descdata + 84, 16);
++        elf_tdata (abfd)->core->command =
++          _bfd_elfcore_strndup (abfd, note->descdata + 100, 80);
++        break;
++      case 328: /* sizeof(prpsinfo_t) on 64-bit Solaris */
++        elf_tdata (abfd)->core->pid =
++          bfd_get_32 (abfd, note->descdata + 16);
++        elf_tdata (abfd)->core->program =
++          _bfd_elfcore_strndup (abfd, note->descdata + 120, 16);
++        elf_tdata (abfd)->core->command =
++          _bfd_elfcore_strndup (abfd, note->descdata + 136, 80);
++        break;
++    }
++  }
+   else
+     {
+       switch (note->descsz)
[email protected]@ -507,6 +571,83 @@
+   return TRUE;
+ }
+ 
++static bfd_boolean
++elf_i386_grok_lwpstatus (bfd *abfd, Elf_Internal_Note *note)
++{
++  asection *sect;
++  char reg2_section_name[16];
++  size_t gregset_size;
++  size_t fpregset_size;
++
++  /* Solaris */
++  if (note->namesz == 5 && strncmp (note->namedata, "CORE", 4) == 0)
++  {
++    switch (note->descsz)
++    {
++      default:
++        return FALSE;
++        break;
++      case 800: /* sizeof(lwpstatus_t) on Intel 32-bit */
++        gregset_size = 76;
++        fpregset_size = 380;
++
++        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2", 1);
++        sect = bfd_get_section_by_name (abfd, reg2_section_name);
++        if (sect != NULL)
++        {
++          sect->size = fpregset_size;
++          sect->filepos = note->descpos + 420;
++          sect->alignment_power = 2;
++        }
++        else
++          return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
++              fpregset_size, note->descpos + 420);
++
++        sect = bfd_get_section_by_name (abfd, ".reg");
++        if (sect != NULL)
++        {
++          sect->size = gregset_size;
++          sect->filepos = note->descpos + 344;
++          sect->alignment_power = 2;
++        }
++        else
++          return _bfd_elfcore_make_pseudosection (abfd, ".reg",
++              gregset_size, note->descpos + 344);
++        break;
++      case 1296: /* sizeof(lwpstatus_t) on Intel 64-bit */
++        gregset_size = 224;
++        fpregset_size = 528;
++
++        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2", 1);
++        sect = bfd_get_section_by_name (abfd, reg2_section_name);
++        if (sect != NULL)
++        {
++          sect->size = fpregset_size;
++          sect->filepos = note->descpos + 420;
++          sect->alignment_power = 2;
++        }
++        else
++          return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
++              fpregset_size, note->descpos + 420);
++
++        sect = bfd_get_section_by_name (abfd, ".reg");
++        if (sect != NULL)
++        {
++          sect->size = gregset_size;
++          sect->filepos = note->descpos + 344;
++          sect->alignment_power = 2;
++        }
++        else
++          return _bfd_elfcore_make_pseudosection (abfd, ".reg",
++              gregset_size, note->descpos + 344);
++        break;
++    }
++  }
++  return TRUE;
++}
++
++
++
+ /* Functions for the i386 ELF linker.
+ 
+    In order to gain some understanding of code in this file without
[email protected]@ -5053,6 +5194,7 @@
+ #define elf_backend_gc_mark_hook	      elf_i386_gc_mark_hook
+ #define elf_backend_gc_sweep_hook	      elf_i386_gc_sweep_hook
+ #define elf_backend_grok_prstatus	      elf_i386_grok_prstatus
++#define elf_backend_grok_lwpstatus	      elf_i386_grok_lwpstatus
+ #define elf_backend_grok_psinfo		      elf_i386_grok_psinfo
+ #define elf_backend_reloc_type_class	      elf_i386_reloc_type_class
+ #define elf_backend_relocate_section	      elf_i386_relocate_section
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.bfd.elf32-sparc.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,158 @@
+--- gdb-7.6/bfd/elf32-sparc.c	2013-02-20 19:02:29.000000000 -0800
++++ gdb-7.6/bfd/elf32-sparc.c	2013-10-06 14:13:09.059973200 -0700
[email protected]@ -30,34 +30,135 @@
+ #include "elfxx-sparc.h"
+ #include "elf-vxworks.h"
+ 
+-/* Support for core dump NOTE sections.  */
++#include <stddef.h>
++#include <sys/elf.h>
++#include <sys/procfs.h>
++#include <sys/regset.h>
++#include <sys/auxv.h>
+ 
++/* Support for Solaris core dump NOTE sections.  */
+ static bfd_boolean
+-elf32_sparc_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
+-{
+-  switch (note->descsz)
++solaris_elf32_sparc_grok_info (bfd *abfd, Elf_Internal_Note *note)
+     {
+-    default:
+-      return FALSE;
++  asection *sect;
++  /* 32-bit regset sizes */
++  size_t gregset_size = 152;
++  size_t fpregset_size = 144;
++  char reg2_section_name[16];
++  auxv_t* p_auxv = NULL;
++
++  switch (note->type)
++  {
++    case SOLARIS_NT_PRSTATUS:
++      if (note->descsz == 508) /* sizeof(prstatus_t) */
++      {
++        elf_tdata (abfd)->core->signal =
++          bfd_get_16 (abfd, note->descdata + 136);
++        elf_tdata (abfd)->core->pid =
++          bfd_get_32 (abfd, note->descdata + 216);
++        elf_tdata (abfd)->core->lwpid =
++          bfd_get_32 (abfd, note->descdata + 308);
+ 
+-    case 260:			/* Solaris prpsinfo_t.  */
++        sect = bfd_get_section_by_name (abfd, ".reg");
++
++        if (sect != NULL)
++          sect->size = sizeof(prgregset_t);
++
++         return _bfd_elfcore_make_pseudosection (abfd, ".reg", gregset_size,
++             note->descpos + 356);
++      }
++      return TRUE;
++      break;
++    case SOLARIS_NT_PRFPREG:
++      return TRUE;
++      break;
++    case SOLARIS_NT_PRPSINFO:
++      if (note->descsz == 260) /* sizeof(prpsinfo_t) */
++      {
+       elf_tdata (abfd)->core->program
+ 	= _bfd_elfcore_strndup (abfd, note->descdata + 84, 16);
+       elf_tdata (abfd)->core->command
+ 	= _bfd_elfcore_strndup (abfd, note->descdata + 100, 80);
++      }
++      return TRUE;
+       break;
+-
+-    case 336:			/* Solaris psinfo_t.  */
++    case SOLARIS_NT_PRXREG:
++      return TRUE;
++      break;
++    case SOLARIS_NT_PLATFORM:
++      return TRUE;
++      break;
++    case SOLARIS_NT_AUXV:
++      return TRUE;
++    case SOLARIS_NT_PSTATUS:
++      return TRUE;
++      break;
++    case SOLARIS_NT_PSINFO:
++      if (note->descsz == 336) /* sizeof(psinfo_t) */
++      {
+       elf_tdata (abfd)->core->program
+ 	= _bfd_elfcore_strndup (abfd, note->descdata + 88, 16);
+       elf_tdata (abfd)->core->command
+ 	= _bfd_elfcore_strndup (abfd, note->descdata + 104, 80);
++      }
++      return TRUE;
++      break;
++    case SOLARIS_NT_PRCRED:
++      return TRUE;
++      break;
++    case SOLARIS_NT_UTSNAME:
++      return TRUE;
++      break;
++    case SOLARIS_NT_LWPSTATUS:
++      if (note->descsz == 896) /* sizeof(lwpstatus_t) */
++      {
++        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2", 1);
++        sect = bfd_get_section_by_name (abfd, reg2_section_name);
++        if (sect != NULL)
++        {
++          sect->size = fpregset_size;
++          sect->filepos = note->descpos + 496;
++          sect->alignment_power = 2;
++          return TRUE;
++        }
++        else
++          return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
++              fpregset_size, note->descpos + 496);
++      }
++      return TRUE;
++      break;
++    case SOLARIS_NT_LWPSINFO:
++      return TRUE;
++      break;
++    case SOLARIS_NT_PRCPUXREG:
++      return TRUE;
++      break;
++    default:
++      return TRUE;
+       break;
+     }
+-
+   return TRUE;
+ }
+ 
++static bfd_boolean
++elf32_sparc_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
++{
++  return solaris_elf32_sparc_grok_info (abfd, note);
++}
++
++
++static bfd_boolean
++elf32_sparc_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
++{
++  return solaris_elf32_sparc_grok_info (abfd, note);
++}
++
++static bfd_boolean
++elf32_sparc_grok_lwpstatus (bfd *abfd, Elf_Internal_Note *note)
++{
++  return solaris_elf32_sparc_grok_info (abfd, note);
++}
++
+ /* Functions for dealing with the e_flags field.
+ 
+    We don't define set_private_flags or copy_private_bfd_data because
[email protected]@ -201,6 +302,9 @@
+ #define elf_backend_final_write_processing \
+ 					elf32_sparc_final_write_processing
+ #define elf_backend_grok_psinfo		elf32_sparc_grok_psinfo
++#define elf_backend_grok_prstatus       elf32_sparc_grok_prstatus
++#define elf_backend_grok_lwpstatus      elf32_sparc_grok_lwpstatus
++#define elf_backend_grok_lwpinfo        elf32_sparc_grok_lwpinfo
+ #define elf_backend_reloc_type_class	elf32_sparc_reloc_type_class
+ 
+ #define elf_info_to_howto		_bfd_sparc_elf_info_to_howto
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.bfd.elf64-sparc.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,75 @@
+--- gdb-7.6/bfd/elf64-sparc.c	2012-07-13 07:22:48.000000000 -0700
++++ gdb-7.6/bfd/elf64-sparc.c	2013-10-05 19:26:46.871871800 -0700
[email protected]@ -22,11 +22,19 @@
+ 
+ #include "sysdep.h"
+ #include "bfd.h"
++#include "bfdlink.h"
+ #include "libbfd.h"
+ #include "elf-bfd.h"
+ #include "elf/sparc.h"
+ #include "opcode/sparc.h"
+ #include "elfxx-sparc.h"
++#include "elf-vxworks.h"
++
++#include <stddef.h>
++#include <sys/elf.h>
++#include <sys/procfs.h>
++#include <sys/regset.h>
++#include <sys/auxv.h>
+ 
+ /* In case we're on a 32-bit machine, construct a 64-bit "-1" value.  */
+ #define MINUS_ONE (~ (bfd_vma) 0)
[email protected]@ -764,6 +772,40 @@
+     return symbol->name;
+ }
+ 
++/* Support for core dump NOTE sections.  */
++static bfd_boolean
++elf64_sparc_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
++{
++  /* silence warning about 'unused argument' */
++  if (abfd == NULL)
++    return FALSE;
++
++  switch (note->descsz)
++  {
++    default:
++      return FALSE;
++  }
++
++  return FALSE;
++}
++
++static bfd_boolean
++elf64_sparc_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
++{
++  /* silence warning about 'unused argument' */
++  if (abfd == NULL)
++    return FALSE;
++
++  switch (note->descsz)
++  {
++    default:
++      return FALSE;
++  }
++
++  return FALSE;
++}
++
++
+ static enum elf_reloc_type_class
+ elf64_sparc_reloc_type_class (const Elf_Internal_Rela *rela)
+ {
[email protected]@ -909,6 +951,11 @@
+ #define elf_backend_init_index_section \
+   _bfd_elf_init_1_index_section
+ 
++#define elf_backend_grok_prstatus \
++  elf64_sparc_grok_prstatus
++#define elf_backend_grok_psinfo \
++  elf64_sparc_grok_psinfo
++
+ #define elf_backend_can_gc_sections 1
+ #define elf_backend_can_refcount 1
+ #define elf_backend_want_got_plt 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.bfd.elfxx-target.h.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,20 @@
+--- gdb-7.6/bfd/elfxx-target.h	2013-02-11 14:15:53.000000000 -0800
++++ gdb-7.6/bfd/elfxx-target.h	2013-09-26 22:26:05.361368200 -0700
[email protected]@ -539,6 +539,9 @@
+ #ifndef elf_backend_grok_psinfo
+ #define elf_backend_grok_psinfo			NULL
+ #endif
++#ifndef elf_backend_grok_lwpstatus
++#define elf_backend_grok_lwpstatus              NULL
++#endif
+ #ifndef elf_backend_write_core_note
+ #define elf_backend_write_core_note		NULL
+ #endif
[email protected]@ -737,6 +740,7 @@
+   elf_backend_count_relocs,
+   elf_backend_grok_prstatus,
+   elf_backend_grok_psinfo,
++  elf_backend_grok_lwpstatus,
+   elf_backend_write_core_note,
+   elf_backend_lookup_section_flags_hook,
+   elf_backend_reloc_type_class,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.data-directory.Makefile.in.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,12 @@
+--- gdb-7.6/gdb/data-directory/Makefile.in	2012-12-31 22:32:56.000000000 -0800
++++ gdb-7.6/gdb/data-directory/Makefile.in	2013-08-23 13:49:54.105208758 -0700
[email protected]@ -46,7 +46,9 @@
+ 	gdb-syscalls.dtd \
+ 	ppc-linux.xml ppc64-linux.xml \
+ 	i386-linux.xml amd64-linux.xml \
++	i386-solaris.xml amd64-solaris.xml \
+ 	sparc-linux.xml sparc64-linux.xml \
++	sparc-solaris.xml sparc64-solaris.xml \
+ 	mips-o32-linux.xml mips-n32-linux.xml mips-n64-linux.xml
+ 
+ PYTHON_DIR = python
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.Makefile.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,89 @@
+--- gdb-7.6/gdb/features/Makefile	2013-02-04 04:48:37.000000000 -0800
++++ gdb-7.6/gdb/features/Makefile	2013-08-23 19:31:08.577315591 -0700
[email protected]@ -40,6 +40,11 @@
+ 	i386/amd64-avx i386/amd64-avx-linux \
+ 	i386/x32 i386/x32-linux \
+ 	i386/x32-avx i386/x32-avx-linux \
++	i386/i386-solaris \
++	i386/i386-mmx-solaris \
++	i386/amd64-solaris \
++	i386/i386-avx-solaris \
++	i386/amd64-avx-solaris \
+ 	mips-linux mips-dsp-linux \
+ 	mips64-linux mips64-dsp-linux \
+ 	rs6000/powerpc-32 \
[email protected]@ -49,6 +54,7 @@
+ 	s390-linux32 s390-linux64 s390x-linux64 \
+ 	s390-linux32v1 s390-linux64v1 s390x-linux64v1 \
+ 	s390-linux32v2 s390-linux64v2 s390x-linux64v2 \
++	sparc-solaris sparc64-solaris \
+ 	tic6x-c64xp tic6x-c64x tic6x-c62x \
+ 	tic6x-c64xp-linux tic6x-c64x-linux tic6x-c62x-linux
+ 
[email protected]@ -57,18 +63,24 @@
+ arm-expedite = r11,sp,pc
+ i386/i386-expedite = ebp,esp,eip
+ i386/i386-linux-expedite = ebp,esp,eip
++i386/i386-solaris-expedite = ebp,esp,eip
+ i386/amd64-expedite = rbp,rsp,rip
+ i386/amd64-linux-expedite = rbp,rsp,rip
++i386/amd64-solaris-expedite = rbp,rsp,rip
+ i386/i386-avx-expedite = ebp,esp,eip
+ i386/i386-avx-linux-expedite = ebp,esp,eip
++i386/i386-avx-solaris-expedite = ebp,esp,eip
+ i386/i386-mmx-expedite = ebp,esp,eip
+ i386/i386-mmx-linux-expedite = ebp,esp,eip
++i386/i386-mmx-solaris-expedite = ebp,esp,eip
+ i386/amd64-avx-expedite = rbp,rsp,rip
+ i386/amd64-avx-linux-expedite = rbp,rsp,rip
++i386/amd64-avx-solaris-expedite = rbp,rsp,rip
+ i386/x32-expedite = rbp,rsp,rip
+ i386/x32-linux-expedite = rbp,rsp,rip
+ i386/x32-avx-expedite = rbp,rsp,rip
+ i386/x32-avx-linux-expedite = rbp,rsp,rip
++i386/x32-avx-solaris-expedite = rbp,rsp,rip
+ mips-expedite = r29,pc
+ mips-dsp-expedite = r29,pc
+ mips64-expedite = r29,pc
[email protected]@ -85,6 +97,10 @@
+ s390x-linux64-expedite = r14,r15,pswa
+ s390x-linux64v1-expedite = r14,r15,pswa
+ s390x-linux64v2-expedite = r14,r15,pswa
++sparc-expedite=sp,fp,i7,o7,i0,o0,g2,g3,g4,fsr,fprs
++sparc-solaris-expedite=sp,fp,i7,o7,i0,o0,g2,g3,g4,fsr,fprs
++sparc64-expedite=sp,fp,i7,o7,i0,o0,g2,g3,g4,fsr,fprs
++sparc64-solaris-expedite=sp,fp,i7,o7,i0,o0,g2,g3,g4,fsr,fprs
+ tic6x-c64xp-expedite = A15,PC
+ tic6x-c64x-expedite = A15,PC
+ tic6x-c62x-expedite = A15,PC
[email protected]@ -125,20 +141,30 @@
+ $(outdir)/i386/i386.dat: i386/32bit-core.xml i386/32bit-sse.xml
+ $(outdir)/i386/i386-linux.dat: i386/32bit-core.xml i386/32bit-sse.xml \
+ 			       i386/32bit-linux.xml
++$(outdir)/i386/i386-solaris.dat: i386/32bit-core.xml i386/32bit-sse.xml \
++			       i386/32bit-solaris.xml
+ $(outdir)/i386/amd64.dat: i386/64bit-core.xml i386/64bit-sse.xml
+ $(outdir)/i386/amd64-linux.dat: i386/64bit-core.xml i386/64bit-sse.xml \
+ 			        i386/64bit-linux.xml
++$(outdir)/i386/amd64-solaris.dat: i386/64bit-core.xml i386/64bit-sse.xml \
++			        i386/64bit-solaris.xml
+ $(outdir)/i386/i386-avx.dat: i386/32bit-core.xml i386/32bit-avx.xml
+ $(outdir)/i386/i386-avx-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
+ 			       i386/32bit-linux.xml
++$(outdir)/i386/i386-avx-solaris.dat: i386/32bit-core.xml i386/32bit-avx.xml \
++			       i386/32bit-solaris.xml
+ $(outdir)/i386/i386-mmx.dat: i386/32bit-core.xml 
+ $(outdir)/i386/i386-mmx-linux.dat: i386/32bit-core.xml i386/32bit-linux.xml
++$(outdir)/i386/i386-mmx-solaris.dat: i386/32bit-core.xml i386/32bit-solaris.xml
+ $(outdir)/i386/amd64-avx.dat: i386/64bit-core.xml i386/64bit-avx.xml
+ $(outdir)/i386/amd64-avx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
+ 				    i386/64bit-linux.xml
++$(outdir)/i386/amd64-avx-solaris.dat: i386/64bit-core.xml i386/64bit-avx.xml \
++				    i386/64bit-solaris.xml
+ $(outdir)/i386/x32.dat: i386/x32-core.xml i386/64bit-sse.xml
+ $(outdir)/i386/x32-linux.dat: i386/x32-core.xml i386/64bit-sse.xml \
+ 			      i386/64bit-linux.xml
+ $(outdir)/i386/x32-avx.dat: i386/x32-core.xml i386/64bit-avx.xml
+ $(outdir)/i386/x32-avx-linux.dat: i386/x32-core.xml i386/64bit-avx.xml \
+ 				  i386/64bit-linux.xml
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.32bit-solaris.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,19 @@
+--- /dev/null	2013-08-23 08:27:09.000000000 -0700
++++ gdb-7.6/gdb/features/i386/32bit-solaris.c	2013-08-23 08:26:12.807778351 -0700
[email protected]@ -0,0 +1,16 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: 32bit-solaris.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_32bit_solaris;
++static void
++initialize_tdesc_32bit_solaris (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  tdesc_32bit_solaris = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.64bit-solaris.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,19 @@
+--- /dev/null	2013-08-23 08:27:09.000000000 -0700
++++ gdb-7.6/gdb/features/i386/64bit-solaris.c	2013-08-23 08:26:12.873621783 -0700
[email protected]@ -0,0 +1,16 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: 64bit-solaris.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_64bit_solaris;
++static void
++initialize_tdesc_64bit_solaris (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  tdesc_64bit_solaris = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.amd64-avx-solaris.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,176 @@
+--- /dev/null	2013-08-23 08:35:31.000000000 -0700
++++ gdb-7.6/gdb/features/i386/amd64-avx-solaris.c	2013-08-23 08:53:27.889674119 -0700
[email protected]@ -0,0 +1,173 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: amd64-avx-solaris.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_amd64_avx_solaris;
++static void
++initialize_tdesc_amd64_avx_solaris (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++  struct tdesc_type *field_type;
++  struct tdesc_type *type;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
++
++  set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
++  field_type = tdesc_create_flags (feature, "i386_eflags", 4);
++  tdesc_add_flag (field_type, 0, "CF");
++  tdesc_add_flag (field_type, 1, "");
++  tdesc_add_flag (field_type, 2, "PF");
++  tdesc_add_flag (field_type, 4, "AF");
++  tdesc_add_flag (field_type, 6, "ZF");
++  tdesc_add_flag (field_type, 7, "SF");
++  tdesc_add_flag (field_type, 8, "TF");
++  tdesc_add_flag (field_type, 9, "IF");
++  tdesc_add_flag (field_type, 10, "DF");
++  tdesc_add_flag (field_type, 11, "OF");
++  tdesc_add_flag (field_type, 14, "NT");
++  tdesc_add_flag (field_type, 16, "RF");
++  tdesc_add_flag (field_type, 17, "VM");
++  tdesc_add_flag (field_type, 18, "AC");
++  tdesc_add_flag (field_type, 19, "VIF");
++  tdesc_add_flag (field_type, 20, "VIP");
++  tdesc_add_flag (field_type, 21, "ID");
++
++  tdesc_create_reg (feature, "rax", 0, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rbx", 1, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rcx", 2, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rdx", 3, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rsi", 4, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rdi", 5, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rbp", 6, 1, NULL, 64, "data_ptr");
++  tdesc_create_reg (feature, "rsp", 7, 1, NULL, 64, "data_ptr");
++  tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "int64");
++  tdesc_create_reg (feature, "rip", 16, 1, NULL, 64, "code_ptr");
++  tdesc_create_reg (feature, "eflags", 17, 1, NULL, 32, "i386_eflags");
++  tdesc_create_reg (feature, "cs", 18, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ss", 19, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ds", 20, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "es", 21, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "fs", 22, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "gs", 23, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "st0", 24, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st1", 25, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st2", 26, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st3", 27, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st4", 28, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st5", 29, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st6", 30, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st7", 31, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "fctrl", 32, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fstat", 33, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "ftag", 34, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fiseg", 35, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fioff", 36, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "foseg", 37, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fooff", 38, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fop", 39, 1, "float", 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
++  field_type = tdesc_named_type (feature, "ieee_single");
++  tdesc_create_vector (feature, "v4f", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "ieee_double");
++  tdesc_create_vector (feature, "v2d", field_type, 2);
++
++  field_type = tdesc_named_type (feature, "int8");
++  tdesc_create_vector (feature, "v16i8", field_type, 16);
++
++  field_type = tdesc_named_type (feature, "int16");
++  tdesc_create_vector (feature, "v8i16", field_type, 8);
++
++  field_type = tdesc_named_type (feature, "int32");
++  tdesc_create_vector (feature, "v4i32", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "int64");
++  tdesc_create_vector (feature, "v2i64", field_type, 2);
++
++  type = tdesc_create_union (feature, "vec128");
++  field_type = tdesc_named_type (feature, "v4f");
++  tdesc_add_field (type, "v4_float", field_type);
++  field_type = tdesc_named_type (feature, "v2d");
++  tdesc_add_field (type, "v2_double", field_type);
++  field_type = tdesc_named_type (feature, "v16i8");
++  tdesc_add_field (type, "v16_int8", field_type);
++  field_type = tdesc_named_type (feature, "v8i16");
++  tdesc_add_field (type, "v8_int16", field_type);
++  field_type = tdesc_named_type (feature, "v4i32");
++  tdesc_add_field (type, "v4_int32", field_type);
++  field_type = tdesc_named_type (feature, "v2i64");
++  tdesc_add_field (type, "v2_int64", field_type);
++  field_type = tdesc_named_type (feature, "uint128");
++  tdesc_add_field (type, "uint128", field_type);
++
++  field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
++  tdesc_add_flag (field_type, 0, "IE");
++  tdesc_add_flag (field_type, 1, "DE");
++  tdesc_add_flag (field_type, 2, "ZE");
++  tdesc_add_flag (field_type, 3, "OE");
++  tdesc_add_flag (field_type, 4, "UE");
++  tdesc_add_flag (field_type, 5, "PE");
++  tdesc_add_flag (field_type, 6, "DAZ");
++  tdesc_add_flag (field_type, 7, "IM");
++  tdesc_add_flag (field_type, 8, "DM");
++  tdesc_add_flag (field_type, 9, "ZM");
++  tdesc_add_flag (field_type, 10, "OM");
++  tdesc_add_flag (field_type, 11, "UM");
++  tdesc_add_flag (field_type, 12, "PM");
++  tdesc_add_flag (field_type, 15, "FZ");
++
++  tdesc_create_reg (feature, "xmm0", 40, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm1", 41, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm2", 42, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm3", 43, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm4", 44, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm5", 45, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm6", 46, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm7", 47, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm8", 48, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm9", 49, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm10", 50, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm11", 51, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm12", 52, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm13", 53, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm14", 54, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm15", 55, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "mxcsr", 56, 1, "vector", 32, "i386_mxcsr");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.solaris");
++  tdesc_create_reg (feature, "orig_rax", 57, 1, NULL, 64, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
++  tdesc_create_reg (feature, "ymm0h", 58, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm1h", 59, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm2h", 60, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm3h", 61, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm4h", 62, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm5h", 63, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm6h", 64, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm7h", 65, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm8h", 66, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm9h", 67, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm10h", 68, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm11h", 69, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm12h", 70, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm13h", 71, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm14h", 72, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm15h", 73, 1, NULL, 128, "uint128");
++
++  tdesc_amd64_avx_solaris = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.amd64-avx-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,22 @@
+# XML representation of AMD64 Solaris registers.
+--- /dev/null	2013-08-23 08:35:31.000000000 -0700
++++ gdb-7.6/gdb/features/i386/amd64-avx-solaris.xml	2013-08-23 08:50:42.712570141 -0700
[email protected]@ -0,0 +1,18 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- AMD64 with AVX - Solaris.  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386:x86-64</architecture>
++  <osabi>Solaris</osabi>
++  <xi:include href="64bit-core.xml"/>
++  <xi:include href="64bit-sse.xml"/>
++  <xi:include href="64bit-solaris.xml"/>
++  <xi:include href="64bit-avx.xml"/>
++</target>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.amd64-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,21 @@
+# XML representation of Solaris AMD64 registers.
+--- /dev/null	2013-08-23 08:35:20.000000000 -0700
++++ gdb-7.6/gdb/features/i386/amd64-solaris.xml	2013-08-23 08:30:11.974956636 -0700
[email protected]@ -0,0 +1,17 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- AMD64 - Solaris.  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386:x86-64</architecture>
++  <osabi>Solaris</osabi>
++  <xi:include href="64bit-core.xml"/>
++  <xi:include href="64bit-sse.xml"/>
++  <xi:include href="64bit-solaris.xml"/>
++</target>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.i386-avx-solaris.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,152 @@
+--- /dev/null	2013-08-23 08:35:31.000000000 -0700
++++ gdb-7.6/gdb/features/i386/i386-avx-solaris.c	2013-08-23 08:53:27.810449814 -0700
[email protected]@ -0,0 +1,149 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: i386-avx-solaris.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_i386_avx_solaris;
++static void
++initialize_tdesc_i386_avx_solaris (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++  struct tdesc_type *field_type;
++  struct tdesc_type *type;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("i386"));
++
++  set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
++  field_type = tdesc_create_flags (feature, "i386_eflags", 4);
++  tdesc_add_flag (field_type, 0, "CF");
++  tdesc_add_flag (field_type, 1, "");
++  tdesc_add_flag (field_type, 2, "PF");
++  tdesc_add_flag (field_type, 4, "AF");
++  tdesc_add_flag (field_type, 6, "ZF");
++  tdesc_add_flag (field_type, 7, "SF");
++  tdesc_add_flag (field_type, 8, "TF");
++  tdesc_add_flag (field_type, 9, "IF");
++  tdesc_add_flag (field_type, 10, "DF");
++  tdesc_add_flag (field_type, 11, "OF");
++  tdesc_add_flag (field_type, 14, "NT");
++  tdesc_add_flag (field_type, 16, "RF");
++  tdesc_add_flag (field_type, 17, "VM");
++  tdesc_add_flag (field_type, 18, "AC");
++  tdesc_add_flag (field_type, 19, "VIF");
++  tdesc_add_flag (field_type, 20, "VIP");
++  tdesc_add_flag (field_type, 21, "ID");
++
++  tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
++  tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
++  tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
++  tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
++  tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
++  field_type = tdesc_named_type (feature, "ieee_single");
++  tdesc_create_vector (feature, "v4f", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "ieee_double");
++  tdesc_create_vector (feature, "v2d", field_type, 2);
++
++  field_type = tdesc_named_type (feature, "int8");
++  tdesc_create_vector (feature, "v16i8", field_type, 16);
++
++  field_type = tdesc_named_type (feature, "int16");
++  tdesc_create_vector (feature, "v8i16", field_type, 8);
++
++  field_type = tdesc_named_type (feature, "int32");
++  tdesc_create_vector (feature, "v4i32", field_type, 4);
++
++  field_type = tdesc_named_type (feature, "int64");
++  tdesc_create_vector (feature, "v2i64", field_type, 2);
++
++  type = tdesc_create_union (feature, "vec128");
++  field_type = tdesc_named_type (feature, "v4f");
++  tdesc_add_field (type, "v4_float", field_type);
++  field_type = tdesc_named_type (feature, "v2d");
++  tdesc_add_field (type, "v2_double", field_type);
++  field_type = tdesc_named_type (feature, "v16i8");
++  tdesc_add_field (type, "v16_int8", field_type);
++  field_type = tdesc_named_type (feature, "v8i16");
++  tdesc_add_field (type, "v8_int16", field_type);
++  field_type = tdesc_named_type (feature, "v4i32");
++  tdesc_add_field (type, "v4_int32", field_type);
++  field_type = tdesc_named_type (feature, "v2i64");
++  tdesc_add_field (type, "v2_int64", field_type);
++  field_type = tdesc_named_type (feature, "uint128");
++  tdesc_add_field (type, "uint128", field_type);
++
++  field_type = tdesc_create_flags (feature, "i386_mxcsr", 4);
++  tdesc_add_flag (field_type, 0, "IE");
++  tdesc_add_flag (field_type, 1, "DE");
++  tdesc_add_flag (field_type, 2, "ZE");
++  tdesc_add_flag (field_type, 3, "OE");
++  tdesc_add_flag (field_type, 4, "UE");
++  tdesc_add_flag (field_type, 5, "PE");
++  tdesc_add_flag (field_type, 6, "DAZ");
++  tdesc_add_flag (field_type, 7, "IM");
++  tdesc_add_flag (field_type, 8, "DM");
++  tdesc_add_flag (field_type, 9, "ZM");
++  tdesc_add_flag (field_type, 10, "OM");
++  tdesc_add_flag (field_type, 11, "UM");
++  tdesc_add_flag (field_type, 12, "PM");
++  tdesc_add_flag (field_type, 15, "FZ");
++
++  tdesc_create_reg (feature, "xmm0", 32, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm1", 33, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm2", 34, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm3", 35, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm4", 36, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm5", 37, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm6", 38, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "xmm7", 39, 1, NULL, 128, "vec128");
++  tdesc_create_reg (feature, "mxcsr", 40, 1, "vector", 32, "i386_mxcsr");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.solaris");
++  tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx");
++  tdesc_create_reg (feature, "ymm0h", 42, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm1h", 43, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm2h", 44, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm3h", 45, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm4h", 46, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm5h", 47, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm6h", 48, 1, NULL, 128, "uint128");
++  tdesc_create_reg (feature, "ymm7h", 49, 1, NULL, 128, "uint128");
++
++  tdesc_i386_avx_solaris = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.i386-avx-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,22 @@
+# XML representation of I386 Solaris registers.
+--- /dev/null	2013-08-23 08:35:31.000000000 -0700
++++ gdb-7.6/gdb/features/i386/i386-avx-solaris.xml	2013-08-23 08:48:59.332410252 -0700
[email protected]@ -0,0 +1,18 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- I386 with AVX - Solaris.  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386</architecture>
++  <osabi>Solaris</osabi>
++  <xi:include href="32bit-core.xml"/>
++  <xi:include href="32bit-sse.xml"/>
++  <xi:include href="32bit-solaris.xml"/>
++  <xi:include href="32bit-avx.xml"/>
++</target>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.i386-mmx-solaris.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,80 @@
+--- /dev/null	2013-08-23 08:35:31.000000000 -0700
++++ gdb-7.6/gdb/features/i386/i386-mmx-solaris.c	2013-08-23 08:53:27.965095505 -0700
[email protected]@ -0,0 +1,77 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: i386-mmx-solaris.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_i386_mmx_solaris;
++static void
++initialize_tdesc_i386_mmx_solaris (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++  struct tdesc_type *field_type;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("i386"));
++
++  set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
++  field_type = tdesc_create_flags (feature, "i386_eflags", 4);
++  tdesc_add_flag (field_type, 0, "CF");
++  tdesc_add_flag (field_type, 1, "");
++  tdesc_add_flag (field_type, 2, "PF");
++  tdesc_add_flag (field_type, 4, "AF");
++  tdesc_add_flag (field_type, 6, "ZF");
++  tdesc_add_flag (field_type, 7, "SF");
++  tdesc_add_flag (field_type, 8, "TF");
++  tdesc_add_flag (field_type, 9, "IF");
++  tdesc_add_flag (field_type, 10, "DF");
++  tdesc_add_flag (field_type, 11, "OF");
++  tdesc_add_flag (field_type, 14, "NT");
++  tdesc_add_flag (field_type, 16, "RF");
++  tdesc_add_flag (field_type, 17, "VM");
++  tdesc_add_flag (field_type, 18, "AC");
++  tdesc_add_flag (field_type, 19, "VIF");
++  tdesc_add_flag (field_type, 20, "VIP");
++  tdesc_add_flag (field_type, 21, "ID");
++
++  tdesc_create_reg (feature, "eax", 0, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ecx", 1, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "edx", 2, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ebx", 3, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "esp", 4, 1, NULL, 32, "data_ptr");
++  tdesc_create_reg (feature, "ebp", 5, 1, NULL, 32, "data_ptr");
++  tdesc_create_reg (feature, "esi", 6, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "edi", 7, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "eip", 8, 1, NULL, 32, "code_ptr");
++  tdesc_create_reg (feature, "eflags", 9, 1, NULL, 32, "i386_eflags");
++  tdesc_create_reg (feature, "cs", 10, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ss", 11, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "ds", 12, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "es", 13, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "fs", 14, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "gs", 15, 1, NULL, 32, "int32");
++  tdesc_create_reg (feature, "st0", 16, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st1", 17, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st2", 18, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st3", 19, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st4", 20, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st5", 21, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st6", 22, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "st7", 23, 1, NULL, 80, "i387_ext");
++  tdesc_create_reg (feature, "fctrl", 24, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fstat", 25, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "ftag", 26, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fiseg", 27, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fioff", 28, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "foseg", 29, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fooff", 30, 1, "float", 32, "int");
++  tdesc_create_reg (feature, "fop", 31, 1, "float", 32, "int");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.i386.solaris");
++  tdesc_create_reg (feature, "orig_eax", 41, 1, NULL, 32, "int");
++
++  tdesc_i386_mmx_solaris = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.i386-mmx-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,20 @@
+# XML representation of I386 Solaris registers.
+--- /dev/null	2013-08-23 08:35:31.000000000 -0700
++++ gdb-7.6/gdb/features/i386/i386-mmx-solaris.xml	2013-08-23 08:48:23.758601805 -0700
[email protected]@ -0,0 +1,16 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- I386 with MMX - Solaris.  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386</architecture>
++  <osabi>Solaris</osabi>
++  <xi:include href="32bit-core.xml"/>
++  <xi:include href="32bit-solaris.xml"/>
++</target>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.i386.i386-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,21 @@
+# XML representation of I386 Solaris registers.
+--- /dev/null	2013-08-23 08:27:09.000000000 -0700
++++ gdb-7.6/gdb/features/i386/i386-solaris.xml	2013-08-23 08:29:38.051063906 -0700
[email protected]@ -0,0 +1,17 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!-- I386 with SSE - Solaris.  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>i386</architecture>
++  <osabi>Solaris</osabi>
++  <xi:include href="32bit-core.xml"/>
++  <xi:include href="32bit-solaris.xml"/>
++  <xi:include href="32bit-sse.xml"/>
++</target>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc-cp0.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,19 @@
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc-cp0.c	2013-08-28 00:21:38.000000000 -0700
[email protected]@ -0,0 +1,16 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: sparc-cp0.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_sparc_cp0;
++static void
++initialize_tdesc_sparc_cp0 (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  tdesc_sparc_cp0 = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc-cp0.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,23 @@
+# XML representation of 32-bit SPARC control registers.
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc-cp0.xml	2013-08-27 20:10:12.000000000 -0700
[email protected]@ -0,0 +1,19 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.sparc.cp0">
++  <reg name="y" bitsize="32" type="uint32" regnum="64"/>
++  <reg name="psr" bitsize="32" type="uint32" regnum="65"/>
++  <reg name="wim" bitsize="32" type="uint32" regnum="66"/>
++  <reg name="tbr" bitsize="32" type="uint32" regnum="67"/>
++  <reg name="pc" bitsize="32" type="uint32" regnum="68"/>
++  <reg name="npc" bitsize="32" type="uint32" regnum="69"/>
++  <reg name="fsr" bitsize="32" type="uint32" regnum="70"/>
++  <reg name="csr" bitsize="32" type="uint32" regnum="71"/>
++</feature>
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc-cpu.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,19 @@
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc-cpu.c	2013-08-28 00:21:38.000000000 -0700
[email protected]@ -0,0 +1,16 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: sparc-cpu.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_sparc_cpu;
++static void
++initialize_tdesc_sparc_cpu (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  tdesc_sparc_cpu = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc-cpu.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,46 @@
+# XML representation of 32-bit SPARC integer registers.
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc-cpu.xml	2013-08-27 20:10:12.000000000 -0700
[email protected]@ -0,0 +1,42 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oraclel and/or its affiliates. All rights reserved.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.sparc.cpu">
++  <reg name="g0" bitsize="32" type="uint32" regnum="0"/>
++  <reg name="g1" bitsize="32" type="uint32" regnum="1"/>
++  <reg name="g2" bitsize="32" type="uint32" regnum="2"/>
++  <reg name="g3" bitsize="32" type="uint32" regnum="3"/>
++  <reg name="g4" bitsize="32" type="uint32" regnum="4"/>
++  <reg name="g5" bitsize="32" type="uint32" regnum="5"/>
++  <reg name="g6" bitsize="32" type="uint32" regnum="6"/>
++  <reg name="g7" bitsize="32" type="uint32" regnum="7"/>
++  <reg name="o0" bitsize="32" type="uint32" regnum="8"/>
++  <reg name="o1" bitsize="32" type="uint32" regnum="9"/>
++  <reg name="o2" bitsize="32" type="uint32" regnum="10"/>
++  <reg name="o3" bitsize="32" type="uint32" regnum="11"/>
++  <reg name="o4" bitsize="32" type="uint32" regnum="12"/>
++  <reg name="o5" bitsize="32" type="uint32" regnum="13"/>
++  <reg name="sp" bitsize="32" type="uint32" regnum="14"/>
++  <reg name="o7" bitsize="32" type="uint32" regnum="15"/>
++  <reg name="l0" bitsize="32" type="uint32" regnum="16"/>
++  <reg name="l1" bitsize="32" type="uint32" regnum="17"/>
++  <reg name="l2" bitsize="32" type="uint32" regnum="18"/>
++  <reg name="l3" bitsize="32" type="uint32" regnum="19"/>
++  <reg name="l4" bitsize="32" type="uint32" regnum="20"/>
++  <reg name="l5" bitsize="32" type="uint32" regnum="21"/>
++  <reg name="l6" bitsize="32" type="uint32" regnum="22"/>
++  <reg name="l7" bitsize="32" type="uint32" regnum="23"/>
++  <reg name="i0" bitsize="32" type="uint32" regnum="24"/>
++  <reg name="i1" bitsize="32" type="uint32" regnum="25"/>
++  <reg name="i2" bitsize="32" type="uint32" regnum="26"/>
++  <reg name="i3" bitsize="32" type="uint32" regnum="27"/>
++  <reg name="i4" bitsize="32" type="uint32" regnum="28"/>
++  <reg name="i5" bitsize="32" type="uint32" regnum="29"/>
++  <reg name="fp" bitsize="32" type="uint32" regnum="30"/>
++  <reg name="i7" bitsize="32" type="uint32" regnum="31"/>
++</feature>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc-fpu.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,19 @@
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc-fpu.c	2013-08-28 00:21:38.000000000 -0700
[email protected]@ -0,0 +1,16 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: sparc-fpu.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_sparc_fpu;
++static void
++initialize_tdesc_sparc_fpu (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  tdesc_sparc_fpu = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc-fpu.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,64 @@
+# XML representation of 32-bit SPARC floating-point registers.
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc-fpu.xml	2013-08-27 23:56:47.000000000 -0700
[email protected]@ -0,0 +1,60 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2007-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.sparc.fpu">
++  <reg name="f0" bitsize="32" type="ieee_single" regnum="32"/>
++  <reg name="f1" bitsize="32" type="ieee_single" regnum="33"/>
++  <reg name="f2" bitsize="32" type="ieee_single" regnum="34"/>
++  <reg name="f3" bitsize="32" type="ieee_single" regnum="35"/>
++  <reg name="f4" bitsize="32" type="ieee_single" regnum="36"/>
++  <reg name="f5" bitsize="32" type="ieee_single" regnum="37"/>
++  <reg name="f6" bitsize="32" type="ieee_single" regnum="38"/>
++  <reg name="f7" bitsize="32" type="ieee_single" regnum="39"/>
++  <reg name="f8" bitsize="32" type="ieee_single" regnum="40"/>
++  <reg name="f9" bitsize="32" type="ieee_single" regnum="41"/>
++  <reg name="f10" bitsize="32" type="ieee_single" regnum="42"/>
++  <reg name="f11" bitsize="32" type="ieee_single" regnum="43"/>
++  <reg name="f12" bitsize="32" type="ieee_single" regnum="44"/>
++  <reg name="f13" bitsize="32" type="ieee_single" regnum="45"/>
++  <reg name="f14" bitsize="32" type="ieee_single" regnum="46"/>
++  <reg name="f15" bitsize="32" type="ieee_single" regnum="47"/>
++  <reg name="f16" bitsize="32" type="ieee_single" regnum="48"/>
++  <reg name="f17" bitsize="32" type="ieee_single" regnum="49"/>
++  <reg name="f18" bitsize="32" type="ieee_single" regnum="50"/>
++  <reg name="f19" bitsize="32" type="ieee_single" regnum="51"/>
++  <reg name="f20" bitsize="32" type="ieee_single" regnum="52"/>
++  <reg name="f21" bitsize="32" type="ieee_single" regnum="53"/>
++  <reg name="f22" bitsize="32" type="ieee_single" regnum="54"/>
++  <reg name="f23" bitsize="32" type="ieee_single" regnum="55"/>
++  <reg name="f24" bitsize="32" type="ieee_single" regnum="56"/>
++  <reg name="f25" bitsize="32" type="ieee_single" regnum="57"/>
++  <reg name="f26" bitsize="32" type="ieee_single" regnum="58"/>
++  <reg name="f27" bitsize="32" type="ieee_single" regnum="59"/>
++  <reg name="f28" bitsize="32" type="ieee_single" regnum="60"/>
++  <reg name="f29" bitsize="32" type="ieee_single" regnum="61"/>
++  <reg name="f30" bitsize="32" type="ieee_single" regnum="62"/>
++  <reg name="f31" bitsize="32" type="ieee_single" regnum="63"/>
++
++  <reg name="d0" bitsize="64" type="ieee_double" regnum="32"/>
++  <reg name="d2" bitsize="64" type="ieee_double" regnum="34"/>
++  <reg name="d4" bitsize="64" type="ieee_double" regnum="36"/>
++  <reg name="d6" bitsize="64" type="ieee_double" regnum="38"/>
++  <reg name="d8" bitsize="64" type="ieee_double" regnum="40"/>
++  <reg name="d10" bitsize="64" type="ieee_double" regnum="42"/>
++  <reg name="d12" bitsize="64" type="ieee_double" regnum="44"/>
++  <reg name="d14" bitsize="64" type="ieee_double" regnum="46"/>
++  <reg name="d16" bitsize="64" type="ieee_double" regnum="48"/>
++  <reg name="d18" bitsize="64" type="ieee_double" regnum="50"/>
++  <reg name="d20" bitsize="64" type="ieee_double" regnum="52"/>
++  <reg name="d22" bitsize="64" type="ieee_double" regnum="54"/>
++  <reg name="d24" bitsize="64" type="ieee_double" regnum="56"/>
++  <reg name="d26" bitsize="64" type="ieee_double" regnum="58"/>
++  <reg name="d28" bitsize="64" type="ieee_double" regnum="60"/>
++  <reg name="d30" bitsize="64" type="ieee_double" regnum="62"/>
++</feature>
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc-solaris.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,120 @@
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc-solaris.c	2013-08-28 00:21:38.000000000 -0700
[email protected]@ -0,0 +1,117 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: sparc-solaris.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_sparc_solaris;
++static void
++initialize_tdesc_sparc_solaris (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("sparc"));
++
++  set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cpu");
++  tdesc_create_reg (feature, "g0", 0, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "g1", 1, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "g2", 2, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "g3", 3, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "g4", 4, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "g5", 5, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "g6", 6, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "g7", 7, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "o0", 8, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "o1", 9, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "o2", 10, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "o3", 11, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "o4", 12, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "o5", 13, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "sp", 14, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "o7", 15, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "l0", 16, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "l1", 17, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "l2", 18, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "l3", 19, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "l4", 20, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "l5", 21, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "l6", 22, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "l7", 23, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "i0", 24, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "i1", 25, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "i2", 26, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "i3", 27, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "i4", 28, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "i5", 29, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "fp", 30, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "i7", 31, 1, NULL, 32, "uint32");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cp0");
++  tdesc_create_reg (feature, "y", 64, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "psr", 65, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "wim", 66, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "tbr", 67, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "pc", 68, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "npc", 69, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "fsr", 70, 1, NULL, 32, "uint32");
++  tdesc_create_reg (feature, "csr", 71, 1, NULL, 32, "uint32");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.fpu");
++  tdesc_create_reg (feature, "f0", 32, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f1", 33, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f2", 34, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f3", 35, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f4", 36, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f5", 37, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f6", 38, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f7", 39, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f8", 40, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f9", 41, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f10", 42, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f11", 43, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f12", 44, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f13", 45, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f14", 46, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f15", 47, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f16", 48, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f17", 49, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f18", 50, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f19", 51, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f20", 52, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f21", 53, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f22", 54, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f23", 55, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f24", 56, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f25", 57, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f26", 58, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f27", 59, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f28", 60, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f29", 61, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f30", 62, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f31", 63, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "d0", 32, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d2", 34, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d4", 36, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d6", 38, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d8", 40, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d10", 42, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d12", 44, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d14", 46, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d16", 48, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d18", 50, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d20", 52, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d22", 54, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d24", 56, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d26", 58, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d28", 60, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d30", 62, 1, NULL, 64, "ieee_double");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.solaris");
++  tdesc_create_reg (feature, "restart", 63, 1, "system", 32, "int");
++
++  tdesc_sparc_solaris = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,23 @@
+# XML representation of 32-bit SPARC registers.
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc-solaris.xml	2013-08-27 20:10:12.000000000 -0700
[email protected]@ -0,0 +1,19 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>sparc</architecture>
++  <osabi>Solaris</osabi>
++  <xi:include href="sparc-cpu.xml"/>
++  <xi:include href="sparc-cp0.xml"/>
++  <xi:include href="sparc-fpu.xml"/>
++
++  <feature name="org.gnu.gdb.sparc.solaris">
++    <reg name="restart" bitsize="32" group="system"/>
++  </feature>
++</target>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc64-cp0.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,19 @@
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc64-cp0.c	2013-08-28 00:21:38.000000000 -0700
[email protected]@ -0,0 +1,16 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: sparc64-cp0.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_sparc64_cp0;
++static void
++initialize_tdesc_sparc64_cp0 (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  tdesc_sparc64_cp0 = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc64-cp0.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,24 @@
+# XML representation of 64-bit SPARC control registers.
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc64-cp0.xml	2013-08-28 00:21:25.000000000 -0700
[email protected]@ -0,0 +1,20 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.sparc.cp0">
++  <reg name="pc" bitsize="64" type="uint64" regnum="80"/>
++  <reg name="npc" bitsize="64" type="uint64" regnum="81"/>
++  <reg name="state" bitsize="64" type="uint64" regnum="82"/>
++  <reg name="fsr" bitsize="32" type="ieee_single" regnum="83"/>
++  <reg name="fprs" bitsize="32" type="ieee_single" regnum="84"/>
++  <reg name="y" bitsize="64" type="uint64" regnum="85"/>
++  <reg name="cwp" bitsize="64" type="uint64" regnum="86"/>
++  <reg name="pstate" bitsize="64" type="uint64" regnum="87"/>
++  <reg name="asi" bitsize="64" type="uint64" regnum="88"/>
++</feature>
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc64-cpu.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,19 @@
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc64-cpu.c	2013-08-28 00:21:38.000000000 -0700
[email protected]@ -0,0 +1,16 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: sparc64-cpu.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_sparc64_cpu;
++static void
++initialize_tdesc_sparc64_cpu (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  tdesc_sparc64_cpu = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc64-cpu.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,46 @@
+# XML representation of 64-bit SPARC int registers.
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc64-cpu.xml	2013-08-28 00:21:13.000000000 -0700
[email protected]@ -0,0 +1,42 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) Oracle and/or its affiliates. All rights reserved.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.sparc.cpu">
++  <reg name="g0" bitsize="64" type="uint64" regnum="0"/>
++  <reg name="g1" bitsize="64" type="uint64" regnum="1"/>
++  <reg name="g2" bitsize="64" type="uint64" regnum="2"/>
++  <reg name="g3" bitsize="64" type="uint64" regnum="3"/>
++  <reg name="g4" bitsize="64" type="uint64" regnum="4"/>
++  <reg name="g5" bitsize="64" type="uint64" regnum="5"/>
++  <reg name="g6" bitsize="64" type="uint64" regnum="6"/>
++  <reg name="g7" bitsize="64" type="uint64" regnum="7"/>
++  <reg name="o0" bitsize="64" type="uint64" regnum="8"/>
++  <reg name="o1" bitsize="64" type="uint64" regnum="9"/>
++  <reg name="o2" bitsize="64" type="uint64" regnum="10"/>
++  <reg name="o3" bitsize="64" type="uint64" regnum="11"/>
++  <reg name="o4" bitsize="64" type="uint64" regnum="12"/>
++  <reg name="o5" bitsize="64" type="uint64" regnum="13"/>
++  <reg name="sp" bitsize="64" type="uint64" regnum="14"/>
++  <reg name="o7" bitsize="64" type="uint64" regnum="15"/>
++  <reg name="l0" bitsize="64" type="uint64" regnum="16"/>
++  <reg name="l1" bitsize="64" type="uint64" regnum="17"/>
++  <reg name="l2" bitsize="64" type="uint64" regnum="18"/>
++  <reg name="l3" bitsize="64" type="uint64" regnum="19"/>
++  <reg name="l4" bitsize="64" type="uint64" regnum="20"/>
++  <reg name="l5" bitsize="64" type="uint64" regnum="21"/>
++  <reg name="l6" bitsize="64" type="uint64" regnum="22"/>
++  <reg name="l7" bitsize="64" type="uint64" regnum="23"/>
++  <reg name="i0" bitsize="64" type="uint64" regnum="24"/>
++  <reg name="i1" bitsize="64" type="uint64" regnum="25"/>
++  <reg name="i2" bitsize="64" type="uint64" regnum="26"/>
++  <reg name="i3" bitsize="64" type="uint64" regnum="27"/>
++  <reg name="i4" bitsize="64" type="uint64" regnum="28"/>
++  <reg name="i5" bitsize="64" type="uint64" regnum="29"/>
++  <reg name="fp" bitsize="32" type="uint64" regnum="30"/>
++  <reg name="i7" bitsize="64" type="uint64" regnum="31"/>
++</feature>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc64-fpu.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,19 @@
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc64-fpu.c	2013-08-28 00:21:38.000000000 -0700
[email protected]@ -0,0 +1,16 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: sparc64-fpu.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_sparc64_fpu;
++static void
++initialize_tdesc_sparc64_fpu (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  tdesc_sparc64_fpu = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc64-fpu.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,97 @@
+# XML representation of 64-bit SPARC floating-point registers.
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc64-fpu.xml	2013-08-28 00:21:33.000000000 -0700
[email protected]@ -0,0 +1,93 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2007-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.sparc.fpu">
++  <reg name="f0" bitsize="32" type="ieee_single" regnum="32"/>
++  <reg name="f1" bitsize="32" type="ieee_single" regnum="33"/>
++  <reg name="f2" bitsize="32" type="ieee_single" regnum="34"/>
++  <reg name="f3" bitsize="32" type="ieee_single" regnum="35"/>
++  <reg name="f4" bitsize="32" type="ieee_single" regnum="36"/>
++  <reg name="f5" bitsize="32" type="ieee_single" regnum="37"/>
++  <reg name="f6" bitsize="32" type="ieee_single" regnum="38"/>
++  <reg name="f7" bitsize="32" type="ieee_single" regnum="39"/>
++  <reg name="f8" bitsize="32" type="ieee_single" regnum="40"/>
++  <reg name="f9" bitsize="32" type="ieee_single" regnum="41"/>
++  <reg name="f10" bitsize="32" type="ieee_single" regnum="42"/>
++  <reg name="f11" bitsize="32" type="ieee_single" regnum="43"/>
++  <reg name="f12" bitsize="32" type="ieee_single" regnum="44"/>
++  <reg name="f13" bitsize="32" type="ieee_single" regnum="45"/>
++  <reg name="f14" bitsize="32" type="ieee_single" regnum="46"/>
++  <reg name="f15" bitsize="32" type="ieee_single" regnum="47"/>
++  <reg name="f16" bitsize="32" type="ieee_single" regnum="48"/>
++  <reg name="f17" bitsize="32" type="ieee_single" regnum="49"/>
++  <reg name="f18" bitsize="32" type="ieee_single" regnum="50"/>
++  <reg name="f19" bitsize="32" type="ieee_single" regnum="51"/>
++  <reg name="f20" bitsize="32" type="ieee_single" regnum="52"/>
++  <reg name="f21" bitsize="32" type="ieee_single" regnum="53"/>
++  <reg name="f22" bitsize="32" type="ieee_single" regnum="54"/>
++  <reg name="f23" bitsize="32" type="ieee_single" regnum="55"/>
++  <reg name="f24" bitsize="32" type="ieee_single" regnum="56"/>
++  <reg name="f25" bitsize="32" type="ieee_single" regnum="57"/>
++  <reg name="f26" bitsize="32" type="ieee_single" regnum="58"/>
++  <reg name="f27" bitsize="32" type="ieee_single" regnum="59"/>
++  <reg name="f28" bitsize="32" type="ieee_single" regnum="60"/>
++  <reg name="f29" bitsize="32" type="ieee_single" regnum="61"/>
++  <reg name="f30" bitsize="32" type="ieee_single" regnum="62"/>
++  <reg name="f31" bitsize="32" type="ieee_single" regnum="63"/>
++
++  <reg name="d0" bitsize="64" type="ieee_double" regnum="32"/>
++  <reg name="d1" bitsize="64" type="ieee_double" regnum="34"/>
++  <reg name="d2" bitsize="64" type="ieee_double" regnum="36"/>
++  <reg name="d3" bitsize="64" type="ieee_double" regnum="38"/>
++  <reg name="d4" bitsize="64" type="ieee_double" regnum="40"/>
++  <reg name="d5" bitsize="64" type="ieee_double" regnum="42"/>
++  <reg name="d6" bitsize="64" type="ieee_double" regnum="44"/>
++  <reg name="d7" bitsize="64" type="ieee_double" regnum="46"/>
++  <reg name="d8" bitsize="64" type="ieee_double" regnum="48"/>
++  <reg name="d9" bitsize="64" type="ieee_double" regnum="50"/>
++  <reg name="d10" bitsize="64" type="ieee_double" regnum="52"/>
++  <reg name="d11" bitsize="64" type="ieee_double" regnum="54"/>
++  <reg name="d12" bitsize="64" type="ieee_double" regnum="56"/>
++  <reg name="d13" bitsize="64" type="ieee_double" regnum="58"/>
++  <reg name="d14" bitsize="64" type="ieee_double" regnum="60"/>
++  <reg name="d15" bitsize="64" type="ieee_double" regnum="62"/>
++  <reg name="d16" bitsize="64" type="ieee_double" regnum="64"/>
++  <reg name="d17" bitsize="64" type="ieee_double" regnum="66"/>
++  <reg name="d18" bitsize="64" type="ieee_double" regnum="68"/>
++  <reg name="d19" bitsize="64" type="ieee_double" regnum="70"/>
++  <reg name="d20" bitsize="64" type="ieee_double" regnum="72"/>
++  <reg name="d21" bitsize="64" type="ieee_double" regnum="74"/>
++  <reg name="d22" bitsize="64" type="ieee_double" regnum="76"/>
++  <reg name="d23" bitsize="64" type="ieee_double" regnum="78"/>
++  <reg name="d24" bitsize="64" type="ieee_double" regnum="80"/>
++  <reg name="d25" bitsize="64" type="ieee_double" regnum="82"/>
++  <reg name="d26" bitsize="64" type="ieee_double" regnum="84"/>
++  <reg name="d27" bitsize="64" type="ieee_double" regnum="86"/>
++  <reg name="d28" bitsize="64" type="ieee_double" regnum="88"/>
++  <reg name="d29" bitsize="64" type="ieee_double" regnum="90"/>
++  <reg name="d30" bitsize="64" type="ieee_double" regnum="92"/>
++  <reg name="d31" bitsize="64" type="ieee_double" regnum="94"/>
++
++  <reg name="q0" bitsize="128" type="ieee_double" regnum="32"/>
++  <reg name="q1" bitsize="128" type="ieee_double" regnum="36"/>
++  <reg name="q2" bitsize="128" type="ieee_double" regnum="40"/>
++  <reg name="q3" bitsize="128" type="ieee_double" regnum="44"/>
++  <reg name="q4" bitsize="128" type="ieee_double" regnum="48"/>
++  <reg name="q5" bitsize="128" type="ieee_double" regnum="52"/>
++  <reg name="q6" bitsize="128" type="ieee_double" regnum="56"/>
++  <reg name="q7" bitsize="128" type="ieee_double" regnum="62"/>
++  <reg name="q8" bitsize="128" type="ieee_double" regnum="66"/>
++  <reg name="q9" bitsize="128" type="ieee_double" regnum="70"/>
++  <reg name="q10" bitsize="128" type="ieee_double" regnum="74"/>
++  <reg name="q11" bitsize="128" type="ieee_double" regnum="78"/>
++  <reg name="q12" bitsize="128" type="ieee_double" regnum="80"/>
++  <reg name="q13" bitsize="128" type="ieee_double" regnum="80"/>
++  <reg name="q14" bitsize="128" type="ieee_double" regnum="80"/>
++  <reg name="q15" bitsize="128" type="ieee_double" regnum="80"/>
++</feature>
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc64-solaris.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,153 @@
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc64-solaris.c	2013-08-28 00:21:38.000000000 -0700
[email protected]@ -0,0 +1,150 @@
++/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
++  Original: sparc64-solaris.xml */
++
++#include "defs.h"
++#include "osabi.h"
++#include "target-descriptions.h"
++
++struct target_desc *tdesc_sparc64_solaris;
++static void
++initialize_tdesc_sparc64_solaris (void)
++{
++  struct target_desc *result = allocate_target_description ();
++  struct tdesc_feature *feature;
++
++  set_tdesc_architecture (result, bfd_scan_arch ("sparc"));
++
++  set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris"));
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cpu");
++  tdesc_create_reg (feature, "g0", 0, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "g1", 1, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "g2", 2, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "g3", 3, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "g4", 4, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "g5", 5, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "g6", 6, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "g7", 7, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "o0", 8, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "o1", 9, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "o2", 10, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "o3", 11, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "o4", 12, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "o5", 13, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "sp", 14, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "o7", 15, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "l0", 16, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "l1", 17, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "l2", 18, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "l3", 19, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "l4", 20, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "l5", 21, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "l6", 22, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "l7", 23, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "i0", 24, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "i1", 25, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "i2", 26, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "i3", 27, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "i4", 28, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "i5", 29, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "fp", 30, 1, NULL, 32, "uint64");
++  tdesc_create_reg (feature, "i7", 31, 1, NULL, 64, "uint64");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cp0");
++  tdesc_create_reg (feature, "pc", 80, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "npc", 81, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "state", 82, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "fsr", 83, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "fprs", 84, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "y", 85, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "cwp", 86, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "pstate", 87, 1, NULL, 64, "uint64");
++  tdesc_create_reg (feature, "asi", 88, 1, NULL, 64, "uint64");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.fpu");
++  tdesc_create_reg (feature, "f0", 32, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f1", 33, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f2", 34, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f3", 35, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f4", 36, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f5", 37, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f6", 38, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f7", 39, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f8", 40, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f9", 41, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f10", 42, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f11", 43, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f12", 44, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f13", 45, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f14", 46, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f15", 47, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f16", 48, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f17", 49, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f18", 50, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f19", 51, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f20", 52, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f21", 53, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f22", 54, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f23", 55, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f24", 56, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f25", 57, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f26", 58, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f27", 59, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f28", 60, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f29", 61, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f30", 62, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "f31", 63, 1, NULL, 32, "ieee_single");
++  tdesc_create_reg (feature, "d0", 32, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d1", 34, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d2", 36, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d3", 38, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d4", 40, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d5", 42, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d6", 44, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d7", 46, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d8", 48, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d9", 50, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d10", 52, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d11", 54, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d12", 56, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d13", 58, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d14", 60, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d15", 62, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d16", 64, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d17", 66, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d18", 68, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d19", 70, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d20", 72, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d21", 74, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d22", 76, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d23", 78, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d24", 80, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d25", 82, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d26", 84, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d27", 86, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d28", 88, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d29", 90, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d30", 92, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "d31", 94, 1, NULL, 64, "ieee_double");
++  tdesc_create_reg (feature, "q0", 32, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q1", 36, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q2", 40, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q3", 44, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q4", 48, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q5", 52, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q6", 56, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q7", 62, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q8", 66, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q9", 70, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q10", 74, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q11", 78, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q12", 80, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q13", 80, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q14", 80, 1, NULL, 128, "ieee_double");
++  tdesc_create_reg (feature, "q15", 80, 1, NULL, 128, "ieee_double");
++
++  feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.solaris");
++  tdesc_create_reg (feature, "restart", 81, 1, "system", 64, "int");
++
++  tdesc_sparc64_solaris = result;
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.features.sparc64-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,23 @@
+# XML representation of 64-bit Solaris SPARC registers.
+--- /dev/null	2013-10-05 19:42:45.000000000 -0700
++++ gdb-7.6/gdb/features/sparc64-solaris.xml	2013-08-28 00:21:05.000000000 -0700
[email protected]@ -0,0 +1,19 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE target SYSTEM "gdb-target.dtd">
++<target>
++  <architecture>sparc</architecture>
++  <osabi>Solaris</osabi>
++  <xi:include href="sparc64-cpu.xml"/>
++  <xi:include href="sparc64-cp0.xml"/>
++  <xi:include href="sparc64-fpu.xml"/>
++
++  <feature name="org.gnu.gdb.sparc.solaris">
++    <reg name="restart" bitsize="64" group="system"/>
++  </feature>
++</target>
--- a/components/gdb/patches/gdb.fork-child.c.patch	Wed Nov 06 14:12:13 2013 -0800
+++ b/components/gdb/patches/gdb.fork-child.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -1,74 +1,61 @@
---- gdb-6.8.orig/gdb/fork-child.c	Tue Jan 29 13:11:24 2008
-+++ gdb-6.8-64/gdb/fork-child.c	Fri Sep  3 15:08:51 2010
[email protected]@ -40,6 +40,16 @@
+--- gdb-7.6/gdb/fork-child.c	2012-12-31 22:32:42.000000000 -0800
++++ gdb-7.6/gdb/fork-child.c	2013-07-10 23:30:02.327235300 -0700
[email protected]@ -35,13 +35,19 @@
  
- extern char **environ;
+ #include <signal.h>
  
-+/* On Solaris, the SHELL may be a hard link to /usr/lib/isaexec.
-+   If so, there will be one more exec trap to skip while starting
-+   the inferior.  */
-+
 +#include <fcntl.h>
 +#include <sys/types.h>
 +#include <sys/stat.h>
 +
+ /* This just gets used as a default if we can't find SHELL.  */
+-#define SHELL_FILE "/bin/sh"
++#define SHELL_FILE "/bin/bash"
+ 
+ extern char **environ;
+ 
+ static char *exec_wrapper;
+ 
 +static int isaexec_shell;
 +
  /* Break up SCRATCH into an argument vector suitable for passing to
     execvp and store it in ARGV.  E.g., on "run a b c d" this routine
     would get as input the string "a b c d", and as output it would
[email protected]@ -136,6 +146,8 @@
-   static char **argv;
-   const char *inferior_io_terminal = get_inferior_io_terminal ();
[email protected]@ -142,6 +148,7 @@
+   struct inferior *inf;
+   int i;
+   int save_errno;
++  isaexec_shell = 0;
  
-+  isaexec_shell = 0;  /* Solaris only */
-+
    /* If no exec file handed to us, get it from the exec-file command
       -- with a good, common error message if none is specified.  */
-   exec_file = exec_file_arg;
[email protected]@ -148,6 +160,9 @@
[email protected]@ -155,12 +162,20 @@
    shell_file = shell_file_arg;
    if (STARTUP_WITH_SHELL)
      {
-+      /* Solaris only, is the shell a hard link to isaexec?  */
 +      struct stat buf1, buf2;
-+
        /* Figure out what shell to start up the user program under.  */
        if (shell_file == NULL)
  	shell_file = getenv ("SHELL");
[email protected]@ -154,6 +169,25 @@
        if (shell_file == NULL)
  	shell_file = default_shell_file;
        shell = 1;
 +
-+      /* Solaris only, is the shell a hard link to isaexec?
-+	 If either stat call fails or the user's shell is
-+	 not linked to isaexec, proceed with gdb's normal
-+	 behavior, i.e. do not skip an extra exec.
-+
-+	 Assume that two files are the same if their inode
-+	 numbers, device numbers, and number of links match.
-+	 Is it possible to get a false positive if the shell
-+	 and isaexec are located on different file systems?  */
-+      if (
-+	stat ("/usr/lib/isaexec", &buf1) == 0 &&
-+	stat (shell_file, &buf2) == 0 &&
-+	buf1.st_ino == buf2.st_ino &&
-+	buf1.st_dev == buf2.st_dev &&
-+	buf1.st_nlink == buf2.st_nlink
-+      ) {
-+	isaexec_shell = 1;
-+      }
++      if (stat ("/usr/lib/isaexec", &buf1) == 0 &&
++          stat (shell_file, &buf2) == 0 &&
++          buf1.st_ino == buf2.st_ino &&
++          buf1.st_dev == buf2.st_dev &&
++          buf1.st_nlink == buf2.st_nlink)
++        isaexec_shell = 1;
      }
  
-   /* Multiplying the length of exec_file by 4 is to account for the
[email protected]@ -395,6 +429,9 @@
-   int pending_execs = ntraps;
+   if (!shell)
[email protected]@ -416,6 +431,8 @@
    int terminal_initted = 0;
+   ptid_t resume_ptid;
  
-+  /* Solaris only, increment ntraps if shell is isaexec'ed.  */
 +  pending_execs += isaexec_shell;
 +
-   /* The process was started by the fork that created it, but it will
-      have stopped one instruction after execing the shell.  Here we
-      must get it up to actual execution of the real program.  */
+   if (target_supports_multi_process ())
+     resume_ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
+   else
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.Makefile.in.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,38 @@
+--- gdb-7.6/gdb/Makefile.in	2013-04-02 10:38:43.000000000 -0700
++++ gdb-7.6/gdb/Makefile.in	2013-08-25 18:37:15.000000000 -0700
[email protected]@ -144,7 +144,7 @@
+ # Where is the READLINE library?  Typically in ../readline.
+ READLINE_DIR = ../readline
+ READLINE_SRC = $(srcdir)/$(READLINE_DIR)
+-READLINE = @[email protected]
++READLINE = $(READLINE_DIR)/libreadline.a $(READLINE_DIR)/libhistory.a
+ READLINE_DEPS = @[email protected]
+ READLINE_CFLAGS = @[email protected]
+ 
[email protected]@ -162,7 +162,7 @@
+ GDB_WARN_CFLAGS_NO_FORMAT = `echo " $(GDB_WARN_CFLAGS) " \
+ 		   | sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"`
+ 
+-RDYNAMIC = @[email protected]
++RDYNAMIC =
+ 
+ # Where is the INTL library?  Typically in ../intl.
+ INTL = @[email protected]
[email protected]@ -408,7 +408,7 @@
+ CONFIG_OBS= @[email protected]
+ CONFIG_SRCS= @[email protected]
+ CONFIG_DEPS= @[email protected]
+-CONFIG_LDFLAGS = @[email protected]
++CONFIG_LDFLAGS =
+ ENABLE_CFLAGS= @[email protected]
+ CONFIG_ALL= @[email protected]
+ CONFIG_CLEAN= @[email protected]
[email protected]@ -934,7 +934,7 @@
+ 
+ TSOBS = inflow.o
+ 
+-SUBDIRS = doc @[email protected] data-directory $(GNULIB_BUILDDIR)
++SUBDIRS = @[email protected] data-directory $(GNULIB_BUILDDIR)
+ CLEANDIRS = $(SUBDIRS)
+ 
+ # List of subdirectories in the build tree that must exist.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.i386sol2.mh.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,7 @@
+--- gdb-7.6/gdb/config/i386/i386sol2.mh	2010-04-26 06:53:56.000000000 -0700
++++ gdb-7.6/gdb/config/i386/i386sol2.mh	2013-10-05 16:55:25.838330200 -0700
[email protected]@ -1,3 +1,3 @@
+ # Host: Solaris x86
+-NATDEPFILES= fork-child.o i386v4-nat.o i386-sol2-nat.o \
++NATDEPFILES= sol2-core-regset.o fork-child.o i386v4-nat.o i386-sol2-nat.o \
+ 	procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.regcache.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,38 @@
+--- gdb-7.6/gdb/regcache.c	2013-03-07 10:59:54.000000000 -0800
++++ gdb-7.6/gdb/regcache.c	2013-10-06 14:00:22.264723200 -0700
[email protected]@ -206,6 +206,8 @@
+   /* If this is a read-write cache, which thread's registers is
+      it connected to?  */
+   ptid_t ptid;
++  /* Is this a corefile regcache or a live process */
++  int from_corefile;
+ };
+ 
+ static struct regcache *
[email protected]@ -220,6 +222,7 @@
+   regcache = XMALLOC (struct regcache);
+   regcache->descr = descr;
+   regcache->readonly_p = readonly_p;
++  regcache->from_corefile = 0;
+   if (readonly_p)
+     {
+       regcache->registers
[email protected]@ -1435,3 +1438,18 @@
+ 	   &maintenanceprintlist);
+ 
+ }
++
++int
++set_regcache_from_corefile (struct regcache *regcache)
++{
++  gdb_assert (regcache != NULL);
++  regcache->from_corefile = 1;
++}
++
++int
++regcache_from_corefile (const struct regcache *regcache)
++{
++  gdb_assert (regcache != NULL);
++  return regcache->from_corefile;
++}
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.regcache.h.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,11 @@
+--- gdb-7.6/gdb/regcache.h	2012-12-31 22:32:49.000000000 -0800
++++ gdb-7.6/gdb/regcache.h	2013-10-06 14:00:15.961135100 -0700
[email protected]@ -191,4 +191,8 @@
+ extern void registers_changed (void);
+ extern void registers_changed_ptid (ptid_t);
+ 
++extern int set_regcache_from_corefile (struct regcache *regcache);
++extern int regcache_from_corefile (const struct regcache *regcache);
++
+ #endif /* REGCACHE_H */
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.sol-thread.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,11 @@
+--- gdb-7.6/gdb/sol-thread.c	2012-12-31 22:32:50.000000000 -0800
++++ gdb-7.6/gdb/sol-thread.c	2013-08-22 12:03:52.780558508 -0700
[email protected]@ -1224,7 +1224,7 @@
+ 
+   init_sol_thread_ops ();
+ 
+-  dlhandle = dlopen ("libthread_db.so.1", RTLD_NOW);
++  dlhandle = dlopen ("libthread_db.so.1", RTLD_LAZY|RTLD_GLOBAL);
+   if (!dlhandle)
+     goto die;
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.sol2-core-regset.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,150 @@
+--- /dev/null	2013-10-06 14:14:47.000000000 -0700
++++ gdb-7.6/gdb/sol2-core-regset.c	2013-10-06 13:55:51.348498600 -0700
[email protected]@ -0,0 +1,147 @@
++/* Machine dependent GDB support for core files on Solaris using "regsets".
++
++   Copyright (C) 2013 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 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/>.  */
++
++/* This file is used by Solaris core dumps. The Solaris /proc filesystem
++ * will yield different sizes for prgregset_t prfpregset_t depending
++ * on sizeof(void*). We handle these differences in this Solaris-specific
++ * core-regset.c file, as opposed to imposing all these Solaris particulars
++ * on everyone else.
++ */
++
++#include "defs.h"
++#include "command.h"
++#include "gdbcore.h"
++#include "gdbarch.h"
++#include "inferior.h"
++#include "target.h"
++#include "regcache.h"
++#include "elf-bfd.h"
++
++#include <fcntl.h>
++#include <errno.h>
++#include "gdb_string.h"
++#include <time.h>
++#ifdef HAVE_SYS_PROCFS_H
++#include <sys/procfs.h>
++#endif
++
++/* Prototypes for supply_gregset etc.  */
++#include "gregset.h"
++
++/* Provide registers to GDB from a core file.
++
++   CORE_REG_SECT points to an array of bytes, which are the contents
++   of a `note' from a core file which BFD thinks might contain
++   register contents.  CORE_REG_SIZE is its size.
++
++   WHICH says which register set corelow suspects this is:
++     0 --- the general-purpose register set, in gregset_t format
++     2 --- the floating-point register set, in fpregset_t format
++
++   REG_ADDR is ignored.  */
++
++static void
++fetch_core_registers (struct regcache *regcache,
++		      char *core_reg_sect,
++		      unsigned core_reg_size,
++		      int which,
++		      CORE_ADDR reg_addr)
++{
++  gdb_gregset_t gregset;
++  gdb_fpregset_t fpregset;
++  gdb_gregset_t *gregset_p = &gregset;
++  gdb_fpregset_t *fpregset_p = &fpregset;
++  /* use default sizes on 64-bit Solaris */
++  size_t gregset_size = sizeof (gregset);
++  size_t fpregset_size = sizeof (fpregset);
++  int pointer_size;
++  struct gdbarch *gdbarch = get_regcache_arch (regcache);
++  enum bfd_endian byte_order;
++
++  if (gdbarch_osabi (gdbarch) == GDB_OSABI_SOLARIS)
++  {
++    set_regcache_from_corefile (regcache);
++    byte_order = gdbarch_byte_order (gdbarch);
++    pointer_size = gdbarch_ptr_bit (gdbarch);
++
++    if ((byte_order == BFD_ENDIAN_BIG) && (pointer_size == 32))
++    {
++      gregset_size = 152;
++      fpregset_size = 144;
++    }
++    else if ((byte_order == BFD_ENDIAN_LITTLE) && (pointer_size == 32))
++    {
++      gregset_size = 76;
++      fpregset_size = 380;
++    }
++  }
++
++  switch (which)
++    {
++    case 0:
++      if (core_reg_size != gregset_size)
++	warning (_("Wrong size gregset in core file."));
++      else
++	{
++	  memcpy (&gregset, core_reg_sect, gregset_size);
++	  supply_gregset (regcache, (const gdb_gregset_t *) gregset_p);
++	}
++      break;
++
++    case 2:
++      if (core_reg_size != fpregset_size)
++	warning (_("Wrong size fpregset in core file."));
++      else
++	{
++	  memcpy (&fpregset, core_reg_sect, fpregset_size);
++	  if (gdbarch_fp0_regnum (get_regcache_arch (regcache)) >= 0)
++	    supply_fpregset (regcache,
++			     (const gdb_fpregset_t *) fpregset_p);
++	}
++      break;
++
++    default:
++      /* We've covered all the kinds of registers we know about here,
++         so this must be something we wouldn't know what to do with
++         anyway.  Just ignore it.  */
++      break;
++    }
++}
++
++
++/* Register that we are able to handle ELF core 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 */
++};
++
++/* Provide a prototype to silence -Wmissing-prototypes.  */
++extern void _initialize_core_regset (void);
++
++void
++_initialize_core_regset (void)
++{
++  deprecated_add_core_fns (&regset_core_fns);
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.sol2.mh.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,11 @@
+--- gdb-7.6/gdb/config/sparc/sol2.mh	2012-01-10 08:30:49.000000000 -0800
++++ gdb-7.6/gdb/config/sparc/sol2.mh	2013-10-05 16:57:25.851694100 -0700
[email protected]@ -1,5 +1,5 @@
+ # Host: Solaris SPARC & UltraSPARC
+ NAT_FILE= nm-sol2.h
+-NATDEPFILES= sparc-sol2-nat.o \
+-	core-regset.o fork-child.o \
+-	procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o
++NATDEPFILES= sol2-core-regset.o sparc-sol2-nat.o \
++	fork-child.o procfs.o proc-api.o proc-events.o \
++        proc-flags.o proc-why.o
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.gdb.sparc-sol2-nat.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,118 @@
+--- gdb-7.6/gdb/sparc-sol2-nat.c	2012-12-31 22:32:51.000000000 -0800
++++ gdb-7.6/gdb/sparc-sol2-nat.c	2013-10-06 14:09:16.962861100 -0700
[email protected]@ -24,12 +24,10 @@
+ #include "gregset.h"
+ 
+ #include "sparc-tdep.h"
++#include "sparc64-tdep.h"
+ #include "target.h"
+-#include "procfs.h"
+ 
+-/* This file provids the (temporary) glue between the Solaris SPARC
+-   target dependent code and the machine independent SVR4 /proc
+-   support.  */
++#include "procfs.h"
+ 
+ /* Solaris 7 (Solaris 2.7, SunOS 5.7) and up support two process data
+    models, the traditional 32-bit data model (ILP32) and the 64-bit
[email protected]@ -48,54 +46,67 @@
+    Note that a 32-bit GDB won't be able to debug a 64-bit target
+    process using /proc on Solaris.  */
+ 
+-#if (defined (__arch64__) || \
+-     (defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64)))
+-
+-#include "sparc64-tdep.h"
+-
+-#define sparc_supply_gregset sparc64_supply_gregset
+-#define sparc_supply_fpregset sparc64_supply_fpregset
+-#define sparc_collect_gregset sparc64_collect_gregset
+-#define sparc_collect_fpregset sparc64_collect_fpregset
+-
+-#define sparc_sol2_gregset sparc64_sol2_gregset
+-#define sparc_sol2_fpregset sparc64_sol2_fpregset
+-
+-#else
+-
+-#define sparc_supply_gregset sparc32_supply_gregset
+-#define sparc_supply_fpregset sparc32_supply_fpregset
+-#define sparc_collect_gregset sparc32_collect_gregset
+-#define sparc_collect_fpregset sparc32_collect_fpregset
+-
+-#define sparc_sol2_gregset sparc32_sol2_gregset
+-#define sparc_sol2_fpregset sparc32_sol2_fpregset
+-
+-#endif
++static int from_corefile = -1;
+ 
+ void
+ supply_gregset (struct regcache *regcache, const prgregset_t *gregs)
+ {
+-  sparc_supply_gregset (&sparc_sol2_gregset, regcache, -1, gregs);
++  struct gdbarch *gdbarch = get_regcache_arch (regcache);
++  int pointer_size = gdbarch_ptr_bit (gdbarch);
++
++  if (from_corefile == -1)
++    from_corefile = regcache_from_corefile (regcache);
++
++  if ((pointer_size == 32) && (from_corefile == 1))
++    sparc32_supply_gregset (&sparc32_sol2_gregset, regcache, -1, gregs);
++  else
++    sparc64_supply_gregset (&sparc64_sol2_gregset, regcache, -1, gregs);
+ }
+ 
+ void
+ supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs)
+ {
+-  sparc_supply_fpregset (&sparc_sol2_fpregset, regcache, -1, fpregs);
++  struct gdbarch *gdbarch = get_regcache_arch (regcache);
++  int pointer_size = gdbarch_ptr_bit (gdbarch);
++
++  if (from_corefile == -1)
++    from_corefile = regcache_from_corefile (regcache);
++
++  if ((pointer_size == 32) && (from_corefile == 1))
++    sparc32_supply_fpregset (&sparc32_sol2_fpregset, regcache, -1, fpregs);
++  else
++    sparc64_supply_fpregset (&sparc64_sol2_fpregset, regcache, -1, fpregs);
+ }
+ 
+ void
+ fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum)
+ {
+-  sparc_collect_gregset (&sparc_sol2_gregset, regcache, regnum, gregs);
++  struct gdbarch *gdbarch = get_regcache_arch (regcache);
++  int pointer_size = gdbarch_ptr_bit (gdbarch);
++
++  if (from_corefile == -1)
++    from_corefile = regcache_from_corefile (regcache);
++
++  if ((pointer_size == 32) && (from_corefile == 1))
++    sparc32_collect_gregset (&sparc32_sol2_gregset, regcache, regnum, gregs);
++  else
++    sparc64_collect_gregset (&sparc64_sol2_gregset, regcache, regnum, gregs);
+ }
+ 
+ void
+ fill_fpregset (const struct regcache *regcache,
+ 	       prfpregset_t *fpregs, int regnum)
+ {
+-  sparc_collect_fpregset (&sparc_sol2_fpregset, regcache, regnum, fpregs);
++  struct gdbarch *gdbarch = get_regcache_arch (regcache);
++  int pointer_size = gdbarch_ptr_bit (gdbarch);
++
++  if (from_corefile == -1)
++    from_corefile = regcache_from_corefile (regcache);
++
++  if ((pointer_size == 32) && (from_corefile == 1))
++    sparc32_collect_fpregset (&sparc32_sol2_fpregset, regcache, regnum, fpregs);
++  else
++    sparc64_collect_fpregset (&sparc64_sol2_fpregset, regcache, regnum, fpregs);
+ }
+ 
+ /* Provide a prototype to silence -Wmissing-prototypes.  */
[email protected]@ -112,3 +123,4 @@
+ #endif
+   add_target (t);
+ }
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.i386-32bit-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,15 @@
+# XML representation of the Solaris 32-bit Intel %eax register.
+--- /dev/null	2013-07-16 10:53:25.000000000 -0700
++++ gdb-7.6/gdb/features/i386/32bit-solaris.xml	2013-07-16 14:11:04.860289900 -0700
[email protected]@ -0,0 +1,11 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.i386.solaris">
++  <reg name="orig_eax" bitsize="32" type="int" regnum="41"/>
++</feature>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.i386-64bit-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,15 @@
+# XML representation of 64-bit Solaris AMD64 %rax register.
+--- /dev/null	2013-07-16 10:53:25.000000000 -0700
++++ gdb-7.6/gdb/features/i386/64bit-solaris.xml	2013-07-16 14:11:26.691274600 -0700
[email protected]@ -0,0 +1,11 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
++
++     Copying and distribution of this file, with or without modification,
++     are permitted in any medium without royalty provided the copyright
++     notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.i386.solaris">
++  <reg name="orig_rax" bitsize="64" type="int" regnum="57"/>
++</feature>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.include.elf.common.h.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,32 @@
+--- gdb-7.6/include/elf/common.h	2013-03-08 09:13:31.000000000 -0800
++++ gdb-7.6/include/elf/common.h	2013-10-06 11:41:07.131152600 -0700
[email protected]@ -593,6 +593,29 @@
+ #define NT_OPENBSD_WCOOKIE	23
+ 
+ 
++/* Note segments for core files on Solaris systems.  Note name
++   must start with "CORE".  */
++#define SOLARIS_NT_PRSTATUS    1
++#define SOLARIS_NT_PRFPREG     2
++#define SOLARIS_NT_PRPSINFO    3
++#define SOLARIS_NT_PRXREG      4
++#define SOLARIS_NT_PLATFORM    5
++#define SOLARIS_NT_AUXV        6
++#define SOLARIS_NT_GWINDOWS    7
++#define SOLARIS_NT_ASRS        8
++#define SOLARIS_NT_LDT         9
++#define SOLARIS_NT_PSTATUS    10
++#define SOLARIS_NT_PSINFO     13
++#define SOLARIS_NT_PRCRED     14
++#define SOLARIS_NT_UTSNAME    15
++#define SOLARIS_NT_LWPSTATUS  16
++#define SOLARIS_NT_LWPSINFO   17
++#define SOLARIS_NT_PRPRIV     18
++#define SOLARIS_NT_PRPRIVINFO 19
++#define SOLARIS_NT_CONTENT    20
++#define SOLARIS_NT_ZONENAME   21
++#define SOLARIS_NT_PRCPUXREG  22
++
+ /* Note segments for core files on SPU systems.  Note name
+    must start with "SPU/".  */
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.procfs.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,67 @@
+--- gdb-7.6/gdb/procfs.c	2012-12-31 22:32:49.000000000 -0800
++++ gdb-7.6/gdb/procfs.c	2013-08-15 00:05:56.550245791 -0700
[email protected]@ -159,20 +159,33 @@
+ 		   gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+ {
+   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
++  const int sizeof_auxv_field = sizeof (void *);
+   gdb_byte *ptr = *readptr;
+ 
+   if (endptr == ptr)
+     return 0;
+ 
+-  if (endptr - ptr < 8 * 2)
++  if (endptr - ptr < sizeof_auxv_field * 2)
+     return -1;
+ 
+-  *typep = extract_unsigned_integer (ptr, 4, byte_order);
+-  ptr += 8;
++  /*
++   * On 64 bit Solaris SPARC, i.e. big endian, the type will be in
++   * the left 4 bytes for 32 bit processes and the right 4 bytes
++   * for 64 bit processes.  The padding is 0.
++   */
++  if ((sizeof_auxv_field == 8) && (byte_order == BFD_ENDIAN_BIG)) {
++    if (*typep == 0)
++      *typep = extract_unsigned_integer (ptr + 4, 4, byte_order);
++  } else
++    *typep = extract_unsigned_integer (ptr, sizeof_auxv_field , byte_order);
++
++  ptr += sizeof_auxv_field;
++
+   /* The size of data is always 64-bit.  If the application is 32-bit,
+      it will be zero extended, as expected.  */
+-  *valp = extract_unsigned_integer (ptr, 8, byte_order);
+-  ptr += 8;
++
++  *valp = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
++  ptr += sizeof_auxv_field;
+ 
+   *readptr = ptr;
+   return 1;
[email protected]@ -347,7 +360,7 @@
+ #  define AS_PROC_NAME_FMT     "/proc/%d/as"
+ #  define MAP_PROC_NAME_FMT    "/proc/%d/map"
+ #  define STATUS_PROC_NAME_FMT "/proc/%d/status"
+-#  define MAX_PROC_NAME_SIZE sizeof("/proc/99999/lwp/8096/lstatus")
++#  define MAX_PROC_NAME_SIZE sizeof("/proc/012345679/lwp/0123456789/lstatus")
+ # endif
+ /* the name of the proc status struct depends on the implementation */
+ typedef pstatus_t   gdb_prstatus_t;
[email protected]@ -355,11 +368,11 @@
+ #else /* ! NEW_PROC_API */
+ /* format strings for /proc paths */
+ # ifndef CTL_PROC_NAME_FMT
+-#  define MAIN_PROC_NAME_FMT   "/proc/%05d"
+-#  define CTL_PROC_NAME_FMT    "/proc/%05d"
+-#  define AS_PROC_NAME_FMT     "/proc/%05d"
+-#  define MAP_PROC_NAME_FMT    "/proc/%05d"
+-#  define STATUS_PROC_NAME_FMT "/proc/%05d"
++#  define MAIN_PROC_NAME_FMT   "/proc/%06d"
++#  define CTL_PROC_NAME_FMT    "/proc/%06d"
++#  define AS_PROC_NAME_FMT     "/proc/%06d"
++#  define MAP_PROC_NAME_FMT    "/proc/%06d"
++#  define STATUS_PROC_NAME_FMT "/proc/%06d"
+ #  define MAX_PROC_NAME_SIZE sizeof("/proc/ttttppppp")
+ # endif
+ /* The name of the proc status struct depends on the implementation.  */
--- a/components/gdb/patches/gdb.solib-svr4.patch	Wed Nov 06 14:12:13 2013 -0800
+++ b/components/gdb/patches/gdb.solib-svr4.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -1,15 +1,13 @@
---- gdb-6.8/gdb/solib-svr4.c.orig	Fri Jul 10 12:25:23 2009
-+++ gdb-6.8/gdb/solib-svr4.c	Fri Jul 10 12:25:34 2009
[email protected]@ -1649,6 +1649,12 @@
-   if (strcmp (gdb->so_original_name, "/usr/lib/ld.so.1") == 0
-       && strcmp (inferior->so_original_name, "/lib/ld.so.1") == 0)
+--- gdb-7.6/gdb/solib-svr4.c	2013-01-31 05:52:52.000000000 -0800
++++ gdb-7.6/gdb/solib-svr4.c	2013-07-10 23:32:20.908310500 -0700
[email protected]@ -125,6 +125,10 @@
+       && strcmp (inferior_so_name, "/lib/ld.so.1") == 0)
      return 1;
-+  if (strcmp (gdb->so_original_name, "/usr/lib/amd64/ld.so.1") == 0
-+      && strcmp (inferior->so_original_name, "/lib/amd64/ld.so.1") == 0)
+ 
++  if (strcmp (gdb_so_name, "/usr/lib/amd64/ld.so.1") == 0
++      && strcmp (inferior_so_name, "/lib/amd64/ld.so.1") == 0)
 +    return 1;
-+  if (strcmp (gdb->so_original_name, "/usr/lib/sparcv9/ld.so.1") == 0
-+      && strcmp (inferior->so_original_name, "/lib/sparcv9/ld.so.1") == 0)
-+    return 1;
- 
-   return 0;
- }
++
+   /* Similarly, we observed the same issue with sparc64, but with
+      different locations.  */
+   if (strcmp (gdb_so_name, "/usr/lib/sparcv9/ld.so.1") == 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.syscalls.amd64-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,245 @@
+# XML representation of AMD64 64-bit Solaris syscalls.
+--- /dev/null	2013-07-16 15:01:41.000000000 -0700
++++ gdb-7.6/gdb/syscalls/amd64-solaris.xml	2013-07-16 15:26:27.354189200 -0700
[email protected]@ -0,0 +1,241 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++
++    Copying and distribution of this file, with or without modification,
++    are permitted in any medium without royalty provided the copyright
++    notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
++
++<!-- This file was generated using the following file:
++
++    /usr/include/sys/sycalls.h
++
++    The file mentioned above belongs to the Solaris Kernel.  -->
++
++<syscalls_info>
++  <syscall name="syscall" number="0"/>
++  <syscall name="exit" number="1"/>
++  <syscall name="read" number="3"/>
++  <syscall name="write" number="4"/>
++  <syscall name="close" number="6"/>
++  <syscall name="linkat" number="7"/>
++  <syscall name="symlinkat" number="11"/>
++  <syscall name="chdir" number="12"/>
++  <syscall name="time" number="13"/>
++  <syscall name="brk" number="17"/>
++  <syscall name="lseek" number="19"/>
++  <syscall name="getpid" number="20"/>
++  <syscall name="mount" number="21"/>
++  <syscall name="readlinkat" number="22"/>
++  <syscall name="setuid" number="23"/>
++  <syscall name="getuid" number="24"/>
++  <syscall name="stime" number="25"/>
++  <syscall name="pcsample" number="26"/>
++  <syscall name="alarm" number="27"/>
++  <syscall name="pause" number="29"/>
++  <syscall name="frealpathat" number="30"/>
++  <syscall name="stty" number="31"/>
++  <syscall name="gtty" number="32"/>
++  <syscall name="nice" number="34"/>
++  <syscall name="statfs" number="35"/>
++  <syscall name="sync" number="36"/>
++  <syscall name="kill" number="37"/>
++  <syscall name="fstatfs" number="38"/>
++  <syscall name="pgrpsys" number="39"/>
++  <syscall name="uucopystr" number="40"/>
++  <syscall name="pipe" number="42"/>
++  <syscall name="times" number="43"/>
++  <syscall name="profil" number="44"/>
++  <syscall name="faccessat" number="45"/>
++  <syscall name="setgid" number="46"/>
++  <syscall name="getgid" number="47"/>
++  <syscall name="mknodat" number="48"/>
++  <syscall name="msgsys" number="49"/>
++  <syscall name="sysi86" number="50"/>
++  <syscall name="acct" number="51"/>
++  <syscall name="shmsys" number="52"/>
++  <syscall name="semsys" number="53"/>
++  <syscall name="ioctl" number="54"/>
++  <syscall name="uadmin" number="55"/>
++  <syscall name="fchownat" number="56"/>
++  <syscall name="utssys" number="57"/>
++  <syscall name="fdsync" number="58"/>
++  <syscall name="execve" number="59"/>
++  <syscall name="umask" number="60"/>
++  <syscall name="chroot" number="61"/>
++  <syscall name="fcntl" number="62"/>
++  <syscall name="ulimit" number="63"/>
++  <syscall name="renameat" number="64"/>
++  <syscall name="fstatat" number="66"/>
++  <syscall name="fstatat64" number="67"/>
++  <syscall name="openat" number="68"/>
++  <syscall name="openat64" number="69"/>
++  <syscall name="tasksys" number="70"/>
++  <syscall name="acctctl" number="71"/>
++  <syscall name="exacctsys" number="72"/>
++  <syscall name="getpagesizes" number="73"/>
++  <syscall name="rctlsys" number="74"/>
++  <syscall name="sidsys" number="75"/>
++  <syscall name="unlinkat" number="76"/>
++  <syscall name="lwp_park" number="77"/>
++  <syscall name="sendfilev" number="78"/>
++  <syscall name="lwp_name" number="79"/>
++  <syscall name="getdents" number="81"/>
++  <syscall name="privsys" number="82"/>
++  <syscall name="ucredsys" number="83"/>
++  <syscall name="sysfs" number="84"/>
++  <syscall name="getmsg" number="85"/>
++  <syscall name="putmsg" number="86"/>
++  <syscall name="setgroups" number="91"/>
++  <syscall name="getgroups" number="92"/>
++  <syscall name="sigprocmask" number="95"/>
++  <syscall name="sigsuspend" number="96"/>
++  <syscall name="sigaltstack" number="97"/>
++  <syscall name="sigaction" number="98"/>
++  <syscall name="sigpending" number="99"/>
++  <syscall name="context" number="100"/>
++  <syscall name="fchmodat" number="101"/>
++  <syscall name="mkdirat" number="102"/>
++  <syscall name="statvfs" number="103"/>
++  <syscall name="fstatvfs" number="104"/>
++  <syscall name="getloadavg" number="105"/>
++  <syscall name="nfssys" number="106"/>
++  <syscall name="waitid" number="107"/>
++  <syscall name="waitsys" number="107"/>
++  <syscall name="sigsendsys" number="108"/>
++  <syscall name="hrtsys" number="109"/>
++  <syscall name="utimensat" number="110"/>
++  <syscall name="sigresend" number="111"/>
++  <syscall name="priocntlsys" number="112"/>
++  <syscall name="pathconf" number="113"/>
++  <syscall name="mincore" number="114"/>
++  <syscall name="mmap" number="115"/>
++  <syscall name="mprotect" number="116"/>
++  <syscall name="munmap" number="117"/>
++  <syscall name="fpathconf" number="118"/>
++  <syscall name="vfork" number="119"/>
++  <syscall name="fchdir" number="120"/>
++  <syscall name="readv" number="121"/>
++  <syscall name="writev" number="122"/>
++  <syscall name="mmapobj" number="127"/>
++  <syscall name="setrlimit" number="128"/>
++  <syscall name="getrlimit" number="129"/>
++  <syscall name="memcntl" number="131"/>
++  <syscall name="getpmsg" number="132"/>
++  <syscall name="putpmsg" number="133"/>
++  <syscall name="uname" number="135"/>
++  <syscall name="setegid" number="136"/>
++  <syscall name="sysconfig" number="137"/>
++  <syscall name="adjtime" number="138"/>
++  <syscall name="systeminfo" number="139"/>
++  <syscall name="sharefs" number="140"/>
++  <syscall name="seteuid" number="141"/>
++  <syscall name="forksys" number="142"/>
++  <syscall name="sigtimedwait" number="144"/>
++  <syscall name="lwp_info" number="145"/>
++  <syscall name="yield" number="146"/>
++  <syscall name="secsys" number="147"/>
++  <syscall name="lwp_sema_post" number="148"/>
++  <syscall name="lwp_sema_trywait" number="149"/>
++  <syscall name="lwp_detach" number="150"/>
++  <syscall name="corectl" number="151"/>
++  <syscall name="modctl" number="152"/>
++  <syscall name="fchroot" number="153"/>
++  <syscall name="vhangup" number="155"/>
++  <syscall name="gettimeofday" number="156"/>
++  <syscall name="getitimer" number="157"/>
++  <syscall name="setitimer" number="158"/>
++  <syscall name="lwp_create" number="159"/>
++  <syscall name="lwp_exit" number="160"/>
++  <syscall name="lwp_suspend" number="161"/>
++  <syscall name="lwp_continue" number="162"/>
++  <syscall name="lwp_sigqueue" number="163"/>
++  <syscall name="lwp_self" number="164"/>
++  <syscall name="lwp_sigmask" number="165"/>
++  <syscall name="lwp_private" number="166"/>
++  <syscall name="lwp_wait" number="167"/>
++  <syscall name="lwp_mutex_wakeup" number="168"/>
++  <syscall name="lwp_cond_wait" number="170"/>
++  <syscall name="lwp_cond_signal" number="171"/>
++  <syscall name="lwp_cond_broadcast" number="172"/>
++  <syscall name="pread" number="173"/>
++  <syscall name="pwrite" number="174"/>
++  <syscall name="llseek" number="175"/>
++  <syscall name="inst_sync" number="176"/>
++  <syscall name="brand" number="177"/>
++  <syscall name="kaio" number="178"/>
++  <syscall name="cpc" number="179"/>
++  <syscall name="lgrpsys" number="180"/>
++  <syscall name="meminfosys" number="180"/>
++  <syscall name="rusagesys" number="181"/>
++  <syscall name="port" number="182"/>
++  <syscall name="pollsys" number="183"/>
++  <syscall name="labelsys" number="184"/>
++  <syscall name="acl" number="185"/>
++  <syscall name="auditsys" number="186"/>
++  <syscall name="processor_sys" number="187"/>
++  <syscall name="p_online" number="189"/>
++  <syscall name="sigqueue" number="190"/>
++  <syscall name="clock_gettime" number="191"/>
++  <syscall name="clock_settime" number="192"/>
++  <syscall name="clock_getres" number="193"/>
++  <syscall name="timer_create" number="194"/>
++  <syscall name="timer_delete" number="195"/>
++  <syscall name="timer_settime" number="196"/>
++  <syscall name="timer_gettime" number="197"/>
++  <syscall name="timer_getoverrun" number="198"/>
++  <syscall name="nanosleep" number="199"/>
++  <syscall name="facl" number="200"/>
++  <syscall name="door" number="201"/>
++  <syscall name="setreuid" number="202"/>
++  <syscall name="setregid" number="203"/>
++  <syscall name="install_utrap" number="204"/>
++  <syscall name="signotify" number="205"/>
++  <syscall name="schedctl" number="206"/>
++  <syscall name="pset" number="207"/>
++  <syscall name="sparc_utrap_install" number="208"/>
++  <syscall name="resolvepath" number="209"/>
++  <syscall name="lwp_mutex_timedlock" number="210"/>
++  <syscall name="lwp_sema_timedwait" number="211"/>
++  <syscall name="lwp_rwlock_sys" number="212"/>
++  <syscall name="getdents64" number="213"/>
++  <syscall name="mmap64" number="214"/>
++  <syscall name="statvfs64" number="218"/>
++  <syscall name="fstatvfs64" number="219"/>
++  <syscall name="setrlimit64" number="220"/>
++  <syscall name="getrlimit64" number="221"/>
++  <syscall name="pread64" number="222"/>
++  <syscall name="pwrite64" number="223"/>
++  <syscall name="rpcsys" number="226"/>
++  <syscall name="zone" number="227"/>
++  <syscall name="autofssys" number="228"/>
++  <syscall name="getcwd" number="229"/>
++  <syscall name="so_socket" number="230"/>
++  <syscall name="so_socketpair" number="231"/>
++  <syscall name="bind" number="232"/>
++  <syscall name="listen" number="233"/>
++  <syscall name="accept" number="234"/>
++  <syscall name="connect" number="235"/>
++  <syscall name="shutdown" number="236"/>
++  <syscall name="recv" number="237"/>
++  <syscall name="recvfrom" number="238"/>
++  <syscall name="recvmsg" number="239"/>
++  <syscall name="send" number="240"/>
++  <syscall name="sendmsg" number="241"/>
++  <syscall name="sendto" number="242"/>
++  <syscall name="getpeername" number="243"/>
++  <syscall name="getsockname" number="244"/>
++  <syscall name="getsockopt" number="245"/>
++  <syscall name="setsockopt" number="246"/>
++  <syscall name="sockconfig" number="247"/>
++  <syscall name="ntp_gettime" number="248"/>
++  <syscall name="ntp_adjtime" number="249"/>
++  <syscall name="lwp_mutex_unlock" number="250"/>
++  <syscall name="lwp_mutex_trylock" number="251"/>
++  <syscall name="lwp_mutex_register" number="252"/>
++  <syscall name="cladm" number="253"/>
++  <syscall name="uucopy" number="254"/>
++  <syscall name="umount2" number="255"/>
++</syscalls_info>
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.syscalls.i386-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,245 @@
+# XML representation of 32-bit Intel Solaris syscalls.
+--- /dev/null	2013-07-16 15:01:41.000000000 -0700
++++ gdb-7.6/gdb/syscalls/i386-solaris.xml	2013-07-16 15:26:21.515307900 -0700
[email protected]@ -0,0 +1,241 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++
++    Copying and distribution of this file, with or without modification,
++    are permitted in any medium without royalty provided the copyright
++    notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
++
++<!-- This file was generated using the following file:
++
++    /usr/include/sys/sycalls.h
++
++    The file mentioned above belongs to the Solaris Kernel.  -->
++
++<syscalls_info>
++  <syscall name="syscall" number="0"/>
++  <syscall name="exit" number="1"/>
++  <syscall name="read" number="3"/>
++  <syscall name="write" number="4"/>
++  <syscall name="close" number="6"/>
++  <syscall name="linkat" number="7"/>
++  <syscall name="symlinkat" number="11"/>
++  <syscall name="chdir" number="12"/>
++  <syscall name="time" number="13"/>
++  <syscall name="brk" number="17"/>
++  <syscall name="lseek" number="19"/>
++  <syscall name="getpid" number="20"/>
++  <syscall name="mount" number="21"/>
++  <syscall name="readlinkat" number="22"/>
++  <syscall name="setuid" number="23"/>
++  <syscall name="getuid" number="24"/>
++  <syscall name="stime" number="25"/>
++  <syscall name="pcsample" number="26"/>
++  <syscall name="alarm" number="27"/>
++  <syscall name="pause" number="29"/>
++  <syscall name="frealpathat" number="30"/>
++  <syscall name="stty" number="31"/>
++  <syscall name="gtty" number="32"/>
++  <syscall name="nice" number="34"/>
++  <syscall name="statfs" number="35"/>
++  <syscall name="sync" number="36"/>
++  <syscall name="kill" number="37"/>
++  <syscall name="fstatfs" number="38"/>
++  <syscall name="pgrpsys" number="39"/>
++  <syscall name="uucopystr" number="40"/>
++  <syscall name="pipe" number="42"/>
++  <syscall name="times" number="43"/>
++  <syscall name="profil" number="44"/>
++  <syscall name="faccessat" number="45"/>
++  <syscall name="setgid" number="46"/>
++  <syscall name="getgid" number="47"/>
++  <syscall name="mknodat" number="48"/>
++  <syscall name="msgsys" number="49"/>
++  <syscall name="sysi86" number="50"/>
++  <syscall name="acct" number="51"/>
++  <syscall name="shmsys" number="52"/>
++  <syscall name="semsys" number="53"/>
++  <syscall name="ioctl" number="54"/>
++  <syscall name="uadmin" number="55"/>
++  <syscall name="fchownat" number="56"/>
++  <syscall name="utssys" number="57"/>
++  <syscall name="fdsync" number="58"/>
++  <syscall name="execve" number="59"/>
++  <syscall name="umask" number="60"/>
++  <syscall name="chroot" number="61"/>
++  <syscall name="fcntl" number="62"/>
++  <syscall name="ulimit" number="63"/>
++  <syscall name="renameat" number="64"/>
++  <syscall name="fstatat" number="66"/>
++  <syscall name="fstatat64" number="67"/>
++  <syscall name="openat" number="68"/>
++  <syscall name="openat64" number="69"/>
++  <syscall name="tasksys" number="70"/>
++  <syscall name="acctctl" number="71"/>
++  <syscall name="exacctsys" number="72"/>
++  <syscall name="getpagesizes" number="73"/>
++  <syscall name="rctlsys" number="74"/>
++  <syscall name="sidsys" number="75"/>
++  <syscall name="unlinkat" number="76"/>
++  <syscall name="lwp_park" number="77"/>
++  <syscall name="sendfilev" number="78"/>
++  <syscall name="lwp_name" number="79"/>
++  <syscall name="getdents" number="81"/>
++  <syscall name="privsys" number="82"/>
++  <syscall name="ucredsys" number="83"/>
++  <syscall name="sysfs" number="84"/>
++  <syscall name="getmsg" number="85"/>
++  <syscall name="putmsg" number="86"/>
++  <syscall name="setgroups" number="91"/>
++  <syscall name="getgroups" number="92"/>
++  <syscall name="sigprocmask" number="95"/>
++  <syscall name="sigsuspend" number="96"/>
++  <syscall name="sigaltstack" number="97"/>
++  <syscall name="sigaction" number="98"/>
++  <syscall name="sigpending" number="99"/>
++  <syscall name="context" number="100"/>
++  <syscall name="fchmodat" number="101"/>
++  <syscall name="mkdirat" number="102"/>
++  <syscall name="statvfs" number="103"/>
++  <syscall name="fstatvfs" number="104"/>
++  <syscall name="getloadavg" number="105"/>
++  <syscall name="nfssys" number="106"/>
++  <syscall name="waitid" number="107"/>
++  <syscall name="waitsys" number="107"/>
++  <syscall name="sigsendsys" number="108"/>
++  <syscall name="hrtsys" number="109"/>
++  <syscall name="utimensat" number="110"/>
++  <syscall name="sigresend" number="111"/>
++  <syscall name="priocntlsys" number="112"/>
++  <syscall name="pathconf" number="113"/>
++  <syscall name="mincore" number="114"/>
++  <syscall name="mmap" number="115"/>
++  <syscall name="mprotect" number="116"/>
++  <syscall name="munmap" number="117"/>
++  <syscall name="fpathconf" number="118"/>
++  <syscall name="vfork" number="119"/>
++  <syscall name="fchdir" number="120"/>
++  <syscall name="readv" number="121"/>
++  <syscall name="writev" number="122"/>
++  <syscall name="mmapobj" number="127"/>
++  <syscall name="setrlimit" number="128"/>
++  <syscall name="getrlimit" number="129"/>
++  <syscall name="memcntl" number="131"/>
++  <syscall name="getpmsg" number="132"/>
++  <syscall name="putpmsg" number="133"/>
++  <syscall name="uname" number="135"/>
++  <syscall name="setegid" number="136"/>
++  <syscall name="sysconfig" number="137"/>
++  <syscall name="adjtime" number="138"/>
++  <syscall name="systeminfo" number="139"/>
++  <syscall name="sharefs" number="140"/>
++  <syscall name="seteuid" number="141"/>
++  <syscall name="forksys" number="142"/>
++  <syscall name="sigtimedwait" number="144"/>
++  <syscall name="lwp_info" number="145"/>
++  <syscall name="yield" number="146"/>
++  <syscall name="secsys" number="147"/>
++  <syscall name="lwp_sema_post" number="148"/>
++  <syscall name="lwp_sema_trywait" number="149"/>
++  <syscall name="lwp_detach" number="150"/>
++  <syscall name="corectl" number="151"/>
++  <syscall name="modctl" number="152"/>
++  <syscall name="fchroot" number="153"/>
++  <syscall name="vhangup" number="155"/>
++  <syscall name="gettimeofday" number="156"/>
++  <syscall name="getitimer" number="157"/>
++  <syscall name="setitimer" number="158"/>
++  <syscall name="lwp_create" number="159"/>
++  <syscall name="lwp_exit" number="160"/>
++  <syscall name="lwp_suspend" number="161"/>
++  <syscall name="lwp_continue" number="162"/>
++  <syscall name="lwp_sigqueue" number="163"/>
++  <syscall name="lwp_self" number="164"/>
++  <syscall name="lwp_sigmask" number="165"/>
++  <syscall name="lwp_private" number="166"/>
++  <syscall name="lwp_wait" number="167"/>
++  <syscall name="lwp_mutex_wakeup" number="168"/>
++  <syscall name="lwp_cond_wait" number="170"/>
++  <syscall name="lwp_cond_signal" number="171"/>
++  <syscall name="lwp_cond_broadcast" number="172"/>
++  <syscall name="pread" number="173"/>
++  <syscall name="pwrite" number="174"/>
++  <syscall name="llseek" number="175"/>
++  <syscall name="inst_sync" number="176"/>
++  <syscall name="brand" number="177"/>
++  <syscall name="kaio" number="178"/>
++  <syscall name="cpc" number="179"/>
++  <syscall name="lgrpsys" number="180"/>
++  <syscall name="meminfosys" number="180"/>
++  <syscall name="rusagesys" number="181"/>
++  <syscall name="port" number="182"/>
++  <syscall name="pollsys" number="183"/>
++  <syscall name="labelsys" number="184"/>
++  <syscall name="acl" number="185"/>
++  <syscall name="auditsys" number="186"/>
++  <syscall name="processor_sys" number="187"/>
++  <syscall name="p_online" number="189"/>
++  <syscall name="sigqueue" number="190"/>
++  <syscall name="clock_gettime" number="191"/>
++  <syscall name="clock_settime" number="192"/>
++  <syscall name="clock_getres" number="193"/>
++  <syscall name="timer_create" number="194"/>
++  <syscall name="timer_delete" number="195"/>
++  <syscall name="timer_settime" number="196"/>
++  <syscall name="timer_gettime" number="197"/>
++  <syscall name="timer_getoverrun" number="198"/>
++  <syscall name="nanosleep" number="199"/>
++  <syscall name="facl" number="200"/>
++  <syscall name="door" number="201"/>
++  <syscall name="setreuid" number="202"/>
++  <syscall name="setregid" number="203"/>
++  <syscall name="install_utrap" number="204"/>
++  <syscall name="signotify" number="205"/>
++  <syscall name="schedctl" number="206"/>
++  <syscall name="pset" number="207"/>
++  <syscall name="sparc_utrap_install" number="208"/>
++  <syscall name="resolvepath" number="209"/>
++  <syscall name="lwp_mutex_timedlock" number="210"/>
++  <syscall name="lwp_sema_timedwait" number="211"/>
++  <syscall name="lwp_rwlock_sys" number="212"/>
++  <syscall name="getdents64" number="213"/>
++  <syscall name="mmap64" number="214"/>
++  <syscall name="statvfs64" number="218"/>
++  <syscall name="fstatvfs64" number="219"/>
++  <syscall name="setrlimit64" number="220"/>
++  <syscall name="getrlimit64" number="221"/>
++  <syscall name="pread64" number="222"/>
++  <syscall name="pwrite64" number="223"/>
++  <syscall name="rpcsys" number="226"/>
++  <syscall name="zone" number="227"/>
++  <syscall name="autofssys" number="228"/>
++  <syscall name="getcwd" number="229"/>
++  <syscall name="so_socket" number="230"/>
++  <syscall name="so_socketpair" number="231"/>
++  <syscall name="bind" number="232"/>
++  <syscall name="listen" number="233"/>
++  <syscall name="accept" number="234"/>
++  <syscall name="connect" number="235"/>
++  <syscall name="shutdown" number="236"/>
++  <syscall name="recv" number="237"/>
++  <syscall name="recvfrom" number="238"/>
++  <syscall name="recvmsg" number="239"/>
++  <syscall name="send" number="240"/>
++  <syscall name="sendmsg" number="241"/>
++  <syscall name="sendto" number="242"/>
++  <syscall name="getpeername" number="243"/>
++  <syscall name="getsockname" number="244"/>
++  <syscall name="getsockopt" number="245"/>
++  <syscall name="setsockopt" number="246"/>
++  <syscall name="sockconfig" number="247"/>
++  <syscall name="ntp_gettime" number="248"/>
++  <syscall name="ntp_adjtime" number="249"/>
++  <syscall name="lwp_mutex_unlock" number="250"/>
++  <syscall name="lwp_mutex_trylock" number="251"/>
++  <syscall name="lwp_mutex_register" number="252"/>
++  <syscall name="cladm" number="253"/>
++  <syscall name="uucopy" number="254"/>
++  <syscall name="umount2" number="255"/>
++</syscalls_info>
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.syscalls.sparc-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,245 @@
+# XML representation of 32-bit SPARC Solaris syscalls.
+--- /dev/null	2013-07-16 15:01:41.000000000 -0700
++++ gdb-7.6/gdb/syscalls/sparc-solaris.xml	2013-07-16 15:26:09.346081100 -0700
[email protected]@ -0,0 +1,241 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++
++    Copying and distribution of this file, with or without modification,
++    are permitted in any medium without royalty provided the copyright
++    notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
++
++<!-- This file was generated using the following file:
++
++    /usr/include/sys/sycalls.h
++
++    The file mentioned above belongs to the Solaris Kernel.  -->
++
++<syscalls_info>
++  <syscall name="syscall" number="0"/>
++  <syscall name="exit" number="1"/>
++  <syscall name="read" number="3"/>
++  <syscall name="write" number="4"/>
++  <syscall name="close" number="6"/>
++  <syscall name="linkat" number="7"/>
++  <syscall name="symlinkat" number="11"/>
++  <syscall name="chdir" number="12"/>
++  <syscall name="time" number="13"/>
++  <syscall name="brk" number="17"/>
++  <syscall name="lseek" number="19"/>
++  <syscall name="getpid" number="20"/>
++  <syscall name="mount" number="21"/>
++  <syscall name="readlinkat" number="22"/>
++  <syscall name="setuid" number="23"/>
++  <syscall name="getuid" number="24"/>
++  <syscall name="stime" number="25"/>
++  <syscall name="pcsample" number="26"/>
++  <syscall name="alarm" number="27"/>
++  <syscall name="pause" number="29"/>
++  <syscall name="frealpathat" number="30"/>
++  <syscall name="stty" number="31"/>
++  <syscall name="gtty" number="32"/>
++  <syscall name="nice" number="34"/>
++  <syscall name="statfs" number="35"/>
++  <syscall name="sync" number="36"/>
++  <syscall name="kill" number="37"/>
++  <syscall name="fstatfs" number="38"/>
++  <syscall name="pgrpsys" number="39"/>
++  <syscall name="uucopystr" number="40"/>
++  <syscall name="pipe" number="42"/>
++  <syscall name="times" number="43"/>
++  <syscall name="profil" number="44"/>
++  <syscall name="faccessat" number="45"/>
++  <syscall name="setgid" number="46"/>
++  <syscall name="getgid" number="47"/>
++  <syscall name="mknodat" number="48"/>
++  <syscall name="msgsys" number="49"/>
++  <syscall name="sysi86" number="50"/>
++  <syscall name="acct" number="51"/>
++  <syscall name="shmsys" number="52"/>
++  <syscall name="semsys" number="53"/>
++  <syscall name="ioctl" number="54"/>
++  <syscall name="uadmin" number="55"/>
++  <syscall name="fchownat" number="56"/>
++  <syscall name="utssys" number="57"/>
++  <syscall name="fdsync" number="58"/>
++  <syscall name="execve" number="59"/>
++  <syscall name="umask" number="60"/>
++  <syscall name="chroot" number="61"/>
++  <syscall name="fcntl" number="62"/>
++  <syscall name="ulimit" number="63"/>
++  <syscall name="renameat" number="64"/>
++  <syscall name="fstatat" number="66"/>
++  <syscall name="fstatat64" number="67"/>
++  <syscall name="openat" number="68"/>
++  <syscall name="openat64" number="69"/>
++  <syscall name="tasksys" number="70"/>
++  <syscall name="acctctl" number="71"/>
++  <syscall name="exacctsys" number="72"/>
++  <syscall name="getpagesizes" number="73"/>
++  <syscall name="rctlsys" number="74"/>
++  <syscall name="sidsys" number="75"/>
++  <syscall name="unlinkat" number="76"/>
++  <syscall name="lwp_park" number="77"/>
++  <syscall name="sendfilev" number="78"/>
++  <syscall name="lwp_name" number="79"/>
++  <syscall name="getdents" number="81"/>
++  <syscall name="privsys" number="82"/>
++  <syscall name="ucredsys" number="83"/>
++  <syscall name="sysfs" number="84"/>
++  <syscall name="getmsg" number="85"/>
++  <syscall name="putmsg" number="86"/>
++  <syscall name="setgroups" number="91"/>
++  <syscall name="getgroups" number="92"/>
++  <syscall name="sigprocmask" number="95"/>
++  <syscall name="sigsuspend" number="96"/>
++  <syscall name="sigaltstack" number="97"/>
++  <syscall name="sigaction" number="98"/>
++  <syscall name="sigpending" number="99"/>
++  <syscall name="context" number="100"/>
++  <syscall name="fchmodat" number="101"/>
++  <syscall name="mkdirat" number="102"/>
++  <syscall name="statvfs" number="103"/>
++  <syscall name="fstatvfs" number="104"/>
++  <syscall name="getloadavg" number="105"/>
++  <syscall name="nfssys" number="106"/>
++  <syscall name="waitid" number="107"/>
++  <syscall name="waitsys" number="107"/>
++  <syscall name="sigsendsys" number="108"/>
++  <syscall name="hrtsys" number="109"/>
++  <syscall name="utimensat" number="110"/>
++  <syscall name="sigresend" number="111"/>
++  <syscall name="priocntlsys" number="112"/>
++  <syscall name="pathconf" number="113"/>
++  <syscall name="mincore" number="114"/>
++  <syscall name="mmap" number="115"/>
++  <syscall name="mprotect" number="116"/>
++  <syscall name="munmap" number="117"/>
++  <syscall name="fpathconf" number="118"/>
++  <syscall name="vfork" number="119"/>
++  <syscall name="fchdir" number="120"/>
++  <syscall name="readv" number="121"/>
++  <syscall name="writev" number="122"/>
++  <syscall name="mmapobj" number="127"/>
++  <syscall name="setrlimit" number="128"/>
++  <syscall name="getrlimit" number="129"/>
++  <syscall name="memcntl" number="131"/>
++  <syscall name="getpmsg" number="132"/>
++  <syscall name="putpmsg" number="133"/>
++  <syscall name="uname" number="135"/>
++  <syscall name="setegid" number="136"/>
++  <syscall name="sysconfig" number="137"/>
++  <syscall name="adjtime" number="138"/>
++  <syscall name="systeminfo" number="139"/>
++  <syscall name="sharefs" number="140"/>
++  <syscall name="seteuid" number="141"/>
++  <syscall name="forksys" number="142"/>
++  <syscall name="sigtimedwait" number="144"/>
++  <syscall name="lwp_info" number="145"/>
++  <syscall name="yield" number="146"/>
++  <syscall name="secsys" number="147"/>
++  <syscall name="lwp_sema_post" number="148"/>
++  <syscall name="lwp_sema_trywait" number="149"/>
++  <syscall name="lwp_detach" number="150"/>
++  <syscall name="corectl" number="151"/>
++  <syscall name="modctl" number="152"/>
++  <syscall name="fchroot" number="153"/>
++  <syscall name="vhangup" number="155"/>
++  <syscall name="gettimeofday" number="156"/>
++  <syscall name="getitimer" number="157"/>
++  <syscall name="setitimer" number="158"/>
++  <syscall name="lwp_create" number="159"/>
++  <syscall name="lwp_exit" number="160"/>
++  <syscall name="lwp_suspend" number="161"/>
++  <syscall name="lwp_continue" number="162"/>
++  <syscall name="lwp_sigqueue" number="163"/>
++  <syscall name="lwp_self" number="164"/>
++  <syscall name="lwp_sigmask" number="165"/>
++  <syscall name="lwp_private" number="166"/>
++  <syscall name="lwp_wait" number="167"/>
++  <syscall name="lwp_mutex_wakeup" number="168"/>
++  <syscall name="lwp_cond_wait" number="170"/>
++  <syscall name="lwp_cond_signal" number="171"/>
++  <syscall name="lwp_cond_broadcast" number="172"/>
++  <syscall name="pread" number="173"/>
++  <syscall name="pwrite" number="174"/>
++  <syscall name="llseek" number="175"/>
++  <syscall name="inst_sync" number="176"/>
++  <syscall name="brand" number="177"/>
++  <syscall name="kaio" number="178"/>
++  <syscall name="cpc" number="179"/>
++  <syscall name="lgrpsys" number="180"/>
++  <syscall name="meminfosys" number="180"/>
++  <syscall name="rusagesys" number="181"/>
++  <syscall name="port" number="182"/>
++  <syscall name="pollsys" number="183"/>
++  <syscall name="labelsys" number="184"/>
++  <syscall name="acl" number="185"/>
++  <syscall name="auditsys" number="186"/>
++  <syscall name="processor_sys" number="187"/>
++  <syscall name="p_online" number="189"/>
++  <syscall name="sigqueue" number="190"/>
++  <syscall name="clock_gettime" number="191"/>
++  <syscall name="clock_settime" number="192"/>
++  <syscall name="clock_getres" number="193"/>
++  <syscall name="timer_create" number="194"/>
++  <syscall name="timer_delete" number="195"/>
++  <syscall name="timer_settime" number="196"/>
++  <syscall name="timer_gettime" number="197"/>
++  <syscall name="timer_getoverrun" number="198"/>
++  <syscall name="nanosleep" number="199"/>
++  <syscall name="facl" number="200"/>
++  <syscall name="door" number="201"/>
++  <syscall name="setreuid" number="202"/>
++  <syscall name="setregid" number="203"/>
++  <syscall name="install_utrap" number="204"/>
++  <syscall name="signotify" number="205"/>
++  <syscall name="schedctl" number="206"/>
++  <syscall name="pset" number="207"/>
++  <syscall name="sparc_utrap_install" number="208"/>
++  <syscall name="resolvepath" number="209"/>
++  <syscall name="lwp_mutex_timedlock" number="210"/>
++  <syscall name="lwp_sema_timedwait" number="211"/>
++  <syscall name="lwp_rwlock_sys" number="212"/>
++  <syscall name="getdents64" number="213"/>
++  <syscall name="mmap64" number="214"/>
++  <syscall name="statvfs64" number="218"/>
++  <syscall name="fstatvfs64" number="219"/>
++  <syscall name="setrlimit64" number="220"/>
++  <syscall name="getrlimit64" number="221"/>
++  <syscall name="pread64" number="222"/>
++  <syscall name="pwrite64" number="223"/>
++  <syscall name="rpcsys" number="226"/>
++  <syscall name="zone" number="227"/>
++  <syscall name="autofssys" number="228"/>
++  <syscall name="getcwd" number="229"/>
++  <syscall name="so_socket" number="230"/>
++  <syscall name="so_socketpair" number="231"/>
++  <syscall name="bind" number="232"/>
++  <syscall name="listen" number="233"/>
++  <syscall name="accept" number="234"/>
++  <syscall name="connect" number="235"/>
++  <syscall name="shutdown" number="236"/>
++  <syscall name="recv" number="237"/>
++  <syscall name="recvfrom" number="238"/>
++  <syscall name="recvmsg" number="239"/>
++  <syscall name="send" number="240"/>
++  <syscall name="sendmsg" number="241"/>
++  <syscall name="sendto" number="242"/>
++  <syscall name="getpeername" number="243"/>
++  <syscall name="getsockname" number="244"/>
++  <syscall name="getsockopt" number="245"/>
++  <syscall name="setsockopt" number="246"/>
++  <syscall name="sockconfig" number="247"/>
++  <syscall name="ntp_gettime" number="248"/>
++  <syscall name="ntp_adjtime" number="249"/>
++  <syscall name="lwp_mutex_unlock" number="250"/>
++  <syscall name="lwp_mutex_trylock" number="251"/>
++  <syscall name="lwp_mutex_register" number="252"/>
++  <syscall name="cladm" number="253"/>
++  <syscall name="uucopy" number="254"/>
++  <syscall name="umount2" number="255"/>
++</syscalls_info>
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.syscalls.sparc64-solaris.xml.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,245 @@
+# XML representation of 64-bit SPARC Solaris syscalls.
+--- /dev/null	2013-07-16 15:01:41.000000000 -0700
++++ gdb-7.6/gdb/syscalls/sparc64-solaris.xml	2013-07-16 15:26:15.534613200 -0700
[email protected]@ -0,0 +1,241 @@
++<?xml version="1.0"?>
++<!-- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++
++    Copying and distribution of this file, with or without modification,
++    are permitted in any medium without royalty provided the copyright
++    notice and this notice are preserved.  -->
++
++<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
++
++<!-- This file was generated using the following file:
++
++    /usr/include/sys/sycalls.h
++
++    The file mentioned above belongs to the Solaris Kernel.  -->
++
++<syscalls_info>
++  <syscall name="syscall" number="0"/>
++  <syscall name="exit" number="1"/>
++  <syscall name="read" number="3"/>
++  <syscall name="write" number="4"/>
++  <syscall name="close" number="6"/>
++  <syscall name="linkat" number="7"/>
++  <syscall name="symlinkat" number="11"/>
++  <syscall name="chdir" number="12"/>
++  <syscall name="time" number="13"/>
++  <syscall name="brk" number="17"/>
++  <syscall name="lseek" number="19"/>
++  <syscall name="getpid" number="20"/>
++  <syscall name="mount" number="21"/>
++  <syscall name="readlinkat" number="22"/>
++  <syscall name="setuid" number="23"/>
++  <syscall name="getuid" number="24"/>
++  <syscall name="stime" number="25"/>
++  <syscall name="pcsample" number="26"/>
++  <syscall name="alarm" number="27"/>
++  <syscall name="pause" number="29"/>
++  <syscall name="frealpathat" number="30"/>
++  <syscall name="stty" number="31"/>
++  <syscall name="gtty" number="32"/>
++  <syscall name="nice" number="34"/>
++  <syscall name="statfs" number="35"/>
++  <syscall name="sync" number="36"/>
++  <syscall name="kill" number="37"/>
++  <syscall name="fstatfs" number="38"/>
++  <syscall name="pgrpsys" number="39"/>
++  <syscall name="uucopystr" number="40"/>
++  <syscall name="pipe" number="42"/>
++  <syscall name="times" number="43"/>
++  <syscall name="profil" number="44"/>
++  <syscall name="faccessat" number="45"/>
++  <syscall name="setgid" number="46"/>
++  <syscall name="getgid" number="47"/>
++  <syscall name="mknodat" number="48"/>
++  <syscall name="msgsys" number="49"/>
++  <syscall name="sysi86" number="50"/>
++  <syscall name="acct" number="51"/>
++  <syscall name="shmsys" number="52"/>
++  <syscall name="semsys" number="53"/>
++  <syscall name="ioctl" number="54"/>
++  <syscall name="uadmin" number="55"/>
++  <syscall name="fchownat" number="56"/>
++  <syscall name="utssys" number="57"/>
++  <syscall name="fdsync" number="58"/>
++  <syscall name="execve" number="59"/>
++  <syscall name="umask" number="60"/>
++  <syscall name="chroot" number="61"/>
++  <syscall name="fcntl" number="62"/>
++  <syscall name="ulimit" number="63"/>
++  <syscall name="renameat" number="64"/>
++  <syscall name="fstatat" number="66"/>
++  <syscall name="fstatat64" number="67"/>
++  <syscall name="openat" number="68"/>
++  <syscall name="openat64" number="69"/>
++  <syscall name="tasksys" number="70"/>
++  <syscall name="acctctl" number="71"/>
++  <syscall name="exacctsys" number="72"/>
++  <syscall name="getpagesizes" number="73"/>
++  <syscall name="rctlsys" number="74"/>
++  <syscall name="sidsys" number="75"/>
++  <syscall name="unlinkat" number="76"/>
++  <syscall name="lwp_park" number="77"/>
++  <syscall name="sendfilev" number="78"/>
++  <syscall name="lwp_name" number="79"/>
++  <syscall name="getdents" number="81"/>
++  <syscall name="privsys" number="82"/>
++  <syscall name="ucredsys" number="83"/>
++  <syscall name="sysfs" number="84"/>
++  <syscall name="getmsg" number="85"/>
++  <syscall name="putmsg" number="86"/>
++  <syscall name="setgroups" number="91"/>
++  <syscall name="getgroups" number="92"/>
++  <syscall name="sigprocmask" number="95"/>
++  <syscall name="sigsuspend" number="96"/>
++  <syscall name="sigaltstack" number="97"/>
++  <syscall name="sigaction" number="98"/>
++  <syscall name="sigpending" number="99"/>
++  <syscall name="context" number="100"/>
++  <syscall name="fchmodat" number="101"/>
++  <syscall name="mkdirat" number="102"/>
++  <syscall name="statvfs" number="103"/>
++  <syscall name="fstatvfs" number="104"/>
++  <syscall name="getloadavg" number="105"/>
++  <syscall name="nfssys" number="106"/>
++  <syscall name="waitid" number="107"/>
++  <syscall name="waitsys" number="107"/>
++  <syscall name="sigsendsys" number="108"/>
++  <syscall name="hrtsys" number="109"/>
++  <syscall name="utimensat" number="110"/>
++  <syscall name="sigresend" number="111"/>
++  <syscall name="priocntlsys" number="112"/>
++  <syscall name="pathconf" number="113"/>
++  <syscall name="mincore" number="114"/>
++  <syscall name="mmap" number="115"/>
++  <syscall name="mprotect" number="116"/>
++  <syscall name="munmap" number="117"/>
++  <syscall name="fpathconf" number="118"/>
++  <syscall name="vfork" number="119"/>
++  <syscall name="fchdir" number="120"/>
++  <syscall name="readv" number="121"/>
++  <syscall name="writev" number="122"/>
++  <syscall name="mmapobj" number="127"/>
++  <syscall name="setrlimit" number="128"/>
++  <syscall name="getrlimit" number="129"/>
++  <syscall name="memcntl" number="131"/>
++  <syscall name="getpmsg" number="132"/>
++  <syscall name="putpmsg" number="133"/>
++  <syscall name="uname" number="135"/>
++  <syscall name="setegid" number="136"/>
++  <syscall name="sysconfig" number="137"/>
++  <syscall name="adjtime" number="138"/>
++  <syscall name="systeminfo" number="139"/>
++  <syscall name="sharefs" number="140"/>
++  <syscall name="seteuid" number="141"/>
++  <syscall name="forksys" number="142"/>
++  <syscall name="sigtimedwait" number="144"/>
++  <syscall name="lwp_info" number="145"/>
++  <syscall name="yield" number="146"/>
++  <syscall name="secsys" number="147"/>
++  <syscall name="lwp_sema_post" number="148"/>
++  <syscall name="lwp_sema_trywait" number="149"/>
++  <syscall name="lwp_detach" number="150"/>
++  <syscall name="corectl" number="151"/>
++  <syscall name="modctl" number="152"/>
++  <syscall name="fchroot" number="153"/>
++  <syscall name="vhangup" number="155"/>
++  <syscall name="gettimeofday" number="156"/>
++  <syscall name="getitimer" number="157"/>
++  <syscall name="setitimer" number="158"/>
++  <syscall name="lwp_create" number="159"/>
++  <syscall name="lwp_exit" number="160"/>
++  <syscall name="lwp_suspend" number="161"/>
++  <syscall name="lwp_continue" number="162"/>
++  <syscall name="lwp_sigqueue" number="163"/>
++  <syscall name="lwp_self" number="164"/>
++  <syscall name="lwp_sigmask" number="165"/>
++  <syscall name="lwp_private" number="166"/>
++  <syscall name="lwp_wait" number="167"/>
++  <syscall name="lwp_mutex_wakeup" number="168"/>
++  <syscall name="lwp_cond_wait" number="170"/>
++  <syscall name="lwp_cond_signal" number="171"/>
++  <syscall name="lwp_cond_broadcast" number="172"/>
++  <syscall name="pread" number="173"/>
++  <syscall name="pwrite" number="174"/>
++  <syscall name="llseek" number="175"/>
++  <syscall name="inst_sync" number="176"/>
++  <syscall name="brand" number="177"/>
++  <syscall name="kaio" number="178"/>
++  <syscall name="cpc" number="179"/>
++  <syscall name="lgrpsys" number="180"/>
++  <syscall name="meminfosys" number="180"/>
++  <syscall name="rusagesys" number="181"/>
++  <syscall name="port" number="182"/>
++  <syscall name="pollsys" number="183"/>
++  <syscall name="labelsys" number="184"/>
++  <syscall name="acl" number="185"/>
++  <syscall name="auditsys" number="186"/>
++  <syscall name="processor_sys" number="187"/>
++  <syscall name="p_online" number="189"/>
++  <syscall name="sigqueue" number="190"/>
++  <syscall name="clock_gettime" number="191"/>
++  <syscall name="clock_settime" number="192"/>
++  <syscall name="clock_getres" number="193"/>
++  <syscall name="timer_create" number="194"/>
++  <syscall name="timer_delete" number="195"/>
++  <syscall name="timer_settime" number="196"/>
++  <syscall name="timer_gettime" number="197"/>
++  <syscall name="timer_getoverrun" number="198"/>
++  <syscall name="nanosleep" number="199"/>
++  <syscall name="facl" number="200"/>
++  <syscall name="door" number="201"/>
++  <syscall name="setreuid" number="202"/>
++  <syscall name="setregid" number="203"/>
++  <syscall name="install_utrap" number="204"/>
++  <syscall name="signotify" number="205"/>
++  <syscall name="schedctl" number="206"/>
++  <syscall name="pset" number="207"/>
++  <syscall name="sparc_utrap_install" number="208"/>
++  <syscall name="resolvepath" number="209"/>
++  <syscall name="lwp_mutex_timedlock" number="210"/>
++  <syscall name="lwp_sema_timedwait" number="211"/>
++  <syscall name="lwp_rwlock_sys" number="212"/>
++  <syscall name="getdents64" number="213"/>
++  <syscall name="mmap64" number="214"/>
++  <syscall name="statvfs64" number="218"/>
++  <syscall name="fstatvfs64" number="219"/>
++  <syscall name="setrlimit64" number="220"/>
++  <syscall name="getrlimit64" number="221"/>
++  <syscall name="pread64" number="222"/>
++  <syscall name="pwrite64" number="223"/>
++  <syscall name="rpcsys" number="226"/>
++  <syscall name="zone" number="227"/>
++  <syscall name="autofssys" number="228"/>
++  <syscall name="getcwd" number="229"/>
++  <syscall name="so_socket" number="230"/>
++  <syscall name="so_socketpair" number="231"/>
++  <syscall name="bind" number="232"/>
++  <syscall name="listen" number="233"/>
++  <syscall name="accept" number="234"/>
++  <syscall name="connect" number="235"/>
++  <syscall name="shutdown" number="236"/>
++  <syscall name="recv" number="237"/>
++  <syscall name="recvfrom" number="238"/>
++  <syscall name="recvmsg" number="239"/>
++  <syscall name="send" number="240"/>
++  <syscall name="sendmsg" number="241"/>
++  <syscall name="sendto" number="242"/>
++  <syscall name="getpeername" number="243"/>
++  <syscall name="getsockname" number="244"/>
++  <syscall name="getsockopt" number="245"/>
++  <syscall name="setsockopt" number="246"/>
++  <syscall name="sockconfig" number="247"/>
++  <syscall name="ntp_gettime" number="248"/>
++  <syscall name="ntp_adjtime" number="249"/>
++  <syscall name="lwp_mutex_unlock" number="250"/>
++  <syscall name="lwp_mutex_trylock" number="251"/>
++  <syscall name="lwp_mutex_register" number="252"/>
++  <syscall name="cladm" number="253"/>
++  <syscall name="uucopy" number="254"/>
++  <syscall name="umount2" number="255"/>
++</syscalls_info>
++
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gdb/patches/gdb.target.c.patch	Fri Nov 08 08:16:59 2013 -0800
@@ -0,0 +1,26 @@
+--- gdb-7.6/gdb/target.c	2013-03-11 05:22:20.000000000 -0700
++++ gdb-7.6/gdb/target.c	2013-10-31 08:06:41.106242317 -0700
[email protected]@ -4208,7 +4208,10 @@
+ 
+   for (t = current_target.beneath; t != NULL; t = t->beneath)
+     if (t->to_disable_btrace != NULL)
+-      return t->to_disable_btrace (btinfo);
++    {
++      t->to_disable_btrace (btinfo);
++      return;
++    }
+ 
+   tcomplain ();
+ }
[email protected]@ -4222,7 +4225,10 @@
+ 
+   for (t = current_target.beneath; t != NULL; t = t->beneath)
+     if (t->to_teardown_btrace != NULL)
+-      return t->to_teardown_btrace (btinfo);
++    {
++      t->to_teardown_btrace (btinfo);
++      return;
++    }
+ 
+   tcomplain ();
+ }
--- a/components/gdb/resolve.deps	Wed Nov 06 14:12:13 2013 -0800
+++ b/components/gdb/resolve.deps	Fri Nov 08 08:16:59 2013 -0800
@@ -1,6 +1,10 @@
+compress/xz
 library/expat
 library/ncurses
 library/readline
+library/zlib
+runtime/python-26
+shell/ksh93
 system/library
 system/library/math
 system/linker