* symtab.h: (struct symbol_register_ops): New struct definition.
(struct symbol): Make "ops" member a union of symbol_computed_ops and
symbol_register_ops callback pointers.
(SYMBOL_REGISTER_OPS): New macro.
* tracepoint.c: Include "objfiles.h".
(scope_info, collect_symbol): Use SYMBOL_REGISTER_OPS register_number
callback to retrieve register numbers.
* ax-gdb.c (gen_var_ref): Likewise.
* findvar.c (read_var_value): Likewise.
* printcmd.c (address_info): Likewise.
* coffread.c (coff_reg_to_regnum): New function.
(coff_register_funcs): New static variable.
(process_coff_symbol): Do not call gdbarch_sdb_reg_to_regnum.
Install SYMBOL_REGISTER_OPS callbacks.
* mdebugread.c (mdebug_reg_to_regnum): New function.
(mdebug_register_funcs): New static variable.
(parse_symbol): Do not call gdbarch_ecoff_reg_to_regnum.
Install SYMBOL_REGISTER_OPS callbacks.
* stabsread.c (stab_reg_to_regnum): New function.
(stab_register_funcs): New static variable.
(define_symbol): Do not call gdbarch_stab_reg_to_regnum.
Install SYMBOL_REGISTER_OPS callbacks.
Pedro Alves [Wed, 3 Jun 2009 18:50:36 +0000 (18:50 +0000)]
* target.c: Include "exec.h".
(update_current_target): Don't inherit to_sections or
to_sections_end.
(target_get_section_table): New.
(target_section_by_addr): Fetch the section table from the passed
in target.
(memory_xfer_partial): Handle unmapped overlay sections before
anything else. Get the overlay mapped address here. Adjust to
use section_table_xfer_memory_partial.
(get_target_memory): Request a TARGET_OBJECT_RAW_MEMORY object
instead of TARGET_OBJECT_MEMORY.
(target_resize_to_sections): Delete.
(remove_target_sections): Adjust to remove target sections from
`current_target_sections', and use resize_section_table.
* target.h (struct target_ops) <to_sections, to_sections_end>:
Remove fields.
<to_get_section_table>: New method.
(xfer_memory, print_section_info): Delete declarations.
(struct target_section_table): New type.
(target_get_section_table): Declare.
(target_resize_to_sections): Delete declaration.
(remove_target_sections): Delete declaration.
* bfd-target.c (target_bfd_xfer_partial): Get the section table
from to_data.
(target_bfd_get_section_table): New.
(target_bfd_xclose): Adjust.
(target_bfd_reopen): Store the section table in the to_data field.
* corelow.c (core_data): New.
(core_close): Adjust to release core_data and its sections.
(core_open): Allocate core_data, and build its target sections
table.
(deprecated_core_resize_section_table): New.
(core_files_info): Pass core_data to print_section_info.
(core_xfer_partial): Adjust to use
section_table_xfer_memory_partial for TARGET_OBJECT_MEMORY xfers.
(init_core_ops): Do not install a deprecated_xfer_memory callback
anymore.
* solib.c (update_solib_list): Add the shared library sections
to the current target sections table.
* exec.c (current_target_sections_1): New global.
(current_target_sections): New global.
(exec_close_1): New function, refactored from exec_close. Remove
the exec_bfd's sections from the current target sections table.
Adjust to not use to_sections.
(exec_close): Remove all target sections. Call exec_close_1.
(exec_file_clear): Use exec_close_1 instead of unpushing the
target.
(exec_file_attach): Likewise. Adjust to not use to_sections. Add
exec_bfd's sections to the current target sections table. Don't
push the exec_ops target here.
(resize_section_table): New.
(add_target_sections): New.
(remove_target_sections): Moved here.
(section_table_xfer_memory): Adjust to implement the xfer_partial
interface, and rename to...
(section_table_xfer_memory_partial): ... this, replacing the
current function of that same name.
(exec_get_section_table): New.
(exec_xfer_partial): New.
(xfer_memory): Delete.
(print_section_info): Replace the target_ops parameter by a
target_section_table parameter.
(exec_files_info, set_section_command, exec_set_section_address):
Adjust to use the current sections table.
(init_exec_ops): Do not register a deprecated_xfer_memory
callback. Register to_xfer_partial and to_get_section_table
callbacks.
* infrun.c (handle_inferior_event): Update comments around
solib_add.
* rs6000-nat.c (xcoff_relocate_core): Adjust to use
deprecated_core_resize_section_table.
* exec.h (resize_section_table): Declare.
(section_table_xfer_memory_partial): Add const char * argument.
(remove_target_sections): Declare here.
(add_target_sections): Declare.
(print_section_info): Declare here.
* gdbcore.h (deprecated_core_resize_section_table): Declare.
* expprint.c (dump_subexp_body_standard): Use internalvar_name
instead of accessing internalvar private elements.
* valops.c (value_assign): Copy from original source instead of
accessing internalvar private elements.
Ulrich Weigand [Wed, 3 Jun 2009 18:10:06 +0000 (18:10 +0000)]
* scm-lang.c (builtin_type_scm): Remove.
(scm_lookup_name): Add GDBARCH parameter. Use it instead of
objfile architecture. Use per-architecture builtin_scm_type instead
of builtin_type_scm.
(evaluate_exp): Pass expression architecture to scm_lookup_name.
(scm_get_field): Add SIZE parameter. Use it instead of
TYPE_LENGTH (builtin_type_scm).
(build_scm_types): New function.
(scm_type_data): New variable.
(builtin_scm_type): New function.
(_initialize_scheme_language): Do not initialize builtin_type_scm.
Register build_scm_types as post-init function for scm_type_data.
* scm-exp.c (scm_lreadr): Use per-architecture builtin_scm_type
instead of builtin_type_scm.
* scm-valprint.c (scm_inferior_print): Add TYPE parameter. Use it
instead of builtin_core_addr type; do not use objfile architecture.
(scm_scmlist_print): Add TYPE parameter. Use it to define SCM_SIZE.
Pass type to scm_scmval_print.
(scm_ipruk): Add TYPE parameter. Use it to define SCM_SIZE.
(scm_scmval_print): Make static. Add TYPE parameter. Use it to
define SCM_SIZE. Pass type to scm_ipruk and scm_scmlist_print.
(scm_val_print): Pass type to scm_inferior_print and scm_scmval_print.
(basic_type_data): New global variable.
(basic_type): New function.
(parse_type): Remove static basic type map map_bt. Call basic_type
to get basic types instead of using mdebug_type_ variables.
(parse_symbol): Use builtin types instead of mdebug_type_ variables.
(upgrade_type): Likewise.
(parse_procedure): Likewise.
(psymtab_to_symtab_1): Likewise.
(_initialize_mdebugread): Do not initialize mdebug_type_ variables.
Initialize basic_type_data.
H.J. Lu [Wed, 3 Jun 2009 12:35:18 +0000 (12:35 +0000)]
2009-06-03 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_allocate_dynrelocs): Allocate
GOT entry for STT_GNU_IFUNC symbol with pointer equality.
(elf_i386_relocate_section): Adjust R_386_GOT32 relocation
against STT_GNU_IFUNC symbols for static executables.
(elf_i386_finish_dynamic_symbol): Load GOT entry with
PLT entry for STT_GNU_IFUNC symbol with pointer equality.
* elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Allocate
GOT entry for STT_GNU_IFUNC symbol with pointer equality.
(elf64_x86_64_finish_dynamic_symbol): Load GOT entry with
PLT entry for STT_GNU_IFUNC symbol with pointer equality.
Doug Kwan [Wed, 3 Jun 2009 00:06:15 +0000 (00:06 +0000)]
2009-06-02 Doug Kwan <dougkwan@google.com>
* gold/arm.cc (Target_arm::Scan::Scan): Initialize
issued_non_pic_error_.
(class Target_arm::Scan): Declare new method check_non_pic.
Define new method symbol_needs_plt_entry.
Declare new data member issued_non_pic_error_.
(class Target_arm::Relocate): Declare new method
should_apply_static_reloc.
(Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
(Target_arm::Scan::check_non_pic): Define new method.
(Target_arm::Scan::local): Handle a small subset of reloc types used
by Android.
(Target_arm::Scan::local): Same.
(Target_arm::Relocate::should_apply_statci_reloc): Define new method.
bfd/
* coff-rs6000.c (xcoff_ppc_relocate_section): Allow undefined
symbols to be left unimported when linking statically.
* xcofflink.c (xcoff_link_add_symbols): Ignore global linkage
code when linking statically.
ld/testsuite/
* ld-powerpc/aix-glink-3.s, ld-powerpc/aix-glink-3a.s,
ld-powerpc/aix-glink-3b.s, ld-powerpc/aix-glink-3.dd,
ld-powerpc/aix-glink-3-32.d, ld-powerpc/aix-glink-3-64.d: New tests.
* ld-powerpc/aix52.exp: Run them. Move the lineno tests to maintain
alphabetical order.
H.J. Lu [Tue, 2 Jun 2009 17:31:42 +0000 (17:31 +0000)]
bfd/
2009-06-02 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_check_relocs): Increment
got.refcount for R_386_GOT32/R_386_GOTOFF relocations
against STT_GNU_IFUNC symbol.
(elf_i386_allocate_dynrelocs): Set got.refcount to 0 if
local STT_GNU_IFUNC definition is used.
(elf_i386_relocate_section): Handle got.offset != -1 for
R_386_GOT32/R_386_GOTOFF relocations against STT_GNU_IFUNC
symbol.
* elf64-x86-64.c (elf64_x86_64_check_relocs): Increment
got.refcount for R_X86_64_GOTPCREL/R_X86_64_GOTPCREL64
relocations against STT_GNU_IFUNC symbol.
(elf64_x86_64_allocate_dynrelocs): Set got.refcount to 0 if
local STT_GNU_IFUNC definition is used.
(elf64_x86_64_relocate_section): Handle got.offset != -1
for R_X86_64_GOTPCREL/R_X86_64_GOTPCREL64 relocations against
STT_GNU_IFUNC symbol.
ld/testsuite/
2009-06-02 H.J. Lu <hongjiu.lu@intel.com>
* ld-ifunc/ifunc-5-i386.d: Renamed to ...
* ld-ifunc/ifunc-5a-i386.d: This.
* ld-ifunc/ifunc-5-x86-64.d: Renamed to ...
* ld-ifunc/ifunc-5a-x86-64.d: This.
H.J. Lu [Mon, 1 Jun 2009 13:11:52 +0000 (13:11 +0000)]
bfd/
2009-06-01 H.J. Lu <hongjiu.lu@intel.com>
PR ld/10205
* elf32-i386.c (elf_howto_table): Add R_386_IRELATIVE.
(elf_i386_reloc_type_lookup): Likewise.
(R_386_tls): Removed.
(R_386_irelative): New.
(R_386_vt_offset): Updated.
(elf_i386_rtype_to_howto): Likewise.
(elf_i386_link_hash_table): Add igotplt, iplt and irelplt.
(elf_i386_link_hash_table_create): Initialize igotplt,
iplt and irelplt.
(elf_i386_check_relocs): Handle STT_GNU_IFUNC symbol first.
(elf_i386_adjust_dynamic_symbol): Likewise.
(elf_i386_allocate_dynrelocs): Likewise.
(elf_i386_relocate_section): Likewise.
(elf_i386_size_dynamic_sections): Set up .iplt and .igot.plt
sections.
(elf_i386_finish_dynamic_symbol): When building a static
executable, use .iplt, .igot.plt and .rel.iplt sections for
STT_GNU_IFUNC symbols. Generate R_386_IRELATIVE relocation for
locally defined STT_GNU_IFUNC symbol.
* elf64-x86-64.c (x86_64_elf_howto): Add R_X86_64_IRELATIVE.
(x86_64_reloc_map): Likewise.
(R_X86_64_standard): Updated.
(elf64_x86_64_link_hash_table): Add igotplt, iplt and irelplt.
(elf64_x86_64_link_hash_table_create): Initialize igotplt,
iplt and irelplt.
(elf64_x86_64_check_relocs): Handle STT_GNU_IFUNC symbol first.
(elf64_x86_64_adjust_dynamic_symbol): Likewise.
(elf64_x86_64_allocate_dynrelocs): Likewise.
(elf64_x86_64_relocate_section): Likewise.
(elf64_x86_64_size_dynamic_sections): Set up .iplt and .igot.plt
sections.
(elf64_x86_64_finish_dynamic_symbol): When building a static
executable, use .iplt, .igot.plt and .rela.iplt sections for
STT_GNU_IFUNC symbols. Generate R_X86_64_IRELATIVE relocation
for locally defined STT_GNU_IFUNC symbol.
* elflink.c (_bfd_elf_adjust_dynamic_symbol): Move STT_GNU_IFUNC
symbol check to ...
(elf_link_add_object_symbols): Here.
(_bfd_elf_link_hash_hide_symbol): Don't clean plt on
STT_GNU_IFUNC symbol.
(elf_link_output_extsym): Call elf_backend_finish_dynamic_symbol
if a STT_GNU_IFUNC symbol is referenced in a non-shared object.
(IFUNC_INFIX): Removed.
(get_ifunc_reloc_section_name): Likewise.
(_bfd_elf_make_ifunc_reloc_section): Likewise.
(_bfd_elf_is_ifunc_symbol): Likewise.
(_bfd_elf_create_static_ifunc_sections): New.
Pierre Muller [Sat, 30 May 2009 07:58:42 +0000 (07:58 +0000)]
* gdb.base/macscp.exp (info_macro): Return undefined if undefined.
(check_macro): Return 1 if undefined.
If first test fails, check if macro debug information is available,
and report unsupported test if no macro information is found.
Doug Kwan [Sat, 30 May 2009 00:55:42 +0000 (00:55 +0000)]
2009-05-29 Doug Kwan <dougkwan@google.com>
* gold/arm.cc (Output_data_plt_arm): Forward declaration for new
template class.
(class Target_arm): Update comment.
(Target_arm::Target_arm): Initialize new data members GOT_,
PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
and Target_arm::rel_dyn_section.
Declare new_enum Target_arm::Got_type.
Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
and DYNBSS_.
Update commments for member do_dynsym_value.
(Target_arm::got_size, Target_arm::plt_section,
Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
new methods inside class defintion.
(Target_arm::got_section): Define new method.
(Target_arm::rel_dyn_section): Same.
(Output_data_plt_arm): New template class.
(Output_data_plt_arm::Output_data_plt_arm): Define constructor.
(Output_data_plt_arm:do_adjust_output_section): Define new method.
(Output_data_plt_arm::add_entry): Same.
(Output_data_plt_arm::first_plt_entry): Define new
static data member for PLT instruction template.
(Output_data_plt_arm::plt_entry): Same.
(Output_data_plt_arm::do_write): Define new method.
(Target_arm::make_plt_entry): Same.
(Target_arm::do_finalize_sections): Same.
(Target_arm::do_dynsym_value): Same.
Doug Evans [Sat, 30 May 2009 00:19:13 +0000 (00:19 +0000)]
* infrun.c (prepare_to_proceed): Document. Assert !non_stop.
If scheduler-locking is enabled, we're not going to be singlestepping
any other previously stopped thread.
* gdb.threads/hand-call-in-threads.exp: New file.
* gdb.threads/hand-call-in-threads.c: New file.
Pedro Alves [Thu, 28 May 2009 17:19:58 +0000 (17:19 +0000)]
gdb/
2009-05-28 Pedro Alves <pedro@codesourcery.com>
* infrun.c (handle_inferior_event): When thread hoping, switch
inferior_ptid to the event thread before removing breakpoints from
the target. If not stopping, also try to revert back to a thread
that was doing a "next". Check if that thread still exists before
resuming.
(currently_stepping_thread): Delete and merge with ...
(currently_stepping): ... this.
(currently_stepping_callback): Rename to ...
(currently_stepping_or_nexting_callback): ... this, and also
return true if the thread was stepping over a call (has a
step-resume breakpoint).
gdb/testsuite/
2009-05-28 Pedro Alves <pedro@codesourcery.com>
Ulrich Weigand [Thu, 28 May 2009 10:47:44 +0000 (10:47 +0000)]
* elf32-spu.c (struct call_info): New member broken_cycle.
(remove_cycle): Instead of physically removing call_info structures
to break call graph cycles, mark them using the broken_cycle flag.
(mark_overlay_section): Respect broken_cycle flag.
(unmark_overlay_section): Likewise.
(collect_lib_sections): Likewise.
(collect_overlays): Likewise.
(sum_stack): Likewise.
Tom Tromey [Thu, 28 May 2009 01:05:14 +0000 (01:05 +0000)]
gdb
2009-05-27 Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
Phil Muldoon <pmuldoon@redhat.com>
Paul Pluzhnikov <ppluzhnikov@google.com>
Vladimir Prus <vladimir@codesourcery.com>
* python/python-value.c (value_object_to_value): New function.
* python/python-internal.h: Include frameobject.h.
(gdbpy_children_cst, gdbpy_to_string_cst, gdbpy_display_hint_cst):
Declare.
(value_object_to_value): Declare.
* printcmd.c (struct format_data) <raw>: New field.
(last_format): Default to 0.
(decode_format): Initialize val.raw. Handle /r flag.
(print_command_1): Initialize fmt.raw and opts.raw.
(output_command): Likewise.
(x_command): Fix initialization of fmt.format. Initialize
fmt.raw.
(display_command): Initialize fmt.raw.
(do_one_display): Set opts.raw.
* python/python.c (gdbpy_to_string_cst, gdbpy_children_cst,
gdbpy_display_hint_cst): New globals.
(_initialize_python): Initialize them. Set gdb.pretty_printers.
* cp-valprint.c: Include python.h.
(cp_print_value): Call apply_val_pretty_printer.
* python/python.h (apply_val_pretty_printer): Declare.
* stack.c (print_this_frame_argument_p): Remove.
(print_frame_args): Compute summary flag. Don't use
print_this_frame_argument_p.
* valprint.c: Include python.h.
(user_print_options): Initialize new fields.
(scalar_type_p): New function.
(val_print): Handle 'raw' and 'summary' modes. Call
apply_val_pretty_printer.
(value_print): Handle 'raw' mode.
* valprint.h (struct value_print_options) <raw, summary>: New
fields.
* Makefile.in (SUBDIR_PYTHON_OBS): Add python-prettyprint.o
(SUBDIR_PYTHON_SRCS): Add python-prettyprint.c.
(python-prettyprint.o): New target.
* python/python-prettyprint.c: New file.
gdb/doc
2009-05-27 Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
Phil Muldoon <pmuldoon@redhat.com>
2009-05-27 Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
Phil Muldoon <pmuldoon@redhat.com>
Paul Pluzhnikov <ppluzhnikov@google.com>
* gdb.python/python-prettyprint.exp: New file.
* gdb.python/python-prettyprint.c: New file.
* gdb.python/python-prettyprint.py: New file.
* gdb.base/display.exp: print/r is now valid.
Tom Tromey [Thu, 28 May 2009 00:47:20 +0000 (00:47 +0000)]
gdb
2009-05-27 Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
Phil Muldoon <pmuldoon@redhat.com>
Paul Pluzhnikov <ppluzhnikov@google.com>
2009-05-27 Thiago Jung Bauermann <bauerman@br.ibm.com>
Tom Tromey <tromey@redhat.com>
* gdb.texinfo (Types In Python): New node.
(Values From Inferior): "type" is now an attribute.
(Python API): Update.
gdb/testsuite
2009-05-27 Thiago Jung Bauermann <bauerman@br.ibm.com>
Tom Tromey <tromey@redhat.com>
Pedro Alves <pedro@codesourcery.com>
Paul Pluzhnikov <ppluzhnikov@google.com>
* gdb.python/python-template.exp: New file.
* gdb.python/python-template.cc: New file.
* gdb.python/python.exp (gdb_py_test_multiple): Add two objfile
tests.
* gdb.python/python-value.exp (py_objfile_tests): New proc.
Call it.
(test_value_after_death): New proc.
* gdb.python/python-value.c (PTR): New typedef.
(main): New variable 'x'.
Dave Korn [Wed, 27 May 2009 18:40:56 +0000 (18:40 +0000)]
ld/ChangeLog
* deffilep.y (%union): Add new string-type semantic value 'digits'.
(%token): Remove NUMBER as token, add DIGITS.
(%type): Add NUMBER as type. Add new id types anylang_id, opt_id.
(ALIGNCOMM): Parse an anylang_id instead of a plain ID.
(anylang_id): New production.
(opt_digits): Likewise.
(opt_id): Likewise.
(NUMBER): Likewise.
(def_lex): Return strings of digits in raw string form as DIGITS
token, instead of converting to numeric integer type.
ld/testsuite/ChangeLog
* ld-pe/non-c-lang-syms.c: New dump test source file.
* ld-pe/non-c-lang-syms.d: New dump test pattern file.
* ld-pe/pe.exp: Run new "foreign symbol" test.
Doug Kwan [Tue, 26 May 2009 22:52:56 +0000 (22:52 +0000)]
2009-05-26 Doug Kwan <dougkwan@google.com>
* options.cc (General_options::parse_exclude_libs). Fix a comment.
(General_options::check_excluded_libs): Strip off directories in
archive name before matching like GNU ld does.
* testsuite/Makefile.am (MOSTLYCLEANFILES,
exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
(exclude_libs_test_LDFLAGS): Add linker option
-Wl,--exclude-libs,libexclude_libs_test_3
(exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
an explicit archive without using -l.
(alt/libexclude_libs_test_3.a): New make rule.
* testsuite/Makefile.in: Regenerate.
* testsuite/exclude_libs_test.c : Declare lib3_default().
(main): Call it.
* exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
* exclude_libs_test_3.c: New file.