# HG changeset patch # User Stefan Teleman # Date 1383927419 28800 # Node ID dff3ca0071d6e9bb5d571dc3980e203c9c2d289a # Parent db0bfa0fa498e89aa8fd9baa663a08a47907f143 17086418 upgrade gdb to 7.6 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/Makefile --- 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) diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/README --- 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. diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/Solaris/gdbtui --- /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 "$@" + diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/gdb.p5m --- 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 @@ default mangler.man.stability uncommitted> set name=pkg.fmri value=pkg:/developer/debug/gdb@$(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" + diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.auxv.c.patch --- 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 -@@ -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) -@@ -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; diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.bfd.elf-bfd.h.patch --- /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 +@@ -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, ...); diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.bfd.elf.c.patch --- /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 +@@ -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 +@@ -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) + { +@@ -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) +@@ -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 */ +@@ -8881,6 +8885,297 @@ + return TRUE; + } + ++#include ++#include ++#include ++#include ++#include ++ ++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) + { +@@ -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)) diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.bfd.elf32-i386.c.patch --- /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 +@@ -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) +@@ -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) +@@ -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 +@@ -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 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.bfd.elf32-sparc.c.patch --- /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 +@@ -30,34 +30,135 @@ + #include "elfxx-sparc.h" + #include "elf-vxworks.h" + +-/* Support for core dump NOTE sections. */ ++#include ++#include ++#include ++#include ++#include + ++/* 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 +@@ -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 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.bfd.elf64-sparc.c.patch --- /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 +@@ -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 ++#include ++#include ++#include ++#include + + /* In case we're on a 32-bit machine, construct a 64-bit "-1" value. */ + #define MINUS_ONE (~ (bfd_vma) 0) +@@ -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) + { +@@ -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 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.bfd.elfxx-target.h.patch --- /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 +@@ -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 +@@ -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, diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.data-directory.Makefile.in.patch --- /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 +@@ -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 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.Makefile.patch --- /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 +@@ -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 \ +@@ -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 + +@@ -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 +@@ -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 +@@ -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 ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.32bit-solaris.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.64bit-solaris.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.amd64-avx-solaris.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.amd64-avx-solaris.xml.patch --- /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 +@@ -0,0 +1,18 @@ ++ ++ ++ ++ ++ ++ ++ ++ i386:x86-64 ++ Solaris ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.amd64-solaris.xml.patch --- /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 +@@ -0,0 +1,17 @@ ++ ++ ++ ++ ++ ++ ++ ++ i386:x86-64 ++ Solaris ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.i386-avx-solaris.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.i386-avx-solaris.xml.patch --- /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 +@@ -0,0 +1,18 @@ ++ ++ ++ ++ ++ ++ ++ ++ i386 ++ Solaris ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.i386-mmx-solaris.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.i386-mmx-solaris.xml.patch --- /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 +@@ -0,0 +1,16 @@ ++ ++ ++ ++ ++ ++ ++ ++ i386 ++ Solaris ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.i386.i386-solaris.xml.patch --- /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 +@@ -0,0 +1,17 @@ ++ ++ ++ ++ ++ ++ ++ ++ i386 ++ Solaris ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc-cp0.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc-cp0.xml.patch --- /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 +@@ -0,0 +1,19 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc-cpu.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc-cpu.xml.patch --- /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 +@@ -0,0 +1,42 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc-fpu.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc-fpu.xml.patch --- /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 +@@ -0,0 +1,60 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc-solaris.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc-solaris.xml.patch --- /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 +@@ -0,0 +1,19 @@ ++ ++ ++ ++ ++ ++ sparc ++ Solaris ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc64-cp0.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc64-cp0.xml.patch --- /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 +@@ -0,0 +1,20 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc64-cpu.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc64-cpu.xml.patch --- /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 +@@ -0,0 +1,42 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc64-fpu.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc64-fpu.xml.patch --- /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 +@@ -0,0 +1,93 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc64-solaris.c.patch --- /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 +@@ -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; ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.features.sparc64-solaris.xml.patch --- /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 +@@ -0,0 +1,19 @@ ++ ++ ++ ++ ++ ++ sparc ++ Solaris ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.fork-child.c.patch --- 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 -@@ -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 +@@ -35,13 +35,19 @@ - extern char **environ; + #include -+/* 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 +#include +#include + + /* 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 -@@ -136,6 +146,8 @@ - static char **argv; - const char *inferior_io_terminal = get_inferior_io_terminal (); +@@ -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; -@@ -148,6 +160,9 @@ +@@ -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"); -@@ -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 -@@ -395,6 +429,9 @@ - int pending_execs = ntraps; + if (!shell) +@@ -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 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.gdb.Makefile.in.patch --- /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 +@@ -144,7 +144,7 @@ + # Where is the READLINE library? Typically in ../readline. + READLINE_DIR = ../readline + READLINE_SRC = $(srcdir)/$(READLINE_DIR) +-READLINE = @READLINE@ ++READLINE = $(READLINE_DIR)/libreadline.a $(READLINE_DIR)/libhistory.a + READLINE_DEPS = @READLINE_DEPS@ + READLINE_CFLAGS = @READLINE_CFLAGS@ + +@@ -162,7 +162,7 @@ + GDB_WARN_CFLAGS_NO_FORMAT = `echo " $(GDB_WARN_CFLAGS) " \ + | sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"` + +-RDYNAMIC = @RDYNAMIC@ ++RDYNAMIC = + + # Where is the INTL library? Typically in ../intl. + INTL = @LIBINTL@ +@@ -408,7 +408,7 @@ + CONFIG_OBS= @CONFIG_OBS@ + CONFIG_SRCS= @CONFIG_SRCS@ + CONFIG_DEPS= @CONFIG_DEPS@ +-CONFIG_LDFLAGS = @CONFIG_LDFLAGS@ ++CONFIG_LDFLAGS = + ENABLE_CFLAGS= @ENABLE_CFLAGS@ + CONFIG_ALL= @CONFIG_ALL@ + CONFIG_CLEAN= @CONFIG_CLEAN@ +@@ -934,7 +934,7 @@ + + TSOBS = inflow.o + +-SUBDIRS = doc @subdirs@ data-directory $(GNULIB_BUILDDIR) ++SUBDIRS = @subdirs@ data-directory $(GNULIB_BUILDDIR) + CLEANDIRS = $(SUBDIRS) + + # List of subdirectories in the build tree that must exist. diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.gdb.i386sol2.mh.patch --- /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 +@@ -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 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.gdb.regcache.c.patch --- /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 +@@ -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 * +@@ -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 +@@ -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; ++} ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.gdb.regcache.h.patch --- /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 +@@ -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 */ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.gdb.sol-thread.c.patch --- /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 +@@ -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; + diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.gdb.sol2-core-regset.c.patch --- /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 +@@ -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 . */ ++ ++/* 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 ++#include ++#include "gdb_string.h" ++#include ++#ifdef HAVE_SYS_PROCFS_H ++#include ++#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 (®set_core_fns); ++} diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.gdb.sol2.mh.patch --- /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 +@@ -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 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.gdb.sparc-sol2-nat.c.patch --- /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 +@@ -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 +@@ -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. */ +@@ -112,3 +123,4 @@ + #endif + add_target (t); + } ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.i386-32bit-solaris.xml.patch --- /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 +@@ -0,0 +1,11 @@ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.i386-64bit-solaris.xml.patch --- /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 +@@ -0,0 +1,11 @@ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.include.elf.common.h.patch --- /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 +@@ -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/". */ + diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.procfs.c.patch --- /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 +@@ -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; +@@ -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; +@@ -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. */ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.solib-svr4.patch --- 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 -@@ -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 +@@ -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 diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.syscalls.amd64-solaris.xml.patch --- /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 +@@ -0,0 +1,241 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.syscalls.i386-solaris.xml.patch --- /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 +@@ -0,0 +1,241 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.syscalls.sparc-solaris.xml.patch --- /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 +@@ -0,0 +1,241 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.syscalls.sparc64-solaris.xml.patch --- /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 +@@ -0,0 +1,241 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/patches/gdb.target.c.patch --- /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 +@@ -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 (); + } +@@ -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 (); + } diff -r db0bfa0fa498 -r dff3ca0071d6 components/gdb/resolve.deps --- 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