Add test for use of "<block>::<variable>" syntax for locals in watch.
First, fix a technical problem with the function recurser. The test sets a
watch on local_x at a point where its value is technically undefined. The
test is written assuming that the value is not initially 2, but nothing in the
C standard guarantees that.
Second, augment the existing test for variables in recursive calls to check an
equivalent expression that explicitly sets the scope of the local variable
being tracked.
2012-01-11 Paul Hilfinger <hilfingr@adacore.com>
* gdb.base/watchpoint.c (recurser): Initialize local_x.
(main): Repeat recurser call.
* gdb.base/watchpoint.exp: Check that 'watch recurser::local_x' is
equivalent to 'local_x'.
Add testcase for locals identified with FUNCTION::VAR syntax.
This test stops inside a recursive function after a few levels of recursion,
goes up some frames, and then accesses a local variable with 'print foo::val'
rather than the usual 'print val' to see if the former pays attention to the
selected frame.
2012-01-11 Paul Hilfinger <hilfingr@adacore.com>
Joel Brobecker <brobecker@adacore.com>
* gdb.base/recpar.c, gdb.base/recpar.exp: New files.
Have block_innermost_frame start from selected frame and document.
GDB used to search for the frame containing variables in a particular
lexical block starting from the current (top) frame, ignoring any
currently selected frame. It is not clear why this is desirable for
variables that require a frame; why would a user deliberately select
one frame and then expect to see the value of a variable in a more
recent frame? This change causes block_innermost_frame to start
looking from the selected frame, if there is one. It may be
unnecessarily conservative: we use get_selected_frame_if_set rather
than get_selected_frame in order to avoid the side effect of calling
select_frame, which would probably be harmless.
Expression-parsing routines previously made the unwarranted assumption
that all block-qualified variables (written with the GDB extension
<block>::<variable>) are static. As a result, they failed to update
innermost_block, which confused the watch commands about when
variables in watched expressions went out of scope, and also caused
the wrong variables to be watched. This patch also modifies these
routines to treat all local variables the same whether or not they are
block-qualified.
Finally, we add a paragraph to the "Program Variables" section of the texinfo
documentation concerning the use of "::" for accessing non-static variables.
2012-01-11 Paul Hilfinger <hilfingr@adacore.com>
* gdb/blockframe.c (block_innermost_frame): Start search from selected
frame, if present, or otherwise the current frame.
Alan Modra [Wed, 11 Jan 2012 09:28:45 +0000 (09:28 +0000)]
bfd/
* elf64-ppc.c: Define more insns used in plt call stubs.
(ppc64_elf_brtaken_reloc): Assume isa version 2 or above.
(ppc64_elf_relocate_section): Likewise.
(enum ppc_stub_type): Add ppc_stub_plt_call_r2save.
(struct ppc_link_hash_table): Increase size of stub_count array.
Add plt_stub_align and plt_thread_safe.
(ALWAYS_USE_FAKE_DEP, ALWAYS_EMIT_R2SAVE): Define.
(plt_stub_size, plt_stub_pad): New functions.
(build_plt_stub): Emit barriers for power7 thread safety. Don't
emit needless save of r2.
(build_tls_get_addr_stub): Adjust params.
(ppc_build_one_stub): Handle ppc_stub_plt_call_r2save and aligning
plt stubs. Adjust build_*plt_stub calls.
(ppc_size_one_stub): Similarly.
(ppc64_elf_size_stubs): Accept plt_thread_safe and plt_stub_align
params. Choose default for plt_thread_safe based on existence of
calls to thread creation functions. Modify plt_call to
plt_call_r2save when no tocsave reloc found. Align tail of stub
sections.
(ppc64_elf_build_stubs): Align tail of stub sections. Adjust
output of stub statistics.
(ppc64_elf_relocate_section): Handle ppc_stub_plt_call_r2save.
* elf64-ppc.h (ppc64_elf_size_stubs): Update prototype.
ld/
* emultempl/ppc64elf.em (PARSE_AND_LIST_PROLOGUE,
PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS,
PARSE_AND_LIST_ARGS_CASES): Handle --{no-,}plt-thread-safe and
--{no-,}plt-align.
(plt_thread_safe, plt_stub_align): New vars.
(gld${EMULATION_NAME}_after_allocation): Pass them to
ppc64_elf_size_stubs. Align stub sections according to plt_stub_align.
* ld.texinfo: Document new command line options, and an old
undocumented option.
Doug Evans [Tue, 10 Jan 2012 21:16:59 +0000 (21:16 +0000)]
* dwarf2read.c (dwarf_decode_lines): Remove arg "abfd". New arg
"want_line_info". All callers updated.
(dwarf_decode_lines_1): New function.
(handle_DW_AT_stmt_list): Add function comment.
New arg "want_line_info". All callers updated.
(read_file_scope,read_type_unit_scope): Move comment from
handle_DW_AT_stmt_list to here.
Doug Evans [Mon, 9 Jan 2012 17:40:05 +0000 (17:40 +0000)]
* dwarf2read.c (read_and_check_comp_unit_head): Renamed from
partial_read_comp_unit_head. Replace "buffer", "buffer_size" and
"abfd" args with "section". All callers updated.
Error checking code moved ...
(error_check_comp_unit_head): ... here. New function.
(read_and_check_type_unit_head): Renamed from read_type_unit_head.
Delete arg "abfd". New arg "type_offset". All callers updated.
(create_debug_types_hash_table): Simplify by using
read_and_check_type_unit_head.
Iain Sandoe [Mon, 9 Jan 2012 10:47:50 +0000 (10:47 +0000)]
add symbol qualifiers for mach-o to bfd/gas
bfd:
* mach-o.c (bfd_mach_o_bfd_copy_private_symbol_data): Implement.
(bfd_mach_o_write_symtab): Remove handling for indirect syms.
(bfd_mach_o_primary_symbol_sort_key): Likewise.
(bfd_mach_o_cf_symbols): Likewise.
(bfd_mach_o_sort_symbol_table): Remove.
(bfd_mach_o_mangle_symbols): Adjust arguments, remove handling
for indirect and dysymtab counts. Do the symbol sorting here.
(bfd_mach_o_build_dysymtab_command): Count the symbol types here.
Make the indirect symbols a TODO.
(bfd_mach_o_build_commands): Adjust call to bfd_mach_o_mangle_symbols.
(bfd_mach_o_make_empty_symbol): Specifically flag unset symbols with
a non-zero value.
(bfd_mach_o_read_symtab_symbol): Record the symbol index.
(bfd_mach_o_read_symtab_symbol): Adjust recording of global status.
* mach-o.h (mach_o_data_struct): Remove indirect and dysymtab entries.
(IS_MACHO_INDIRECT): Remove.
(SYM_MACHO_FIELDS_UNSET, SYM_MACHO_FIELDS_NOT_VALIDATED): New.
gas:
* config/obj-macho.c (obj_mach_o_weak): Remove.
(obj_mach_o_common_parse): Set symbol qualifiers.
(LAZY, REFE): New macros.
(obj_mach_o_symbol_type): New enum.
(obj_mach_o_set_symbol_qualifier): New.
(obj_mach_o_sym_qual): New.
(mach_o_pseudo_table): Add symbol qualifiers, set indirect_symbol to
a dummy function.
(obj_mach_o_type_for_symbol): New.
(obj_macho_frob_label): New.
(obj_macho_frob_symbol): New.
* config/obj-macho.h (S_SET_ALIGN): Amend temorary var name.
(obj_frob_label, obj_macho_frob_label): Declare.
(obj_frob_symbol, obj_macho_frob_symbol): Declare.
Doug Evans [Sun, 8 Jan 2012 22:20:17 +0000 (22:20 +0000)]
* dwarf2read.c (dwarf2_per_objfile): Rename n_type_comp_units to
n_type_units. Rename type_comp_units to all_type_units.
All uses updated.
(add_signatured_type_cu_to_table): Renamed from
add_signatured_type_cu_to_list. All callers updated.
gas/
2011-01-08 Andrew Pinski <andrew.pinski@caviumnetworks.com>
Richard Sandiford <rdsandiford@googlemail.com>
* config/tc-mips.c (mips_move_labels): Take the list of labels and
textness as parameters.
(mips_move_text_labels): New function.
(append_insn): Use it instead of mips_move_labels.
(mips_emit_delays, start_noreorder): Likewise.
(mips_align): Take the labels rather than just one label.
Move all labels to after the .align.
(s_align): Change the last argument to mips_align.
(s_cons): Likewise.
(s_float_cons): Likewise.
(s_gpword): Likewise.
(s_gpdword): Likewise.
gas/testsuite/
* gas/mips/align3.s, gas/mips/align3.d: New testcase.
* gas/mips/mips.exp: Run it.
Doug Evans [Fri, 6 Jan 2012 18:13:22 +0000 (18:13 +0000)]
* dwarf2read.c: Move FIXME from dwarf2_build_psymtabs_hard
to top of file.
(dwarf2_find_comp_unit): Delete.
(process_psymtab_comp_unit): Make result "void".
Delete args buffer, info_ptr, buffer_size, and replace with
"section". All callers updated.
(dwarf2_build_psymtabs_hard): Simplify.
Tristan Gingold [Fri, 6 Jan 2012 16:23:39 +0000 (16:23 +0000)]
2012-01-06 Tristan Gingold <gingold@adacore.com>
* config/tc-i386.c: Update copyright year.
(lex_got): Also defined for Mach-O.
Add a guard for non-ELF configuration.
(md_longopts): Also handle -64 for Mach-O.
(md_parse_option): Likewise.
(i386_target_format): Adjust for x86_64-darwin.
Mike Frysinger [Fri, 6 Jan 2012 06:43:48 +0000 (06:43 +0000)]
sim: headers: use abs_srcdir to find helper scripts
Trying to run `headers` in an out-of-tree build fails atm due to the
relative srcdir paths being used in a location other than where they
were setup to be used from. Get abs_srcdir from configure and use
that instead where applicable.
Nick Clifton [Thu, 5 Jan 2012 15:17:18 +0000 (15:17 +0000)]
* ld-x86-64/x86-64.exp: Add test of linking mixed 32-bit and
64-bit objects when the 32-bit object (loaded first) contains 32+
local symbols, all referenced by relocs and the 64-bit object
contains a reloc that uses a symbol in the 32-bit object.
* 32bit.s: New source file.
* 64bit.s: New source file.
* incompatible.l: New expected linker output file.
Pedro Alves [Thu, 5 Jan 2012 13:11:31 +0000 (13:11 +0000)]
2012-01-05 Khoo Yit Phang <khooyp@cs.umd.edu>
* infrun.c (normal_stop): Don't skip calling the normal_stop
observers if the thread was doing a multi-step, but stopped for
some reason other than stepping.
gdb/testsuite/
2012-01-05 Pedro Alves <alves.ped@gmail.com>
* gdb.mi/mi-stepn.c, gdb.mi/mi-stepn.exp: New files.
* gdb.python/py-events.c (first): Add bits for new "step N" test.
* gdb.python/py-events.exp: Test that "step N" tripping on a
breakpoint emits a breakpoint event.
Jan Kratochvil [Thu, 5 Jan 2012 07:50:44 +0000 (07:50 +0000)]
bfd/
Fix zero registers core files when built by gcc-4.7.
* elf64-x86-64.c (elf_x86_64_write_core_note): Remove variables p and
size. Call elfcore_write_note for the local variables. Remove the
final elfcore_write_note call. Add NOTREACHED comments.
Doug Evans [Wed, 4 Jan 2012 19:49:41 +0000 (19:49 +0000)]
* dwarf2read.c (dwarf2_read_abbrevs): Delete arg "abfd".
All callers updated.
(load_full_type_unit): Renamed from read_signatured_type_at_offset.
Replace all arguments with "per_cu". All callers updated.
Joel Brobecker [Wed, 4 Jan 2012 15:13:26 +0000 (15:13 +0000)]
Get rid of corefile.c:close_exec_file
The body of this function has been commented out since Jul 1999, and
thus seems unnecessary. While at it, remove some commented out code
that seems to be related to the function being deleted.
gdb/ChangeLog:
* corefile.c (close_exec_file): Delete.
(reopen_exec_file): Remove commented out code that seems related
to close_exec_file, which is being deleted here.
* inferior.h (close_exec_file): Delete.
* fork-child.c (fork_inferior): Remove call to fork_inferior.
Joel Brobecker [Wed, 4 Jan 2012 14:55:09 +0000 (14:55 +0000)]
Use skip_spaces and skip_to_space in ada-lang.c
This is just a minor cleanup that reduces a bit the code in ada-lang.c
by using skip_spaces or skip_to_space, instead of doing the skipping
ourselves.
gdb/ChangeLog:
* ada-lang.c: #include "cli/cli-utils.h".
(get_selections): Use skip_spaces.
(ada_get_next_arg): Use skip_spaces and skip_to_space.
(catch_ada_exception_command_split): Use skip_spaces.
(ada_decode_assert_location): Likewise.
Joel Brobecker [Wed, 4 Jan 2012 14:24:57 +0000 (14:24 +0000)]
do not call decode_compound with Ada expressions.
Trying to insert a breakpoint on `ops."<"', we get the following error:
(gdb) b ops."<"
malformed template specification in command
This is because locate_first_half skips the linespec until the dot,
and the decode_line_internal thinks that the dot might mean that
we have C++ or Java compound. It then tries calling decode_compound
which errors out because it sees the opening angle bracket but not
the closing one (I am guessing).
This patch short-circuits this part of the code when the current
language is Ada.
gdb/ChangeLog:
* linespec.c (decode_line_internal): Check for C++ or Java
compound constructs only if the current language is C, C++
or Java.
Jan Kratochvil [Wed, 4 Jan 2012 13:51:36 +0000 (13:51 +0000)]
gdb/
Revert:
2012-01-02 Jan Kratochvil <jan.kratochvil@redhat.com>
Joel Brobecker <brobecker@adacore.com>
Fix regression for gdb.cp/gdb2495.exp with gcc-4.7.
* arch-utils.c (displaced_step_at_entry_point): Incrase BP_LEN skip to
3 times.
* infcall.c (call_function_by_hand) <AT_SYMBOL>: Move it upwards and
fall through into AT_ENTRY_POINT.
(call_function_by_hand) <AT_ENTRY_POINT>: New variable bp_len. Adjust
DUMMY_ADDR with it.
* ppc-linux-tdep.c (ppc_linux_displaced_step_location): Increase
PPC_INSN_SIZE skip to 3 times.
Joel Brobecker [Wed, 4 Jan 2012 13:15:20 +0000 (13:15 +0000)]
linespec: keep function descriptors during minimal symbol search
When discarding data (minimal) symbols, we need to be careful to
not throw away the function descriptors. This makes a difference
on platforms where these descriptors are used and live in a data
section.
gdb/ChangeLog:
* linespec.c (add_minsym): Preserve function descriptors.
Iain Sandoe [Wed, 4 Jan 2012 10:59:54 +0000 (10:59 +0000)]
add .zerofill to mach-o GAS.
gas:
* config/obj-macho.c (obj_mach_o_segT_from_bfd_name): Tidy definition.
(obj_mach_o_get_section_names): New (split from obj_mach_o_section).
(obj_mach_o_make_or_get_sect): Likewise.
(obj_mach_o_section): Split out the functionality shared with zerofill.
(obj_mach_o_zerofill): New.
(obj_mach_o_common_parse): Ensure whitespace is skipped.
(mach_o_pseudo_table): Add .zerofill.
* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Factor out the part
which reads DWARF2 and stores in stash from find_line.
(find_line) Call _bfd_dwarf2_slurp_debug_info.
* libbfd-in.h (_bfd_dwarf2_slurp_debug_info): Add declaration.
* libbfd.h (_bfd_dwarf2_slurp_debug_info): Regenerate.
* mach-o.c (dsym_subdir): The name of subdir where debug
information may be stored.
(bfd_mach_o_lookup_uuid_command): New. Lookup a load command whose
type is UUID.
(bfd_mach_o_dsym_for_uuid_p): New. Check if the specified BFD is
corresponding to the executable.
(bfd_mach_o_find_dsym): New. Find a debug information BFD in the
specified binary file.
(bfd_mach_o_follow_dsym): New. Find a debug information BFD for
the original BFD.
(bfd_mach_o_find_nearest_line): Check dSYM files for Mach-O
executables, dylibs, and bundles.
(bfd_mach_o_close_and_cleanup): Clean up BFDs for the dSYM file.
* mach-o.h (dsym_bfd): The BFD of the dSYM file.
Joel Brobecker [Wed, 4 Jan 2012 07:55:48 +0000 (07:55 +0000)]
use gnulib's update-copyright script to update copyright years
This patch now retires the old copyright.sh script which was using
emacs to perform the copyright update. It also completely rewrite
copyright.py to call update-copyright with the appropriate list
of files.
In addition to calling update-copyright, the new script also performs
a sanity-check on all the files that update-copyright could not update,
and sees whether the file might contain a copyright notice that
the script could not decipher.
Cary Coutant [Wed, 4 Jan 2012 00:18:23 +0000 (00:18 +0000)]
* gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
Use abstract base class for GOT.
* gold/output.h (class Output_data_got_base): New abstract base class.
(class Output_data_got): Derive from new base class, adjust ctors.
(Output_data_got::reserve_slot): Make virtual; rename to
do_reserve_slot; Adjust callers.
* gold/target.h (Sized_target::init_got_plt_for_update): Return
pointer to abstract base class.
* gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise.