* gdb.asm/asm-source.exp: Add new target "powerpc64"; expect leading `.'
on ppc64's symbols; "finish" and "return" commands must accept to
show the caller line again as well as the line after.
* gdb.asm/powerpc64.inc: New file.
Doug Evans [Tue, 23 Nov 2010 22:25:37 +0000 (22:25 +0000)]
* lib/gdb.exp (gdb_test_sequence): New function.
(gdb_expect_list): Add verbose -log call for each pattern.
* gdb.base/signals.exp (test_handle_all_print): Call it.
Reduce timeout increment from 6 minutes to 1 minute.
* gdb.server/ext-run.exp: Call it.
* doc/as.texinfo: Refer to and include c-xtensa.texi for Xtensa
options. Move Xtensa options to proper alphabetical location.
* doc/c-xtensa.texi: Add markup for use in manpage generation.
Nick Clifton [Tue, 23 Nov 2010 13:39:57 +0000 (13:39 +0000)]
* configure.ac: For --enable-gold, handle value `default' instead of
`both*'. New configure option --{en,dis}able-ld.
ld, gold/
* configure.ac: For --enable-gold, handle value `default' instead of
`both*'. Always install ld as ld.gold, install as ld if gold is
the default.
Mike Frysinger [Tue, 23 Nov 2010 02:48:54 +0000 (02:48 +0000)]
sim: profile: fix building with --disable-sim-profile
When the sim is configured with profile support disabled, the build fails:
./../common/sim-profile.c: In function 'profile_option_handler':
./../common/sim-profile.c:337:6: warning: implicit declaration of function 'PROFILE_PC_FREQ'
./../common/sim-profile.c:337:6: error: lvalue required as left operand of assignment
./../common/sim-profile.c:351:6: warning: implicit declaration of function 'PROFILE_PC_NR_BUCKETS'
./../common/sim-profile.c:351:6: error: lvalue required as left operand of assignment
./../common/sim-profile.c:381:6: warning: implicit declaration of function 'PROFILE_PC_SHIFT'
./../common/sim-profile.c:381:6: error: lvalue required as left operand of assignment
./../common/sim-profile.c:405:8: warning: implicit declaration of function 'PROFILE_PC_START'
./../common/sim-profile.c:405:8: error: lvalue required as left operand of assignment
./../common/sim-profile.c:406:8: warning: implicit declaration of function 'PROFILE_PC_END'
./../common/sim-profile.c:406:8: error: lvalue required as left operand of assignment
./../common/sim-profile.c: In function 'profile_uninstall':
./../common/sim-profile.c:1299:7: warning: implicit declaration of function 'PROFILE_INSN_COUNT'
./../common/sim-profile.c:1299:37: warning: comparison between pointer and integer
./../common/sim-profile.c:1300:2: warning: passing argument 1 of 'zfree' makes pointer from integer without a cast
../common/sim-utils.h:30:6: note: expected 'void *' but argument is of type 'int'
make[2]: *** [sim-profile.o] Error 1
So add some stubs similar to how some of the other subsystems are
stubbed out so things build correctly.
Mike Frysinger [Tue, 23 Nov 2010 02:45:29 +0000 (02:45 +0000)]
sim: cast away hw/device differences
When building with device and hw support, the sim-core code generates a
lot of build time warnings such as:
./../common/sim-core.c: In function 'sim_core_map_attach':
./../common/sim-core.c:198:7: warning: passing argument 1 of 'device_error' from incompatible pointer type
../common/sim-core.h:347:6: note: expected 'struct device *' but argument is of type 'struct hw *'
./../common/sim-core.c:235:7: warning: passing argument 1 of 'device_error' from incompatible pointer type
../common/sim-core.h:347:6: note: expected 'struct device *' but argument is of type 'struct hw *'
In reality, these two structures get cast back and forth in the core
code already and so are "compatible". So tweak the three functions
that generate all of these warnings to include the casts automatically.
I know this isn't exactly clean, but the current device/hw ifdef
approach is full of landmines itself and I'm not entirely sure how
to unscrew it.
The extensive comment in this patch explains how pointers to arrays
are encoded when the array is a "fat pointer". What happened is
that the change in check_typedef broke a type-equality test that
we were performing. The test really was on the fringe, but it
turns out that, for what we're doing, we're really only interested
in the main-type portion of the type.
The patch adjust the check accordingly.
gdb/ChangeLog:
* ada-lang.c (ada_to_fixed_type): Expand function documentation.
Return the original type if the main type portions match rather
than when the type themselves match.
Joel Brobecker [Tue, 23 Nov 2010 01:07:22 +0000 (01:07 +0000)]
GDB SEGV while trying to print uninitialize variant record
We have a variant record whose value is defined as follow:
type Discriminant_Record (Num1, Num2,
Num3, Num4 : Natural) is record
Field1 : My_Record_Array (1 .. Num2);
Field2 : My_Record_Array (Num1 .. 10);
Field3 : My_Record_Array (Num1 .. Num2);
Field4 : My_Record_Array (Num3 .. Num2);
Field5 : My_Record_Array (Num4 .. Num2);
end record;
Dire : Discriminant_Record (1, 7, 3, 0);
However, we're trying to print "Dire" before it is elaborated.
This is common if one breaks on a function and then starts doing
"info locals" for instance.
What happens is that GDB reads bogus values for fields Num1 to
Num4, and deduces a bogus (ginormouos) size for component
"Field1". The length is so large that it then later causes
an overflow in the overall record length computation. Things
go downhill from there, because length(field1) > length(record).
So, when after we've fetched the value of the record based on
the computed size, we crash trying to access unallocated memory
when accessing field1...
The first fix we can do is to check the size of the field
against the maximum object size. If it exceeds that size,
then we know the record will also exceed that size...
gdb/ChangeLog:
* ada-lang.c (ada_template_to_fixed_record_type_1):
For dynamic fields, check the field size against the maximum
object size.
Joel Brobecker [Tue, 23 Nov 2010 01:06:08 +0000 (01:06 +0000)]
support for mips-irix on-stack trampolines
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.
Joel Brobecker [Tue, 23 Nov 2010 01:04:54 +0000 (01:04 +0000)]
[Ada/tasks] Optimize ATCB lookups
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.
Joel Brobecker [Tue, 23 Nov 2010 01:03:54 +0000 (01:03 +0000)]
infinite recursion with ada_check_typedef
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.
Joel Brobecker [Tue, 23 Nov 2010 01:01:22 +0000 (01:01 +0000)]
Add `_finalizer' to the list of known GNAT auxilary routines.
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.
Joel Brobecker [Tue, 23 Nov 2010 00:55:08 +0000 (00:55 +0000)]
[Ada/ravenscar] New name for active-thread symbol
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.
Joseph Myers [Mon, 22 Nov 2010 22:11:52 +0000 (22:11 +0000)]
* doc/as.texinfo: Refer to or include c-alpha.texi for Alpha
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.
Ian Lance Taylor [Sun, 21 Nov 2010 01:56:30 +0000 (01:56 +0000)]
* configure.ac: Only disable a language library if no language needs
it. Don't let --disable-libgcj uncondtionally disable libffi.
* configure: Rebuild.
* config/cloog.m4: Add -enable-cloog-backend=(isl|ppl|ppl-legacy) to
define the cloog backend to use. Furthermore, only pass the ppllibs to
the configure checks, if necessary.
* configure: Regenerate.
* config/cloog.m4: Use CLooG predefined macro to check for CLooG PPL.
* configure: regenerate
Doug Kwan [Thu, 18 Nov 2010 23:25:08 +0000 (23:25 +0000)]
2010-11-18 Doug Kwan <dougkwan@google.com>
* expression.cc (BINARY_EXPRESSION): Initialize left_alignment
and right_alignment to be zero. Store result alignment only if it is
greater than existing alignment.
Nick Clifton [Wed, 17 Nov 2010 11:15:21 +0000 (11:15 +0000)]
* input-file.c (input_file_open): Check for empty input files.
(input_file_get): Check for end of file before reading any more
data.
(input_file_give_next_buffer): Likewise.
Cary Coutant [Tue, 16 Nov 2010 19:18:31 +0000 (19:18 +0000)]
* output.h (Output_segment::set_section_addresses): Pass increase_relro
by reference; adjust all callers.
* output.cc (Output_segment::set_section_addresses): Adjust references
to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
list is empty.
(Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
end at page boundary.
Mike Frysinger [Tue, 16 Nov 2010 19:10:29 +0000 (19:10 +0000)]
sim: dv-sockser: add a write buffer variant
Rather than having to bang out chunks of data one byte at a time over
the socket interface, add a write variant that accepts an arbitrarily
long buffer. This speeds things up considerably when we have many
chars to send out at once.
Cary Coutant [Tue, 16 Nov 2010 18:40:28 +0000 (18:40 +0000)]
PR gold/12220
* layout.cc (Layout::choose_output_section): Transform names of
compressed sections even when using a script with a SECTIONS clause.
(Layout::output_section_name): Remove code to transform
compressed debug section names.
* output.cc (Output_section::add_input_section): Use uncompressed
section size when tracking input sections.
Jan Kratochvil [Tue, 16 Nov 2010 04:36:26 +0000 (04:36 +0000)]
gdb/
Code cleanup.
* dwarf2read.c (alloc_one_comp_unit): Rename prototype to ...
(init_one_comp_unit): ... this one.
(prepare_one_comp_unit): New prototype.
(dw2_require_line_header, process_psymtab_comp_unit): Use
init_one_comp_unit.
(process_psymtab_comp_unit): Use prepare_one_comp_unit.
(load_partial_comp_unit): Remove variable attr. Use
init_one_comp_unit with xmalloc. Use prepare_one_comp_unit.
(load_full_comp_unit): Use init_one_comp_unit with xmalloc. Use
prepare_one_comp_unit.
(read_signatured_type): Remove variable attr. Use init_one_comp_unit.
Use prepare_one_comp_unit.
(alloc_one_comp_unit): Rename to ...
(init_one_comp_unit): ... here and remove there calloc, new parameter
cu.
(prepare_one_comp_unit): New function.
Mike Frysinger [Tue, 16 Nov 2010 03:27:05 +0000 (03:27 +0000)]
gdbserver: fix warning in nommu clone
Building gdbserver for nommu targets atm fails with:
linux-low.c: In function 'linux_tracefork_child':
linux-low.c:4151: error: pointer of type 'void *' used in arithmetic