commit 783af9b5d368db7121043fc9c465a22d682c38447e29ed84e6c4a56c06d55915 Author: OBS User unknown Date: Mon Dec 18 23:16:31 2006 +0000 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gdb?expand=0&rev=1 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/gdb-6.5.90.tar.bz2 b/gdb-6.5.90.tar.bz2 new file mode 100644 index 0000000..05749fd --- /dev/null +++ b/gdb-6.5.90.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d91c33d75efff84aae332f1f6aff0683f8fa0eae4a81638084eeef542f31a2d +size 14533897 diff --git a/gdb-misc.patch b/gdb-misc.patch new file mode 100644 index 0000000..4ddb375 --- /dev/null +++ b/gdb-misc.patch @@ -0,0 +1,14 @@ +--- gdb/Makefile.in ++++ gdb/Makefile.in +@@ -122,9 +122,9 @@ + + # Where is the READLINE library? Typically in ../readline. + READLINE_DIR = ../readline +-READLINE = $(READLINE_DIR)/libreadline.a ++READLINE = -lreadline + READLINE_SRC = $(srcdir)/$(READLINE_DIR) +-READLINE_CFLAGS = -I$(READLINE_SRC)/.. ++READLINE_CFLAGS = + + WARN_CFLAGS = @WARN_CFLAGS@ + WERROR_CFLAGS = @WERROR_CFLAGS@ diff --git a/gdb.changes b/gdb.changes new file mode 100644 index 0000000..e040844 --- /dev/null +++ b/gdb.changes @@ -0,0 +1,791 @@ +------------------------------------------------------------------- +Sat Dec 2 21:38:33 CET 2006 - schwab@suse.de + +- Update to gdb 6.5.90. + * New targets + Xtensa xtensa-elf + Cell Broadband Engine SPU spu-elf + * GDB can now be configured as a cross-debugger targeting native Windows + (mingw32) or Cygwin. It can communicate with a remote debugging stub + running on a Windows system over TCP/IP to debug Windows programs. + * The GDB remote stub, gdbserver, has been updated to support Windows and + Cygwin debugging. Both single-threaded and multi-threaded programs are + supported. + * The "set trust-readonly-sections" command works again. This command was + broken in GDB 6.3, 6.4, and 6.5. + * Support for GNU/Linux Thread Local Storage (TLS, per-thread variables) no + longer requires symbolic debug information (e.g. DWARF-2). + * New commands + set substitute-path + unset substitute-path + show substitute-path + Manage a list of substitution rules that GDB uses to rewrite the name + of the directories where the sources are located. This can be useful + for instance when the sources were moved to a different location + between compilation and debugging. + set trace-commands + show trace-commands + Print each CLI command as it is executed. Each command is prefixed with + a number of `+' symbols representing the nesting depth. + The source command now has a `-v' option to enable the same feature. + * REMOVED features + The ARM Demon monitor support (RDP protocol, "target rdp"). + Kernel Object Display, an embedded debugging feature which only worked with + an obsolete version of Cisco IOS. + The 'set download-write-size' and 'show download-write-size' commands. + * New remote packets + qSupported: + Tell a stub about GDB client features, and request remote target features. + The first feature implemented is PacketSize, which allows the target to + specify the size of packets it can handle - to minimize the number of + packets required and improve performance when connected to a remote + target. + qXfer:auxv:read: + Fetch an OS auxilliary vector from the remote stub. This packet is a + more efficient replacement for qPart:auxv:read. + * Removed remote packets + qPart:auxv:read: + This packet has been replaced by qXfer:auxv:read. Only GDB 6.4 and 6.5 + used it, and only gdbserver implemented it. + +------------------------------------------------------------------- +Sat Oct 28 00:25:25 CEST 2006 - schwab@suse.de + +- Rename detach-fork to detach fork. + +------------------------------------------------------------------- +Tue Oct 24 13:35:52 CEST 2006 - schwab@suse.de + +- Better fix for function descriptor handling on ppc64. + +------------------------------------------------------------------- +Fri Aug 25 13:40:31 CEST 2006 - schwab@suse.de + +- Minimal support for .gnu.hash. + +------------------------------------------------------------------- +Thu Aug 24 14:18:29 CEST 2006 - schwab@suse.de + +- Fix off-by-one in add_symbol_file_command [#200831]. + +------------------------------------------------------------------- +Fri Aug 11 14:45:43 CEST 2006 - schwab@suse.de + +- Correctly extend addresses read from link map. + +------------------------------------------------------------------- +Sun Jul 16 23:22:08 CEST 2006 - schwab@suse.de + +- Fix function decriptor handing on ppc64. + +------------------------------------------------------------------- +Wed Jun 21 10:16:16 CEST 2006 - schwab@suse.de + +- Update to final gdb 6.5. + +------------------------------------------------------------------- +Sat Jun 3 10:04:56 CEST 2006 - schwab@suse.de + +- Update to gdb 6.5 RC 1. + +------------------------------------------------------------------- +Wed May 31 14:41:40 CEST 2006 - schwab@suse.de + +- Set long double size to 16 [#180103]. + +------------------------------------------------------------------- +Mon May 22 14:53:53 CEST 2006 - schwab@suse.de + +- Update to gdb 6.4.90 snapshot 20060522. + +------------------------------------------------------------------- +Sun Apr 23 16:05:38 CEST 2006 - schwab@suse.de + +- Add patch to avoid losing compilation directory. +- Fix a parallel build problem. + +------------------------------------------------------------------- +Tue Apr 4 21:48:43 CEST 2006 - schwab@suse.de + +- Relocate PIEs. + +------------------------------------------------------------------- +Mon Mar 27 00:47:48 CEST 2006 - schwab@suse.de + +- Handle .eh_frame register encoding that is different from .dwarf_frame. +- Remove obsolete patch. + +------------------------------------------------------------------- +Wed Jan 25 21:30:16 CET 2006 - mls@suse.de + +- converted neededforbuild to BuildRequires + +------------------------------------------------------------------- +Mon Jan 23 12:01:15 CET 2006 - schwab@suse.de + +- Add fix for PIC prologue analyzer on powerpc. + +------------------------------------------------------------------- +Wed Dec 14 01:11:46 CET 2005 - schwab@suse.de + +- Add fix for observer notify queue after attach. + +------------------------------------------------------------------- +Fri Dec 2 15:13:15 CET 2005 - schwab@suse.de + +- Update to gdb 6.4. + +------------------------------------------------------------------- +Tue Nov 22 13:11:03 CET 2005 - schwab@suse.de + +- Update to gdb 6.3.90. + +------------------------------------------------------------------- +Fri Nov 4 01:06:09 CET 2005 - schwab@suse.de + +- Update to gdb-6.3.50 snapshot 20051103. + +------------------------------------------------------------------- +Mon Oct 3 14:47:06 CEST 2005 - schwab@suse.de + +- Update to gdb 6.3.50 snapshot 20051003. + +------------------------------------------------------------------- +Mon Sep 19 19:06:04 CEST 2005 - schwab@suse.de + +- Fix warnings. + +------------------------------------------------------------------- +Sun Aug 21 15:04:46 CEST 2005 - schwab@suse.de + +- Add DWARF CFI unwinder on ppc. + +------------------------------------------------------------------- +Mon Jun 20 23:33:40 CEST 2005 - schwab@suse.de + +- Require libunwind-devel on ia64. + +------------------------------------------------------------------- +Thu Jun 9 15:51:37 CEST 2005 - schwab@suse.de + +- Add patch for ia64 vDSO support and unwinding through signals and + syscalls [#60766]. + +------------------------------------------------------------------- +Mon Apr 11 20:35:27 CEST 2005 - schwab@suse.de + +- Fix backtrace through vsyscall [#63483]. + +------------------------------------------------------------------- +Mon Apr 11 01:13:30 CEST 2005 - schwab@suse.de + +- Add patch to fix bugs in rs6000/powerpc register set functions. +- Fix a testsuite bug. + +------------------------------------------------------------------- +Sun Mar 6 17:52:14 CET 2005 - schwab@suse.de + +- Add patch to suppress fork attach/detach messages. + +------------------------------------------------------------------- +Wed Mar 2 17:41:41 CET 2005 - schwab@suse.de + +- Add patch to fix following vfork from a secondary thread. + +------------------------------------------------------------------- +Mon Feb 28 15:26:00 CET 2005 - schwab@suse.de + +- Don't ignore DW_TAG_member [#66406]. + +------------------------------------------------------------------- +Tue Feb 1 17:02:10 CET 2005 - schwab@suse.de + +- Find separate debug symbol files in /usr/lib/debug by default. + +------------------------------------------------------------------- +Thu Jan 27 17:13:46 CET 2005 - schwab@suse.de + +- Add patch to handle back-to-back and nested signals. + +------------------------------------------------------------------- +Thu Jan 27 13:21:20 CET 2005 - schwab@suse.de + +- Add patch to implement reggroups for ppc. + +------------------------------------------------------------------- +Wed Jan 26 11:14:23 CET 2005 - schwab@suse.de + +- Add patch to implement PPC GNU/Linux sigtramp frame code. + +------------------------------------------------------------------- +Wed Jan 12 14:26:25 CET 2005 - schwab@suse.de + +- Don't error out when encountering an unavailable value. + +------------------------------------------------------------------- +Fri Dec 3 15:33:47 CET 2004 - schwab@suse.de + +- Downgrade errors to warnings during backtrace [#48484]. +- Undocument --readnever since it may not be supported by future releases. +- Fix patches from last change. + +------------------------------------------------------------------- +Fri Dec 3 14:05:13 CET 2004 - kukuk@suse.de + +- Add --readnever option as workaround for [#48485] + +------------------------------------------------------------------- +Sun Nov 14 21:47:53 CET 2004 - schwab@suse.de + +- Add libunwind-devel to neededforbuild. + +------------------------------------------------------------------- +Sat Nov 13 15:59:26 CET 2004 - schwab@suse.de + +- Fix missing dependencies. + +------------------------------------------------------------------- +Wed Nov 10 11:56:32 CET 2004 - schwab@suse.de + +- Version 6.2.91 renamed to 6.3. + +------------------------------------------------------------------- +Tue Nov 9 00:57:31 CET 2004 - schwab@suse.de + +- Update to gdb 6.2.91 (6.3 release candidate). + +------------------------------------------------------------------- +Mon Nov 8 15:34:08 CET 2004 - schwab@suse.de + +- Revert last change. +- Fix typo. + +------------------------------------------------------------------- +Mon Nov 8 15:04:27 CET 2004 - uli@suse.de + +- fixed to build on s390* + +------------------------------------------------------------------- +Mon Oct 25 14:51:07 CEST 2004 - schwab@suse.de + +- Fix building gdbserver on x86-64. + +------------------------------------------------------------------- +Mon Oct 25 11:43:37 CEST 2004 - schwab@suse.de + +- Update to gdb 6.2.90. +- Use libunwind on ia64. + +------------------------------------------------------------------- +Thu Sep 9 10:13:11 CEST 2004 - schwab@suse.de + +- Update to gdb 6.2.1. + +------------------------------------------------------------------- +Wed Aug 25 16:00:27 CEST 2004 - schwab@suse.de + +- Fix deadlock in child_wait [#42796]. + +------------------------------------------------------------------- +Tue Aug 24 16:43:36 CEST 2004 - schwab@suse.de + +- Import latest changes from 6.2 branch. + +------------------------------------------------------------------- +Fri Jul 30 15:23:17 CEST 2004 - schwab@suse.de + +- Update to gdb 6.2. + +------------------------------------------------------------------- +Thu Jul 29 15:53:51 CEST 2004 - schwab@suse.de + +- Update to gdb 6.1.92. + +------------------------------------------------------------------- +Mon Jul 26 21:08:42 CEST 2004 - schwab@suse.de + +- Fix handling of relative filenames in DWARF2 .debug_line. + +------------------------------------------------------------------- +Mon Jul 19 13:01:27 CEST 2004 - schwab@suse.de + +- Update to gdb 6.1.91. + +------------------------------------------------------------------- +Thu Jun 24 14:26:28 CEST 2004 - schwab@suse.de + +- Better handling of dying threads. + +------------------------------------------------------------------- +Fri Jun 18 23:57:13 CEST 2004 - schwab@suse.de + +- Update to gdb 6.1.1. + +------------------------------------------------------------------- +Tue May 25 17:14:03 CEST 2004 - schwab@suse.de + +- Fix handling of short lived threads [#40841]. + +------------------------------------------------------------------- +Sat May 1 15:07:32 CEST 2004 - schwab@suse.de + +- Restore removed hunk. + +------------------------------------------------------------------- +Fri Apr 30 21:31:35 CEST 2004 - meissner@suse.de + +- applied 3 patches to fix problems on ppc64. #39394 + +------------------------------------------------------------------- +Sat Apr 17 15:55:23 CEST 2004 - schwab@suse.de + +- Pacify autobuild. + +------------------------------------------------------------------- +Mon Apr 5 11:40:31 CEST 2004 - schwab@suse.de + +- Version 6.0.92 has been renamed to 6.1. + +------------------------------------------------------------------- +Sat Apr 3 20:34:55 CEST 2004 - schwab@suse.de + +- Update to gdb 6.0.92 (6.1 release candidate). + +------------------------------------------------------------------- +Tue Mar 30 16:50:40 CEST 2004 - schwab@suse.de + +- Fix invalid use of va_list. + +------------------------------------------------------------------- +Mon Mar 29 23:29:09 CEST 2004 - schwab@suse.de + +- Update to gdb 6.0.91. + +------------------------------------------------------------------- +Mon Mar 29 15:40:16 CEST 2004 - schwab@suse.de + +- Update to current CVS. + +------------------------------------------------------------------- +Fri Mar 19 11:59:48 CET 2004 - schwab@suse.de + +- Fix last change: don't disable testsuite. + +------------------------------------------------------------------- +Wed Mar 17 10:00:43 CET 2004 - mludvig@suse.cz + +- Added opcodes for VIA PadLock instructions. + +------------------------------------------------------------------- +Tue Mar 2 14:28:18 CET 2004 - schwab@suse.de + +- Update to gdb 6.0.90. +- Run testsuite. + +------------------------------------------------------------------- +Thu Jan 8 18:37:10 CET 2004 - schwab@suse.de + +- Fix gate area range. + +------------------------------------------------------------------- +Wed Dec 10 18:16:55 CET 2003 - schwab@suse.de + +- Support DW_TAG_subrange_type. +- Backport recent ia64 improvements from mainline. + +------------------------------------------------------------------- +Tue Oct 21 14:36:49 CEST 2003 - mludvig@ + +- Add support for debugging both i386 and amd64 apps by a single + amd64 GDB binary. + +------------------------------------------------------------------- +Mon Oct 20 16:44:00 CEST 2003 - mludvig@suse.cz + +- Correctly interpret symbol tables for debugging kernel modules + (gdb6-symtab-minimal.diff) +- Fixed support for GCC variable tracking (gdb6-vartrack.diff) +- Fixed support for Fortran arrays (gdb6-fortranarray.diff) + +------------------------------------------------------------------- +Tue Oct 7 14:50:24 CEST 2003 - schwab@suse.de + +- Hack to build on sparc. + +------------------------------------------------------------------- +Mon Oct 6 22:33:00 CEST 2003 - schwab@suse.de + +- Update to gdb 6.0. + +------------------------------------------------------------------- +Fri Oct 3 10:48:16 CEST 2003 - kukuk@suse.de + +- Remove unused tetex from neededforbuild + +------------------------------------------------------------------- +Mon Sep 29 12:00:35 CEST 2003 - schwab@suse.de + +- Update to gdb 5.3.93 pre-release. + +------------------------------------------------------------------- +Wed Sep 17 18:39:07 CEST 2003 - schwab@suse.de + +- Remove debugging hooks. + +------------------------------------------------------------------- +Wed Sep 17 17:50:23 CEST 2003 - schwab@suse.de + +- Ignore more insns during i386 prologue decoding [#30288]. +- Fix hash table mixup in bfd_simple interface. + +------------------------------------------------------------------- +Tue Sep 16 14:50:44 CEST 2003 - schwab@suse.de + +- Update to gdb 5.3.92 pre-release. + * Fixes bug 31033. + +------------------------------------------------------------------- +Wed Sep 3 17:56:43 CEST 2003 - schwab@suse.de + +- Update to gdb 5.3.91 pre-release. + +------------------------------------------------------------------- +Tue Aug 19 14:09:44 CEST 2003 - schwab@suse.de + +- Update to gdb 5.3.90 2003-08-19 cvs snapshot. + +------------------------------------------------------------------- +Mon Jun 23 13:16:24 CEST 2003 - kukuk@suse.de + +- Fix compiling on SPARC + +------------------------------------------------------------------- +Tue Jun 10 15:54:25 CEST 2003 - schwab@suse.de + +- Don't package mmalloc.info, since libmmalloc isn't included either. + +------------------------------------------------------------------- +Thu May 15 12:09:51 CEST 2003 - schwab@suse.de + +- Remove unwanted files. + +------------------------------------------------------------------- +Thu Apr 24 12:20:23 CEST 2003 - ro@suse.de + +- fix install_info --delete call and move from preun to postun + +------------------------------------------------------------------- +Fri Apr 11 10:14:30 CEST 2003 - mludvig@suse.cz + +- Fix read_2u() function in dwarf2cfi.c + +------------------------------------------------------------------- +Thu Apr 10 18:09:43 CEST 2003 - mludvig@suse.cz + +- Add 'info cfi
' command. +- Fix off-by-4 bug in the CFI parser. + +------------------------------------------------------------------- +Mon Apr 7 13:11:34 CEST 2003 - schwab@suse.de + +- Only delete info entries when removing last version. + +------------------------------------------------------------------- +Thu Mar 27 17:01:30 CET 2003 - schwab@suse.de + +- Fix specfile. + +------------------------------------------------------------------- +Thu Mar 6 15:46:52 CET 2003 - aj@suse.de + +- Fix neededforbuild. + +------------------------------------------------------------------- +Wed Feb 26 17:35:10 CET 2003 - mludvig@suse.cz + +- Added loclist support +- Fixed eh_frame parsing problems +- Updated for proposed x86-64 ABI change + +------------------------------------------------------------------- +Thu Feb 6 17:48:35 CET 2003 - schwab@suse.de + +- Use %install_info. + +------------------------------------------------------------------- +Tue Feb 4 20:22:27 CET 2003 - schwab@suse.de + +- Enable TUI. + +------------------------------------------------------------------- +Sun Jan 26 20:39:57 CET 2003 - olh@suse.de + +- add inital native ppc64 support + +------------------------------------------------------------------- +Thu Jan 09 13:51:58 CET 2003 - mludvig@suse.cz + +- Fixed compilation problem with last gdb-asmbtrace.diff. + No new feature. + +------------------------------------------------------------------- +Tue Jan 07 17:41:49 CET 2003 - mludvig@suse.cz + +- Several Dwarf2 and x86-64 specific changes + * Added ability to do backtrace from some functions + without debug info (patch gdb-asmbtrace.diff) + * Fixed crash on re-run of a debugged program. + * Added some more verbosity to dwarf2cfi engine. + +------------------------------------------------------------------- +Thu Dec 12 15:03:36 CET 2002 - schwab@suse.de + +- Update to gdb 5.3. + * GNU/Linux shared library multi-threaded performance improved. + * ``gdbserver'' now supports multi-threaded applications on some targets + * GDB now supports C/C++ preprocessor macros. + +------------------------------------------------------------------- +Fri Oct 11 11:44:53 CEST 2002 - aj@suse.de + +- Handle gcc code generated by gcc -f-elimante-dwarf2-dups -g. + +------------------------------------------------------------------- +Thu Sep 26 12:13:23 CEST 2002 - schwab@suse.de + +- Avoid installing libbfd, libopcodes, libiberty and libmmalloc [#20199]. + +------------------------------------------------------------------- +Wed Sep 18 17:15:11 CEST 2002 - sf@suse.de + +- added patch from mludvig to remove framepointer on x86_64 + +------------------------------------------------------------------- +Wed Sep 4 10:34:56 CEST 2002 - kukuk@suse.de + +- Add Patch for reading SPARC core files + +------------------------------------------------------------------- +Tue Sep 3 14:01:05 CEST 2002 - schwab@suse.de + +- Remove tetex from neededforbuild. + +------------------------------------------------------------------- +Wed Jul 24 10:51:03 CEST 2002 - schwab@suse.de + +- Update to gdb 5.2.1. + +------------------------------------------------------------------- +Thu Jul 18 12:26:11 CEST 2002 - mludvig@suse.de + +- Fix PLT recognisation. + +------------------------------------------------------------------- +Mon Jul 8 15:19:58 CEST 2002 - schwab@suse.de + +- Add fix for memory leak. + +------------------------------------------------------------------- +Tue Jul 2 16:05:09 CEST 2002 - mludvig@suse.cz + +- removed my previous patches +- added a huge one suse-521-x8664.diff + +------------------------------------------------------------------- +Thu Jun 6 12:38:48 CEST 2002 - sf@suse.de + +- added fpregset.diff (from mludvig@suse.de) +- added dwarf2cfi.diff (from mludvig@suse.de) + +------------------------------------------------------------------- +Wed May 15 12:05:22 CEST 2002 - sf@suse.de + +- added some dwarf2-patches for x86_64 + (from mludvig@suse.de) + +------------------------------------------------------------------- +Thu May 9 19:03:27 CEST 2002 - schwab@suse.de + +- Fix breakpoints on MLX bundle. + +------------------------------------------------------------------- +Mon May 6 17:57:10 CEST 2002 - schwab@suse.de + +- Sparc doesn't have gdbserver either. + +------------------------------------------------------------------- +Sun May 5 15:57:22 CEST 2002 - schwab@suse.de + +- Update to gdb 5.2. +- Gdbserver now available for all but alpha. + +------------------------------------------------------------------- +Fri Jan 25 11:10:12 CET 2002 - schwab@suse.de + +- Update to gdb 5.1.1. + +------------------------------------------------------------------- +Thu Nov 22 15:22:51 CET 2001 - schwab@suse.de + +- Update to gdb 5.1. +- Build and install gdbserver on i386 and ia64. + +------------------------------------------------------------------- +Sat Aug 18 22:59:47 CEST 2001 - schwab@suse.de + +- Update to gdb snapthot 20010316. + +------------------------------------------------------------------- +Fri May 18 15:40:30 CEST 2001 - schwab@suse.de + +- Include ia64 warning patches (from nadvornik@suse.cz). + +------------------------------------------------------------------- +Thu Apr 12 15:15:53 CEST 2001 - schwab@suse.de + +- Remove declaration of tilde_expand, now in readline header. + +------------------------------------------------------------------- +Sun Apr 1 01:12:02 CEST 2001 - schwab@suse.de + +- Fix hardware watchpoints on ia64. + +------------------------------------------------------------------- +Fri Mar 30 14:45:15 CEST 2001 - schwab@suse.de + +- Fix crash on info architecture (#6865). + +------------------------------------------------------------------- +Wed Mar 28 10:57:09 CEST 2001 - schwab@suse.de + +- Use installed readline library. + +------------------------------------------------------------------- +Tue Mar 6 18:25:45 CET 2001 - schwab@suse.de + +- Remove some ia64 hacks. + +------------------------------------------------------------------- +Tue Dec 12 18:22:12 CET 2000 - schwab@suse.de + +- Improve handling of breakpoints in shared libraries. + +------------------------------------------------------------------- +Fri Nov 17 11:25:57 CET 2000 - kukuk@suse.de + +- Update to working gdb snapshot + +------------------------------------------------------------------- +Wed Sep 27 12:56:18 CEST 2000 - fober@suse.de + +- s390: added s390-sigregs-SuSE.patch + +------------------------------------------------------------------- +Thu Sep 14 14:38:38 CEST 2000 - fober@suse.de + +- s390: incorporate new ibm patches for gdb 5.0 + +------------------------------------------------------------------- +Wed Sep 6 17:20:46 CEST 2000 - fober@suse.de + +- s390: incorporate ibm patches for gdb 5.0 + +------------------------------------------------------------------- +Fri Jun 30 16:37:17 CEST 2000 - kukuk@suse.de + +- Add gdb-5.0 + +------------------------------------------------------------------- +Tue Apr 4 12:43:40 MEST 2000 - bk@suse.de + +- s390 team added s390 support + +------------------------------------------------------------------- +Tue Mar 21 17:33:22 CET 2000 - schwab@suse.de + +- Fix core dump reading (#2586). + +------------------------------------------------------------------- +Fri Feb 4 14:14:20 CET 2000 - kukuk@suse.de + +- Add patches for PPC +- Move /usr/info -> /usr/share/info + +------------------------------------------------------------------- +Mon Dec 6 16:52:58 MET 1999 - kukuk@suse.de + +- Remove gdb 4.17 +- Add gdb 4.18 fixes for SPARC + +------------------------------------------------------------------- +Mon Sep 13 17:23:57 CEST 1999 - bs@suse.de + +- ran old prepare_spec on spec file to switch to new prepare_spec. + +------------------------------------------------------------------- +Fri Sep 3 12:00:15 MEST 1999 - kukuk@suse.de + +- Use RPM values for CFLAGS and configure + +------------------------------------------------------------------- +Tue Aug 24 17:05:53 MEST 1999 - uli@suse.de + +- added -fsigned-char to CFLAGS (PPC) + +------------------------------------------------------------------- +Mon Aug 23 18:14:32 MEST 1999 - kukuk@suse.de + +- Add gdb 4.18 thread patch from RH + +------------------------------------------------------------------- +Mon Jul 19 09:54:42 MEST 1999 - florian@suse.de + +- add gdb-4.17.0.12 as /usr/bin/gdb-4.17 + +------------------------------------------------------------------- +Wed Jul 7 17:16:59 MEST 1999 - kukuk@suse.de + +- update to 4.18 using diff from jurix + +------------------------------------------------------------------- +Mon Feb 22 23:39:42 MET 1999 - ro@suse.de + +- update to 4.17.0.11 using diff from jurix + +------------------------------------------------------------------- +Thu Jan 21 14:05:35 MET 1999 - ro@suse.de + +- update to 4.17.0.8 + +------------------------------------------------------------------- +Thu Oct 1 16:55:44 MEST 1998 - ro@suse.de + +- update to 4.17.0.4 using jurix-diff + +------------------------------------------------------------------- +Tue Sep 15 11:18:43 MEST 1998 - ro@suse.de + +- hacked for GLIBC: include sys/ucontext and sys/ptrace where needed +- catch strup redeclarations +- cleaned up patch-sequence + +---------------------------------------------------------------------- +Wed Oct 29 00:00:08 MET 1997 - florian@suse.de + +- fix in libc to correctly support core-files + +- add bug-fix to read symbols from dynamic symbol tables + +- apply all patches from debian gdb-4.16-11 + + +---------------------------------------------------------------------- +Tue Oct 22 15:43:38 MET DST 1996 - florian@suse.de + + +Neue Version 4.16. + +gdb kompiliert nur mit libc 5.4.7 richtig. Mit 5.2.18 kann gdb +keine core-files lesen. +Ich waere dafuer, einfach das Binary von libc 5.4.7 zu benutzen. +Wird schon funktionieren... diff --git a/gdb.spec b/gdb.spec new file mode 100644 index 0000000..4e4af4a --- /dev/null +++ b/gdb.spec @@ -0,0 +1,504 @@ +# +# spec file for package gdb (Version 6.5.90) +# +# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany. +# This file and all modifications and additions to the pristine +# package are under the same license as the package itself. +# +# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# + +# norootforbuild + +Name: gdb +BuildRequires: dejagnu gcc-c++ gcc-fortran gcc-java gcc-objc readline-devel +%ifarch %ix86 x86_64 ia64 +BuildRequires: libunwind-devel +%endif +URL: http://www.gnu.org/software/gdb/ +License: GNU General Public License (GPL) +Group: Development/Tools/Debuggers +Autoreqprov: on +PreReq: %{install_info_prereq} +Version: 6.5.90 +Release: 1 +Summary: The GNU Debugger +Source: gdb-%{version}.tar.bz2 +Patch1: gdb-misc.patch +Patch2: warn.patch +Patch3: readline-5.1-random.patch +Patch4: readnever.patch +Patch5: gstack.patch +Patch7: ppc-dwarf2-cfi.patch +Patch8: pie-relocate.diff +Patch9: mst-solib-trampoline.diff +Patch11: loader_break.diff +Patch12: ppc-long-double.diff +Patch13: lr-frame-offset.diff +Patch14: ppc64-fdesc.diff +Patch15: solib-extract-address.diff +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +You can use GDB to debug programs written in C, C++, Ada, and Modula-2. +GNU Fortran 77 support is also partially included. + + + +Authors: +-------- + Doug Evans + Fred Fish + Ian Lance Taylor + J.T. Conklin + Jason Molenda + Jeffrey A. Law + Jim Kingdon + Kung Hsu + Michael Meissner + Per Bothner + Peter Schauer + Rob Savoye + Stan Shebs + Steve Chamberlain + Stu Grossman + +%prep +%setup -q +%patch1 +%patch2 +%patch3 +%patch4 +%patch5 +%patch7 +%patch8 +%patch9 +cd gdb +%patch11 +cd .. +%patch12 +%patch13 -p1 +%patch14 +%patch15 + +%build +CFLAGS="$RPM_OPT_FLAGS" \ +./configure --prefix=%{_prefix} --libdir=%{_libdir} --infodir=%{_infodir} \ + --mandir=%{_mandir} \ +%ifarch ia64 + --with-libunwind \ +%else + --without-libunwind \ +%endif + --with-separate-debug-dir=%{_prefix}/lib/debug \ + --enable-64-bit-bfd --disable-werror \ + --enable-tui %{_target_cpu}-suse-linux +make %{?jobs:-j%jobs} +make info +make -k check || : + +%install +make install-gdb install-info-gdb DESTDIR="$RPM_BUILD_ROOT" +echo '#!/bin/sh +exec gdb --tui "$@"' > $RPM_BUILD_ROOT%{_bindir}/gdbtui + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +%install_info --info-dir=%{_infodir} %{_infodir}/annotate.info.gz +%install_info --info-dir=%{_infodir} %{_infodir}/gdb.info.gz +%install_info --info-dir=%{_infodir} %{_infodir}/gdbint.info.gz +%install_info --info-dir=%{_infodir} %{_infodir}/stabs.info.gz + +%postun +%install_info_delete --info-dir=%{_infodir} %{_infodir}/annotate.info.gz +%install_info_delete --info-dir=%{_infodir} %{_infodir}/gdb.info.gz +%install_info_delete --info-dir=%{_infodir} %{_infodir}/gdbint.info.gz +%install_info_delete --info-dir=%{_infodir} %{_infodir}/stabs.info.gz + +%files +%defattr(-,root,root) +%doc COPYING COPYING.LIB gdb/README gdb/NEWS +%{_bindir}/gdb +%{_bindir}/gdbtui +%{_bindir}/gstack +%{_mandir}/man1/gdb.1.gz +%{_mandir}/man1/gdbtui.1.gz +%{_infodir}/annotate.info*.gz +%{_infodir}/gdb.info*.gz +%{_infodir}/gdbint.info*.gz +%{_infodir}/stabs.info*.gz +%ifnarch alpha sparc sparc64 +%{_bindir}/gdbserver +%{_mandir}/man1/gdbserver.1.gz +%endif + +%changelog -n gdb +* Sat Dec 02 2006 - schwab@suse.de +- Update to gdb 6.5.90. + * New targets + Xtensa xtensa-elf + Cell Broadband Engine SPU spu-elf + * GDB can now be configured as a cross-debugger targeting native Windows + (mingw32) or Cygwin. It can communicate with a remote debugging stub + running on a Windows system over TCP/IP to debug Windows programs. + * The GDB remote stub, gdbserver, has been updated to support Windows and + Cygwin debugging. Both single-threaded and multi-threaded programs are + supported. + * The "set trust-readonly-sections" command works again. This command was + broken in GDB 6.3, 6.4, and 6.5. + * Support for GNU/Linux Thread Local Storage (TLS, per-thread variables) no + longer requires symbolic debug information (e.g. DWARF-2). + * New commands + set substitute-path + unset substitute-path + show substitute-path + Manage a list of substitution rules that GDB uses to rewrite the name + of the directories where the sources are located. This can be useful + for instance when the sources were moved to a different location + between compilation and debugging. + set trace-commands + show trace-commands + Print each CLI command as it is executed. Each command is prefixed with + a number of `+' symbols representing the nesting depth. + The source command now has a `-v' option to enable the same feature. + * REMOVED features + The ARM Demon monitor support (RDP protocol, "target rdp"). + Kernel Object Display, an embedded debugging feature which only worked with + an obsolete version of Cisco IOS. + The 'set download-write-size' and 'show download-write-size' commands. + * New remote packets + qSupported: + Tell a stub about GDB client features, and request remote target features. + The first feature implemented is PacketSize, which allows the target to + specify the size of packets it can handle - to minimize the number of + packets required and improve performance when connected to a remote + target. + qXfer:auxv:read: + Fetch an OS auxilliary vector from the remote stub. This packet is a + more efficient replacement for qPart:auxv:read. + * Removed remote packets + qPart:auxv:read: + This packet has been replaced by qXfer:auxv:read. Only GDB 6.4 and 6.5 + used it, and only gdbserver implemented it. +* Sat Oct 28 2006 - schwab@suse.de +- Rename detach-fork to detach fork. +* Tue Oct 24 2006 - schwab@suse.de +- Better fix for function descriptor handling on ppc64. +* Fri Aug 25 2006 - schwab@suse.de +- Minimal support for .gnu.hash. +* Thu Aug 24 2006 - schwab@suse.de +- Fix off-by-one in add_symbol_file_command [#200831]. +* Fri Aug 11 2006 - schwab@suse.de +- Correctly extend addresses read from link map. +* Sun Jul 16 2006 - schwab@suse.de +- Fix function decriptor handing on ppc64. +* Wed Jun 21 2006 - schwab@suse.de +- Update to final gdb 6.5. +* Sat Jun 03 2006 - schwab@suse.de +- Update to gdb 6.5 RC 1. +* Wed May 31 2006 - schwab@suse.de +- Set long double size to 16 [#180103]. +* Mon May 22 2006 - schwab@suse.de +- Update to gdb 6.4.90 snapshot 20060522. +* Sun Apr 23 2006 - schwab@suse.de +- Add patch to avoid losing compilation directory. +- Fix a parallel build problem. +* Tue Apr 04 2006 - schwab@suse.de +- Relocate PIEs. +* Mon Mar 27 2006 - schwab@suse.de +- Handle .eh_frame register encoding that is different from .dwarf_frame. +- Remove obsolete patch. +* Wed Jan 25 2006 - mls@suse.de +- converted neededforbuild to BuildRequires +* Mon Jan 23 2006 - schwab@suse.de +- Add fix for PIC prologue analyzer on powerpc. +* Wed Dec 14 2005 - schwab@suse.de +- Add fix for observer notify queue after attach. +* Fri Dec 02 2005 - schwab@suse.de +- Update to gdb 6.4. +* Tue Nov 22 2005 - schwab@suse.de +- Update to gdb 6.3.90. +* Fri Nov 04 2005 - schwab@suse.de +- Update to gdb-6.3.50 snapshot 20051103. +* Mon Oct 03 2005 - schwab@suse.de +- Update to gdb 6.3.50 snapshot 20051003. +* Mon Sep 19 2005 - schwab@suse.de +- Fix warnings. +* Sun Aug 21 2005 - schwab@suse.de +- Add DWARF CFI unwinder on ppc. +* Mon Jun 20 2005 - schwab@suse.de +- Require libunwind-devel on ia64. +* Thu Jun 09 2005 - schwab@suse.de +- Add patch for ia64 vDSO support and unwinding through signals and + syscalls [#60766]. +* Mon Apr 11 2005 - schwab@suse.de +- Fix backtrace through vsyscall [#63483]. +* Mon Apr 11 2005 - schwab@suse.de +- Add patch to fix bugs in rs6000/powerpc register set functions. +- Fix a testsuite bug. +* Sun Mar 06 2005 - schwab@suse.de +- Add patch to suppress fork attach/detach messages. +* Wed Mar 02 2005 - schwab@suse.de +- Add patch to fix following vfork from a secondary thread. +* Mon Feb 28 2005 - schwab@suse.de +- Don't ignore DW_TAG_member [#66406]. +* Tue Feb 01 2005 - schwab@suse.de +- Find separate debug symbol files in /usr/lib/debug by default. +* Thu Jan 27 2005 - schwab@suse.de +- Add patch to handle back-to-back and nested signals. +* Thu Jan 27 2005 - schwab@suse.de +- Add patch to implement reggroups for ppc. +* Wed Jan 26 2005 - schwab@suse.de +- Add patch to implement PPC GNU/Linux sigtramp frame code. +* Wed Jan 12 2005 - schwab@suse.de +- Don't error out when encountering an unavailable value. +* Fri Dec 03 2004 - schwab@suse.de +- Downgrade errors to warnings during backtrace [#48484]. +- Undocument --readnever since it may not be supported by future releases. +- Fix patches from last change. +* Fri Dec 03 2004 - kukuk@suse.de +- Add --readnever option as workaround for [#48485] +* Sun Nov 14 2004 - schwab@suse.de +- Add libunwind-devel to neededforbuild. +* Sat Nov 13 2004 - schwab@suse.de +- Fix missing dependencies. +* Wed Nov 10 2004 - schwab@suse.de +- Version 6.2.91 renamed to 6.3. +* Tue Nov 09 2004 - schwab@suse.de +- Update to gdb 6.2.91 (6.3 release candidate). +* Mon Nov 08 2004 - schwab@suse.de +- Revert last change. +- Fix typo. +* Mon Nov 08 2004 - uli@suse.de +- fixed to build on s390* +* Mon Oct 25 2004 - schwab@suse.de +- Fix building gdbserver on x86-64. +* Mon Oct 25 2004 - schwab@suse.de +- Update to gdb 6.2.90. +- Use libunwind on ia64. +* Thu Sep 09 2004 - schwab@suse.de +- Update to gdb 6.2.1. +* Wed Aug 25 2004 - schwab@suse.de +- Fix deadlock in child_wait [#42796]. +* Tue Aug 24 2004 - schwab@suse.de +- Import latest changes from 6.2 branch. +* Fri Jul 30 2004 - schwab@suse.de +- Update to gdb 6.2. +* Thu Jul 29 2004 - schwab@suse.de +- Update to gdb 6.1.92. +* Mon Jul 26 2004 - schwab@suse.de +- Fix handling of relative filenames in DWARF2 .debug_line. +* Mon Jul 19 2004 - schwab@suse.de +- Update to gdb 6.1.91. +* Thu Jun 24 2004 - schwab@suse.de +- Better handling of dying threads. +* Fri Jun 18 2004 - schwab@suse.de +- Update to gdb 6.1.1. +* Tue May 25 2004 - schwab@suse.de +- Fix handling of short lived threads [#40841]. +* Sat May 01 2004 - schwab@suse.de +- Restore removed hunk. +* Fri Apr 30 2004 - meissner@suse.de +- applied 3 patches to fix problems on ppc64. #39394 +* Sat Apr 17 2004 - schwab@suse.de +- Pacify autobuild. +* Mon Apr 05 2004 - schwab@suse.de +- Version 6.0.92 has been renamed to 6.1. +* Sat Apr 03 2004 - schwab@suse.de +- Update to gdb 6.0.92 (6.1 release candidate). +* Tue Mar 30 2004 - schwab@suse.de +- Fix invalid use of va_list. +* Mon Mar 29 2004 - schwab@suse.de +- Update to gdb 6.0.91. +* Mon Mar 29 2004 - schwab@suse.de +- Update to current CVS. +* Fri Mar 19 2004 - schwab@suse.de +- Fix last change: don't disable testsuite. +* Wed Mar 17 2004 - mludvig@suse.cz +- Added opcodes for VIA PadLock instructions. +* Tue Mar 02 2004 - schwab@suse.de +- Update to gdb 6.0.90. +- Run testsuite. +* Thu Jan 08 2004 - schwab@suse.de +- Fix gate area range. +* Wed Dec 10 2003 - schwab@suse.de +- Support DW_TAG_subrange_type. +- Backport recent ia64 improvements from mainline. +* Tue Oct 21 2003 - mludvig@ +- Add support for debugging both i386 and amd64 apps by a single + amd64 GDB binary. +* Mon Oct 20 2003 - mludvig@suse.cz +- Correctly interpret symbol tables for debugging kernel modules + (gdb6-symtab-minimal.diff) +- Fixed support for GCC variable tracking (gdb6-vartrack.diff) +- Fixed support for Fortran arrays (gdb6-fortranarray.diff) +* Tue Oct 07 2003 - schwab@suse.de +- Hack to build on sparc. +* Mon Oct 06 2003 - schwab@suse.de +- Update to gdb 6.0. +* Fri Oct 03 2003 - kukuk@suse.de +- Remove unused tetex from neededforbuild +* Mon Sep 29 2003 - schwab@suse.de +- Update to gdb 5.3.93 pre-release. +* Wed Sep 17 2003 - schwab@suse.de +- Remove debugging hooks. +* Wed Sep 17 2003 - schwab@suse.de +- Ignore more insns during i386 prologue decoding [#30288]. +- Fix hash table mixup in bfd_simple interface. +* Tue Sep 16 2003 - schwab@suse.de +- Update to gdb 5.3.92 pre-release. + * Fixes bug 31033. +* Wed Sep 03 2003 - schwab@suse.de +- Update to gdb 5.3.91 pre-release. +* Tue Aug 19 2003 - schwab@suse.de +- Update to gdb 5.3.90 2003-08-19 cvs snapshot. +* Mon Jun 23 2003 - kukuk@suse.de +- Fix compiling on SPARC +* Tue Jun 10 2003 - schwab@suse.de +- Don't package mmalloc.info, since libmmalloc isn't included either. +* Thu May 15 2003 - schwab@suse.de +- Remove unwanted files. +* Thu Apr 24 2003 - ro@suse.de +- fix install_info --delete call and move from preun to postun +* Fri Apr 11 2003 - mludvig@suse.cz +- Fix read_2u() function in dwarf2cfi.c +* Thu Apr 10 2003 - mludvig@suse.cz +- Add 'info cfi
' command. +- Fix off-by-4 bug in the CFI parser. +* Mon Apr 07 2003 - schwab@suse.de +- Only delete info entries when removing last version. +* Thu Mar 27 2003 - schwab@suse.de +- Fix specfile. +* Thu Mar 06 2003 - aj@suse.de +- Fix neededforbuild. +* Wed Feb 26 2003 - mludvig@suse.cz +- Added loclist support +- Fixed eh_frame parsing problems +- Updated for proposed x86-64 ABI change +* Thu Feb 06 2003 - schwab@suse.de +- Use %%install_info. +* Tue Feb 04 2003 - schwab@suse.de +- Enable TUI. +* Sun Jan 26 2003 - olh@suse.de +- add inital native ppc64 support +* Thu Jan 09 2003 - mludvig@suse.cz +- Fixed compilation problem with last gdb-asmbtrace.diff. + No new feature. +* Tue Jan 07 2003 - mludvig@suse.cz +- Several Dwarf2 and x86-64 specific changes + * Added ability to do backtrace from some functions + without debug info (patch gdb-asmbtrace.diff) + * Fixed crash on re-run of a debugged program. + * Added some more verbosity to dwarf2cfi engine. +* Thu Dec 12 2002 - schwab@suse.de +- Update to gdb 5.3. + * GNU/Linux shared library multi-threaded performance improved. + * ``gdbserver'' now supports multi-threaded applications on some targets + * GDB now supports C/C++ preprocessor macros. +* Fri Oct 11 2002 - aj@suse.de +- Handle gcc code generated by gcc -f-elimante-dwarf2-dups -g. +* Thu Sep 26 2002 - schwab@suse.de +- Avoid installing libbfd, libopcodes, libiberty and libmmalloc [#20199]. +* Wed Sep 18 2002 - sf@suse.de +- added patch from mludvig to remove framepointer on x86_64 +* Wed Sep 04 2002 - kukuk@suse.de +- Add Patch for reading SPARC core files +* Tue Sep 03 2002 - schwab@suse.de +- Remove tetex from neededforbuild. +* Wed Jul 24 2002 - schwab@suse.de +- Update to gdb 5.2.1. +* Thu Jul 18 2002 - mludvig@suse.de +- Fix PLT recognisation. +* Mon Jul 08 2002 - schwab@suse.de +- Add fix for memory leak. +* Tue Jul 02 2002 - mludvig@suse.cz +- removed my previous patches +- added a huge one suse-521-x8664.diff +* Thu Jun 06 2002 - sf@suse.de +- added fpregset.diff (from mludvig@suse.de) +- added dwarf2cfi.diff (from mludvig@suse.de) +* Wed May 15 2002 - sf@suse.de +- added some dwarf2-patches for x86_64 + (from mludvig@suse.de) +* Thu May 09 2002 - schwab@suse.de +- Fix breakpoints on MLX bundle. +* Mon May 06 2002 - schwab@suse.de +- Sparc doesn't have gdbserver either. +* Sun May 05 2002 - schwab@suse.de +- Update to gdb 5.2. +- Gdbserver now available for all but alpha. +* Fri Jan 25 2002 - schwab@suse.de +- Update to gdb 5.1.1. +* Thu Nov 22 2001 - schwab@suse.de +- Update to gdb 5.1. +- Build and install gdbserver on i386 and ia64. +* Sat Aug 18 2001 - schwab@suse.de +- Update to gdb snapthot 20010316. +* Fri May 18 2001 - schwab@suse.de +- Include ia64 warning patches (from nadvornik@suse.cz). +* Thu Apr 12 2001 - schwab@suse.de +- Remove declaration of tilde_expand, now in readline header. +* Sun Apr 01 2001 - schwab@suse.de +- Fix hardware watchpoints on ia64. +* Fri Mar 30 2001 - schwab@suse.de +- Fix crash on info architecture (#6865). +* Wed Mar 28 2001 - schwab@suse.de +- Use installed readline library. +* Tue Mar 06 2001 - schwab@suse.de +- Remove some ia64 hacks. +* Tue Dec 12 2000 - schwab@suse.de +- Improve handling of breakpoints in shared libraries. +* Fri Nov 17 2000 - kukuk@suse.de +- Update to working gdb snapshot +* Wed Sep 27 2000 - fober@suse.de +- s390: added s390-sigregs-SuSE.patch +* Thu Sep 14 2000 - fober@suse.de +- s390: incorporate new ibm patches for gdb 5.0 +* Wed Sep 06 2000 - fober@suse.de +- s390: incorporate ibm patches for gdb 5.0 +* Fri Jun 30 2000 - kukuk@suse.de +- Add gdb-5.0 +* Tue Apr 04 2000 - bk@suse.de +- s390 team added s390 support +* Tue Mar 21 2000 - schwab@suse.de +- Fix core dump reading (#2586). +* Fri Feb 04 2000 - kukuk@suse.de +- Add patches for PPC +- Move /usr/info -> /usr/share/info +* Mon Dec 06 1999 - kukuk@suse.de +- Remove gdb 4.17 +- Add gdb 4.18 fixes for SPARC +* Mon Sep 13 1999 - bs@suse.de +- ran old prepare_spec on spec file to switch to new prepare_spec. +* Fri Sep 03 1999 - kukuk@suse.de +- Use RPM values for CFLAGS and configure +* Tue Aug 24 1999 - uli@suse.de +- added -fsigned-char to CFLAGS (PPC) +* Mon Aug 23 1999 - kukuk@suse.de +- Add gdb 4.18 thread patch from RH +* Mon Jul 19 1999 - florian@suse.de +- add gdb-4.17.0.12 as /usr/bin/gdb-4.17 +* Wed Jul 07 1999 - kukuk@suse.de +- update to 4.18 using diff from jurix +* Mon Feb 22 1999 - ro@suse.de +- update to 4.17.0.11 using diff from jurix +* Thu Jan 21 1999 - ro@suse.de +- update to 4.17.0.8 +* Thu Oct 01 1998 - ro@suse.de +- update to 4.17.0.4 using jurix-diff +* Tue Sep 15 1998 - ro@suse.de +- hacked for GLIBC: include sys/ucontext and sys/ptrace where needed +- catch strup redeclarations +- cleaned up patch-sequence +* Wed Oct 29 1997 - florian@suse.de +- fix in libc to correctly support core-files +- add bug-fix to read symbols from dynamic symbol tables +- apply all patches from debian gdb-4.16-11 +* Thu Jan 02 1997 - florian@suse.de + Neue Version 4.16. + gdb kompiliert nur mit libc 5.4.7 richtig. Mit 5.2.18 kann gdb + keine core-files lesen. + Ich waere dafuer, einfach das Binary von libc 5.4.7 zu benutzen. + Wird schon funktionieren... diff --git a/gstack.patch b/gstack.patch new file mode 100644 index 0000000..c2ce547 --- /dev/null +++ b/gstack.patch @@ -0,0 +1,89 @@ +2004-11-23 Andrew Cagney + + * Makefile.in (uninstall-gstack, install-gstack): New rules, add + to install and uninstall. + * gstack.sh: New file. + +--- gdb/gstack.sh 1969-12-31 19:00:00.000000000 -0500 ++++ gdb/gstack.sh 2004-11-23 13:34:48.000000000 -0500 +@@ -0,0 +1,28 @@ ++#!/bin/sh ++ ++if test $# -ne 1; then ++ echo "Usage: $0 " 1>&2 ++ exit 1 ++fi ++ ++if test ! -r /proc/$1; then ++ echo "Process $1 not found." 1>&2 ++ exit 1 ++fi ++ ++GDB=${GDB:-gdb} ++ ++if $GDB -nx --quiet --batch --readnever > /dev/null 2>&1; then ++ readnever=--readnever ++else ++ readnever= ++fi ++ ++# Run GDB, strip out unwanted noise. ++$GDB --quiet $readnever -nx /proc/$1/exe $1 <&1 | ++thread apply all bt ++EOF ++sed -n \ ++ -e 's/^(gdb) //' \ ++ -e '/^#/p' \ ++ -e '/^Thread/p' +--- gdb/Makefile.in 2004-11-23 13:31:03.000000000 -0500 ++++ gdb/Makefile.in 2004-11-23 15:06:34.623389592 -0500 +@@ -970,7 +970,7 @@ + # time it takes for make to check that all is up to date. + # install-only is intended to address that need. + install: all install-only +-install-only: $(CONFIG_INSTALL) ++install-only: install-gstack $(CONFIG_INSTALL) + transformed_name=`t='$(program_transform_name)'; \ + echo gdb | sed -e "$$t"` ; \ + if test "x$$transformed_name" = x; then \ +@@ -1002,9 +1002,22 @@ + $(DESTDIR)$(man1dir) ; \ + $(INSTALL_DATA) $(srcdir)/gdb.1 \ + $(DESTDIR)$(man1dir)/$$transformed_name.1 ++GSTACK=gstack ++.PHONY: install-gstack ++install-gstack: ++ transformed_name=`t='$(program_transform_name)'; \ ++ echo $(GSTACK) | sed -e "$$t"` ; \ ++ if test "x$$transformed_name" = x; then \ ++ transformed_name=$(GSTACK) ; \ ++ else \ ++ true ; \ ++ fi ; \ ++ $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \ ++ $(INSTALL_PROGRAM) $(srcdir)/$(GSTACK).sh \ ++ $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ + + +-uninstall: force $(CONFIG_UNINSTALL) ++uninstall: force uninstall-gstack $(CONFIG_UNINSTALL) + transformed_name=`t='$(program_transform_name)'; \ + echo gdb | sed -e $$t` ; \ + if test "x$$transformed_name" = x; then \ +@@ -1026,6 +1043,16 @@ + fi ; \ + rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \ + $(DESTDIR)$(man1dir)/$$transformed_name.1 ++.PHONY: uninstall-gstack ++uninstall-gstack: ++ transformed_name=`t='$(program_transform_name)'; \ ++ echo $(GSTACK) | sed -e $$t` ; \ ++ if test "x$$transformed_name" = x; then \ ++ transformed_name=$(GSTACK) ; \ ++ else \ ++ true ; \ ++ fi ; \ ++ rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) + + # We do this by grepping through sources. If that turns out to be too slow, + # maybe we could just require every .o file to have an initialization routine diff --git a/loader_break.diff b/loader_break.diff new file mode 100644 index 0000000..6f8f244 --- /dev/null +++ b/loader_break.diff @@ -0,0 +1,86 @@ +2006-05-25 Paul Gilliam +Subject: [PATCH] Fix powerpc 64bit backtrace code +To: gdb-patches@sourceware.org +Date: Fri, 2 Jun 2006 12:38:24 +1000 + + +Hi, + +When backtracing a 64bit task on ppc64/Linux I notice we sometimes get +garbage for the PC: + +#3 0xc00000006d337cd0 in ?? () +#4 0x8822248200000001 in ?? () +#5 0x4822248200000000 in ?? () + +Looking closer, it appears that gdb has missed the LR field and instead +got the CR field. On 32bit the LR is at SP + wordsize, however on 64bit +it is SP + 2*wordsize. + +Knowing this I looked through the backtrace code and it looks like the +fallback is incorrect. If we fail to determine the stack layout +accurately we should make a guess based on the ABI. It turns out +tdep->lr_frame_offset was created for this purpose, but isnt used +anywhere. + +Look OK? + +Anton +--- + +2006-06-02 Anton Blanchard + + * rs6000-tdep.c (rs6000_frame_cache): Use tdep->lr_frame_offset + instead of wordsize when looking for the LR in a stack frame. + + +--- src/gdb/rs6000-tdep.c~ 2006-06-02 09:34:44.000000000 +1000 ++++ src/gdb/rs6000-tdep.c 2006-06-02 09:33:42.000000000 +1000 +@@ -2988,7 +2988,7 @@ + if (make_frame) + { + fdata.frameless = 0; +- fdata.lr_offset = wordsize; ++ fdata.lr_offset = tdep->lr_frame_offset; + } + } + + diff --git a/mst-solib-trampoline.diff b/mst-solib-trampoline.diff new file mode 100644 index 0000000..7e5f1d6 --- /dev/null +++ b/mst-solib-trampoline.diff @@ -0,0 +1,11 @@ +--- gdb/minsyms.c ++++ gdb/minsyms.c +@@ -490,6 +490,8 @@ + don't fill the bfd_section member, so don't + throw away symbols on those platforms. */ + && SYMBOL_BFD_SECTION (&msymbol[hi]) != NULL ++ /* Don't ignore symbols for solib trampolines. */ ++ && MSYMBOL_TYPE (&msymbol[hi]) != mst_solib_trampoline + && (!matching_bfd_sections + (SYMBOL_BFD_SECTION (&msymbol[hi]), section))) + { diff --git a/pie-relocate.diff b/pie-relocate.diff new file mode 100644 index 0000000..287e6f6 --- /dev/null +++ b/pie-relocate.diff @@ -0,0 +1,670 @@ +--- gdb/Makefile.in ++++ gdb/Makefile.in +@@ -2444,7 +2444,7 @@ + $(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(mdebugread_h) \ + $(gdb_assert_h) $(gdb_stat_h) $(gdb_obstack_h) $(gdb_string_h) \ + $(hashtab_h) $(breakpoint_h) $(block_h) $(dictionary_h) $(source_h) \ +- $(parser_defs_h) $(expression_h) ++ $(parser_defs_h) $(expression_h) $(auxv_h) $(elf_common_h) + observer.o: observer.c $(defs_h) $(observer_h) $(command_h) $(gdbcmd_h) \ + $(observer_inc) + obsd-tdep.o: obsd-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(obsd_tdep_h) +@@ -2663,9 +2663,9 @@ + $(bcache_h) $(regcache_h) + solib-svr4.o: solib-svr4.c $(defs_h) $(elf_external_h) $(elf_common_h) \ + $(elf_mips_h) $(symtab_h) $(bfd_h) $(symfile_h) $(objfiles_h) \ +- $(gdbcore_h) $(target_h) $(inferior_h) $(gdb_assert_h) \ ++ $(gdbcore_h) $(target_h) $(inferior_h) $(command_h) $(gdb_assert_h) \ + $(solist_h) $(solib_h) $(solib_svr4_h) $(bfd_target_h) $(elf_bfd_h) \ +- $(exec_h) ++ $(exec_h) $(auxv_h) + sol-thread.o: sol-thread.c $(defs_h) $(gdbthread_h) $(target_h) \ + $(inferior_h) $(gdb_stat_h) $(gdbcmd_h) $(gdbcore_h) $(regcache_h) \ + $(solib_h) $(symfile_h) $(gdb_string_h) $(gregset_h) +@@ -2773,7 +2773,7 @@ + $(objfiles_h) $(source_h) $(gdbcmd_h) $(breakpoint_h) $(language_h) \ + $(complaints_h) $(demangle_h) $(inferior_h) $(filenames_h) \ + $(gdb_stabs_h) $(gdb_obstack_h) $(completer_h) $(bcache_h) \ +- $(hashtab_h) $(readline_h) $(gdb_assert_h) $(block_h) \ ++ $(hashtab_h) $(readline_h) $(gdb_assert_h) $(block_h) $(varobj_h) \ + $(gdb_string_h) $(gdb_stat_h) $(observer_h) $(exec_h) \ + $(parser_defs_h) + symfile-mem.o: symfile-mem.c $(defs_h) $(symtab_h) $(gdbcore_h) \ +--- gdb/breakpoint.c ++++ gdb/breakpoint.c +@@ -3810,6 +3810,7 @@ + printf_filtered ("%s%s ", + ((b->enable_state == bp_disabled || + b->enable_state == bp_shlib_disabled || ++ b->enable_state == bp_startup_disabled || + b->enable_state == bp_call_disabled) + ? " (disabled)" + : b->enable_state == bp_permanent +@@ -4487,6 +4488,60 @@ + } + } + ++void ++disable_breakpoints_at_startup (int silent) ++{ ++ struct breakpoint *b; ++ int disabled_startup_breaks = 0; ++ ++ if (bfd_get_start_address (exec_bfd) != entry_point_address ()) ++ { ++ ALL_BREAKPOINTS (b) ++ { ++ if ((b->type == bp_breakpoint ++ || b->type == bp_hardware_breakpoint) ++ && b->enable_state == bp_enabled ++ && !b->loc->duplicate) ++ { ++ b->enable_state = bp_startup_disabled; ++ if (!silent) ++ { ++ if (!disabled_startup_breaks) ++ { ++ target_terminal_ours_for_output (); ++ warning ("Temporarily disabling breakpoints:"); ++ } ++ disabled_startup_breaks = 1; ++ warning ("breakpoint #%d addr 0x%s", ++ b->number, paddr_nz (b->loc->address)); ++ } ++ } ++ } ++ } ++} ++ ++/* Try to reenable any breakpoints after startup. */ ++void ++re_enable_breakpoints_at_startup (void) ++{ ++ struct breakpoint *b; ++ ++ if (bfd_get_start_address (exec_bfd) != entry_point_address ()) ++ { ++ ALL_BREAKPOINTS (b) ++ if (b->enable_state == bp_startup_disabled) ++ { ++ gdb_byte buf[1]; ++ ++ /* Do not reenable the breakpoint if the shared library ++ is still not mapped in. */ ++ if (target_read_memory (b->loc->address, buf, 1) == 0) ++ b->enable_state = bp_enabled; ++ } ++ } ++} ++ ++ + static void + solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname, + char *cond_string, enum bptype bp_kind) +@@ -6833,6 +6888,7 @@ + && !b->loc->duplicate + && b->enable_state != bp_disabled + && b->enable_state != bp_shlib_disabled ++ && b->enable_state != bp_startup_disabled + && !b->pending + && b->enable_state != bp_call_disabled) + { +@@ -7048,7 +7104,8 @@ + break; + + save_enable = b->enable_state; +- if (b->enable_state != bp_shlib_disabled) ++ if (b->enable_state != bp_shlib_disabled ++ && b->enable_state != bp_startup_disabled) + b->enable_state = bp_disabled; + else + /* If resetting a shlib-disabled breakpoint, we don't want to +--- gdb/breakpoint.h ++++ gdb/breakpoint.h +@@ -159,6 +159,7 @@ + automatically enabled and reset when the call + "lands" (either completes, or stops at another + eventpoint). */ ++ bp_startup_disabled, + bp_permanent /* There is a breakpoint instruction hard-wired into + the target's code. Don't try to write another + breakpoint instruction on top of it, or restore +@@ -794,8 +795,12 @@ + + extern void disable_breakpoints_in_shlibs (int silent); + ++extern void disable_breakpoints_at_startup (int silent); ++ + extern void re_enable_breakpoints_in_shlibs (void); + ++extern void re_enable_breakpoints_at_startup (void); ++ + extern void create_solib_load_event_breakpoint (char *, int, char *, char *); + + extern void create_solib_unload_event_breakpoint (char *, int, +--- gdb/dwarf2read.c ++++ gdb/dwarf2read.c +@@ -1221,7 +1221,7 @@ + else + dwarf2_per_objfile->loc_buffer = NULL; + +- if (mainline ++ if (mainline == 1 + || (objfile->global_psymbols.size == 0 + && objfile->static_psymbols.size == 0)) + { +--- gdb/elfread.c ++++ gdb/elfread.c +@@ -556,7 +556,7 @@ + /* If we are reinitializing, or if we have never loaded syms yet, + set table to empty. MAINLINE is cleared so that *_read_psymtab + functions do not all also re-initialize the psymbol table. */ +- if (mainline) ++ if (mainline == 1) + { + init_psymbol_list (objfile, 0); + mainline = 0; +--- gdb/infrun.c ++++ gdb/infrun.c +@@ -2203,6 +2203,11 @@ + code segments in shared libraries might be mapped in now. */ + re_enable_breakpoints_in_shlibs (); + ++ /* For PIE executables, we dont really know where the ++ breakpoints are going to be until we start up the ++ inferior. */ ++ re_enable_breakpoints_at_startup (); ++ + /* If requested, stop when the dynamic linker notifies + gdb of events. This allows the user to get control + and place breakpoints in initializer routines for +--- gdb/objfiles.c ++++ gdb/objfiles.c +@@ -49,6 +49,8 @@ + #include "block.h" + #include "dictionary.h" + #include "source.h" ++#include "auxv.h" ++#include "elf/common.h" + + /* Prototypes for local functions */ + +@@ -261,7 +263,16 @@ + CORE_ADDR + entry_point_address (void) + { +- return symfile_objfile ? symfile_objfile->ei.entry_point : 0; ++ int ret; ++ CORE_ADDR entry_addr; ++ ++ /* Find the address of the entry point of the program from the ++ auxv vector. */ ++ ret = target_auxv_search (¤t_target, AT_ENTRY, &entry_addr); ++ if (ret > 0) ++ return entry_addr; ++ else ++ return symfile_objfile ? symfile_objfile->ei.entry_point : 0; + } + + /* Create the terminating entry of OBJFILE's minimal symbol table. +--- gdb/solib-svr4.c ++++ gdb/solib-svr4.c +@@ -34,6 +34,7 @@ + #include "gdbcore.h" + #include "target.h" + #include "inferior.h" ++#include "command.h" + + #include "gdb_assert.h" + +@@ -44,6 +45,7 @@ + #include "bfd-target.h" + #include "elf-bfd.h" + #include "exec.h" ++#include "auxv.h" + + static struct link_map_offsets *svr4_fetch_link_map_offsets (void); + static int svr4_have_link_map_offsets (void); +@@ -278,8 +280,6 @@ + + /* Local function prototypes */ + +-static int match_main (char *); +- + static CORE_ADDR bfd_lookup_symbol (bfd *, char *, flagword); + + /* +@@ -404,17 +404,29 @@ + gdb_byte *buf; + gdb_byte *bufend; + int arch_size; ++ CORE_ADDR relocated_dyninfo_addr, entry_addr; ++ int ret; ++ ++ /* Find the address of the entry point of the program from the ++ auxv vector. */ ++ ret = target_auxv_search (¤t_target, AT_ENTRY, &entry_addr); ++ ++ if (ret <= 0) ++ /* No auxv info, maybe an older kernel. Fake our way through. */ ++ entry_addr = bfd_get_start_address (exec_bfd); + + /* Find the start address of the .dynamic section. */ + dyninfo_sect = bfd_get_section_by_name (exec_bfd, ".dynamic"); + if (dyninfo_sect == NULL) + return 0; + dyninfo_addr = bfd_section_vma (exec_bfd, dyninfo_sect); ++ relocated_dyninfo_addr ++ = dyninfo_addr + entry_addr - bfd_get_start_address (exec_bfd); + + /* Read in .dynamic section, silently ignore errors. */ + dyninfo_sect_size = bfd_section_size (exec_bfd, dyninfo_sect); + buf = alloca (dyninfo_sect_size); +- if (target_read_memory (dyninfo_addr, buf, dyninfo_sect_size)) ++ if (target_read_memory (relocated_dyninfo_addr, buf, dyninfo_sect_size)) + return 0; + + /* Find the DT_DEBUG entry in the the .dynamic section. +@@ -763,9 +775,55 @@ + does have a name, so we can no longer use a missing name to + decide when to ignore it. */ + if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0) +- free_so (new); ++ { ++ /* It is the first link map entry, i.e. it is the main ++ executable. */ ++ if (bfd_get_start_address (exec_bfd) == entry_point_address ()) ++ { ++ /* Non-pie case, main executable has not been relocated. */ ++ free_so (new); ++ } ++ else ++ { ++ /* Pie case, main executable has been relocated. */ ++ struct so_list *gdb_solib; ++ ++ strncpy (new->so_name, exec_bfd->filename, ++ SO_NAME_MAX_PATH_SIZE - 1); ++ new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; ++ strcpy (new->so_original_name, new->so_name); ++ new->main_relocated = 0; ++ ++ for (gdb_solib = master_so_list (); ++ gdb_solib != NULL; ++ gdb_solib = gdb_solib->next) ++ if (strcmp (gdb_solib->so_name, new->so_name) == 0 ++ && gdb_solib->main_relocated) ++ break; ++ ++ if (gdb_solib == NULL) ++ { ++ add_to_target_sections (0 /*from_tty*/, ¤t_target, new); ++ new->main_p = 1; ++ } ++ ++ /* We need this in the list of shared libs we return because ++ solib_add_stub will loop through it and add the symbol ++ file. */ ++ new->next = 0; ++ *link_ptr = new; ++ link_ptr = &new->next; ++ } ++ } + else + { ++ /* This is not the first link map entry, i.e. is not the main ++ executable. Note however that it could be the DSO supplied on ++ certain systems (i.e. Linux 2.6) containing information about ++ the vsyscall page. We must ignore such entry. This entry is ++ nameless (just like the one for the main executable, ++ sigh). */ ++ + int errcode; + char *buffer; + +@@ -783,10 +841,8 @@ + strcpy (new->so_original_name, new->so_name); + } + +- /* If this entry has no name, or its name matches the name +- for the main executable, don't include it in the list. */ +- if (! new->so_name[0] +- || match_main (new->so_name)) ++ /* If this entry has no name, don't include it in the list. */ ++ if (! new->so_name[0]) + free_so (new); + else + { +@@ -882,24 +938,6 @@ + return 0; + } + +-/* On some systems, the only way to recognize the link map entry for +- the main executable file is by looking at its name. Return +- non-zero iff SONAME matches one of the known main executable names. */ +- +-static int +-match_main (char *soname) +-{ +- char **mainp; +- +- for (mainp = main_name_list; *mainp != NULL; mainp++) +- { +- if (strcmp (soname, *mainp) == 0) +- return (1); +- } +- +- return (0); +-} +- + /* Return 1 if PC lies in the dynamic symbol resolution code of the + SVR4 run time loader. */ + static CORE_ADDR interp_text_sect_low; +@@ -1384,6 +1422,8 @@ + while (stop_signal != TARGET_SIGNAL_TRAP); + stop_soon = NO_STOP_QUIETLY; + #endif /* defined(_SCO_DS) */ ++ ++ disable_breakpoints_at_startup (1); + } + + static void +--- gdb/solib.c ++++ gdb/solib.c +@@ -396,15 +396,37 @@ + /* Have we already loaded this shared object? */ + ALL_OBJFILES (so->objfile) + { +- if (strcmp (so->objfile->name, so->so_name) == 0) ++ /* Found an already loaded shared library. */ ++ if (strcmp (so->objfile->name, so->so_name) == 0 ++ && !so->main_p) + return 1; ++ /* Found an already loaded main executable. This could happen in ++ two circumstances. ++ First case: the main file has already been read in as the first ++ thing that gdb does at startup, and the file hasn't been ++ relocated properly yet. Therefore we need to read it in with the ++ proper section info. ++ Second case: it has been read in with the correct relocation, and ++ therefore we need to skip it. */ ++ if (strcmp (so->objfile->name, so->so_name) == 0 ++ && so->main_p ++ && so->main_relocated) ++ return 1; + } + + sap = build_section_addr_info_from_section_table (so->sections, + so->sections_end); + +- so->objfile = symbol_file_add (so->so_name, so->from_tty, +- sap, 0, OBJF_SHARED); ++ if (so->main_p) ++ { ++ so->objfile = symbol_file_add (so->so_name, /*so->from_tty*/ 0, ++ sap, 1, 0); ++ so->main_relocated = 1; ++ } ++ else ++ so->objfile = symbol_file_add (so->so_name, so->from_tty, ++ sap, 0, OBJF_SHARED); ++ + free_section_addr_info (sap); + + return (1); +@@ -585,28 +607,7 @@ + /* Fill in the rest of each of the `struct so_list' nodes. */ + for (i = inferior; i; i = i->next) + { +- i->from_tty = from_tty; +- +- /* Fill in the rest of the `struct so_list' node. */ +- catch_errors (solib_map_sections, i, +- "Error while mapping shared library sections:\n", +- RETURN_MASK_ALL); +- +- /* If requested, add the shared object's sections to the TARGET's +- section table. Do this immediately after mapping the object so +- that later nodes in the list can query this object, as is needed +- in solib-osf.c. */ +- if (target) +- { +- int count = (i->sections_end - i->sections); +- if (count > 0) +- { +- int space = target_resize_to_sections (target, count); +- memcpy (target->to_sections + space, +- i->sections, +- count * sizeof (i->sections[0])); +- } +- } ++ add_to_target_sections (from_tty, target, i); + + /* Notify any observer that the shared object has been + loaded now that we've added it to GDB's tables. */ +@@ -702,6 +703,39 @@ + } + } + ++void ++add_to_target_sections (int from_tty, struct target_ops *target, ++ struct so_list *solib) ++{ ++ /* If this is set, then the sections have been already added to the ++ target list. */ ++ if (solib->main_p) ++ return; ++ ++ solib->from_tty = from_tty; ++ ++ /* Fill in the rest of the `struct so_list' node. */ ++ catch_errors (solib_map_sections, solib, ++ "Error while mapping shared library sections:\n", ++ RETURN_MASK_ALL); ++ ++ /* If requested, add the shared object's sections to the TARGET's ++ section table. Do this immediately after mapping the object so ++ that later nodes in the list can query this object, as is needed ++ in solib-osf.c. */ ++ if (target) ++ { ++ int count = solib->sections_end - solib->sections; ++ if (count > 0) ++ { ++ int space = target_resize_to_sections (target, count); ++ memcpy (target->to_sections + space, ++ solib->sections, ++ count * sizeof (solib->sections[0])); ++ } ++ } ++} ++ + + /* + +--- gdb/solist.h ++++ gdb/solist.h +@@ -62,6 +62,8 @@ + bfd *abfd; + char symbols_loaded; /* flag: symbols read in yet? */ + char from_tty; /* flag: print msgs? */ ++ char main_p; /* flag: is this the main executable? */ ++ char main_relocated; /* flag: has it been relocated yet? */ + struct objfile *objfile; /* objfile for loaded lib */ + struct section_table *sections; + struct section_table *sections_end; +@@ -116,6 +118,10 @@ + /* Find solib binary file and open it. */ + extern int solib_open (char *in_pathname, char **found_pathname); + ++/* Add the list of sections in so_list to the target to_sections. */ ++extern void add_to_target_sections (int, struct target_ops *, ++ struct so_list *); ++ + /* FIXME: gdbarch needs to control this variable */ + extern struct target_so_ops *current_target_so_ops; + +--- gdb/symfile-mem.c ++++ gdb/symfile-mem.c +@@ -110,7 +110,7 @@ + } + + objf = symbol_file_add_from_bfd (nbfd, from_tty, +- sai, 0, OBJF_SHARED); ++ sai, 2, OBJF_SHARED); + + /* This might change our ideas about frames already looked at. */ + reinit_frame_cache (); +--- gdb/symfile.c ++++ gdb/symfile.c +@@ -49,6 +49,7 @@ + #include "readline/readline.h" + #include "gdb_assert.h" + #include "block.h" ++#include "varobj.h" + #include "observer.h" + #include "exec.h" + #include "parser-defs.h" +@@ -660,7 +661,7 @@ + + /* Now either addrs or offsets is non-zero. */ + +- if (mainline) ++ if (mainline == 1) + { + /* We will modify the main symbol table, make sure that all its users + will be cleaned up if an error occurs during symbol reading. */ +@@ -688,7 +689,7 @@ + + We no longer warn if the lowest section is not a text segment (as + happens for the PA64 port. */ +- if (!mainline && addrs && addrs->other[0].name) ++ if (addrs && addrs->other[0].name) + { + asection *lower_sect; + asection *sect; +@@ -857,14 +858,14 @@ + /* If this is the main symbol file we have to clean up all users of the + old main symbol file. Otherwise it is sufficient to fixup all the + breakpoints that may have been redefined by this symbol file. */ +- if (mainline) ++ if (mainline == 1) + { + /* OK, make it the "real" symbol file. */ + symfile_objfile = objfile; + + clear_symtab_users (); + } +- else ++ else if (mainline == 0) + { + breakpoint_re_set (); + } +@@ -910,7 +911,7 @@ + interactively wiping out any existing symbols. */ + + if ((have_full_symbols () || have_partial_symbols ()) +- && mainline ++ && mainline == 1 + && from_tty + && !query ("Load new symbol table from \"%s\"? ", name)) + error (_("Not confirmed.")); +@@ -1091,6 +1092,11 @@ + symfile_objfile->name) + : !query (_("Discard symbol table? ")))) + error (_("Not confirmed.")); ++ ++#ifdef CLEAR_SOLIB ++ CLEAR_SOLIB (); ++#endif ++ + free_all_objfiles (); + + /* solib descriptors may have handles to objfiles. Since their +@@ -2205,6 +2211,8 @@ + /* Discard cleanups as symbol reading was successful. */ + discard_cleanups (old_cleanups); + ++ init_entry_point_info (objfile); ++ + /* If the mtime has changed between the time we set new_modtime + and now, we *want* this to be out of date, so don't call stat + again now. */ +@@ -2580,6 +2588,7 @@ + clear_pc_function_cache (); + if (deprecated_target_new_objfile_hook) + deprecated_target_new_objfile_hook (NULL); ++ varobj_refresh (); + + /* Clear globals which might have pointed into a removed objfile. + FIXME: It's not clear which of these are supposed to persist +--- gdb/varobj.c ++++ gdb/varobj.c +@@ -870,6 +870,58 @@ + return rootcount; + } + ++void ++varobj_refresh (void) ++{ ++ struct varobj *var; ++ struct varobj_root *croot; ++ int mycount = rootcount; ++ char * name; ++ ++ croot = rootlist; ++ while (croot != NULL && mycount > 0) ++ { ++ var = croot->rootvar; ++ ++ /* Get rid of the memory for the old expression. This also leaves ++ var->root->exp == NULL, which is ok for the parsing below. */ ++ free_current_contents (&var->root->exp); ++ ++ value_free (var->value); ++ var->type = NULL; ++ ++ name = xstrdup (var->name); ++ ++ /* Reparse the expression. Wrap the call to parse expression, so we ++ can return a sensible error. */ ++ if (!gdb_parse_exp_1 (&name, var->root->valid_block, 0, &var->root->exp)) ++ return; ++ ++ /* We definitively need to catch errors here. If ++ evaluate_expression succeeds we got the value we wanted. But if ++ it fails, we still go on with a call to evaluate_type. */ ++ if (gdb_evaluate_expression (var->root->exp, &var->value)) ++ { ++ /* no error */ ++ release_value (var->value); ++ if (value_lazy (var->value)) ++ gdb_value_fetch_lazy (var->value); ++ } ++ else ++ var->value = evaluate_type (var->root->exp); ++ ++ var->type = value_type (var->value); ++ ++ mycount--; ++ croot = croot->next; ++ } ++ ++ if (mycount || croot != NULL) ++ warning ++ ("varobj_refresh: assertion failed - wrong tally of root vars (%d:%d)", ++ rootcount, mycount); ++} ++ + /* Update the values for a variable and its children. This is a + two-pronged attack. First, re-parse the value for the root's + expression to see if it's changed. Then go all the way +--- gdb/varobj.h ++++ gdb/varobj.h +@@ -99,4 +99,6 @@ + + extern int varobj_update (struct varobj **varp, struct varobj ***changelist); + ++extern void varobj_refresh (void); ++ + #endif /* VAROBJ_H */ diff --git a/ppc-dwarf2-cfi.patch b/ppc-dwarf2-cfi.patch new file mode 100644 index 0000000..6787b33 --- /dev/null +++ b/ppc-dwarf2-cfi.patch @@ -0,0 +1,73 @@ +--- gdb/Makefile.in ++++ gdb/Makefile.in +@@ -2538,7 +2538,7 @@ + $(reggroups_h) $(libbfd_h) $(coff_internal_h) $(libcoff_h) \ + $(coff_xcoff_h) $(libxcoff_h) $(elf_bfd_h) $(solib_svr4_h) \ + $(ppc_tdep_h) $(gdb_assert_h) $(dis_asm_h) $(trad_frame_h) \ +- $(frame_unwind_h) $(frame_base_h) $(rs6000_tdep_h) ++ $(frame_unwind_h) $(frame_base_h) $(rs6000_tdep_h) $(dwarf2_frame_h) + rs6000-aix-tdep.o: rs6000-aix-tdep.c $(defs_h) $(osabi_h) $(rs6000_tdep_h) + s390-nat.o: s390-nat.c $(defs_h) $(tm_h) $(regcache_h) $(inferior_h) \ + $(s390_tdep_h) $(target_h) $(linux_nat_h) +--- gdb/rs6000-tdep.c ++++ gdb/rs6000-tdep.c +@@ -40,6 +40,7 @@ + #include "sim-regno.h" + #include "gdb/sim-ppc.h" + #include "reggroups.h" ++#include "dwarf2-frame.h" + + #include "libbfd.h" /* for bfd_default_set_arch_mach */ + #include "coff/internal.h" /* for libcoff.h */ +@@ -2243,6 +2244,40 @@ + } + + ++/* Convert a .eh_frame register number to a Dwarf 2 register number. */ ++static int ++rs6000_eh_frame_regnum (struct gdbarch *gdbarch, int num) ++{ ++ if (0 <= num && num <= 63) /* r0-r31,fp0-fp31 */ ++ return num; ++ else if (68 <= num && num <= 75) /* cr0-cr8 */ ++ return num - 68 + 86; ++ else if (77 <= num && num <= 108) /* vr0-vr31 */ ++ return num - 77 + 1124; ++ else ++ switch (num) ++ { ++ case 64: /* mq */ ++ return 100; ++ case 65: /* lr */ ++ return 108; ++ case 66: /* ctr */ ++ return 109; ++ case 76: /* xer */ ++ return 101; ++ case 109: /* vrsave */ ++ return 356; ++ case 110: /* vscr */ ++ return 67; ++ case 111: /* spe_acc */ ++ return 99; ++ case 112: /* spefscr */ ++ return 612; ++ default: ++ return num; ++ } ++} ++ + static void + rs6000_store_return_value (struct type *type, + struct regcache *regcache, +@@ -3461,6 +3496,10 @@ + /* Helpers for function argument information. */ + set_gdbarch_fetch_pointer_argument (gdbarch, rs6000_fetch_pointer_argument); + ++ /* Hook in the DWARF CFI frame unwinder. */ ++ frame_unwind_append_sniffer (gdbarch, dwarf2_frame_sniffer); ++ dwarf2_frame_set_eh_frame_regnum (gdbarch, rs6000_eh_frame_regnum); ++ + /* Hook in ABI-specific overrides, if they have been registered. */ + gdbarch_init_osabi (info, gdbarch); + diff --git a/ppc-long-double.diff b/ppc-long-double.diff new file mode 100644 index 0000000..ff841e2 --- /dev/null +++ b/ppc-long-double.diff @@ -0,0 +1,18 @@ +--- gdb/ppc-linux-tdep.c ++++ gdb/ppc-linux-tdep.c +@@ -1065,6 +1065,7 @@ + { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + ++#if 0 + /* NOTE: jimb/2004-03-26: The System V ABI PowerPC Processor + Supplement says that long doubles are sixteen bytes long. + However, as one of the known warts of its ABI, PPC GNU/Linux uses +@@ -1074,6 +1075,7 @@ + double' on PPC GNU/Linux are non-conformant. */ + /* NOTE: cagney/2005-01-25: True for both 32- and 64-bit. */ + set_gdbarch_long_double_bit (gdbarch, 8 * TARGET_CHAR_BIT); ++#endif + + if (tdep->wordsize == 4) + { diff --git a/ppc64-fdesc.diff b/ppc64-fdesc.diff new file mode 100644 index 0000000..ccc5521 --- /dev/null +++ b/ppc64-fdesc.diff @@ -0,0 +1,16 @@ +--- gdb/ppc-linux-tdep.c ++++ gdb/ppc-linux-tdep.c +@@ -757,7 +757,12 @@ + + /* Check if ADDR points to a function descriptor. */ + if (s && strcmp (s->the_bfd_section->name, ".opd") == 0) +- return get_target_memory_unsigned (targ, addr, 8); ++ { ++ gdb_byte buf[8]; ++ ++ if (target_read_memory (addr, buf, 8) == 0) ++ return extract_unsigned_integer (buf, 8); ++ } + + return addr; + } diff --git a/readline-5.1-random.patch b/readline-5.1-random.patch new file mode 100644 index 0000000..3317b08 --- /dev/null +++ b/readline-5.1-random.patch @@ -0,0 +1,14 @@ +--- readline/misc.c ++++ readline/misc.c 2005-12-09 18:12:24.000000000 +0100 +@@ -210,8 +210,10 @@ + + r = _rl_arg_dispatch (_rl_argcxt, c); + if (r <= 0 || (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)) +- break; ++ return r; + } ++ ++ return 1; + } + + /* Create a default argument. */ diff --git a/readnever.patch b/readnever.patch new file mode 100644 index 0000000..882c0bb --- /dev/null +++ b/readnever.patch @@ -0,0 +1,62 @@ +2004-11-18 Andrew Cagney + + * dwarf2read.c: Include "top.c". + (dwarf2_has_info): Check for readnever_symbol_files. + * symfile.c (readnever_symbol_files): Define. + * top.h (readnever_symbol_files): Declare. + * main.c (captured_main): Add --readnever option. + +diff -ur ../gdb+dejagnu-20040607/gdb/dwarf2read.c ./gdb/dwarf2read.c +--- ../gdb+dejagnu-20040607/gdb/dwarf2read.c 2004-11-18 18:38:25.841030736 -0500 ++++ ./gdb/dwarf2read.c 2004-11-18 13:39:45.516334184 -0500 +@@ -45,6 +45,7 @@ + #include "hashtab.h" + #include "command.h" + #include "gdbcmd.h" ++#include "top.h" + + #include + #include "gdb_string.h" +@@ -984,7 +985,8 @@ + dwarf_loc_section = 0; + + bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections, NULL); +- return (dwarf_info_section != NULL && dwarf_abbrev_section != NULL); ++ return (!readnever_symbol_files ++ && dwarf_info_section != NULL && dwarf_abbrev_section != NULL); + } + + /* This function is mapped across the sections and remembers the +diff -ur ../gdb+dejagnu-20040607/gdb/main.c ./gdb/main.c +--- ../gdb+dejagnu-20040607/gdb/main.c 2004-04-21 19:52:20.000000000 -0400 ++++ ./gdb/main.c 2004-11-18 13:07:30.000000000 -0500 +@@ -261,6 +261,7 @@ + {"xdb", no_argument, &xdb_commands, 1}, + {"dbx", no_argument, &dbx_commands, 1}, + {"readnow", no_argument, &readnow_symbol_files, 1}, ++ {"readnever", no_argument, &readnever_symbol_files, 1}, + {"r", no_argument, &readnow_symbol_files, 1}, + {"quiet", no_argument, &quiet, 1}, + {"q", no_argument, &quiet, 1}, +diff -ur ../gdb+dejagnu-20040607/gdb/symfile.c ./gdb/symfile.c +--- ../gdb+dejagnu-20040607/gdb/symfile.c 2004-11-18 18:38:25.352105064 -0500 ++++ ./gdb/symfile.c 2004-11-18 13:19:05.000000000 -0500 +@@ -87,6 +87,7 @@ + + /* Global variables owned by this file */ + int readnow_symbol_files; /* Read full symbols immediately */ ++int readnever_symbol_files; /* Never read full symbols. */ + + /* External variables and functions referenced. */ + +diff -ur ../gdb+dejagnu-20040607/gdb/top.h ./gdb/top.h +--- ../gdb+dejagnu-20040607/gdb/top.h 2004-01-19 14:56:02.000000000 -0500 ++++ ./gdb/top.h 2004-11-18 13:08:11.000000000 -0500 +@@ -57,6 +57,7 @@ + + /* From random places. */ + extern int readnow_symbol_files; ++extern int readnever_symbol_files; + + /* Perform _initialize initialization */ + extern void gdb_init (char *); diff --git a/ready b/ready new file mode 100644 index 0000000..473a0f4 diff --git a/solib-extract-address.diff b/solib-extract-address.diff new file mode 100644 index 0000000..0d83059 --- /dev/null +++ b/solib-extract-address.diff @@ -0,0 +1,28 @@ +--- gdb/solib-svr4.c ++++ gdb/solib-svr4.c +@@ -131,9 +131,9 @@ + { + struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); + +- return (CORE_ADDR) extract_signed_integer (so->lm_info->lm +- + lmo->l_addr_offset, +- lmo->l_addr_size); ++ return (CORE_ADDR) extract_unsigned_integer (so->lm_info->lm ++ + lmo->l_addr_offset, ++ lmo->l_addr_size); + } + + static int +@@ -151,9 +151,9 @@ + + gdb_assert (lmo->l_ld_size != 0); + +- return (CORE_ADDR) extract_signed_integer (so->lm_info->lm +- + lmo->l_ld_offset, +- lmo->l_ld_size); ++ return (CORE_ADDR) extract_unsigned_integer (so->lm_info->lm ++ + lmo->l_ld_offset, ++ lmo->l_ld_size); + } + + static CORE_ADDR diff --git a/warn.patch b/warn.patch new file mode 100644 index 0000000..25d50ee --- /dev/null +++ b/warn.patch @@ -0,0 +1,633 @@ +--- gdb/remote.c ++++ gdb/remote.c +@@ -966,8 +966,8 @@ + static int use_threadextra_query; + + /* Tokens for use by the asynchronous signal handlers for SIGINT. */ +-static void *sigint_remote_twice_token; +-static void *sigint_remote_token; ++static struct async_signal_handler *sigint_remote_twice_token; ++static struct async_signal_handler *sigint_remote_token; + + /* These are pointers to hook functions that may be set in order to + modify resume/wait behavior for a particular architecture. */ +@@ -2843,11 +2843,9 @@ + { + signal (SIGINT, handle_sigint); + if (sigint_remote_twice_token) +- delete_async_signal_handler ((struct async_signal_handler **) +- &sigint_remote_twice_token); ++ delete_async_signal_handler (&sigint_remote_twice_token); + if (sigint_remote_token) +- delete_async_signal_handler ((struct async_signal_handler **) +- &sigint_remote_token); ++ delete_async_signal_handler (&sigint_remote_token); + } + + /* Send ^C to target to halt it. Target will respond, and send us a +--- gdb/tui/tui-layout.c ++++ gdb/tui/tui-layout.c +@@ -47,7 +47,7 @@ + ********************************/ + static void show_layout (enum tui_layout_type); + static void init_gen_win_info (struct tui_gen_win_info *, enum tui_win_type, int, int, int, int); +-static void init_and_make_win (void **, enum tui_win_type, int, int, int, int, int); ++static void init_and_make_win (struct tui_gen_win_info **, enum tui_win_type, int, int, int, int, int); + static void show_source_or_disasm_and_command (enum tui_layout_type); + static void make_source_or_disasm_window (struct tui_win_info * *, enum tui_win_type, int, int); + static void make_command_window (struct tui_win_info * *, int, int); +@@ -640,13 +640,13 @@ + static void + make_command_window (struct tui_win_info * * win_info_ptr, int height, int origin_y) + { +- init_and_make_win ((void **) win_info_ptr, +- CMD_WIN, +- height, +- tui_term_width (), +- 0, +- origin_y, +- DONT_BOX_WINDOW); ++ init_and_make_win ((struct tui_gen_win_info **) win_info_ptr, ++ CMD_WIN, ++ height, ++ tui_term_width (), ++ 0, ++ origin_y, ++ DONT_BOX_WINDOW); + + (*win_info_ptr)->can_highlight = FALSE; + } +@@ -679,13 +679,13 @@ + static void + make_data_window (struct tui_win_info * * win_info_ptr, int height, int origin_y) + { +- init_and_make_win ((void **) win_info_ptr, +- DATA_WIN, +- height, +- tui_term_width (), +- 0, +- origin_y, +- BOX_WINDOW); ++ init_and_make_win ((struct tui_gen_win_info **) win_info_ptr, ++ DATA_WIN, ++ height, ++ tui_term_width (), ++ 0, ++ origin_y, ++ BOX_WINDOW); + } + + +@@ -751,13 +751,13 @@ + if (TUI_DISASM_WIN == NULL) + { + make_disasm_window (&TUI_DISASM_WIN, asm_height, src_height - 1); +- init_and_make_win ((void **) & locator, +- LOCATOR_WIN, +- 2 /* 1 */ , +- tui_term_width (), +- 0, +- (src_height + asm_height) - 1, +- DONT_BOX_WINDOW); ++ init_and_make_win (&locator, ++ LOCATOR_WIN, ++ 2 /* 1 */ , ++ tui_term_width (), ++ 0, ++ (src_height + asm_height) - 1, ++ DONT_BOX_WINDOW); + } + else + { +@@ -844,13 +844,13 @@ + make_source_window (&tui_win_list[win_type], src_height, data_height - 1); + else + make_disasm_window (&tui_win_list[win_type], src_height, data_height - 1); +- init_and_make_win ((void **) & locator, +- LOCATOR_WIN, +- 2 /* 1 */ , +- tui_term_width (), +- 0, +- total_height - 1, +- DONT_BOX_WINDOW); ++ init_and_make_win (&locator, ++ LOCATOR_WIN, ++ 2 /* 1 */ , ++ tui_term_width (), ++ 0, ++ total_height - 1, ++ DONT_BOX_WINDOW); + } + else + { +@@ -912,37 +912,25 @@ + ** init_and_make_win(). + */ + static void +-init_and_make_win (void ** win_info_ptr, enum tui_win_type win_type, +- int height, int width, int origin_x, int origin_y, int box_it) ++init_and_make_win (struct tui_gen_win_info **win_info_ptr, ++ enum tui_win_type win_type, int height, int width, ++ int origin_x, int origin_y, int box_it) + { +- void *opaque_win_info = *win_info_ptr; +- struct tui_gen_win_info * generic; ++ struct tui_gen_win_info *generic = *win_info_ptr; + +- if (opaque_win_info == NULL) ++ if (generic == NULL) + { + if (tui_win_is_auxillary (win_type)) +- opaque_win_info = (void *) tui_alloc_generic_win_info (); ++ generic = tui_alloc_generic_win_info (); + else +- opaque_win_info = (void *) tui_alloc_win_info (win_type); +- } +- if (tui_win_is_auxillary (win_type)) +- generic = (struct tui_gen_win_info *) opaque_win_info; +- else +- generic = &((struct tui_win_info *) opaque_win_info)->generic; +- +- if (opaque_win_info != NULL) +- { +- init_gen_win_info (generic, win_type, height, width, origin_x, origin_y); +- if (!tui_win_is_auxillary (win_type)) +- { +- if (generic->type == CMD_WIN) +- ((struct tui_win_info *) opaque_win_info)->can_highlight = FALSE; +- else +- ((struct tui_win_info *) opaque_win_info)->can_highlight = TRUE; +- } +- tui_make_window (generic, box_it); ++ generic = &tui_alloc_win_info (win_type)->generic; ++ *win_info_ptr = generic; + } +- *win_info_ptr = opaque_win_info; ++ init_gen_win_info (generic, win_type, height, width, origin_x, origin_y); ++ if (!tui_win_is_auxillary (win_type)) ++ ((struct tui_win_info *) generic)->can_highlight ++ = generic->type != CMD_WIN; ++ tui_make_window (generic, box_it); + } + + +@@ -959,23 +947,23 @@ + execution_info = tui_source_exec_info_win_ptr (); + else + execution_info = tui_disassem_exec_info_win_ptr (); +- init_and_make_win ((void **) & execution_info, +- EXEC_INFO_WIN, +- height, +- 3, +- 0, +- origin_y, +- DONT_BOX_WINDOW); ++ init_and_make_win (&execution_info, ++ EXEC_INFO_WIN, ++ height, ++ 3, ++ 0, ++ origin_y, ++ DONT_BOX_WINDOW); + /* + ** Now create the source window. + */ +- init_and_make_win ((void **) win_info_ptr, +- type, +- height, +- tui_term_width () - execution_info->width, +- execution_info->width, +- origin_y, +- BOX_WINDOW); ++ init_and_make_win ((struct tui_gen_win_info **) win_info_ptr, ++ type, ++ height, ++ tui_term_width () - execution_info->width, ++ execution_info->width, ++ origin_y, ++ BOX_WINDOW); + + (*win_info_ptr)->detail.source_info.execution_info = execution_info; + } +@@ -1009,13 +997,13 @@ + make_source_window (win_info_ptr, src_height - 1, 0); + else + make_disasm_window (win_info_ptr, src_height - 1, 0); +- init_and_make_win ((void **) & locator, +- LOCATOR_WIN, +- 2 /* 1 */ , +- tui_term_width (), +- 0, +- src_height - 1, +- DONT_BOX_WINDOW); ++ init_and_make_win (&locator, ++ LOCATOR_WIN, ++ 2 /* 1 */ , ++ tui_term_width (), ++ 0, ++ src_height - 1, ++ DONT_BOX_WINDOW); + } + else + { +--- sim/common/gentmap.c ++++ sim/common/gentmap.c +@@ -2,6 +2,7 @@ + + #include + #include ++#include + + struct tdefs { + char *symbol; +--- sim/ppc/debug.c ++++ sim/ppc/debug.c +@@ -29,6 +29,10 @@ + #include + #endif + ++#ifdef HAVE_STRING_H ++#include ++#endif ++ + int ppc_trace[nr_trace_options]; + + typedef struct _trace_option_descriptor { +--- sim/ppc/ppc-instructions ++++ sim/ppc/ppc-instructions +@@ -3958,7 +3958,7 @@ + *603e:PPC_UNIT_FPU, PPC_UNIT_FPU, 2, 4, 0 + *604: PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + FPSCR_BEGIN; +- double product; /*HACK! - incorrectly loosing precision ... */ ++ union { double d; unsigned64 u; } product; /*HACK! - incorrectly loosing precision ... */ + /* compute the multiply */ + if (is_invalid_operation(processor, cia, + *frA, *frC, +@@ -3966,7 +3966,7 @@ + 0, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- (unsigned64*)&product, *frA, 0, *frC, ++ &product.u, *frA, 0, *frC, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -3974,16 +3974,16 @@ + } + else { + /*HACK!*/ +- product = *(double*)frA * *(double*)frC; ++ product.d = *(double*)frA * *(double*)frC; + } + /* compute the add */ + if (is_invalid_operation(processor, cia, +- product, *frB, ++ product.d, *frB, + fpscr_vxsnan | fpscr_vxisi, + 0, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- frT, product, *frB, 0, ++ frT, product.d, *frB, 0, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -3991,7 +3991,7 @@ + } + else { + /*HACK!*/ +- double s = product + *(double*)frB; ++ double s = product.d + *(double*)frB; + *(double*)frT = s; + } + FPSCR_END(Rc); +@@ -4003,7 +4003,7 @@ + *603e:PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + *604: PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + FPSCR_BEGIN; +- float product; /*HACK! - incorrectly loosing precision ... */ ++ union { float f; unsigned64 u; } product; /*HACK! - incorrectly loosing precision ... */ + /* compute the multiply */ + if (is_invalid_operation(processor, cia, + *frA, *frC, +@@ -4011,7 +4011,7 @@ + 1, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- (unsigned64*)&product, *frA, 0, *frC, ++ &product.u, *frA, 0, *frC, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4019,16 +4019,16 @@ + } + else { + /*HACK!*/ +- product = *(double*)frA * *(double*)frC; ++ product.f = *(double*)frA * *(double*)frC; + } + /* compute the add */ + if (is_invalid_operation(processor, cia, +- product, *frB, ++ product.f, *frB, + fpscr_vxsnan | fpscr_vxisi, + 1, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- frT, product, *frB, 0, ++ frT, product.f, *frB, 0, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4036,7 +4036,7 @@ + } + else { + /*HACK!*/ +- float s = product + *(double*)frB; ++ float s = product.f + *(double*)frB; + *(double*)frT = (double)s; + } + FPSCR_END(Rc); +@@ -4048,7 +4048,7 @@ + *603e:PPC_UNIT_FPU, PPC_UNIT_FPU, 2, 4, 0 + *604: PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + FPSCR_BEGIN; +- double product; /*HACK! - incorrectly loosing precision ... */ ++ union { double d; unsigned64 u; } product; /*HACK! - incorrectly loosing precision ... */ + /* compute the multiply */ + if (is_invalid_operation(processor, cia, + *frA, *frC, +@@ -4056,7 +4056,7 @@ + 0, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- (unsigned64*)&product, *frA, 0, *frC, ++ &product.u, *frA, 0, *frC, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4064,16 +4064,16 @@ + } + else { + /*HACK!*/ +- product = *(double*)frA * *(double*)frC; ++ product.d = *(double*)frA * *(double*)frC; + } + /* compute the subtract */ + if (is_invalid_operation(processor, cia, +- product, *frB, ++ product.d, *frB, + fpscr_vxsnan | fpscr_vxisi, + 0, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- frT, product, *frB, 0, ++ frT, product.d, *frB, 0, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4081,7 +4081,7 @@ + } + else { + /*HACK!*/ +- double s = product - *(double*)frB; ++ double s = product.d - *(double*)frB; + *(double*)frT = s; + } + FPSCR_END(Rc); +@@ -4093,7 +4093,7 @@ + *603e:PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + *604: PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + FPSCR_BEGIN; +- float product; /*HACK! - incorrectly loosing precision ... */ ++ union { float f; unsigned64 u; } product; /*HACK! - incorrectly loosing precision ... */ + /* compute the multiply */ + if (is_invalid_operation(processor, cia, + *frA, *frC, +@@ -4101,7 +4101,7 @@ + 1, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- (unsigned64*)&product, *frA, 0, *frC, ++ &product.u, *frA, 0, *frC, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4109,16 +4109,16 @@ + } + else { + /*HACK!*/ +- product = *(double*)frA * *(double*)frC; ++ product.f = *(double*)frA * *(double*)frC; + } + /* compute the subtract */ + if (is_invalid_operation(processor, cia, +- product, *frB, ++ product.f, *frB, + fpscr_vxsnan | fpscr_vxisi, + 1, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- frT, product, *frB, 0, ++ frT, product.f, *frB, 0, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4126,7 +4126,7 @@ + } + else { + /*HACK!*/ +- float s = product - *(double*)frB; ++ float s = product.f - *(double*)frB; + *(double*)frT = (double)s; + } + FPSCR_END(Rc); +@@ -4138,7 +4138,7 @@ + *603e:PPC_UNIT_FPU, PPC_UNIT_FPU, 2, 4, 0 + *604: PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + FPSCR_BEGIN; +- double product; /*HACK! - incorrectly loosing precision ... */ ++ union { double d; unsigned64 u; } product; /*HACK! - incorrectly loosing precision ... */ + /* compute the multiply */ + if (is_invalid_operation(processor, cia, + *frA, *frC, +@@ -4146,7 +4146,7 @@ + 0, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- (unsigned64*)&product, *frA, 0, *frC, ++ &product.u, *frA, 0, *frC, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4154,16 +4154,16 @@ + } + else { + /*HACK!*/ +- product = *(double*)frA * *(double*)frC; ++ product.d = *(double*)frA * *(double*)frC; + } + /* compute the add */ + if (is_invalid_operation(processor, cia, +- product, *frB, ++ product.d, *frB, + fpscr_vxsnan | fpscr_vxisi, + 0, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- frT, product, *frB, 0, ++ frT, product.d, *frB, 0, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4171,7 +4171,7 @@ + } + else { + /*HACK!*/ +- double s = -(product + *(double*)frB); ++ double s = -(product.d + *(double*)frB); + *(double*)frT = s; + } + FPSCR_END(Rc); +@@ -4183,7 +4183,7 @@ + *603e:PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + *604: PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + FPSCR_BEGIN; +- float product; /*HACK! - incorrectly loosing precision ... */ ++ union { float f; unsigned64 u; } product; /*HACK! - incorrectly loosing precision ... */ + /* compute the multiply */ + if (is_invalid_operation(processor, cia, + *frA, *frC, +@@ -4191,7 +4191,7 @@ + 1, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- (unsigned64*)&product, *frA, 0, *frC, ++ &product.u, *frA, 0, *frC, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4199,16 +4199,16 @@ + } + else { + /*HACK!*/ +- product = *(double*)frA * *(double*)frC; ++ product.f = *(double*)frA * *(double*)frC; + } + /* compute the add */ + if (is_invalid_operation(processor, cia, +- product, *frB, ++ product.f, *frB, + fpscr_vxsnan | fpscr_vxisi, + 1, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- frT, product, *frB, 0, ++ frT, product.f, *frB, 0, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4216,7 +4216,7 @@ + } + else { + /*HACK!*/ +- float s = -(product + *(double*)frB); ++ float s = -(product.f + *(double*)frB); + *(double*)frT = (double)s; + } + FPSCR_END(Rc); +@@ -4228,7 +4228,7 @@ + *603e:PPC_UNIT_FPU, PPC_UNIT_FPU, 2, 4, 0 + *604: PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + FPSCR_BEGIN; +- double product; /*HACK! - incorrectly loosing precision ... */ ++ union { double d; unsigned64 u; } product; /*HACK! - incorrectly loosing precision ... */ + /* compute the multiply */ + if (is_invalid_operation(processor, cia, + *frA, *frC, +@@ -4236,7 +4236,7 @@ + 0, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- (unsigned64*)&product, *frA, 0, *frC, ++ &product.u, *frA, 0, *frC, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4244,16 +4244,16 @@ + } + else { + /*HACK!*/ +- product = *(double*)frA * *(double*)frC; ++ product.d = *(double*)frA * *(double*)frC; + } + /* compute the subtract */ + if (is_invalid_operation(processor, cia, +- product, *frB, ++ product.d, *frB, + fpscr_vxsnan | fpscr_vxisi, + 0, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- frT, product, *frB, 0, ++ frT, product.d, *frB, 0, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4261,7 +4261,7 @@ + } + else { + /*HACK!*/ +- double s = -(product - *(double*)frB); ++ double s = -(product.d - *(double*)frB); + *(double*)frT = s; + } + FPSCR_END(Rc); +@@ -4273,7 +4273,7 @@ + *603e:PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + *604: PPC_UNIT_FPU, PPC_UNIT_FPU, 1, 3, 0 + FPSCR_BEGIN; +- float product; /*HACK! - incorrectly loosing precision ... */ ++ union { float f; unsigned64 u; } product; /*HACK! - incorrectly loosing precision ... */ + /* compute the multiply */ + if (is_invalid_operation(processor, cia, + *frA, *frC, +@@ -4281,7 +4281,7 @@ + 1, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- (unsigned64*)&product, *frA, 0, *frC, ++ &product.u, *frA, 0, *frC, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4289,16 +4289,16 @@ + } + else { + /*HACK!*/ +- product = *(double*)frA * *(double*)frC; ++ product.f = *(double*)frA * *(double*)frC; + } + /* compute the subtract */ + if (is_invalid_operation(processor, cia, +- product, *frB, ++ product.f, *frB, + fpscr_vxsnan | fpscr_vxisi, + 1, /*single?*/ + 0) /*negate?*/) { + invalid_arithemetic_operation(processor, cia, +- frT, product, *frB, 0, ++ frT, product.f, *frB, 0, + 0, /*instruction_is_frsp*/ + 0, /*instruction_is_convert_to_64bit*/ + 0, /*instruction_is_convert_to_32bit*/ +@@ -4306,7 +4306,7 @@ + } + else { + /*HACK!*/ +- float s = -(product - *(double*)frB); ++ float s = -(product.f - *(double*)frB); + *(double*)frT = (double)s; + } + FPSCR_END(Rc);