Alan Modra [Tue, 8 Apr 2008 03:26:54 +0000 (03:26 +0000)]
bfd/
* elf32-spu.c: Include libiberty.h.
(struct spu_link_hash_table): Add local_stire, overlay_fixed, reserved,
non_ovly_stub, spu_elf_load_ovl_mgr, spu_elf_open_overlay_script,
spu_elf_relink, auto_overlay fields.
(AUTO_OVERLAY, AUTO_RELINK, OVERLAY_RODATA): Define.
(needs_ovl_stub): Flip test so that call to non-function warning
is emitted during relocate_section rather than earlier.
(spu_elf_check_vma): Stash --auto-overlay parameters, and clear
auto_overlay if no section exceeds local store.
(struct call_info): Add count, max_depth, is_pasted fields.
(struct function_info): Add rodata, last_caller, call_count,
depth, new visit flags.
(insert_callee): Increment call count.
(copy_callee): New function.
(mark_functions_via_relocs): Investigate all reloc types to count
possible function pointer stubs for --auto-overlay. Track
last_caller and increment function call_count.
(pasted_function): Insert a "call" into call info for pasted section.
(remove_cycles): Track max depth of calls. Don't emit call graph
pruning warning for --auto-overlay.
(build_call_tree): Don't transfer_calls for --auto-overlay.
Adjust remove_cycles call.
(sort_calls, sort_lib, sort_bfds): New functions.
(struct _mos_param, struct _uos_param, struct _cl_param): New.
(mark_overlay_section, unmark_overlay_section): New functions.
(collect_lib_sectios, auto_ovl_lib_functions): New functions.
(collect_overlays, find_pasted_call): New functions.
(sum_stack): Deal with is_pasted "calls". Exit before printing
when --auto-overlay.
(spu_elf_auto_overlay): New function.
(spu_elf_final_link): Call spu_elf_auto_overlay.
* elf32-spu.h (spu_elf_check_vma): Update prototype.
ld/
* emultempl/spuelf.em (auto_overlay, auto_overlay_file,
auto_overlay_fixed, auto_overlay_reserved, my_argc, my_argv): New vars.
(spu_before_allocation): Warn on --auto-overlay and existing overlays.
(struct tflist, clean_tmp): Move.
(new_tmp_file): New function, extracted from..
(embedded_spu_file): ..here.
(spu_elf_open_overlay_script, spu_elf_relink): New function.
(gld${EMULATION_NAME}_finish): Pass a bunch of --auto-overlay params.
Warn on --auto-overlay and zero local store.
(gld${EMULATION_NAME}_choose_target): New function to stash argv.
(OPTION_SPU_AUTO_OVERLAY, OPTION_SPU_AUTO_RELINK,
OPTION_SPU_OVERLAY_RODATA, OPTION_SPU_FIXED_SPACE,
OPTION_SPU_RESERVED_SPACE, OPTION_SPU_NO_AUTO_OVERLAY): Define.
(PARSE_AND_LIST_LONGOPTS): Add entries for new options.
(PARSE_AND_LIST_OPTIONS): Likewise.
(PARSE_AND_LIST_ARGS_CASES): Likewise.
(LDEMUL_CHOOSE_TARGET): Define.
Alan Modra [Mon, 7 Apr 2008 23:56:18 +0000 (23:56 +0000)]
* dwarf2dbg.c (dwarf2_emit_insn): Simplify test before dwarf2_where
call. Delete out of date comment.
(dwarf2_consume_line_info): Always clear dwarf2_loc_directive_seen.
(dwarf2_emit_label): Don't emit unless there has been a previous
.file or we are outputting assembler generated debug.
dwarf2_consume_line_info after emitting line info, not before.
(out_debug_info): Simplify files_in_use test.
* output.cc (Output_reloc<SHT_REL>::local_section_offset): Add
addend parameter. Change caller. Handle merge sections.
(Output_reloc<SHT_REL>::symbol_value): Change parameter type from
Address to Addend. Don't add in the result of
local_section_offset, pass down the addend and use the returned
value.
* output.h (class Output_reloc<SHT_REL>): Add Addend typedef.
Update declarations of local_section_offset and symbol_value.
* testsuite/two_file_test_1.cc (t18): New function.
* testsuite/two_file_test_2.cc (f18): New function.
* testsuite/two_file_test_main.cc (main): Call t18.
* testsuite/two_file_test.h (t18, f18): Declare.
* configure.ac: Don't test for objdump, c++filt, or readelf.
* testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT
conditionals.
(TEST_READELF): New variable.
(TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.
(check_PROGRAMS): Add two_file_strip_test.
(two_file_strip_test): New target.
(check_PROGRAMS): Add two_file_same_shared_strip_test.
(two_file_same_shared_strip_test_SOURCES): New variable.
(two_file_same_shared_strip_test_DEPENDENCIES): New variable.
(two_file_same_shared_strip_test_LDFLAGS): New variable.
(two_file_same_shared_strip_test_LDADD): New variable.
(two_file_shared_strip.so): New target.
(ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.
(ver_test_5.syms, ver_test_7.syms): Likewise.
(ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.
(strip_test_3.stdout): Use TEST_OBJDUMP.
* configure, Makefile.in, testsuite/Makefile.in: Rebuild.
Alan Modra [Mon, 7 Apr 2008 13:07:23 +0000 (13:07 +0000)]
* elf32-spu.c (allocate_spuear_stubs): Ensure _SPUEAR_ symbol
is defined in overlay section before creating a stub.
(build_spuear_stubs): Likewise.
(spu_elf_size_stubs, spu_elf_build_stubs): Adjust calls.
Vladimir Prus [Sun, 6 Apr 2008 08:56:37 +0000 (08:56 +0000)]
Fix breakpoint condition that use member variables.
* valops.c (check_field): Remove.
(check_field_in): Rename to check_field.
(value_of_this): Use la_name_of_this.
* value.h (check_field): Adjust prototype.
* language.h (la_value_of_this): Rename to la_name_of_this.
* language.c (unknown_language_defn): Specify "this" for
name_of_this.
(auto_language_defn): Likewise.
(local_language_defn): Likewise.
* ada-lang.c (ada_language_defn): Adjust comment.
* c-lang.c (c_language_defn): Adjust comment.
(cplus_language_defn): Specify "this" for name_of_this.
(asm_language_defn): Adjust comment.
(minimal_language_defn): Adjust comment.
* f-lang.c (f_language_defn): Specify NULL for name_of_this.
* jv-lang.c (java_language_defn): Specify "this" for name_of_this.
* m2-lang.c (m2_language_defn): Specify "this" for name_of_this.
* objc-lang.c (objc_language_defn): Specify "self" for
name_of_this.
* p-lang.c (pascal_language_defn): Specify "this" for
name_of_this.
* scm-lang.c (scm_language_defn): Specify NULL for name_of_this.
* symtab.c (lookup_symbol_aux): Lookup "this" in the
proper scope, and check for field in type of "this", without
trying to create a value.
Pedro Alves [Fri, 4 Apr 2008 21:59:25 +0000 (21:59 +0000)]
gdb/
2008-04-04 Pedro Alves <pedro@codesourcery.com>
* mi/mi-cmds.h (enum mi_cmd_result): Delete MI_CMD_ERROR.
(mi_error_message): Delete declaration.
* mi/mi-interp.c (mi_cmd_interpreter_exec): Call error instead of
returning MI_CMD_ERROR.
* mi/mi-main.c (mi_error_message): Delete.
(mi_cmd_exec_interrupt):
(mi_cmd_thread_select, mi_cmd_thread_list_ids)
(mi_cmd_thread_info): Call error instead of returning
MI_CMD_ERROR.
(mi_cmd_data_list_register_values): Call error instead of
returning MI_CMD_ERROR. Adapt to new get_register interface.
(get_register): Change return typo to void. Call error instead of
returning MI_CMD_ERROR.
(mi_cmd_data_write_register_values): Call error instead of
returning MI_CMD_ERROR.
(mi_cmd_list_features): Return MI_CMD_DONE.
(captured_mi_execute_command): Remove MI_CMD_ERROR handling.
(mi_execute_command): Always print exceptions with -error.
gdb/testsuite/
2008-04-04 Pedro Alves <pedro@codesourcery.com>
* gdb.mi/mi-disassemble.exp, gdb.mi/mi-stack.exp,
gdb.mi/mi-syn-frame.exp, gdb.mi/mi-var-block.exp,
gdb.mi/mi-var-cmd.exp, gdb.mi/mi-var-display.exp,
gdb.mi/mi2-disassemble.exp, gdb.mi/mi2-stack.exp,
gdb.mi/mi2-syn-frame.exp, gdb.mi/mi2-var-block.exp,
gdb.mi/mi2-var-cmd.exp, gdb.mi/mi2-var-display.exp: Update to not
expect an mi error duplicated in stderr.
Joel Brobecker [Thu, 3 Apr 2008 21:51:12 +0000 (21:51 +0000)]
* gdb.texinfo (Breakpoint Menus): Delete. Contents moved inside
new node "Ambiguous Expressions". Replace references to this
node by references to "Ambiguous Expressions" throughout.
(Ambiguous Expressions): New node.
Joel Brobecker [Thu, 3 Apr 2008 21:42:33 +0000 (21:42 +0000)]
* gdb.cp/ovldbreak.cc: Add missing bodies for methods foo::foofunc.
* gdb.cp/ovldbreak.exp: Set multiple-symbols to "ask".
Add a couple of tests that verify the behavior when the new setting
is set to "cancel" and "all".
* gdb.cp/method2.exp, gdb.cp/templates.exp: Set multiple-symbols to
"ask" before we start the testing.
* fileread.cc (File_read::find_view): Add byteshift and vshifted
parameters. Update for new key type to views_. Change all
callers.
(File_read::read): Adjust for byteshift in returned view.
(File_read::add_view): New function, broken out of
find_and_make_view.
(File_read::make_view): New function, broken out of
find_and_make_view.
(File_read::find_or_make_view): Add offset and aligned
parameters. Rewrite accordingly. Change all callers.
(File_read::get_view): Add offset and aligned parameters. Adjust
for byteshift in return value.
(File_read::get_lasting_view): Likewise.
* fileread.h (class File_read): Update declarations.
(class File_read::View): Add byteshift_ field. Add byteshift to
constructor. Add byteshift method.
* archive.h (Archive::clear_uncached_views): New function.
(Archive::get_view): Add aligned parameter. Change all callers.
* object.h (Object::get_view): Add aligned parameter. Change all
callers.
(Object::get_lasting_view): Likewise.
* fileread.cc (File_read::release): Don't call clear_views if
there are multiple objects.
* fileread.h (File_read::clear_uncached_views): New function.
* archive.cc (Add_archive_symbols::run): Call clear_uncached_views
on the archive.
Alan Modra [Tue, 1 Apr 2008 23:52:00 +0000 (23:52 +0000)]
* elf32-spu.c (insert_callee): Reorder call list so most recent
call is always first.
(interesting_section): Move.
(mark_functions_via_relocs): Fold interesting_section and
reloc_count tests in callers to here. Simplify output section
owner test.
(discover_functions): Set "gaps" when no symbols and some
"interesting_section". Run pasted_function loop for no symbol
bfds.
(for_each_node, transfer_calls): New functions.
(mark_non_root): Adjust to suit for_each_node.
(call_graph_traverse): Likewise. Fix memory leak. Rename to..
(remove_cycles): ..this.
(build_call_tree): Use for_each_node and transfer_calls.
(struct _sum_stack_param): New.
(sum_stack): Adjust to suit for_each_node. Return error on
malloc failure. Move code to print root node cumulative stack from..
(spu_elf_stack_analysis): ..here. Use for_each_node.
Add thin archive support.
* archive.cc (Archive::armagt): New const.
(Archive::setup): Remove task parameter and calls to unlock.
(Archive::unlock_nested_archives): New function.
(Archive::read_header): Add nested_off parameter. Change
all callers.
(Archive::interpret_header): Likewise.
(Archive::include_all_members): Change to handle thin
archives.
(Archive::include_member): Likewise.
* archive.h (Archive::Archive): Add new parameters and
initializers.
(Archive::armagt): New const.
(Archive::setup): Remove task parameter.
(Archive::unlock_nested_archives): New function.
(Archive::read_header): Add nested_off parameter.
(Archive::interpret_header): Likewise.
(Archive::Nested_archive_table): New typedef.
(Archive::is_thin_archive_): New field.
(Archive::nested_archives_): New field.
(Archive::options_): New field.
(Archive::dirpath_): New field.
(Archive::task_): New field.
* readsyms.cc (Read_symbols::do_read_symbols): Add check
for thin archives. Pass additional parameters to
Archive::Archive. Unlock the archive file after calling
Archive::setup.
* valops.c (value_cast_structs): New function. Cast related
STRUCT types up/down and return cast value. The body of this
function comes mostly from value_cast_pointers.
(value_cast_pointers): Code for actual cast STRUCT-STRUCT moved
to value_cast_structs. Now value_cast_pointers needs only create
appropriate reference after using value_cast_structs for actual
casting.
(value_cast): Handle references.
Ian Lance Taylor [Sat, 29 Mar 2008 08:39:26 +0000 (08:39 +0000)]
* symtab.cc (Symbol_table::do_define_as_constant): Don't force a
version symbol to be local.
* testsuite/ver_test_4.sh: New file.
* testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.
(check_DATA): Add ver_test_4.syms.
(ver_test_4.syms): New target.
* testsuite/Makefile.in: Rebuild.
Ian Lance Taylor [Sat, 29 Mar 2008 08:09:55 +0000 (08:09 +0000)]
* output.cc
(Output_section::Input_section_sort_entry::has_priority): New
function.
(Output_section::Input_section_sort_entry::match_file_name): New
function.
(Output_section::Input_section_sort_entry::match_section_name):
Remove.
(Output_section::Input_section_sort_entry::match_section_name_prefix):
Remove.
(Output_section::Input_section_sort_entry::match_section_file):
Remove.
(Output_section::Input_section_sort_compare::operator()): Rewrite
using new Input_section_sort_entry functions. Sort crtbegin and
crtend first. Sort sections with no priority before sections with
a priority.
* testsuite/initpri1.c (d3): Check j != 4.
(cd5): New constructor/destructor function.
(main): Check j != 2.
Ian Lance Taylor [Sat, 29 Mar 2008 07:19:02 +0000 (07:19 +0000)]
* symtab.cc (Symbol_table::add_from_object): If we don't use the
new symbol when resolving, don't call set_is_default.
* testsuite/ver_test_7.cc: New file.
* testsuite/ver_test_7.sh: New file.
* testsuite/Makefile.am (ver_test_7.so): New target.
(ver_test_7.o): New target.
(check_SCRIPTS): Add ver_test_7.sh.
(check_DATA): Add ver_test_7.syms.
(ver_test_7.syms): New target.
Ian Lance Taylor [Fri, 28 Mar 2008 22:42:34 +0000 (22:42 +0000)]
* layout.cc (Layout::layout): If we see an input section with a
name that needs sorting, set the must_sort flag for the output
section.
(Layout::make_output_section): If the name of the output section
indicates that it might require sorting, set the may_sort flag.
* output.h (Output_section::may_sort_attached_input_sections): New
function.
(Output_section::set_may_sort_attached_input_sections): New
function.
(Output_section::must_sort_attached_input_sections): New
function.
(Output_section::set_must_sort_attached_input_sections): New
function.
(class Output_section): Declare Input_section_sort_entry. Define
Input_section_sort_compare. Declare
sort_attached_input_sections. Add new fields:
may_sort_attached_input_sections_,
must_sort_attached_input_sections_,
attached_input_sections_are_sorted_.
* output.cc (Output_section::Output_section): Initialize new
fields.
(Output_section::add_input_section): Add an entry to
input_sections_ if may_sort or must_sort are true.
(Output_section::set_final_data_size): Call
sort_attached_input_sections if necessary.
(Output_section::Input_section_sort_entry): Define new class.
(Output_section::Input_section_sort_compare::operator()): New
function.
(Output_section::sort_attached_input_sections): New function.
* configure.ac: Check whether the compiler supports constructor
priorities. Define a CONSTRUCTOR_PRIORITY automake conditional.
* testsuite/initpri1.c: New file.
* testsuite/Makefile.am (check_PROGRAMS): Add initpri1 if
CONSTRUCTOR_PRIORITY.
(initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.
(initpri1_LDFLAGS): New variable.
* configure, Makefile.in, testsuite/Makefile.in: Rebuild.
Pedro Alves [Fri, 28 Mar 2008 16:37:08 +0000 (16:37 +0000)]
* target.c (find_default_run_target): Allow a NULL `do_mesg'
parameter. If it is NULL, don't call error.
(find_default_can_async_p, find_default_is_async_p): Pass NULL as
`do_mesg' parameter to find_default_run_target. If no target was
found, return 0.
* mips-linux-tdep.c: Update N32/N64 signal frame comments.
(N64_SIGCONTEXT_LO, N64_SIGCONTEXT_PC, N64_SIGCONTEXT_FPCSR): Update.
(N64_SIGCONTEXT_FIR, N64_SIGCONTEXT_CAUSE, N64_SIGCONTEXT_BADVADDR):
Delete.
(mips_linux_n32n64_sigframe_init): Do not record cause or badvaddr.
Nick Clifton [Fri, 28 Mar 2008 06:49:44 +0000 (06:49 +0000)]
Add support for thin archives.
* bfd/archive.c (_bfd_find_nested_archive): New function.
(get_extended_arelt_filename): Add origin parameter.
(_bfd_generic_read_ar_hdr_mag): Deal with extended name
combined with a file offset.
(append_relative_path): New function.
(_bfd_get_elt_at_filepos): Deal with external members and
nested archives.
(bfd_generic_openr_next_archived_file): Thin archives.
(bfd_generic_archive_p): Recognize new magic string.
(adjust_relative_path): New function.
(_bfd_construct_extended_name_table): Construct extended
names for thin archive members.
(_bfd_write_archive_contents): Emit new magic string, skip
copying files for thin archives.
* bfd/bfd-in.h (bfd_is_thin_archive): New macro.
* bfd/bfd.c (struct bfd): New fields for thin archives.
* bfd/libbfd-in.h (struct areltdata): New field for thin archives.
* bfd/opncls.c (bfd_close): Delete BFDs for nested archives.
* binutils/ar.c (make_thin_archive): New global flag.
(map_over_members): Deal with full pathnames in thin archives.
(usage, main): Add 'T' option for building thin archives.
(replace_members): Pass thin archive flag to ar_emul_append.
* binutils/arsup.c (ar_open): Initialize new flag.
* binutils/binemul.c (ar_emul_append): Add new parameter for
flattening nested archives.
(do_ar_emul_default_append): New function.
(ar_emul_default_append): Factored out recursive code.
* binutils/binemul.h (ar_emul_default_append): Add new parameter.
(struct bin_emulation_xfer_struct): New parameter for ar_append.
* binutils/dlltool.c (gen_lib_file): Initialize thin archive flag.
* binutils/emul_aix.c (ar_emul_aix_internal): Add new flatten
parameter, currently unimplemented.
All callers changed.
* binutils/objcopy.c (copy_archive): Preserve thin archive flag.
* binutils/doc/binutils.texi: Update ar documentation.
* binutils/testsuite/binutils-all/ar.exp: Add thin archive tests.
* include/aout/ar.h (ARMAGT): New magic string for thin archives.