The upgrade from gdb-7.3.1 to gdb-7.6 has been accomplished with
this release. It was painful as usual, and as history has proven
in the past, there are going to be regressions. I've addressed
several of them, but it's highly likely that others will crop up.
Most notably, the eppic extension module no longer builds, but
that needs to be addressed in the eppic git tree.
Download from:
http://people.redhat.com/anderson
Changelog:
- Updated the embedded gdb version to FSF gdb-7.6, which was officially
released by the Free Software Foundation on
http://www.gnu.org on
4/26/13. The primary motivation for upgrading from gdb-7.3.1 is for
future ARM64 support, but there are also issues with respect to
kernels built with gcc-4.8.0. The relevant pieces of gdb-7.3.1.patch
were forward-ported to the gdb-7.6.patch, and the GDB_7_6 #define has
been applied in the top-level sources where appropriate.
(anderson(a)redhat.com)
- Continued incremental steps for support of the ARM64 architecture.
(anderson(a)redhat.com)
- Fix for the "struct name.member <address>" option if the
"member"
name is also coincidentally a member of an embedded structure that is
located before the targeted member. Without the patch, the value of
the embedded structure's member is displayed instead of the targeted
member.
(qiaonuohan(a)cn.fujitsu.com)
- Expose a heretofore unadvertised "kmem -[sS] -I slab[,slab]" option
that specifies one or more slab cache names in a comma-separated
list that the "kmem -[sS]" option should ignore. This can be helpful
in cases where a corrupted slab cache may never complete, or in
very large memory systems where one or more caches take an inordinate
amount of time to complete.
(anderson(a)redhat.com)
- Fix for the "kmem -i" option on Linux 3.9 and later kernels. Without
the patch, the "TOTAL SWAP", "SWAP USED" and "SWAP FREE"
lines are
not displayed because the kernel's former "swapper_space" singular
address_space structure has has been changed into a "swapper_spaces"
array of address_space structures, with one for each swap partition.
(anderson(a)redhat.com)
- Support for the PPC64 BOOK3E processor family, whose virtual memory
layout and PTE format are significantly different. Without the
patch, the crash session fails to initialize properly.
(ataufer(a)us.ibm.com)
- Fix for the PPC64 "sys", "mach" and initial system banner display
of
of the processor speed in more recent kernels. Without the patch,
the "MACHINE" line in the initial banner and in the "sys" command
display may show "MACHINE: ppc64 (unknown Mhz)", and the "mach"
command may show "PROCESSOR SPEED: (unknown)".
(anderson(a)redhat.com, ataufer(a)us.ibm.com)
- Since the libgdb.a file no longer exists in gdb-7.6, the Makefile
does not check for it as a determining factor for whether a build
has succeeded.
(anderson(a)redhat.com)
- gdb-7.6 requires that the bfd library's "config.h" file be
#include'd
before the "bfd.h" file by the top-level symbols.c file.
(anderson(a)redhat.com)
- gdb-7.6 has replaced/moved the gnu_debuglink_crc32() utility function
to bfd_calc_gnu_debuglink_crc32(); the call in symbols.c has been
configured based upon the gdb version.
(anderson(a)redhat.com)
- gdb-7.6 has reworked its do_cleanups() functionality, which requires
the gdb_error_hook() function to pass all_cleanups() as an argument.
(anderson(a)redhat.com)
- gdb-7.6 causes the anon_member_offset() function to fail due to a
change in the output string; the function has been changed to work
with both old and new gdb versions.
(anderson(a)redhat.com)
- gdb-7.6 required changes to vm_stat_init() and vm_event_state_init()
functions because enum lists get displayed differently on the S390X
and PPC64 architectures, which in turn caused failures of "kmem -i",
"kmem -z" and "kmem -V" on those two machine types.
(anderson(a)redhat.com)
- Adjusted the alignment of the "kmem -V" and "kmem -z" display of
the
items in the vm_stat[] array based upon the longest enumerator name
string.
(anderson(a)redhat.com)
- Adjusted the alignment of the "kmem -V" display of the cumulative
totals of the per-cpu "vm_event_states" items based upon the longest
enumerator name string.
(anderson(a)redhat.com)
- Modified the top-level Makefile such that if the tar.gz file of the
configured gdb version does not exist in the build directory, try to
wget the file from
http://ftp.gnu.org/gnu/gdb. This is normally not
necessary because the most recent gdb tar.gz file is bundled with the
the crash utility tar.gz and src.rpm files. However, it will allow
the use of the gdb-less crash.tar.gz file created via "make tar" to
be copied to another location, or perhaps copied to a git tree, and
then built without containing the the gdb tar.gz file.
(anderson(a)redhat.com)
- Fix for the s390x.c file to handle a gcc-4.8.0 compiler warning when
building crash with "make warn", or compiler failures when building
with "make Warn" on an S390x machine. Without the patch, gcc-4.8.0
generates the message "error: variable ‘psw_addr’ set but not used
[-Werror=unused-but-set-variable]".
(anderson(a)redhat.com)
- Fixes for the s390dbf.c file to handle gcc-4.8.0 compiler warnings when
building crash with "make warn", or compiler failures when building
with "make Warn" on an S390X machine. Without the patch, gcc-4.8.0
generates three "error: variable ‘<variable>’ set but not used
[-Werror=unused-but-set-variable]" messages.
(anderson(a)redhat.com)
- Fix for an X86_64 warning message that gets displayed during session
initialization when running against Linux 3.9 kernels that were
compiled with gcc-4.8.0. Without the patch, the warning message
"crash: cannot determine thread return address" is displayed prior
to the system information.
(anderson(a)redhat.com)
- Fix for lack of kernel text line number information by the "dis -l"
and "sym <text-symbol or address>" options on Linux 3.9 kernels
that were compiled with gcc-4.8.0. Without the patch, the line
number information for kernel text symbols of type "(T)" may not
be able to be determined and displayed.
(anderson(a)redhat.com)