aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-10-11gdb/ChangeLogSterling Augustine7-410/+121
2011-10-11 Sterling Augustine <saugustine@google.com> * dwarf2read.c (partial_die_parent_scope): Rearrange conditional logic. gdb/testsuite/ChangeLog 2011-10-11 Sterling Augustine <saugustine@google.com> * gdb.cp/Makefile.in: Add namespace-enum test. * gdb.cp/namespace-enum.exp: New file. * gdb.cp/namespace-enum.c: New file. * gdb.cp/namespace-enum-main.c: New file.
2011-10-11Fix jit.exp on most 32-bit targets.David S. Miller6-3/+49
* gdbarch.sh: New field 'long_long_align_bit'. * gdbarch.c, gdbarch.h: Regenerate. * i386-tdep.c (i386_gdbarch_init): Set long_long_align_bit to 32. * jit.c (jit_read_code_entry): Use it to determine correct size offset.
2011-10-11 * gdb.python/py-shared.exp: Relax filename check to handle remote:Ulrich Weigand2-1/+6
sysroot.
2011-10-11 * symfile.c (separate_debug_file_exists): Fix condition.Ulrich Weigand2-1/+5
2011-10-11Fix regcache_restore() handling of unavailable regs.David S. Miller3-6/+10
* regcache.c (regcache_restore): Do not write unavailable regs, mark static. * regcache.h (regcache_restore): Remove declaration.
2011-10-11 PR binutils/13051Nick Clifton11-99/+333
Fix a syntax error bug when compiling rc files with the VERSIONINFO resource containing more than one language block inside a single StringFileInfo block. * windint.h (rc_ver_stringtable): New structure definition. (rc_ver_info): Use it. * rcparse.y (verstringtable): New variable. (verstringtables): New type. (verstringtables:): New rule declaration. (verblocks:): Use it. * resrc.c (append_ver_stringtable): New function. (append_ver_stringfileinfo): Update to use stringtables. * windres.h (append_ver_stringfileinfo): Update declaration. (append_ver_stringtable): New declaration. * resrc.c (write_rc_versioninfo): Update to support multiple blocks. * resbin.c (bin_to_res_version): Likewise. (res_to_bin_versioninfo): Likewise. * binutils-all\windres\version.rsd: Regenerate. * binutils-all\windres\version_cat.rsd: Regenerate. * binutils-all\windres\version_mlang.rc: Add new test. * binutils-all\windres\version_mlang.rsd: Likewise.
2011-10-11gdb/Jan Kratochvil5-18/+57
Revert this part of: 2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com> Support @entry in input expressions. * c-exp.y (ENTRY, unknown_cpp_name): New. (exp: UNKNOWN_CPP_NAME): Change to `exp: unknown_cpp_name'. (unknown_cpp_name: UNKNOWN_CPP_NAME, unknown_cpp_name: ENTRY) (variable: name_not_typename '@' ENTRY, name: ENTRY) (name_not_typename: ENTRY): New. (yylex): Recognize ENTRY. Reimplement @entry in input expressions. * c-exp.y (ENTRY): New. (variable: name_not_typename ENTRY): New. (lex_one_token): Optionally return ENTRY instead of the '@' lex. gdb/testsuite/ Reimplement @entry in input expressions. * gdb.base/exprs.c (v_int_array_init): New variable. * gdb.base/exprs.exp (print v_int_array_init) (print *v_int_array_init@1, print *v_int_array_init@2) (print v_int_array_init[0]@1, print v_int_array_init[0]@2) (print v_int_array_init[1]@1): New tests.
2011-10-112011-10-11 Pedro Alves <pedro@codesourcery.com>Pedro Alves2-3/+13
* linux-nat.c (linux_handle_extended_wait): Always dump both the parent and child's pids as soon as we detect a clone event. Adjust another debug message.
2011-10-112011-10-11 Pedro Alves <pedro@codesourcery.com>Pedro Alves2-4/+13
gdb/ * linux-nat.c (linux_lwp_is_zombie): Return early if the LWP is not zombie instead of reading the whole file.
2011-10-11gdb/Jan Kratochvil3-14/+87
Fix separate debuginfo warning with "remote:" access. * objfiles.h (struct objfile): New fields crc32 and crc32_p. * symfile.c (get_file_crc): New function with the code moved from ... (separate_debug_file_exists): ... this function, specifically variables buffer and count. New variable verified_as_different, set it. Remove file_crc initialization. Verify also if both files are not the same manually, if needed.
2011-10-11 gdb/Yao Qi2-11/+15
* arm-tdep.c (arm_get_next_pc_raw): Use read_memory_unsigned_integer to get address.
2011-10-11 PR binutils/13278Alan Modra2-3/+11
* archive.c (bfd_generic_archive_p): Only check first element when target_defaulted. (_bfd_construct_extended_name_table): Use ar_maxnamelen. (_bfd_archive_bsd44_construct_extended_name_table): Likewise.
2011-10-11 PR binutils/13257Alan Modra2-2/+17
* archive.c (_bfd_find_nested_archive, _bfd_get_elt_at_filepos): Open thin archive element using container target if not defaulted.
2011-10-11 * linux-thread-db.c (thread_db_new_objfile): Only try to loadDoug Evans5-6/+50
libthread_db when we load libpthread or the main symbol file. (thread_db_inferior_created): New function. (_initialize_thread_db): Attach inferior_created observer. * linux-nat.c (linux_child_post_attach): Remove call to check_for_thread_db. (linux_child_post_startup_inferior): Ditto. * objfiles.h (OBJF_MAINLINE): Define. * symfile.c (symbol_file_add_with_addrs_or_offsets): Pass it to allocate_objfile when appropriate.
2011-10-11 * gdb.cp/gdb2495.exp: Do not include directories in filename inJoseph Myers2-1/+6
expected message.
2011-10-11*** empty log message ***gdbadmin1-1/+1
2011-10-10daily updateAlan Modra1-1/+1
2011-10-10merge from gccDJ Delorie3-0/+36
2011-10-10 PR gdb/13218Ulrich Weigand2-43/+8
* arm-linux-nat.c (os_version, os_major, os_minor, os_release): Remove unused variables. (get_linux_version): Remove function. (_initialize_arm_linux_nat): Do not call it.
2011-10-10 * gold/incremental.cc (Sized_relobj_incr::Sized_relobj_incr):Cary Coutant4-13/+66
Initialize defined_count_. (Sized_relobj_incr::do_add_symbols): Count defined symbols. (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite. (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_. (Sized_incr_dynobj::do_add_symbols): Count defined symbols. (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite. * gold/incremental.h (Sized_relobj_incr::defined_count_): New data member. (Sized_incr_dynobj::defined_count_): New data member. * gold/plugin.cc (Sized_pluginobj::do_get_global_symbol_counts): Return zeroes instead of internal error.
2011-10-10 PR gold/13249Cary Coutant6-47/+85
* gold/output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag. (Output_reloc::symbol_value): Return PLT offset if flag is set. * gold/output.h (class Output_reloc): Add use_plt_offset flag. (Output_reloc::type_): Adjust size of bit field. (Output_reloc::use_plt_offset_): New bit field. (class Output_data_reloc): Adjust all calls to Output_reloc_type. (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset flag. Adjust all callers. * gold/x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when creating RELATIVE relocations.
2011-10-102011-10-10 Pedro Alves <pedro@codesourcery.com>Pedro Alves2-24/+50
gdb/ * linux-nat.c (linux_handle_extended_wait): Don't resume the new new clone lwp if the core asked it to stop. Don't pass on unexpected signals to the new clone; leave them pending instead.
2011-10-10Updated Bulgarian, Spanish, Finnish, French, Russian and Ukranian translations.Nick Clifton30-17867/+24930
2011-10-102011-10-10 Pedro Alves <pedro@codesourcery.com>Pedro Alves2-4/+4
gdb/ * linux-nat.c (resume_lwp): Remove redundant debug output.
2011-10-102011-10-10 Pedro Alves <pedro@codesourcery.com>Pedro Alves2-3/+17
gdb/ * linux-nat.c (linux_nat_wait_1): Copy the event lwp's last_resume_kind before clearing it, and use the copy instead to determine whether to report a SIGSTOP as TARGET_SIGNAL_0. Use resume_clear_callback in the non-stop path too.
2011-10-10include/elf/Alan Modra4-6/+151
* ppc64.h (R_PPC64_TOCSAVE): Add. bfd/ * elf64-ppc.c (ppc64_elf_howto_table): Add R_PPC64_TOCSAVE entry. (struct ppc_link_hash_table): Add tocsave_htab. (struct tocsave_entry): New. (tocsave_htab_hash, tocsave_htab_eq, tocsave_find): New functions. (ppc64_elf_link_hash_table_create): Create tocsave_htab.. (ppc64_elf_link_hash_table_free): ..and delete it. (build_plt_stub): Always put STD_R2_40R1 first. (ppc64_elf_size_stubs): Check for R_PPC64_TOCSAVE following reloc on plt call. If present add prologue nop location to tocsave_htab. (ppc64_elf_relocate_section): Convert prologue nop to std. Skip first insn of plt call stub when R_PPC64_TOCSAVE present.
2011-10-10 * ldmain.c (main): Move code twiddling various config and link_infoAlan Modra4-79/+86
bits to.. * lexsup.c (parse_args): ..here. Move plugin_load_plugins call into main. * plugin.c (set_tv_header): Test link_info.executable, not link_info.shared. (is_visible_from_outside): Likewise. Delete redundant is_ir_dummy_bfd check and "section" parameter.
2011-10-10ld/Alan Modra10-21/+36
* emultempl/ppc64elf.em (ppc_add_stub_section): Align to 32 bytes. ld/testsuite/ * ld-powerpc/relbrlt.d: Update for stub alignment change. * ld-powerpc/tlsexe.g: Likewise. * ld-powerpc/tlsexe.r: Likewise. * ld-powerpc/tlsexetoc.g: Likewise. * ld-powerpc/tlsexetoc.r: Likewise. * ld-powerpc/tlsso.g: Likewise. * ld-powerpc/tlsso.r: Likewise.
2011-10-10gdb/Yao Qi2-6/+16
* valprint.c (value_check_printable): Add one parameter OPTIONS. Honor OPTIONS and VAL's type. (common_val_print, value_print): Update to pass one more parameter.
2011-10-10sim: dv-cfi: include stdbool.hMike Frysinger2-0/+5
The dv-cfi code uses the bool type but doesn't include the stdbool.h header. I didn't notice for Blackfin targets as the core Blackfin header will include stdbool.h, but most targets don't do this. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-10-10sim: dv-cfi: include common headers onlyMike Frysinger2-1/+6
The "devices.h" header is Blackfin-specific, so trying to build dv-cfi for any other target fails. Include the specific hw headers this file needs directly. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-10-10*** empty log message ***gdbadmin1-1/+1
2011-10-09daily updateAlan Modra1-1/+1
2011-10-09 Add new "alias" command.Doug Evans11-6/+421
* NEWS: Mention new command. * command.h (valid_user_defined_cmd_name_p): Declare. * defs.h (make_cleanup_dyn_string_delete): Declare. * utils.c: #include "dyn-string.h". (do_dyn_string_delete, make_cleanup_dyn_string_delete): New functions. * cli/cli-cmds.c: #include "dyn-string.h". (argv_to_dyn_string, valid_command_p, alias_command): New functions. (init_cli_cmds): Add new command. * cli/cli-decode.c (valid_user_defined_cmd_name_p): New function. doc/ * gdb.texinfo (Extending GDB): Document alias command. testsuite/ * gdb.base/alias.exp: Add tests for alias command.
2011-10-09gdb/Jan Kratochvil3-2/+10
Fix compatibility with older GCCs. * dwarf2loc.c (dwarf_expr_reg_to_entry_parameter): Initialize parameter. * stack.c (read_frame_arg): Initialize val_deref.
2011-10-09gdb/Jan Kratochvil2-0/+518
Add forgotten gdb/dwarf2-frame-tailcall.c. Add forgotten gdb/dwarf2-frame-tailcall.h.
2011-10-09gdb/Jan Kratochvil6-12/+4707
Entry values NEWS entries, DWARF disassembly support. * NEWS: New entry values entry. (set print entry-values, show print entry-values) (set debug entry-values, show debug entry-values): New entries. * dwarf2loc.c (disassemble_dwarf_expression): New parameters start and indent. Remove variable start. Move header printing out. Respect INDENT. Support DW_OP_GNU_entry_value. (locexpr_describe_location_1): Move the header printing here, extend the disassemble_dwarf_expression passed parameters. gdb/testsuite/ * gdb.arch/amd64-entry-value.s: New file. * gdb.mi/mi2-amd64-entry-value.s: New file.
2011-10-09gdb/Jan Kratochvil15-47/+496
Display @entry parameter values even for references. * ada-valprint.c (ada_val_print_1) <TYPE_CODE_REF>: Try also coerce_ref_if_computed. * c-valprint.c (c_val_print) <TYPE_CODE_REF>: Likewise. * dwarf2expr.c (dwarf_block_to_dwarf_reg_deref): New function. (execute_stack_op) <DW_OP_GNU_entry_value>: Add -1 deref_size to the existing push_dwarf_reg_entry_value call. Add new detection calling dwarf_block_to_dwarf_reg_deref. Update the error message. (ctx_no_push_dwarf_reg_entry_value): New parameter deref_size. * dwarf2expr.h (struct dwarf_expr_context_funcs) <push_dwarf_reg_entry_value>: Add new parameter deref_size, describe it in the comment. (ctx_no_push_dwarf_reg_entry_value): Add new parameter deref_size. (dwarf_block_to_dwarf_reg_deref): New declaration. * dwarf2loc.c (dwarf_entry_parameter_to_value): Add new parameter deref_size, describe it in the function comment. New variables data_src and size, fetch the alternative block accoring to DEREF_SIZE. (dwarf_expr_push_dwarf_reg_entry_value): Add new parameter deref_size, describe it in the function comment. Fetch the alternative block accoring to DEREF_SIZE. (entry_data_value_coerce_ref, entry_data_value_copy_closure) (entry_data_value_free_closure, entry_data_value_funcs): New. (value_of_dwarf_reg_entry): New variables checked_type, target_type, outer_val, target_val, val and addr. Try to fetch and create also referenced value content. (pieced_value_funcs): NULL value for coerce_ref. (needs_dwarf_reg_entry_value): Add new parameter deref_size. * f-valprint.c (f_val_print) <TYPE_CODE_REF>: Try also coerce_ref_if_computed. * opencl-lang.c (opencl_value_funcs): NULL value for coerce_ref. * p-valprint.c (pascal_val_print) <TYPE_CODE_REF>: Likewise. * stack.c (read_frame_arg): Compare also dereferenced values. * value.c (value_computed_funcs): Make the parameter v const, use value_lval_const for it. (value_lval_const, coerce_ref_if_computed): New function. (coerce_ref): New variable retval. Call also coerce_ref_if_computed. * value.h (struct lval_funcs): New field coerce_ref. (value_computed_funcs): Make the parameter v const. (value_lval_const, coerce_ref_if_computed): New declarations. gdb/testsuite/ Display @entry parameter values even for references. * gdb.arch/amd64-entry-value.cc (reference, datap, datap_input): New functions. (main): New variables regvar, nodatavarp, stackvar1, stackvar2. Call reference and datap_input. * gdb.arch/amd64-entry-value.exp (reference, breakhere_reference): New breakpoints. (continue to breakpoint: entry_reference: reference) (entry_reference: bt at entry) (continue to breakpoint: entry_reference: breakhere_reference) (entry_reference: bt, entry_reference: ptype regparam) (entry_reference: p regparam, entry_reference: ptype regparam@entry) (entry_reference: p regparam@entry, entry_reference: p &regparam@entry) (entry_reference: p regcopy, entry_reference: p nodataparam) (entry_reference: p nodataparam@entry): New tests.
2011-10-09gdb/Jan Kratochvil12-1/+143
Support @entry in input expressions. * c-exp.y (ENTRY, unknown_cpp_name): New. (exp: UNKNOWN_CPP_NAME): Change to `exp: unknown_cpp_name'. (unknown_cpp_name: UNKNOWN_CPP_NAME, unknown_cpp_name: ENTRY) (variable: name_not_typename '@' ENTRY, name: ENTRY) (name_not_typename: ENTRY): New. (yylex): Recognize ENTRY. * eval.c (evaluate_subexp_standard): Support also OP_VAR_ENTRY_VALUE. * expprint.c (print_subexp_standard, dump_subexp_body_standard): Likewise. * parse.c (operator_length_standard): Likewise. * std-operator.def: New operator OP_VAR_ENTRY_VALUE. gdb/doc/ Support @entry in input expressions. * gdb.texinfo (Variables): Describe @entry names suffix. (Print Settings): Add anchor for `set print entry-values'. gdb/testsuite/ Support @entry in input expressions. * gdb.arch/amd64-entry-value.exp (entry: p i@entry, entry: p j@entry) (entry_stack: p s1@entry, entry_stack: p s2@entry) (entry_stack: p d9@entry, entry_stack: p da@entry, tailcall: p i@entry) (tailcall: p j@entry): New tests. * gdb.cp/koenig.cc (A::entry): New function. (main): Call it. * gdb.cp/koenig.exp (p entry (c)): New test.
2011-10-09gdb/Jan Kratochvil3-1/+8
Display referenced values in backtraces. * printcmd.c (print_variable_and_value): Set OPTS.DEREF_REF to 1. * stack.c (print_frame_arg): Likewise.
2011-10-09gdb/Jan Kratochvil3-5/+21
Make some lval_funcs methods to default on NULL. * valops.c (value_fetch_lazy): Check if lval_computed read method is NULL. (value_assign): Check if lval_computed write method is NULL. * value.h (struct lval_funcs): Comment NULL values for read and write methods.
2011-10-09gdb/Jan Kratochvil18-25/+1088
Display @entry parameter values (without references). * dwarf2expr.c (dwarf_block_to_fb_offset, dwarf_block_to_sp_offset): New functions. * dwarf2expr.h (dwarf_block_to_fb_offset, dwarf_block_to_sp_offset): New declarations. * dwarf2loc.c (dwarf2_find_location_expression): Support location list entry record. (dwarf_entry_parameter_to_value, value_of_dwarf_reg_entry) (value_of_dwarf_block_entry, locexpr_read_variable_at_entry): New functions. (dwarf2_locexpr_funcs): Install locexpr_read_variable_at_entry. (loclist_read_variable_at_entry): New function. (dwarf2_loclist_funcs): Install loclist_read_variable_at_entry. * dwarf2read.c (read_call_site_scope): Support also DW_OP_fbreg in DW_AT_location, call dwarf_block_to_sp_offset for it. * frame.h (print_entry_values_no, print_entry_values_only) (print_entry_values_preferred, print_entry_values_if_needed) (print_entry_values_both, print_entry_values_compact) (print_entry_values_default, print_entry_values): New declarations. (struct frame_arg): New field entry_kind. (read_frame_arg): New parameter entryargp. * mi/mi-cmd-stack.c (list_arg_or_local): New gdb_assert for arg->entry_kind. Optionally print the `@entry' suffix. (list_args_or_locals): New variable entryarg, initialize it. Initialize also entry_kind of arg and entryarg. Conditionalize list_arg_or_local for arg, add list_arg_or_local for entryarg. Call xfree for entryarg.error. * stack.c (print_entry_values_no, print_entry_values_only) (print_entry_values_preferred, print_entry_values_if_needed) (print_entry_values_both, print_entry_values_compact) (print_entry_values_default, print_entry_values_choices) (print_entry_values): New variables. (print_frame_arg): New gdb_assert for arg->entry_kind. Optionally print the `@entry' suffix, possibly in combination for print_entry_values_compact. (read_frame_arg): New parameter entryargp, new variables entryval, entryval_error and val_equal. Read in also entryargp, respect print_entry_values, compare the values using val_equal, fill in also argp->entry_kind (together with entryargp->entry_kind). (print_frame_args): New variable entryarg, initialize it. Conditionalize print_frame_arg for arg, add print_frame_arg for entryarg. Call xfree for entryarg.error. (_initialize_stack): Call add_setshow_enum_cmd for `entry-values'. * symtab.h (struct symbol_computed_ops): New field read_variable_at_entry. gdb/doc/ Display @entry parameter values (without references). * gdb.texinfo (Tail Call Frames): Add anchor. Add self tail call example. (Print Settings): New description of set print entry-values and show print entry-values. gdb/testsuite/ Display @entry parameter values (without references). * gdb.arch/amd64-entry-value.cc (locexpr, stacktest, data, data2) (different, validity, invalid): New functions. (main): Call them. * gdb.arch/amd64-entry-value.exp: New breakpoints breakhere_locexpr, stacktest, breakhere_stacktest, different, breakhere_different, breakhere_validity and breakhere_invalid. (entry: bt): Update for @entry. (entry_locexpr: *, entry_stack: *, entry_equal: *, entry_different: *) (entry_validity: *, entry_invalid: *): Many new tests. * gdb.base/break.exp (run until breakpoint set at small function, optimized file): Accept also the @entry suffix. * gdb.mi/Makefile.in (PROGS): Add mi2-amd64-entry-value. * gdb.mi/mi2-amd64-entry-value.c: New files. * gdb.mi/mi2-amd64-entry-value.exp: New files.
2011-10-09gdb/Jan Kratochvil4-113/+229
Code reshuffle. * frame.h (struct frame_arg): New definition. (read_frame_arg): New declaration. * mi/mi-cmd-stack.c (list_arg_or_local): New functiom from ... (list_args_or_locals): ... the code here. New variable arg, call read_frame_arg and list_arg_or_local with it. Unify the PRINT_SIMPLE_VALUES and PRINT_ALL_VALUES cases. Call xfree for arg.error. * stack.c (print_frame_arg): New functiom from the code of print_frame_args. (read_frame_arg): New function. (print_frame_args): Remove variable val. New variable arg, call read_frame_arg and print_frame_arg with it. Call xfree for arg.error.
2011-10-09gdb/Jan Kratochvil5-0/+136
Protect entry values against self tail calls. * dwarf2loc.c (VEC (CORE_ADDR), func_verify_no_selftailcall): New. (dwarf_expr_dwarf_reg_entry_value): Call func_verify_no_selftailcall. gdb/testsuite/ Protect entry values against self tail calls. * gdb.arch/amd64-entry-value.cc (self2, self): New. (main): Call self. * gdb.arch/amd64-entry-value.exp (self: breakhere, self: bt) (set debug entry-values 1, self: bt debug entry-values): New tests.
2011-10-09gdb/Jan Kratochvil14-12/+709
Recognize virtual tail call frames. * Makefile.in (SFILES): Add dwarf2-frame-tailcall.c. (HFILES_NO_SRCDIR): Add dwarf2-frame-tailcall.h. (COMMON_OBS): Add dwarf2-frame-tailcall.o. * dwarf2-frame-tailcall.c: New file. * dwarf2-frame-tailcall.h: New file. * dwarf2-frame.c: Include dwarf2-frame-tailcall.h. (execute_cfa_program): New function comment. Return INSN_PTR. Reset REGS.PREV only after CIE execution. (struct dwarf2_frame_cache): New field tailcall_cache. (dwarf2_frame_cache): New variables entry_pc, entry_cfa_sp_offset, entry_cfa_sp_offset_p and instr. Execute FDE instructions in two parts, try to find entry_cfa_sp_offset. Call dwarf2_tailcall_sniffer_first. (dwarf2_frame_prev_register): Call dwarf2_tailcall_prev_register_first when appropriate. (dwarf2_frame_dealloc_cache): New function. (dwarf2_frame_sniffer): Preinitialize cache by dwarf2_frame_cache. (dwarf2_frame_unwind): Install dwarf2_frame_dealloc_cache. (dwarf2_signal_frame_unwind): Do not install dwarf2_frame_dealloc_cache. (dwarf2_append_unwinders): Add dwarf2_tailcall_frame_unwind. (dwarf2_frame_cfa): Support also dwarf2_tailcall_frame_unwind. * dwarf2loc.c (func_addr_to_tail_call_list) (tailcall_dump, call_sitep, VEC (call_sitep), chain_candidate) (call_site_find_chain_1, call_site_find_chain): New. * dwarf2loc.h (struct call_site_chain): New. (call_site_find_chain): New declaration. * frame.c (get_frame_address_in_block): Support also TAILCALL_FRAME. * frame.h (enum frame_type): New entry TAILCALL_FRAME. * python/py-frame.c (gdbpy_initialize_frames): Add TAILCALL_FRAME. * stack.c (frame_info): Support also TAILCALL_FRAME. gdb/doc/ Recognize virtual tail call frames. * gdb.texinfo (Optimized Code): Add reference to Tail Call Frames. (Tail Call Frames): New node. (Frames In Python): Add gdb.TAILCALL_FRAME. gdb/testsuite/ Recognize virtual tail call frames. * gdb.arch/amd64-entry-value.cc (c, a, b, amb_z, amb_y, amb_x, amb) (amb_b, amb_a): New. (main): Call a and b. * gdb.arch/amd64-entry-value.exp (tailcall: breakhere, tailcall: bt) (tailcall: p i, tailcall: p j, set $sp0=$sp, up, p $sp0 == $sp, frame 3) (p $sp0 + sizeof (void *) == $sp, ambiguous: breakhere, ambiguous: bt): New tests.
2011-10-09gdb/Jan Kratochvil3-0/+67
Tail call sites reader implementation. * dwarf2read.c (read_call_site_scope): Recognize DW_AT_GNU_tail_call, fill in TYPE_TAIL_CALL_LIST. * gdbtypes.h (struct func_type): New field tail_call_list. (struct call_site): New field tail_call_next. (TYPE_TAIL_CALL_LIST): New definition.
2011-10-09gdb/Jan Kratochvil20-26/+921
Implement basic support for DW_TAG_GNU_call_site. * block.c: Include gdbtypes.h and exceptions.h. (call_site_for_pc): New function. * block.h (call_site_for_pc): New declaration. * defs.h: Include hashtab.h. (make_cleanup_htab_delete, core_addr_hash, core_addr_eq): New declarations. * dwarf2-frame.c (dwarf2_frame_ctx_funcs): Install ctx_no_push_dwarf_reg_entry_value. * dwarf2expr.c (read_uleb128, read_sleb128): Support R as NULL. (dwarf_block_to_dwarf_reg): New function. (execute_stack_op) <DW_OP_GNU_entry_value>: Implement it. (ctx_no_push_dwarf_reg_entry_value): New function. * dwarf2expr.h (struct dwarf_expr_context_funcs): New field push_dwarf_reg_entry_value. (ctx_no_push_dwarf_reg_entry_value, dwarf_block_to_dwarf_reg): New declarations. * dwarf2loc.c: Include gdbcmd.h. (dwarf_expr_ctx_funcs): New forward declaration. (entry_values_debug, show_entry_values_debug, call_site_to_target_addr) (dwarf_expr_reg_to_entry_parameter) (dwarf_expr_push_dwarf_reg_entry_value): New. (dwarf_expr_ctx_funcs): Install dwarf_expr_push_dwarf_reg_entry_value. (dwarf2_evaluate_loc_desc_full): Handle NO_ENTRY_VALUE_ERROR. (needs_dwarf_reg_entry_value): New function. (needs_frame_ctx_funcs): Install it. (_initialize_dwarf2loc): New function. * dwarf2loc.h (entry_values_debug): New declaration. * dwarf2read.c (struct dwarf2_cu): New field call_site_htab. (read_call_site_scope): New forward declaration. (process_full_comp_unit): Copy call_site_htab. (process_die): Support DW_TAG_GNU_call_site. (read_call_site_scope): New function. (dwarf2_get_pc_bounds): Support NULL HIGHPC. (dwarf_tag_name): Support DW_TAG_GNU_call_site. (cleanup_htab): Delete. (write_psymtabs_to_index): Use make_cleanup_htab_delete instead of it. * exceptions.h (enum errors): New NO_ENTRY_VALUE_ERROR. * gdb-gdb.py (StructMainTypePrettyPrinter): Support FIELD_LOC_KIND_DWARF_BLOCK. * gdbtypes.h (enum field_loc_kind): New entry FIELD_LOC_KIND_DWARF_BLOCK. (struct main_type): New loc entry dwarf_block. (struct call_site, FIELD_DWARF_BLOCK, SET_FIELD_DWARF_BLOCK) (TYPE_FIELD_DWARF_BLOCK): New. * python/py-type.c: Include dwarf2loc.h. (check_types_equal): Support FIELD_LOC_KIND_DWARF_BLOCK. New internal_error call on unknown FIELD_LOC_KIND. * symtab.h (struct symtab): New field call_site_htab. * utils.c (do_htab_delete_cleanup, make_cleanup_htab_delete) (core_addr_hash, core_addr_eq): New functions. gdb/testsuite/ Implement basic support for DW_TAG_GNU_call_site. * gdb.arch/Makefile.in (EXECUTABLES): Add amd64-entry-value. * gdb.arch/amd64-entry-value.cc: New file. * gdb.arch/amd64-entry-value.exp: New file.
2011-10-09gdb/Jan Kratochvil4-10/+45
Code reshuffle. * gdb-gdb.py (StructMainTypePrettyPrinter): Change TYPE_SPECIFIC_CALLING_CONVENTION to TYPE_SPECIFIC_FUNC. Move calling_convention under func_stuff there. * gdbtypes.c (make_function_type): Call INIT_FUNC_SPECIFIC. (init_type) <TYPE_CODE_FUNC>: Likewise. (recursive_dump_type): Change TYPE_SPECIFIC_CALLING_CONVENTION to TYPE_SPECIFIC_FUNC. New comment for tail_call_list. * gdbtypes.h (enum type_specific_kind): Change TYPE_SPECIFIC_CALLING_CONVENTION to TYPE_SPECIFIC_FUNC. (struct main_type) <type_specific>: Change calling_convention to func_stuff. Move calling_convention to ... (struct func_type): ... this new struct. (INIT_FUNC_SPECIFIC): New #define. (TYPE_CALLING_CONVENTION): Change calling_convention to func_stuff.
2011-10-09gdb/Jan Kratochvil10-2/+302
Fix DW_OP_GNU_implicit_pointer for DWARF32 v3+ on 64-bit arches. * dwarf2-frame.c (execute_stack_op): Initialize ctx->ref_addr_size. * dwarf2expr.c (execute_stack_op) <DW_OP_GNU_implicit_pointer>: Use ctx->ref_addr_size. Handle its invalid value. * dwarf2expr.h (struct dwarf_expr_context): New field ref_addr_size. * dwarf2loc.c (dwarf2_evaluate_loc_desc_full) (dwarf2_loc_desc_needs_frame): Initialize ctx->ref_addr_size. * dwarf2loc.h (dwarf2_per_cu_ref_addr_size): New declaration. * dwarf2read.c (decode_locdesc): Initialize ctx->ref_addr_size. (dwarf2_per_cu_ref_addr_size): New function. gdb/testsuite/ Fix DW_OP_GNU_implicit_pointer for DWARF32 v3+ on 64-bit arches. * gdb.dwarf2/implptr-64bit.S: New file. * gdb.dwarf2/implptr-64bit.exp: New file.
2011-10-09gdb/Jan Kratochvil2-28/+42
Code cleanup. * dwarf2read.c (per_cu_header_read_in): New function. (dwarf2_per_cu_addr_size, dwarf2_per_cu_offset_size): Use it, with new variables cu_header_local and cu_headerp.