On mips-irix, the debugger has trouble stepping over the following
line of code:
S: Shape'Class := R; <<<<---- STOP here
Here is what happens:
(gdb) n
warning: GDB can't find the start of the function at 0x7fff2bd8.
GDB is unable to find the start of the function at 0x7fff2bd8
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
This problem is most likely caused by an invalid program counter or
stack pointer.
However, if you think GDB should simply search farther back
from 0x7fff2bd8 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
0x7fff2bd8 in ?? ()
The program does in fact jump to this code location, which is a trampoline
located on the stack (there is an implicit call to a routine internally
generated by the Ada expander). As it is on the stack, GDB is naturally
unable to find the bounds of the current function, or any debugging
information, and is thus unable to continue.
This patch adds support for this sort of trampoline.
gdb/ChangeLog:
* mips-irix-tdep.c (mips_irix_n32_stack_tramp_frame_init): New
function.
(mips_irix_n32_stack_tramp_frame): New static global.
(mips_irix_init_abi): Add mips_irix_n32_stack_tramp_frame to
list of unwinder.
Type symbols that are used to decode the Ada task control block may be
duplicated in any unit that uses a tasking feature; an Ada lookup of
these symbols would collect all the duplicated instances and could
provoke the load of a huge amount of debug symbols in the process.
However, when decoding the task information, we are only interested in
one instance; and we have the full name of the symbol anyway. So use
a C lookup instead of an Ada lookup.
2010-11-05 Jerome Guitton <guitton@adacore.com>
* ada-tasks.c (get_tcb_types_info): Use C lookups to get
ATCB symbols.
When trying to resolve an incomplete type, if there is no complete
version of that type available, GDB can go in an infinite loop.
This is because ada_check_typedef makes a recursive call to itself,
in an attempt to make sure that the returned type is never a typedef.
However, when no complete type is found, the current logic causes us
to keep going indefinitely through the same path...
This patch fixes the problem by performing the recursive call to
ada_check_typedef only when a TYPE_CODE_TYPDEF layer needs to be
stripped.
gdb/ChangeLog:
* ada-lang.c (ada_check_typedef): Call ada_check_typedef only
if type1 is a typedef.
This is a new routine that is being generated by the expander in
the context of controlled types. This patch adds it to the list of such
routines so that the debugger does not show it when selecting the first
"user" frame (when switching tasks for instance).
gdb/ChangeLog:
* ada-lang.h (ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS): Add
"_finalizer" to the list.
gdb/ChangeLog:
* ada-typeprint.c (print_array_type): Fix formatting in comment.
(print_selected_record_field_types): Fix formatting in function
documentation.
A new-line was missing at the end of the output of the `show ravenscar
task-switching' command. For instance:
(gdb) show ravenscar task-switching
Support for Ravenscar task/thread switching is enabled(gdb)
This patch fixes it.
gdb/ChangeLog:
* ravenscar-thread.c (show_ravenscar_task_switching_command):
Add missing '\n' in output.
The GNAT Ravenscar implementation has recently been enhanced to allow
programs using that runtime to run on multi-cpu systems. One of the
changes that were made is that the name of the symbol we use to
determine which task is the currently-running task has changed.
This patch enhances the debugger to use the new name, and fallback on
the old name if not found (this is for compatibility with older versions
of the compiler/runtime).
gdb/ChangeLog:
* ravenscar-thread.c (running_thread_name): Change value.
(read_thread_id): Remove advance declaration.
(get_running_thread_msymbol): New function.
(has_ravenscar_runtime): Use get_running_thread_msymbol to
compute msym_running_thread.
(get_running_thread_id): Renames read_thread_id. Slight modifications
to not take any argument anymore, using get_running_thread_msymbol
to determine which symbol to use instead.
(ravenscar_running_thread): Use get_running_thread_id instead of
read_thread_id.
options. Refer to or include c-tic6x.texi for C6X options instead
of duplicating documentation here.
* doc/c-alpha.texi, doc/c-tic6x.texi: Add markup for use in
manpage generation.
/:
PR other/46202
* configure.ac: Fix just-built in-tree STRIP name to be
binutils/strip-new.
* configure: Regenerate.
* Makefile.def (install-strip-gcc, install-strip-binutils)
(install-strip-opcodes, install-strip-ld, install-strip-itcl)
(install-strip-sid): Mirror dependencies on non-strip variants
of these targets on the respective -strip prerequisites.
* Makefile.tpl (install-strip, install-strip-host)
(install-strip-target): New targets.
(install-strip-[+module+], install-strip-target-[+module+]):
New targets.
* Makefile.in: Regenerate.
etc/:
* Makefile.in (install-strip): New target.
libiberty/:
PR other/46202
* Makefile.in (install-strip): New phony target.
(install): Also mark as phony.
2010-11-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12246
* plugin.c (asymbol_from_plugin_symbol): Set alignment of
common symbol to 1 for For ELF targets.
* expression.cc (BINARY_EXPRESSION): Initialize left_alignment
and right_alignment to be zero. Store result alignment only if it is
greater than existing alignment.