From 54f1b3cf509cd889905287cb8ce6c5ae33911a21 Mon Sep 17 00:00:00 2001 From: Andrew Hsieh Date: Fri, 13 Jun 2014 12:38:00 -0700 Subject: Add upstream binutils-2.25 snapshot 4/4 2014 For MIPS -mmsa support Change-Id: I08c4f002fa7b33dec85ed75956e6ab551bb03c96 --- binutils-2.25/gold/testsuite/Makefile.am | 2901 ++++++++++ binutils-2.25/gold/testsuite/Makefile.in | 5892 ++++++++++++++++++++ binutils-2.25/gold/testsuite/arm_abs_global.s | 31 + binutils-2.25/gold/testsuite/arm_abs_global.sh | 57 + binutils-2.25/gold/testsuite/arm_abs_lib.s | 37 + binutils-2.25/gold/testsuite/arm_attr_merge.sh | 44 + binutils-2.25/gold/testsuite/arm_attr_merge_6a.s | 4 + binutils-2.25/gold/testsuite/arm_attr_merge_6b.s | 3 + binutils-2.25/gold/testsuite/arm_attr_merge_7a.s | 4 + binutils-2.25/gold/testsuite/arm_attr_merge_7b.s | 4 + binutils-2.25/gold/testsuite/arm_bl_in_range.s | 45 + binutils-2.25/gold/testsuite/arm_bl_out_of_range.s | 46 + .../gold/testsuite/arm_branch_in_range.sh | 73 + .../gold/testsuite/arm_branch_out_of_range.sh | 123 + binutils-2.25/gold/testsuite/arm_branch_range.t | 36 + binutils-2.25/gold/testsuite/arm_cortex_a8.sh | 65 + binutils-2.25/gold/testsuite/arm_cortex_a8_b.s | 30 + .../gold/testsuite/arm_cortex_a8_b_cond.s | 30 + .../gold/testsuite/arm_cortex_a8_b_local.s | 52 + binutils-2.25/gold/testsuite/arm_cortex_a8_bl.s | 30 + binutils-2.25/gold/testsuite/arm_cortex_a8_blx.s | 33 + binutils-2.25/gold/testsuite/arm_cortex_a8_local.s | 29 + .../gold/testsuite/arm_cortex_a8_local_reloc.s | 31 + binutils-2.25/gold/testsuite/arm_exidx_test.s | 31 + binutils-2.25/gold/testsuite/arm_exidx_test.sh | 60 + binutils-2.25/gold/testsuite/arm_farcall_arm_arm.s | 20 + .../gold/testsuite/arm_farcall_arm_arm.sh | 44 + .../gold/testsuite/arm_farcall_arm_thumb.s | 20 + .../gold/testsuite/arm_farcall_arm_thumb.sh | 50 + .../gold/testsuite/arm_farcall_thumb_arm.s | 27 + .../gold/testsuite/arm_farcall_thumb_arm.sh | 56 + .../gold/testsuite/arm_farcall_thumb_thumb.s | 19 + .../gold/testsuite/arm_farcall_thumb_thumb.sh | 74 + binutils-2.25/gold/testsuite/arm_fix_1176.s | 15 + binutils-2.25/gold/testsuite/arm_fix_1176.sh | 61 + binutils-2.25/gold/testsuite/arm_fix_v4bx.s | 15 + binutils-2.25/gold/testsuite/arm_fix_v4bx.sh | 56 + binutils-2.25/gold/testsuite/arm_thm_jump11.s | 57 + binutils-2.25/gold/testsuite/arm_thm_jump11.t | 36 + binutils-2.25/gold/testsuite/arm_thm_jump8.s | 57 + binutils-2.25/gold/testsuite/arm_thm_jump8.t | 36 + binutils-2.25/gold/testsuite/arm_unaligned_reloc.s | 44 + .../gold/testsuite/arm_unaligned_reloc.sh | 57 + binutils-2.25/gold/testsuite/basic_test.cc | 318 ++ binutils-2.25/gold/testsuite/binary.in | 1 + binutils-2.25/gold/testsuite/binary_test.cc | 46 + binutils-2.25/gold/testsuite/binary_unittest.cc | 184 + binutils-2.25/gold/testsuite/common_test_1.c | 75 + binutils-2.25/gold/testsuite/common_test_1_v1.c | 79 + binutils-2.25/gold/testsuite/common_test_1_v2.c | 77 + binutils-2.25/gold/testsuite/common_test_2.c | 33 + binutils-2.25/gold/testsuite/common_test_3.c | 32 + binutils-2.25/gold/testsuite/constructor_test.cc | 90 + binutils-2.25/gold/testsuite/copy_test.cc | 43 + binutils-2.25/gold/testsuite/copy_test_1.cc | 23 + binutils-2.25/gold/testsuite/copy_test_2.cc | 23 + binutils-2.25/gold/testsuite/copy_test_v1.cc | 47 + binutils-2.25/gold/testsuite/debug_msg.cc | 96 + binutils-2.25/gold/testsuite/debug_msg.sh | 145 + .../testsuite/discard_locals_relocatable_test.c | 52 + binutils-2.25/gold/testsuite/discard_locals_test.c | 40 + .../gold/testsuite/discard_locals_test.sh | 63 + binutils-2.25/gold/testsuite/dwp_test.h | 87 + binutils-2.25/gold/testsuite/dwp_test_1.cc | 210 + binutils-2.25/gold/testsuite/dwp_test_1.s | 2660 +++++++++ binutils-2.25/gold/testsuite/dwp_test_1.sh | 63 + binutils-2.25/gold/testsuite/dwp_test_1b.cc | 35 + binutils-2.25/gold/testsuite/dwp_test_1b.s | 549 ++ binutils-2.25/gold/testsuite/dwp_test_2.cc | 144 + binutils-2.25/gold/testsuite/dwp_test_2.s | 1714 ++++++ binutils-2.25/gold/testsuite/dwp_test_2.sh | 63 + binutils-2.25/gold/testsuite/dwp_test_main.cc | 59 + binutils-2.25/gold/testsuite/dwp_test_main.s | 1399 +++++ binutils-2.25/gold/testsuite/dyn_weak_ref.sh | 42 + binutils-2.25/gold/testsuite/dyn_weak_ref_1.c | 39 + binutils-2.25/gold/testsuite/dyn_weak_ref_2.c | 32 + binutils-2.25/gold/testsuite/dynamic_list.sh | 50 + binutils-2.25/gold/testsuite/dynamic_list.t | 11 + binutils-2.25/gold/testsuite/exception_test.h | 27 + binutils-2.25/gold/testsuite/exception_test_1.cc | 52 + binutils-2.25/gold/testsuite/exception_test_2.cc | 31 + .../gold/testsuite/exception_test_main.cc | 35 + binutils-2.25/gold/testsuite/exclude_libs_test.c | 14 + binutils-2.25/gold/testsuite/exclude_libs_test.sh | 63 + binutils-2.25/gold/testsuite/exclude_libs_test_1.c | 32 + binutils-2.25/gold/testsuite/exclude_libs_test_2.c | 24 + binutils-2.25/gold/testsuite/exclude_libs_test_3.c | 24 + binutils-2.25/gold/testsuite/final_layout.cc | 48 + binutils-2.25/gold/testsuite/final_layout.sh | 61 + binutils-2.25/gold/testsuite/gc_comdat_test.sh | 42 + binutils-2.25/gold/testsuite/gc_comdat_test_1.cc | 42 + binutils-2.25/gold/testsuite/gc_comdat_test_2.cc | 35 + .../gold/testsuite/gc_orphan_section_test.cc | 36 + .../gold/testsuite/gc_orphan_section_test.sh | 46 + binutils-2.25/gold/testsuite/gc_tls_test.cc | 32 + binutils-2.25/gold/testsuite/gc_tls_test.sh | 39 + binutils-2.25/gold/testsuite/gdb_index_test.cc | 149 + binutils-2.25/gold/testsuite/gdb_index_test_1.sh | 25 + binutils-2.25/gold/testsuite/gdb_index_test_2.sh | 25 + binutils-2.25/gold/testsuite/gdb_index_test_3.c | 39 + binutils-2.25/gold/testsuite/gdb_index_test_3.sh | 49 + binutils-2.25/gold/testsuite/gdb_index_test_4.sh | 25 + .../gold/testsuite/gdb_index_test_comm.sh | 85 + binutils-2.25/gold/testsuite/hidden_test.sh | 66 + binutils-2.25/gold/testsuite/hidden_test_1.c | 41 + binutils-2.25/gold/testsuite/hidden_test_main.c | 61 + .../gold/testsuite/icf_keep_unique_test.cc | 39 + .../gold/testsuite/icf_keep_unique_test.sh | 39 + .../testsuite/icf_preemptible_functions_test.cc | 47 + .../testsuite/icf_preemptible_functions_test.sh | 37 + binutils-2.25/gold/testsuite/icf_safe_so_test.cc | 74 + binutils-2.25/gold/testsuite/icf_safe_so_test.sh | 102 + binutils-2.25/gold/testsuite/icf_safe_test.cc | 63 + binutils-2.25/gold/testsuite/icf_safe_test.sh | 73 + .../gold/testsuite/icf_sht_rel_addend_test.sh | 37 + .../gold/testsuite/icf_sht_rel_addend_test_1.cc | 44 + .../gold/testsuite/icf_sht_rel_addend_test_2.cc | 39 + .../gold/testsuite/icf_string_merge_test.cc | 50 + .../gold/testsuite/icf_string_merge_test.sh | 39 + binutils-2.25/gold/testsuite/icf_test.cc | 51 + binutils-2.25/gold/testsuite/icf_test.sh | 46 + .../testsuite/icf_virtual_function_folding_test.cc | 71 + binutils-2.25/gold/testsuite/ifunc-sel.h | 92 + binutils-2.25/gold/testsuite/ifuncdep2.c | 50 + binutils-2.25/gold/testsuite/ifuncmain1.c | 64 + binutils-2.25/gold/testsuite/ifuncmain1vis.c | 89 + binutils-2.25/gold/testsuite/ifuncmain2.c | 14 + binutils-2.25/gold/testsuite/ifuncmain3.c | 133 + binutils-2.25/gold/testsuite/ifuncmain4.c | 4 + binutils-2.25/gold/testsuite/ifuncmain5.c | 41 + binutils-2.25/gold/testsuite/ifuncmain6pie.c | 64 + binutils-2.25/gold/testsuite/ifuncmain7.c | 74 + binutils-2.25/gold/testsuite/ifuncmod1.c | 95 + binutils-2.25/gold/testsuite/ifuncmod3.c | 7 + binutils-2.25/gold/testsuite/ifuncmod5.c | 55 + binutils-2.25/gold/testsuite/ifuncmod6.c | 22 + binutils-2.25/gold/testsuite/ifuncvar1.c | 20 + binutils-2.25/gold/testsuite/ifuncvar2.c | 12 + binutils-2.25/gold/testsuite/ifuncvar3.c | 14 + binutils-2.25/gold/testsuite/incr_comdat_test_1.cc | 68 + .../gold/testsuite/incr_comdat_test_2_v1.cc | 44 + .../gold/testsuite/incr_comdat_test_2_v2.cc | 44 + .../gold/testsuite/incr_comdat_test_2_v3.cc | 44 + binutils-2.25/gold/testsuite/incremental_test.sh | 89 + binutils-2.25/gold/testsuite/incremental_test_1.c | 28 + binutils-2.25/gold/testsuite/incremental_test_2.c | 29 + binutils-2.25/gold/testsuite/initpri1.c | 105 + binutils-2.25/gold/testsuite/initpri2.c | 118 + binutils-2.25/gold/testsuite/initpri3.c | 80 + binutils-2.25/gold/testsuite/justsyms.t | 31 + binutils-2.25/gold/testsuite/justsyms_1.cc | 54 + binutils-2.25/gold/testsuite/justsyms_2.cc | 27 + binutils-2.25/gold/testsuite/justsyms_exec.c | 56 + binutils-2.25/gold/testsuite/justsyms_lib.c | 35 + binutils-2.25/gold/testsuite/large.c | 59 + .../gold/testsuite/large_symbol_alignment.cc | 49 + binutils-2.25/gold/testsuite/leb128_unittest.cc | 88 + binutils-2.25/gold/testsuite/many_sections_test.cc | 51 + binutils-2.25/gold/testsuite/memory_test.s | 14 + binutils-2.25/gold/testsuite/memory_test.sh | 57 + binutils-2.25/gold/testsuite/memory_test.t | 26 + .../gold/testsuite/merge_string_literals.sh | 41 + .../gold/testsuite/merge_string_literals_1.cc | 31 + .../gold/testsuite/merge_string_literals_2.cc | 31 + binutils-2.25/gold/testsuite/missing_key_func.cc | 46 + binutils-2.25/gold/testsuite/missing_key_func.sh | 58 + binutils-2.25/gold/testsuite/no_version_test.c | 32 + binutils-2.25/gold/testsuite/no_version_test.sh | 45 + binutils-2.25/gold/testsuite/object_unittest.cc | 105 + binutils-2.25/gold/testsuite/odr_header1.h | 6 + binutils-2.25/gold/testsuite/odr_header2.h | 4 + binutils-2.25/gold/testsuite/odr_violation1.cc | 23 + binutils-2.25/gold/testsuite/odr_violation2.cc | 34 + .../gold/testsuite/plugin_common_test_1.c | 48 + .../gold/testsuite/plugin_common_test_2.c | 45 + .../gold/testsuite/plugin_final_layout.cc | 47 + .../gold/testsuite/plugin_final_layout.sh | 90 + .../gold/testsuite/plugin_section_order.c | 188 + binutils-2.25/gold/testsuite/plugin_test.c | 600 ++ binutils-2.25/gold/testsuite/plugin_test_1.sh | 59 + binutils-2.25/gold/testsuite/plugin_test_2.sh | 56 + binutils-2.25/gold/testsuite/plugin_test_3.sh | 59 + binutils-2.25/gold/testsuite/plugin_test_4.sh | 58 + binutils-2.25/gold/testsuite/plugin_test_6.sh | 58 + binutils-2.25/gold/testsuite/plugin_test_7.sh | 56 + binutils-2.25/gold/testsuite/plugin_test_7_1.c | 43 + binutils-2.25/gold/testsuite/plugin_test_7_2.c | 33 + binutils-2.25/gold/testsuite/plugin_test_tls.sh | 60 + binutils-2.25/gold/testsuite/pr12826.sh | 44 + binutils-2.25/gold/testsuite/pr12826_1.s | 13 + binutils-2.25/gold/testsuite/pr12826_2.s | 13 + binutils-2.25/gold/testsuite/pr14265.c | 20 + binutils-2.25/gold/testsuite/pr14265.sh | 40 + binutils-2.25/gold/testsuite/pr14265.t | 25 + binutils-2.25/gold/testsuite/protected_1.cc | 58 + binutils-2.25/gold/testsuite/protected_2.cc | 31 + binutils-2.25/gold/testsuite/protected_3.cc | 33 + binutils-2.25/gold/testsuite/protected_4.cc | 32 + binutils-2.25/gold/testsuite/protected_main_1.cc | 40 + binutils-2.25/gold/testsuite/protected_main_2.cc | 29 + binutils-2.25/gold/testsuite/protected_main_3.cc | 31 + binutils-2.25/gold/testsuite/relro_script_test.t | 54 + binutils-2.25/gold/testsuite/relro_test.cc | 160 + binutils-2.25/gold/testsuite/relro_test.sh | 74 + binutils-2.25/gold/testsuite/relro_test_main.cc | 33 + .../gold/testsuite/retain_symbols_file_test.sh | 54 + binutils-2.25/gold/testsuite/script_test_1.cc | 47 + binutils-2.25/gold/testsuite/script_test_1.t | 29 + binutils-2.25/gold/testsuite/script_test_10.s | 14 + binutils-2.25/gold/testsuite/script_test_10.sh | 46 + binutils-2.25/gold/testsuite/script_test_10.t | 34 + binutils-2.25/gold/testsuite/script_test_11.c | 16 + binutils-2.25/gold/testsuite/script_test_11.t | 8 + binutils-2.25/gold/testsuite/script_test_2.cc | 74 + binutils-2.25/gold/testsuite/script_test_2.t | 69 + binutils-2.25/gold/testsuite/script_test_2a.cc | 24 + binutils-2.25/gold/testsuite/script_test_2b.cc | 24 + binutils-2.25/gold/testsuite/script_test_3.sh | 102 + binutils-2.25/gold/testsuite/script_test_3.t | 55 + binutils-2.25/gold/testsuite/script_test_4.sh | 41 + binutils-2.25/gold/testsuite/script_test_4.t | 45 + binutils-2.25/gold/testsuite/script_test_5.cc | 45 + binutils-2.25/gold/testsuite/script_test_5.sh | 43 + binutils-2.25/gold/testsuite/script_test_5.t | 44 + binutils-2.25/gold/testsuite/script_test_6.sh | 43 + binutils-2.25/gold/testsuite/script_test_6.t | 45 + binutils-2.25/gold/testsuite/script_test_7.sh | 43 + binutils-2.25/gold/testsuite/script_test_7.t | 45 + binutils-2.25/gold/testsuite/script_test_8.sh | 44 + binutils-2.25/gold/testsuite/script_test_9.cc | 29 + binutils-2.25/gold/testsuite/script_test_9.sh | 42 + binutils-2.25/gold/testsuite/script_test_9.t | 28 + binutils-2.25/gold/testsuite/searched_file_test.cc | 36 + .../gold/testsuite/searched_file_test_lib.cc | 27 + .../gold/testsuite/section_sorting_name.cc | 59 + .../gold/testsuite/section_sorting_name.sh | 66 + binutils-2.25/gold/testsuite/split_i386.sh | 54 + binutils-2.25/gold/testsuite/split_i386_1.s | 33 + binutils-2.25/gold/testsuite/split_i386_2.s | 33 + binutils-2.25/gold/testsuite/split_i386_3.s | 22 + binutils-2.25/gold/testsuite/split_i386_4.s | 23 + binutils-2.25/gold/testsuite/split_i386_n.s | 12 + binutils-2.25/gold/testsuite/split_x86_64.sh | 54 + binutils-2.25/gold/testsuite/split_x86_64_1.s | 33 + binutils-2.25/gold/testsuite/split_x86_64_2.s | 33 + binutils-2.25/gold/testsuite/split_x86_64_3.s | 22 + binutils-2.25/gold/testsuite/split_x86_64_4.s | 23 + binutils-2.25/gold/testsuite/split_x86_64_n.s | 12 + binutils-2.25/gold/testsuite/start_lib_test_1.c | 32 + binutils-2.25/gold/testsuite/start_lib_test_2.c | 30 + binutils-2.25/gold/testsuite/start_lib_test_3.c | 25 + binutils-2.25/gold/testsuite/start_lib_test_main.c | 33 + .../gold/testsuite/strong_ref_weak_def.sh | 42 + .../gold/testsuite/strong_ref_weak_def_1.c | 39 + .../gold/testsuite/strong_ref_weak_def_2.c | 37 + binutils-2.25/gold/testsuite/test.cc | 107 + binutils-2.25/gold/testsuite/test.h | 145 + binutils-2.25/gold/testsuite/testfile.cc | 949 ++++ binutils-2.25/gold/testsuite/testfile.h | 49 + binutils-2.25/gold/testsuite/testmain.cc | 40 + .../gold/testsuite/text_section_grouping.cc | 72 + .../gold/testsuite/text_section_grouping.sh | 73 + binutils-2.25/gold/testsuite/thin_archive_main.cc | 39 + .../gold/testsuite/thin_archive_test_1.cc | 37 + .../gold/testsuite/thin_archive_test_2.cc | 37 + .../gold/testsuite/thin_archive_test_3.cc | 37 + .../gold/testsuite/thin_archive_test_4.cc | 35 + binutils-2.25/gold/testsuite/thumb2_branch_range.t | 36 + binutils-2.25/gold/testsuite/thumb_bl_in_range.s | 56 + .../gold/testsuite/thumb_bl_out_of_range.s | 62 + .../gold/testsuite/thumb_bl_out_of_range_local.s | 61 + binutils-2.25/gold/testsuite/thumb_blx_in_range.s | 64 + .../gold/testsuite/thumb_blx_out_of_range.s | 66 + binutils-2.25/gold/testsuite/thumb_branch_range.t | 36 + binutils-2.25/gold/testsuite/tls_test.cc | 224 + binutils-2.25/gold/testsuite/tls_test.h | 56 + binutils-2.25/gold/testsuite/tls_test_c.c | 65 + binutils-2.25/gold/testsuite/tls_test_file2.cc | 30 + binutils-2.25/gold/testsuite/tls_test_main.cc | 173 + binutils-2.25/gold/testsuite/two_file_shared.sh | 30 + binutils-2.25/gold/testsuite/two_file_test.h | 78 + binutils-2.25/gold/testsuite/two_file_test_1.cc | 238 + binutils-2.25/gold/testsuite/two_file_test_1_v1.cc | 236 + binutils-2.25/gold/testsuite/two_file_test_1b.cc | 41 + .../gold/testsuite/two_file_test_1b_v1.cc | 46 + binutils-2.25/gold/testsuite/two_file_test_2.cc | 145 + .../gold/testsuite/two_file_test_2_tls.cc | 147 + binutils-2.25/gold/testsuite/two_file_test_2_v1.cc | 150 + binutils-2.25/gold/testsuite/two_file_test_main.cc | 57 + binutils-2.25/gold/testsuite/two_file_test_tls.cc | 60 + binutils-2.25/gold/testsuite/undef_symbol.cc | 40 + binutils-2.25/gold/testsuite/undef_symbol.sh | 45 + binutils-2.25/gold/testsuite/undef_symbol_main.cc | 29 + binutils-2.25/gold/testsuite/ver_matching_def.cc | 73 + binutils-2.25/gold/testsuite/ver_matching_test.sh | 88 + binutils-2.25/gold/testsuite/ver_test.h | 43 + binutils-2.25/gold/testsuite/ver_test_1.cc | 33 + binutils-2.25/gold/testsuite/ver_test_1.sh | 30 + binutils-2.25/gold/testsuite/ver_test_10.script | 30 + binutils-2.25/gold/testsuite/ver_test_10.sh | 44 + binutils-2.25/gold/testsuite/ver_test_2.cc | 40 + binutils-2.25/gold/testsuite/ver_test_2.script | 31 + binutils-2.25/gold/testsuite/ver_test_2.sh | 45 + binutils-2.25/gold/testsuite/ver_test_3.cc | 33 + binutils-2.25/gold/testsuite/ver_test_4.cc | 64 + binutils-2.25/gold/testsuite/ver_test_4.script | 35 + binutils-2.25/gold/testsuite/ver_test_4.sh | 44 + binutils-2.25/gold/testsuite/ver_test_5.cc | 29 + binutils-2.25/gold/testsuite/ver_test_5.script | 31 + binutils-2.25/gold/testsuite/ver_test_5.sh | 44 + binutils-2.25/gold/testsuite/ver_test_6.c | 35 + binutils-2.25/gold/testsuite/ver_test_7.cc | 37 + binutils-2.25/gold/testsuite/ver_test_7.sh | 44 + binutils-2.25/gold/testsuite/ver_test_8.script | 26 + binutils-2.25/gold/testsuite/ver_test_9.cc | 50 + binutils-2.25/gold/testsuite/ver_test_main.cc | 74 + binutils-2.25/gold/testsuite/ver_test_main_2.cc | 32 + binutils-2.25/gold/testsuite/version_script.map | 34 + .../gold/testsuite/weak_alias_test.script | 8 + binutils-2.25/gold/testsuite/weak_alias_test_1.cc | 52 + binutils-2.25/gold/testsuite/weak_alias_test_2.cc | 41 + binutils-2.25/gold/testsuite/weak_alias_test_3.cc | 26 + binutils-2.25/gold/testsuite/weak_alias_test_4.cc | 68 + binutils-2.25/gold/testsuite/weak_alias_test_5.cc | 39 + .../gold/testsuite/weak_alias_test_main.cc | 80 + binutils-2.25/gold/testsuite/weak_plt.sh | 28 + binutils-2.25/gold/testsuite/weak_plt_main.cc | 33 + binutils-2.25/gold/testsuite/weak_plt_shared.cc | 29 + binutils-2.25/gold/testsuite/weak_test.cc | 47 + binutils-2.25/gold/testsuite/weak_undef.h | 25 + binutils-2.25/gold/testsuite/weak_undef_file1.cc | 75 + binutils-2.25/gold/testsuite/weak_undef_file2.cc | 70 + binutils-2.25/gold/testsuite/weak_undef_test.cc | 106 + 333 files changed, 33490 insertions(+) create mode 100644 binutils-2.25/gold/testsuite/Makefile.am create mode 100644 binutils-2.25/gold/testsuite/Makefile.in create mode 100644 binutils-2.25/gold/testsuite/arm_abs_global.s create mode 100755 binutils-2.25/gold/testsuite/arm_abs_global.sh create mode 100644 binutils-2.25/gold/testsuite/arm_abs_lib.s create mode 100755 binutils-2.25/gold/testsuite/arm_attr_merge.sh create mode 100644 binutils-2.25/gold/testsuite/arm_attr_merge_6a.s create mode 100644 binutils-2.25/gold/testsuite/arm_attr_merge_6b.s create mode 100644 binutils-2.25/gold/testsuite/arm_attr_merge_7a.s create mode 100644 binutils-2.25/gold/testsuite/arm_attr_merge_7b.s create mode 100644 binutils-2.25/gold/testsuite/arm_bl_in_range.s create mode 100644 binutils-2.25/gold/testsuite/arm_bl_out_of_range.s create mode 100755 binutils-2.25/gold/testsuite/arm_branch_in_range.sh create mode 100755 binutils-2.25/gold/testsuite/arm_branch_out_of_range.sh create mode 100644 binutils-2.25/gold/testsuite/arm_branch_range.t create mode 100755 binutils-2.25/gold/testsuite/arm_cortex_a8.sh create mode 100644 binutils-2.25/gold/testsuite/arm_cortex_a8_b.s create mode 100644 binutils-2.25/gold/testsuite/arm_cortex_a8_b_cond.s create mode 100644 binutils-2.25/gold/testsuite/arm_cortex_a8_b_local.s create mode 100644 binutils-2.25/gold/testsuite/arm_cortex_a8_bl.s create mode 100644 binutils-2.25/gold/testsuite/arm_cortex_a8_blx.s create mode 100644 binutils-2.25/gold/testsuite/arm_cortex_a8_local.s create mode 100644 binutils-2.25/gold/testsuite/arm_cortex_a8_local_reloc.s create mode 100644 binutils-2.25/gold/testsuite/arm_exidx_test.s create mode 100755 binutils-2.25/gold/testsuite/arm_exidx_test.sh create mode 100644 binutils-2.25/gold/testsuite/arm_farcall_arm_arm.s create mode 100755 binutils-2.25/gold/testsuite/arm_farcall_arm_arm.sh create mode 100644 binutils-2.25/gold/testsuite/arm_farcall_arm_thumb.s create mode 100755 binutils-2.25/gold/testsuite/arm_farcall_arm_thumb.sh create mode 100644 binutils-2.25/gold/testsuite/arm_farcall_thumb_arm.s create mode 100755 binutils-2.25/gold/testsuite/arm_farcall_thumb_arm.sh create mode 100644 binutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.s create mode 100755 binutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.sh create mode 100644 binutils-2.25/gold/testsuite/arm_fix_1176.s create mode 100755 binutils-2.25/gold/testsuite/arm_fix_1176.sh create mode 100644 binutils-2.25/gold/testsuite/arm_fix_v4bx.s create mode 100755 binutils-2.25/gold/testsuite/arm_fix_v4bx.sh create mode 100644 binutils-2.25/gold/testsuite/arm_thm_jump11.s create mode 100644 binutils-2.25/gold/testsuite/arm_thm_jump11.t create mode 100644 binutils-2.25/gold/testsuite/arm_thm_jump8.s create mode 100644 binutils-2.25/gold/testsuite/arm_thm_jump8.t create mode 100644 binutils-2.25/gold/testsuite/arm_unaligned_reloc.s create mode 100755 binutils-2.25/gold/testsuite/arm_unaligned_reloc.sh create mode 100644 binutils-2.25/gold/testsuite/basic_test.cc create mode 100644 binutils-2.25/gold/testsuite/binary.in create mode 100644 binutils-2.25/gold/testsuite/binary_test.cc create mode 100644 binutils-2.25/gold/testsuite/binary_unittest.cc create mode 100644 binutils-2.25/gold/testsuite/common_test_1.c create mode 100644 binutils-2.25/gold/testsuite/common_test_1_v1.c create mode 100644 binutils-2.25/gold/testsuite/common_test_1_v2.c create mode 100644 binutils-2.25/gold/testsuite/common_test_2.c create mode 100644 binutils-2.25/gold/testsuite/common_test_3.c create mode 100644 binutils-2.25/gold/testsuite/constructor_test.cc create mode 100644 binutils-2.25/gold/testsuite/copy_test.cc create mode 100644 binutils-2.25/gold/testsuite/copy_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/copy_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/copy_test_v1.cc create mode 100644 binutils-2.25/gold/testsuite/debug_msg.cc create mode 100755 binutils-2.25/gold/testsuite/debug_msg.sh create mode 100644 binutils-2.25/gold/testsuite/discard_locals_relocatable_test.c create mode 100644 binutils-2.25/gold/testsuite/discard_locals_test.c create mode 100755 binutils-2.25/gold/testsuite/discard_locals_test.sh create mode 100644 binutils-2.25/gold/testsuite/dwp_test.h create mode 100644 binutils-2.25/gold/testsuite/dwp_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/dwp_test_1.s create mode 100755 binutils-2.25/gold/testsuite/dwp_test_1.sh create mode 100644 binutils-2.25/gold/testsuite/dwp_test_1b.cc create mode 100644 binutils-2.25/gold/testsuite/dwp_test_1b.s create mode 100644 binutils-2.25/gold/testsuite/dwp_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/dwp_test_2.s create mode 100755 binutils-2.25/gold/testsuite/dwp_test_2.sh create mode 100644 binutils-2.25/gold/testsuite/dwp_test_main.cc create mode 100644 binutils-2.25/gold/testsuite/dwp_test_main.s create mode 100755 binutils-2.25/gold/testsuite/dyn_weak_ref.sh create mode 100644 binutils-2.25/gold/testsuite/dyn_weak_ref_1.c create mode 100644 binutils-2.25/gold/testsuite/dyn_weak_ref_2.c create mode 100755 binutils-2.25/gold/testsuite/dynamic_list.sh create mode 100644 binutils-2.25/gold/testsuite/dynamic_list.t create mode 100644 binutils-2.25/gold/testsuite/exception_test.h create mode 100644 binutils-2.25/gold/testsuite/exception_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/exception_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/exception_test_main.cc create mode 100644 binutils-2.25/gold/testsuite/exclude_libs_test.c create mode 100755 binutils-2.25/gold/testsuite/exclude_libs_test.sh create mode 100644 binutils-2.25/gold/testsuite/exclude_libs_test_1.c create mode 100644 binutils-2.25/gold/testsuite/exclude_libs_test_2.c create mode 100644 binutils-2.25/gold/testsuite/exclude_libs_test_3.c create mode 100644 binutils-2.25/gold/testsuite/final_layout.cc create mode 100755 binutils-2.25/gold/testsuite/final_layout.sh create mode 100755 binutils-2.25/gold/testsuite/gc_comdat_test.sh create mode 100644 binutils-2.25/gold/testsuite/gc_comdat_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/gc_comdat_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/gc_orphan_section_test.cc create mode 100755 binutils-2.25/gold/testsuite/gc_orphan_section_test.sh create mode 100644 binutils-2.25/gold/testsuite/gc_tls_test.cc create mode 100755 binutils-2.25/gold/testsuite/gc_tls_test.sh create mode 100644 binutils-2.25/gold/testsuite/gdb_index_test.cc create mode 100755 binutils-2.25/gold/testsuite/gdb_index_test_1.sh create mode 100755 binutils-2.25/gold/testsuite/gdb_index_test_2.sh create mode 100644 binutils-2.25/gold/testsuite/gdb_index_test_3.c create mode 100755 binutils-2.25/gold/testsuite/gdb_index_test_3.sh create mode 100755 binutils-2.25/gold/testsuite/gdb_index_test_4.sh create mode 100755 binutils-2.25/gold/testsuite/gdb_index_test_comm.sh create mode 100755 binutils-2.25/gold/testsuite/hidden_test.sh create mode 100644 binutils-2.25/gold/testsuite/hidden_test_1.c create mode 100644 binutils-2.25/gold/testsuite/hidden_test_main.c create mode 100644 binutils-2.25/gold/testsuite/icf_keep_unique_test.cc create mode 100755 binutils-2.25/gold/testsuite/icf_keep_unique_test.sh create mode 100644 binutils-2.25/gold/testsuite/icf_preemptible_functions_test.cc create mode 100755 binutils-2.25/gold/testsuite/icf_preemptible_functions_test.sh create mode 100644 binutils-2.25/gold/testsuite/icf_safe_so_test.cc create mode 100755 binutils-2.25/gold/testsuite/icf_safe_so_test.sh create mode 100644 binutils-2.25/gold/testsuite/icf_safe_test.cc create mode 100755 binutils-2.25/gold/testsuite/icf_safe_test.sh create mode 100755 binutils-2.25/gold/testsuite/icf_sht_rel_addend_test.sh create mode 100644 binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/icf_string_merge_test.cc create mode 100755 binutils-2.25/gold/testsuite/icf_string_merge_test.sh create mode 100644 binutils-2.25/gold/testsuite/icf_test.cc create mode 100755 binutils-2.25/gold/testsuite/icf_test.sh create mode 100644 binutils-2.25/gold/testsuite/icf_virtual_function_folding_test.cc create mode 100644 binutils-2.25/gold/testsuite/ifunc-sel.h create mode 100644 binutils-2.25/gold/testsuite/ifuncdep2.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmain1.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmain1vis.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmain2.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmain3.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmain4.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmain5.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmain6pie.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmain7.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmod1.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmod3.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmod5.c create mode 100644 binutils-2.25/gold/testsuite/ifuncmod6.c create mode 100644 binutils-2.25/gold/testsuite/ifuncvar1.c create mode 100644 binutils-2.25/gold/testsuite/ifuncvar2.c create mode 100644 binutils-2.25/gold/testsuite/ifuncvar3.c create mode 100644 binutils-2.25/gold/testsuite/incr_comdat_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/incr_comdat_test_2_v1.cc create mode 100644 binutils-2.25/gold/testsuite/incr_comdat_test_2_v2.cc create mode 100644 binutils-2.25/gold/testsuite/incr_comdat_test_2_v3.cc create mode 100755 binutils-2.25/gold/testsuite/incremental_test.sh create mode 100644 binutils-2.25/gold/testsuite/incremental_test_1.c create mode 100644 binutils-2.25/gold/testsuite/incremental_test_2.c create mode 100644 binutils-2.25/gold/testsuite/initpri1.c create mode 100644 binutils-2.25/gold/testsuite/initpri2.c create mode 100644 binutils-2.25/gold/testsuite/initpri3.c create mode 100644 binutils-2.25/gold/testsuite/justsyms.t create mode 100644 binutils-2.25/gold/testsuite/justsyms_1.cc create mode 100644 binutils-2.25/gold/testsuite/justsyms_2.cc create mode 100644 binutils-2.25/gold/testsuite/justsyms_exec.c create mode 100644 binutils-2.25/gold/testsuite/justsyms_lib.c create mode 100644 binutils-2.25/gold/testsuite/large.c create mode 100644 binutils-2.25/gold/testsuite/large_symbol_alignment.cc create mode 100644 binutils-2.25/gold/testsuite/leb128_unittest.cc create mode 100644 binutils-2.25/gold/testsuite/many_sections_test.cc create mode 100644 binutils-2.25/gold/testsuite/memory_test.s create mode 100755 binutils-2.25/gold/testsuite/memory_test.sh create mode 100644 binutils-2.25/gold/testsuite/memory_test.t create mode 100755 binutils-2.25/gold/testsuite/merge_string_literals.sh create mode 100644 binutils-2.25/gold/testsuite/merge_string_literals_1.cc create mode 100644 binutils-2.25/gold/testsuite/merge_string_literals_2.cc create mode 100644 binutils-2.25/gold/testsuite/missing_key_func.cc create mode 100755 binutils-2.25/gold/testsuite/missing_key_func.sh create mode 100644 binutils-2.25/gold/testsuite/no_version_test.c create mode 100755 binutils-2.25/gold/testsuite/no_version_test.sh create mode 100644 binutils-2.25/gold/testsuite/object_unittest.cc create mode 100644 binutils-2.25/gold/testsuite/odr_header1.h create mode 100644 binutils-2.25/gold/testsuite/odr_header2.h create mode 100644 binutils-2.25/gold/testsuite/odr_violation1.cc create mode 100644 binutils-2.25/gold/testsuite/odr_violation2.cc create mode 100644 binutils-2.25/gold/testsuite/plugin_common_test_1.c create mode 100644 binutils-2.25/gold/testsuite/plugin_common_test_2.c create mode 100644 binutils-2.25/gold/testsuite/plugin_final_layout.cc create mode 100755 binutils-2.25/gold/testsuite/plugin_final_layout.sh create mode 100644 binutils-2.25/gold/testsuite/plugin_section_order.c create mode 100644 binutils-2.25/gold/testsuite/plugin_test.c create mode 100755 binutils-2.25/gold/testsuite/plugin_test_1.sh create mode 100755 binutils-2.25/gold/testsuite/plugin_test_2.sh create mode 100755 binutils-2.25/gold/testsuite/plugin_test_3.sh create mode 100755 binutils-2.25/gold/testsuite/plugin_test_4.sh create mode 100755 binutils-2.25/gold/testsuite/plugin_test_6.sh create mode 100755 binutils-2.25/gold/testsuite/plugin_test_7.sh create mode 100644 binutils-2.25/gold/testsuite/plugin_test_7_1.c create mode 100644 binutils-2.25/gold/testsuite/plugin_test_7_2.c create mode 100755 binutils-2.25/gold/testsuite/plugin_test_tls.sh create mode 100755 binutils-2.25/gold/testsuite/pr12826.sh create mode 100644 binutils-2.25/gold/testsuite/pr12826_1.s create mode 100644 binutils-2.25/gold/testsuite/pr12826_2.s create mode 100644 binutils-2.25/gold/testsuite/pr14265.c create mode 100755 binutils-2.25/gold/testsuite/pr14265.sh create mode 100644 binutils-2.25/gold/testsuite/pr14265.t create mode 100644 binutils-2.25/gold/testsuite/protected_1.cc create mode 100644 binutils-2.25/gold/testsuite/protected_2.cc create mode 100644 binutils-2.25/gold/testsuite/protected_3.cc create mode 100644 binutils-2.25/gold/testsuite/protected_4.cc create mode 100644 binutils-2.25/gold/testsuite/protected_main_1.cc create mode 100644 binutils-2.25/gold/testsuite/protected_main_2.cc create mode 100644 binutils-2.25/gold/testsuite/protected_main_3.cc create mode 100644 binutils-2.25/gold/testsuite/relro_script_test.t create mode 100644 binutils-2.25/gold/testsuite/relro_test.cc create mode 100755 binutils-2.25/gold/testsuite/relro_test.sh create mode 100644 binutils-2.25/gold/testsuite/relro_test_main.cc create mode 100755 binutils-2.25/gold/testsuite/retain_symbols_file_test.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/script_test_1.t create mode 100644 binutils-2.25/gold/testsuite/script_test_10.s create mode 100755 binutils-2.25/gold/testsuite/script_test_10.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_10.t create mode 100644 binutils-2.25/gold/testsuite/script_test_11.c create mode 100644 binutils-2.25/gold/testsuite/script_test_11.t create mode 100644 binutils-2.25/gold/testsuite/script_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/script_test_2.t create mode 100644 binutils-2.25/gold/testsuite/script_test_2a.cc create mode 100644 binutils-2.25/gold/testsuite/script_test_2b.cc create mode 100755 binutils-2.25/gold/testsuite/script_test_3.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_3.t create mode 100755 binutils-2.25/gold/testsuite/script_test_4.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_4.t create mode 100644 binutils-2.25/gold/testsuite/script_test_5.cc create mode 100755 binutils-2.25/gold/testsuite/script_test_5.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_5.t create mode 100755 binutils-2.25/gold/testsuite/script_test_6.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_6.t create mode 100755 binutils-2.25/gold/testsuite/script_test_7.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_7.t create mode 100755 binutils-2.25/gold/testsuite/script_test_8.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_9.cc create mode 100755 binutils-2.25/gold/testsuite/script_test_9.sh create mode 100644 binutils-2.25/gold/testsuite/script_test_9.t create mode 100644 binutils-2.25/gold/testsuite/searched_file_test.cc create mode 100644 binutils-2.25/gold/testsuite/searched_file_test_lib.cc create mode 100644 binutils-2.25/gold/testsuite/section_sorting_name.cc create mode 100755 binutils-2.25/gold/testsuite/section_sorting_name.sh create mode 100755 binutils-2.25/gold/testsuite/split_i386.sh create mode 100644 binutils-2.25/gold/testsuite/split_i386_1.s create mode 100644 binutils-2.25/gold/testsuite/split_i386_2.s create mode 100644 binutils-2.25/gold/testsuite/split_i386_3.s create mode 100644 binutils-2.25/gold/testsuite/split_i386_4.s create mode 100644 binutils-2.25/gold/testsuite/split_i386_n.s create mode 100755 binutils-2.25/gold/testsuite/split_x86_64.sh create mode 100644 binutils-2.25/gold/testsuite/split_x86_64_1.s create mode 100644 binutils-2.25/gold/testsuite/split_x86_64_2.s create mode 100644 binutils-2.25/gold/testsuite/split_x86_64_3.s create mode 100644 binutils-2.25/gold/testsuite/split_x86_64_4.s create mode 100644 binutils-2.25/gold/testsuite/split_x86_64_n.s create mode 100644 binutils-2.25/gold/testsuite/start_lib_test_1.c create mode 100644 binutils-2.25/gold/testsuite/start_lib_test_2.c create mode 100644 binutils-2.25/gold/testsuite/start_lib_test_3.c create mode 100644 binutils-2.25/gold/testsuite/start_lib_test_main.c create mode 100755 binutils-2.25/gold/testsuite/strong_ref_weak_def.sh create mode 100644 binutils-2.25/gold/testsuite/strong_ref_weak_def_1.c create mode 100644 binutils-2.25/gold/testsuite/strong_ref_weak_def_2.c create mode 100644 binutils-2.25/gold/testsuite/test.cc create mode 100644 binutils-2.25/gold/testsuite/test.h create mode 100644 binutils-2.25/gold/testsuite/testfile.cc create mode 100644 binutils-2.25/gold/testsuite/testfile.h create mode 100644 binutils-2.25/gold/testsuite/testmain.cc create mode 100644 binutils-2.25/gold/testsuite/text_section_grouping.cc create mode 100755 binutils-2.25/gold/testsuite/text_section_grouping.sh create mode 100644 binutils-2.25/gold/testsuite/thin_archive_main.cc create mode 100644 binutils-2.25/gold/testsuite/thin_archive_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/thin_archive_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/thin_archive_test_3.cc create mode 100644 binutils-2.25/gold/testsuite/thin_archive_test_4.cc create mode 100644 binutils-2.25/gold/testsuite/thumb2_branch_range.t create mode 100644 binutils-2.25/gold/testsuite/thumb_bl_in_range.s create mode 100644 binutils-2.25/gold/testsuite/thumb_bl_out_of_range.s create mode 100644 binutils-2.25/gold/testsuite/thumb_bl_out_of_range_local.s create mode 100644 binutils-2.25/gold/testsuite/thumb_blx_in_range.s create mode 100644 binutils-2.25/gold/testsuite/thumb_blx_out_of_range.s create mode 100644 binutils-2.25/gold/testsuite/thumb_branch_range.t create mode 100644 binutils-2.25/gold/testsuite/tls_test.cc create mode 100644 binutils-2.25/gold/testsuite/tls_test.h create mode 100644 binutils-2.25/gold/testsuite/tls_test_c.c create mode 100644 binutils-2.25/gold/testsuite/tls_test_file2.cc create mode 100644 binutils-2.25/gold/testsuite/tls_test_main.cc create mode 100755 binutils-2.25/gold/testsuite/two_file_shared.sh create mode 100644 binutils-2.25/gold/testsuite/two_file_test.h create mode 100644 binutils-2.25/gold/testsuite/two_file_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/two_file_test_1_v1.cc create mode 100644 binutils-2.25/gold/testsuite/two_file_test_1b.cc create mode 100644 binutils-2.25/gold/testsuite/two_file_test_1b_v1.cc create mode 100644 binutils-2.25/gold/testsuite/two_file_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/two_file_test_2_tls.cc create mode 100644 binutils-2.25/gold/testsuite/two_file_test_2_v1.cc create mode 100644 binutils-2.25/gold/testsuite/two_file_test_main.cc create mode 100644 binutils-2.25/gold/testsuite/two_file_test_tls.cc create mode 100644 binutils-2.25/gold/testsuite/undef_symbol.cc create mode 100755 binutils-2.25/gold/testsuite/undef_symbol.sh create mode 100644 binutils-2.25/gold/testsuite/undef_symbol_main.cc create mode 100644 binutils-2.25/gold/testsuite/ver_matching_def.cc create mode 100755 binutils-2.25/gold/testsuite/ver_matching_test.sh create mode 100644 binutils-2.25/gold/testsuite/ver_test.h create mode 100644 binutils-2.25/gold/testsuite/ver_test_1.cc create mode 100755 binutils-2.25/gold/testsuite/ver_test_1.sh create mode 100644 binutils-2.25/gold/testsuite/ver_test_10.script create mode 100755 binutils-2.25/gold/testsuite/ver_test_10.sh create mode 100644 binutils-2.25/gold/testsuite/ver_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/ver_test_2.script create mode 100755 binutils-2.25/gold/testsuite/ver_test_2.sh create mode 100644 binutils-2.25/gold/testsuite/ver_test_3.cc create mode 100644 binutils-2.25/gold/testsuite/ver_test_4.cc create mode 100644 binutils-2.25/gold/testsuite/ver_test_4.script create mode 100755 binutils-2.25/gold/testsuite/ver_test_4.sh create mode 100644 binutils-2.25/gold/testsuite/ver_test_5.cc create mode 100644 binutils-2.25/gold/testsuite/ver_test_5.script create mode 100755 binutils-2.25/gold/testsuite/ver_test_5.sh create mode 100644 binutils-2.25/gold/testsuite/ver_test_6.c create mode 100644 binutils-2.25/gold/testsuite/ver_test_7.cc create mode 100755 binutils-2.25/gold/testsuite/ver_test_7.sh create mode 100644 binutils-2.25/gold/testsuite/ver_test_8.script create mode 100644 binutils-2.25/gold/testsuite/ver_test_9.cc create mode 100644 binutils-2.25/gold/testsuite/ver_test_main.cc create mode 100644 binutils-2.25/gold/testsuite/ver_test_main_2.cc create mode 100644 binutils-2.25/gold/testsuite/version_script.map create mode 100644 binutils-2.25/gold/testsuite/weak_alias_test.script create mode 100644 binutils-2.25/gold/testsuite/weak_alias_test_1.cc create mode 100644 binutils-2.25/gold/testsuite/weak_alias_test_2.cc create mode 100644 binutils-2.25/gold/testsuite/weak_alias_test_3.cc create mode 100644 binutils-2.25/gold/testsuite/weak_alias_test_4.cc create mode 100644 binutils-2.25/gold/testsuite/weak_alias_test_5.cc create mode 100644 binutils-2.25/gold/testsuite/weak_alias_test_main.cc create mode 100755 binutils-2.25/gold/testsuite/weak_plt.sh create mode 100644 binutils-2.25/gold/testsuite/weak_plt_main.cc create mode 100644 binutils-2.25/gold/testsuite/weak_plt_shared.cc create mode 100644 binutils-2.25/gold/testsuite/weak_test.cc create mode 100644 binutils-2.25/gold/testsuite/weak_undef.h create mode 100644 binutils-2.25/gold/testsuite/weak_undef_file1.cc create mode 100644 binutils-2.25/gold/testsuite/weak_undef_file2.cc create mode 100644 binutils-2.25/gold/testsuite/weak_undef_test.cc (limited to 'binutils-2.25/gold/testsuite') diff --git a/binutils-2.25/gold/testsuite/Makefile.am b/binutils-2.25/gold/testsuite/Makefile.am new file mode 100644 index 00000000..0d40e3ff --- /dev/null +++ b/binutils-2.25/gold/testsuite/Makefile.am @@ -0,0 +1,2901 @@ +# Process this file with automake to generate Makefile.in + +# As far as I can tell automake testing support assumes that the build +# system and the host system are the same. So these tests will not +# work when building with a cross-compiler. + +# Ignore warning about AM_PROG_CC_C_O due to large_CFLAGS +AUTOMAKE_OPTIONS = foreign -Wno-portability + +# The two_file_test tests -fmerge-constants, so we simply always turn +# it on. For compilers that do not support the command-line option, +# we assume they just always emit SHF_MERGE sections unconditionally. +AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) $(MERGE_CONSTANTS_FLAG) +AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) $(MERGE_CONSTANTS_FLAG) + +AM_CPPFLAGS = \ + -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \ + -I$(srcdir)/../../elfcpp -I.. \ + -DLOCALEDIR="\"$(datadir)/locale\"" \ + @INCINTL@ + +# COMPILE1, LINK1, CXXCOMPILE1, CXXLINK1 are renamed from COMPILE, LINK, +# CXXCOMPILE and CXXLINK generated by automake 1.11.1. FIXME: they should +# be updated if they are different from automake used by gold. +COMPILE1 = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXCOMPILE1 = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ + +# Strip out -Wp,-D_FORTIFY_SOURCE=, which is rrelevant for the gold +# testsuite and incompatible with -O0 used in gold tests, from +# COMPILE, LINK, CXXCOMPILE and CXXLINK. +COMPILE = `echo $(COMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9[0-9]]*//'` +LINK = `echo $(LINK1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'` +CXXCOMPILE = `echo $(CXXCOMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'` +CXXLINK = `echo $(CXXLINK1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'` + +# Strip out -static-libgcc and -static-libstdc++ options, for tests +# that must have these libraries linked dynamically. The -shared-libgcc +# option does not work correctly, and there is no -shared-libstdc++ option. +# (See GCC PR 55781 and PR 55782.) +CXXLINK_S = `echo $(CXXLINK1) | sed -e 's/-static-lib\\(gcc\\|stdc++\\)//g'` + +TEST_READELF = $(top_builddir)/../binutils/readelf +TEST_OBJDUMP = $(top_builddir)/../binutils/objdump +TEST_OBJCOPY = $(top_builddir)/../binutils/objcopy +TEST_CXXFILT = $(top_builddir)/../binutils/cxxfilt +TEST_STRIP = $(top_builddir)/../binutils/strip-new +TEST_AR = $(top_builddir)/../binutils/ar +TEST_NM = $(top_builddir)/../binutils/nm-new +TEST_AS = $(top_builddir)/../gas/as-new + +if PLUGINS +LIBDL = -ldl +endif + +if THREADS +THREADSLIB = -lpthread +endif + +if OMP_SUPPORT +TLS_TEST_C_CFLAGS = -fopenmp +endif + +# 'make clean' is good about deleting some intermediate files (such as +# .o's), but not all of them (such as .so's and .err files). We +# improve on that here. automake-1.9 info docs say "mostlyclean" is +# the right choice for files 'make' builds that people rebuild. +MOSTLYCLEANFILES = *.so *.syms *.stdout + +# Export make variables to the shell scripts so that they can see +# (for example) DEFAULT_TARGET. +.EXPORT_ALL_VARIABLES: + +# We will add to these later, for each individual test. Note +# that we add each test under check_SCRIPTS or check_PROGRAMS; +# the TESTS variable is automatically populated from these. +check_SCRIPTS = +check_DATA = +check_PROGRAMS = +BUILT_SOURCES = + +TESTS = $(check_SCRIPTS) $(check_PROGRAMS) + +# --------------------------------------------------------------------- +# These tests test the internals of gold (unittests). + +# Infrastucture needed for the unittests +check_LIBRARIES = libgoldtest.a +libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc + +DEPENDENCIES = \ + libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP) +LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \ + $(THREADSLIB) $(LIBDL) + + +# The unittests themselves +if NATIVE_OR_CROSS_LINKER +if GCC + +# Infrastucture needed for the unittests: a directory where the linker +# is named 'ld'. This is because the -B flag appends 'ld' to its arg. +gcctestdir/ld: ../ld-new + test -d gcctestdir || mkdir -p gcctestdir + rm -f gcctestdir/ld + (cd gcctestdir && $(LN_S) ../../ld-new ld) + +# Some tests require the latest features of an in-tree assembler. +gcctestdir/as: $(TEST_AS) + test -d gcctestdir || mkdir -p gcctestdir + rm -f gcctestdir/as + (cd gcctestdir && $(LN_S) $(abs_top_builddir)/../gas/as-new as) + +endif GCC + +check_PROGRAMS += object_unittest +object_unittest_SOURCES = object_unittest.cc + +check_PROGRAMS += binary_unittest +binary_unittest_SOURCES = binary_unittest.cc + +check_PROGRAMS += leb128_unittest +leb128_unittest_SOURCES = leb128_unittest.cc + +endif NATIVE_OR_CROSS_LINKER + +# --------------------------------------------------------------------- +# These tests test the output of gold (end-to-end tests). In +# particular, they make sure that gold can link "difficult" object +# files, and the resulting object files run correctly. These can only +# run if we've built ld-new for the native architecture (that is, +# we're not cross-compiling it), since we run ld-new as part of these +# tests. We use the gcc-specific flag '-B' to use our linker instead +# of the default linker, which is why we only run our tests under gcc. + +if NATIVE_LINKER +if GCC + +# Each of these .o's is a useful, small complete program. They're +# particularly useful for making sure ld-new's flags do what they're +# supposed to (hence their names), but are used for many tests that +# don't actually involve analyzing input data. +flagstest_debug.o: constructor_test.cc + $(CXXCOMPILE) -O0 -g -c -o $@ $< +flagstest_ndebug.o: constructor_test.cc + $(CXXCOMPILE) -O0 -c -o $@ $< + +check_SCRIPTS += incremental_test.sh +check_DATA += incremental_test.stdout +MOSTLYCLEANFILES += incremental_test incremental_test.cmdline +incremental_test_1.o: incremental_test_1.c + $(COMPILE) -O0 -c -ffunction-sections -g -o $@ $< +incremental_test_2.o: incremental_test_2.c + $(COMPILE) -O0 -c -ffunction-sections -g -o $@ $< +incremental_test: incremental_test_1.o incremental_test_2.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -Wl,--incremental-full incremental_test_1.o incremental_test_2.o -Wl,-debug 2> incremental_test.cmdline +incremental_test.stdout: incremental_test ../incremental-dump + ../incremental-dump incremental_test > $@ + +check_SCRIPTS += gc_comdat_test.sh +check_DATA += gc_comdat_test.stdout +MOSTLYCLEANFILES += gc_comdat_test +gc_comdat_test_1.o: gc_comdat_test_1.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +gc_comdat_test_2.o: gc_comdat_test_2.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +gc_comdat_test: gc_comdat_test_1.o gc_comdat_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_comdat_test_1.o gc_comdat_test_2.o +gc_comdat_test.stdout: gc_comdat_test + $(TEST_NM) -C gc_comdat_test > gc_comdat_test.stdout + +check_SCRIPTS += gc_tls_test.sh +check_DATA += gc_tls_test.stdout +MOSTLYCLEANFILES += gc_tls_test +gc_tls_test.o: gc_tls_test.cc + $(CXXCOMPILE) -O0 -c -g -o $@ $< +gc_tls_test:gc_tls_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_tls_test.o +gc_tls_test.stdout: gc_tls_test + $(TEST_NM) -C gc_tls_test > gc_tls_test.stdout + +check_SCRIPTS += gc_orphan_section_test.sh +check_DATA += gc_orphan_section_test.stdout +MOSTLYCLEANFILES += gc_orphan_section_test +gc_orphan_section_test.o: gc_orphan_section_test.cc + $(CXXCOMPILE) -O0 -c -g -o $@ $< +gc_orphan_section_test:gc_orphan_section_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_orphan_section_test.o +gc_orphan_section_test.stdout: gc_orphan_section_test + $(TEST_NM) gc_orphan_section_test > gc_orphan_section_test.stdout + +check_SCRIPTS += pr14265.sh +check_DATA += pr14265.stdout +MOSTLYCLEANFILES += pr14265 +pr14265.o: pr14265.c + $(COMPILE) -O0 -c -o $@ $< +pr14265: pr14265.o + $(LINK) -Bgcctestdir/ -Wl,--gc-sections -Wl,-T,$(srcdir)/pr14265.t -o $@ $< +pr14265.stdout: pr14265 + $(TEST_NM) --format=bsd --numeric-sort $< > $@ + +check_SCRIPTS += icf_test.sh +check_DATA += icf_test.map +MOSTLYCLEANFILES += icf_test icf_test.map +icf_test.o: icf_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +icf_test: icf_test.o gcctestdir/ld + $(CXXLINK) -o icf_test -Bgcctestdir/ -Wl,--icf=all,-Map,icf_test.map icf_test.o +icf_test.map: icf_test + @touch icf_test.map + +check_SCRIPTS += icf_keep_unique_test.sh +check_DATA += icf_keep_unique_test.stdout +MOSTLYCLEANFILES += icf_keep_unique_test +icf_keep_unique_test.o: icf_keep_unique_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +icf_keep_unique_test: icf_keep_unique_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all -Wl,--keep-unique,_Z11unique_funcv icf_keep_unique_test.o +icf_keep_unique_test.stdout: icf_keep_unique_test + $(TEST_NM) -C $< > $@ + +check_SCRIPTS += icf_safe_test.sh +check_DATA += icf_safe_test_1.stdout icf_safe_test_2.stdout icf_safe_test.map +MOSTLYCLEANFILES += icf_safe_test icf_safe_test.map +icf_safe_test.o: icf_safe_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +icf_safe_test: icf_safe_test.o gcctestdir/ld + $(CXXLINK) -o icf_safe_test -Bgcctestdir/ -Wl,--icf=safe,-Map,icf_safe_test.map icf_safe_test.o +icf_safe_test.map: icf_safe_test + @touch icf_safe_test.map +icf_safe_test_1.stdout: icf_safe_test + $(TEST_NM) $< > $@ +icf_safe_test_2.stdout: icf_safe_test + $(TEST_READELF) -h $< > $@ + +check_SCRIPTS += icf_safe_so_test.sh +check_DATA += icf_safe_so_test_1.stdout icf_safe_so_test_2.stdout icf_safe_so_test.map +MOSTLYCLEANFILES += icf_safe_so_test icf_safe_so_test.map +icf_safe_so_test.o: icf_safe_so_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +icf_safe_so_test: icf_safe_so_test.o gcctestdir/ld + $(CXXLINK) -o icf_safe_so_test -Bgcctestdir/ -Wl,--icf=safe,-Map,icf_safe_so_test.map icf_safe_so_test.o -fPIC -shared +icf_safe_so_test.map: + @touch icf_safe_so_test.map +icf_safe_so_test_1.stdout: icf_safe_so_test + $(TEST_NM) $< > $@ +icf_safe_so_test_2.stdout: icf_safe_so_test + $(TEST_READELF) -h $< > $@ + +check_SCRIPTS += final_layout.sh +check_DATA += final_layout.stdout +MOSTLYCLEANFILES += final_layout final_layout_sequence.txt final_layout_script.lds +final_layout.o: final_layout.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $< +final_layout_sequence.txt: + (echo "*_Z3barv*" && echo ".text._Z3bazv" && echo "*_Z3foov*" && echo "*global_varb*" && echo "*global_vara*" && echo "*global_varc*") > final_layout_sequence.txt +final_layout_script.lds: + (echo "SECTIONS { .text : { *(.text*) } .got : { *(.got .toc) } .sbss : { *(.sbss*) } .bss : { *(.bss*) } }") > final_layout_script.lds +final_layout: final_layout.o final_layout_sequence.txt final_layout_script.lds gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--section-ordering-file,final_layout_sequence.txt -Wl,-T,final_layout_script.lds final_layout.o +final_layout.stdout: final_layout + $(TEST_NM) -n --synthetic final_layout > final_layout.stdout + +check_SCRIPTS += text_section_grouping.sh +check_DATA += text_section_grouping.stdout text_section_no_grouping.stdout +MOSTLYCLEANFILES += text_section_grouping text_section_no_grouping +text_section_grouping.o: text_section_grouping.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +text_section_grouping: text_section_grouping.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ text_section_grouping.o +text_section_no_grouping: text_section_grouping.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--no-text-reorder text_section_grouping.o +text_section_grouping.stdout: text_section_grouping + $(TEST_NM) -n --synthetic text_section_grouping > text_section_grouping.stdout +text_section_no_grouping.stdout: text_section_no_grouping + $(TEST_NM) -n --synthetic text_section_no_grouping > text_section_no_grouping.stdout + +check_SCRIPTS += section_sorting_name.sh +check_DATA += section_sorting_name.stdout +MOSTLYCLEANFILES += section_sorting_name +section_sorting_name.o: section_sorting_name.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +section_sorting_name: section_sorting_name.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--sort-section=name section_sorting_name.o +section_sorting_name.stdout: section_sorting_name + $(TEST_NM) -n --synthetic section_sorting_name > section_sorting_name.stdout + +check_PROGRAMS += icf_virtual_function_folding_test +MOSTLYCLEANFILES += icf_virtual_function_folding_test icf_virtual_function_folding_test.map +icf_virtual_function_folding_test.o: icf_virtual_function_folding_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIE -g -o $@ $< +icf_virtual_function_folding_test: icf_virtual_function_folding_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_virtual_function_folding_test.o -pie + +check_SCRIPTS += icf_preemptible_functions_test.sh +check_DATA += icf_preemptible_functions_test.stdout +MOSTLYCLEANFILES += icf_preemptible_functions_test +icf_preemptible_functions_test.o: icf_preemptible_functions_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +icf_preemptible_functions_test: icf_preemptible_functions_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_preemptible_functions_test.o -fPIC -shared +icf_preemptible_functions_test.stdout: icf_preemptible_functions_test + $(TEST_NM) icf_preemptible_functions_test > icf_preemptible_functions_test.stdout + +check_SCRIPTS += icf_string_merge_test.sh +check_DATA += icf_string_merge_test.stdout +MOSTLYCLEANFILES += icf_string_merge_test +icf_string_merge_test.o: icf_string_merge_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +icf_string_merge_test: icf_string_merge_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_string_merge_test.o +icf_string_merge_test.stdout: icf_string_merge_test + $(TEST_NM) icf_string_merge_test > icf_string_merge_test.stdout + +check_SCRIPTS += icf_sht_rel_addend_test.sh +check_DATA += icf_sht_rel_addend_test.stdout +MOSTLYCLEANFILES += icf_sht_rel_addend_test +icf_sht_rel_addend_test_1.o: icf_sht_rel_addend_test_1.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +icf_sht_rel_addend_test_2.o: icf_sht_rel_addend_test_2.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +icf_sht_rel_addend_test: icf_sht_rel_addend_test_1.o icf_sht_rel_addend_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_sht_rel_addend_test_1.o icf_sht_rel_addend_test_2.o +icf_sht_rel_addend_test.stdout: icf_sht_rel_addend_test + $(TEST_NM) icf_sht_rel_addend_test > icf_sht_rel_addend_test.stdout + +check_PROGRAMS += large_symbol_alignment +large_symbol_alignment_SOURCES = large_symbol_alignment.cc +large_symbol_alignment_DEPENDENCIES = gcctestdir/ld +large_symbol_alignment_LDFLAGS = -Bgcctestdir/ +large_symbol_alignment_LDADD = + +check_SCRIPTS += merge_string_literals.sh +check_DATA += merge_string_literals.stdout +MOSTLYCLEANFILES += merge_string_literals +merge_string_literals_1.o: merge_string_literals_1.cc + $(CXXCOMPILE) -O2 -c -fPIC -g -o $@ $< +merge_string_literals_2.o: merge_string_literals_2.cc + $(CXXCOMPILE) -O2 -c -fPIC -g -o $@ $< +merge_string_literals: merge_string_literals_1.o merge_string_literals_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ merge_string_literals_1.o merge_string_literals_2.o -O2 -shared -nostdlib +merge_string_literals.stdout: merge_string_literals + $(TEST_OBJDUMP) -s -j.rodata merge_string_literals > merge_string_literals.stdout + +check_PROGRAMS += basic_test +check_PROGRAMS += basic_pic_test +basic_test.o: basic_test.cc + $(CXXCOMPILE) -O0 -c -o $@ $< +basic_test: basic_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ basic_test.o + +if HAVE_STATIC +check_PROGRAMS += basic_static_test +basic_static_test: basic_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -static basic_test.o +endif + +basic_pic_test.o: basic_test.cc + $(CXXCOMPILE) -O0 -c -fpic -o $@ $< +basic_pic_test: basic_pic_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ basic_pic_test.o + +if HAVE_STATIC +check_PROGRAMS += basic_static_pic_test +basic_static_pic_test: basic_pic_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o +endif + +check_PROGRAMS += basic_pie_test +basic_pie_test.o: basic_test.cc + $(CXXCOMPILE) -O0 -c -fpie -o $@ $< +basic_pie_test: basic_pie_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -pie basic_pie_test.o + +check_PROGRAMS += constructor_test +constructor_test_SOURCES = constructor_test.cc +constructor_test_DEPENDENCIES = gcctestdir/ld +constructor_test_LDFLAGS = -Bgcctestdir/ +constructor_test_LDADD = + +if HAVE_STATIC +check_PROGRAMS += constructor_static_test +constructor_static_test_SOURCES = $(constructor_test_SOURCES) +constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES) +constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static +constructor_static_test_LDADD = $(constructor_test_LDADD) +endif + +check_PROGRAMS += two_file_test +check_PROGRAMS += two_file_pic_test +two_file_test_SOURCES = \ + two_file_test_1.cc \ + two_file_test_1b.cc \ + two_file_test_2.cc \ + two_file_test_main.cc \ + two_file_test.h +two_file_test_DEPENDENCIES = gcctestdir/ld +two_file_test_LDFLAGS = -Bgcctestdir/ +two_file_test_LDADD = + +if HAVE_STATIC +check_PROGRAMS += two_file_static_test +two_file_static_test_SOURCES = $(two_file_test_SOURCES) +two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES) +two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static +two_file_static_test_LDADD = $(two_file_test_LDADD) +endif + +two_file_pic_test_SOURCES = two_file_test_main.cc +two_file_pic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o +two_file_pic_test_LDFLAGS = -Bgcctestdir/ +two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o + + +check_PROGRAMS += two_file_shared_1_test +check_PROGRAMS += two_file_shared_2_test +check_PROGRAMS += two_file_shared_1_pic_2_test +check_PROGRAMS += two_file_shared_2_pic_1_test +check_PROGRAMS += two_file_same_shared_test +check_PROGRAMS += two_file_separate_shared_12_test +check_PROGRAMS += two_file_separate_shared_21_test +two_file_test_1_pic.o: two_file_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +two_file_test_1b_pic.o: two_file_test_1b.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +two_file_test_2_pic.o: two_file_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +two_file_shared_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o +two_file_shared_2.so: two_file_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2_pic.o +two_file_shared.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o + +two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc +two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so +two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_1_test_LDADD = two_file_shared_1.so + +two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc +two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so +two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_2_test_LDADD = two_file_shared_2.so + +two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc +two_file_shared_1_pic_2_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_2.so two_file_test_1_pic.o two_file_test_1b_pic.o +two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_1_pic_2_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_shared_2.so + +two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc +two_file_shared_2_pic_1_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_2.so two_file_test_2_pic.o +two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so + +two_file_same_shared_test_SOURCES = two_file_test_main.cc +two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so +two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_same_shared_test_LDADD = two_file_shared.so + +two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc +two_file_separate_shared_12_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1.so two_file_shared_2.so +two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_separate_shared_12_test_LDADD = \ + two_file_shared_1.so two_file_shared_2.so + +two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc +two_file_separate_shared_21_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1.so two_file_shared_2.so +two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_separate_shared_21_test_LDADD = \ + two_file_shared_2.so two_file_shared_1.so + +check_PROGRAMS += two_file_relocatable_test +two_file_relocatable_test_SOURCES = two_file_test_main.cc +two_file_relocatable_test_DEPENDENCIES = \ + gcctestdir/ld two_file_relocatable.o +two_file_relocatable_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_relocatable_test_LDADD = two_file_relocatable.o +two_file_relocatable.o: gcctestdir/ld two_file_test_1.o two_file_test_1b.o two_file_test_2.o + gcctestdir/ld -r -o $@ two_file_test_1.o two_file_test_1b.o two_file_test_2.o + +check_PROGRAMS += two_file_pie_test +two_file_test_1_pie.o: two_file_test_1.cc + $(CXXCOMPILE) -c -fpie -o $@ $< +two_file_test_1b_pie.o: two_file_test_1b.cc + $(CXXCOMPILE) -c -fpie -o $@ $< +two_file_test_2_pie.o: two_file_test_2.cc + $(CXXCOMPILE) -c -fpie -o $@ $< +two_file_test_main_pie.o: two_file_test_main.cc + $(CXXCOMPILE) -c -fpie -o $@ $< +two_file_pie_test: two_file_test_1_pie.o two_file_test_1b_pie.o \ + two_file_test_2_pie.o two_file_test_main_pie.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -pie two_file_test_1_pie.o two_file_test_1b_pie.o two_file_test_2_pie.o two_file_test_main_pie.o + +check_SCRIPTS += two_file_shared.sh +check_DATA += two_file_shared.dbg +MOSTLYCLEANFILES += two_file_shared.dbg +two_file_shared.dbg: two_file_shared.so + $(TEST_READELF) -w $< >$@ 2>/dev/null + +# The nonpic tests will fail on platforms which can not put non-PIC +# code into shared libraries, so we just don't run them in that case. +if FN_PTRS_IN_SO_WITHOUT_PIC + +check_PROGRAMS += two_file_shared_1_nonpic_test +check_PROGRAMS += two_file_shared_2_nonpic_test +check_PROGRAMS += two_file_same_shared_nonpic_test +check_PROGRAMS += two_file_separate_shared_12_nonpic_test +check_PROGRAMS += two_file_separate_shared_21_nonpic_test +check_PROGRAMS += two_file_mixed_shared_test +check_PROGRAMS += two_file_mixed_2_shared_test +two_file_shared_1_nonpic.so: two_file_test_1.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o -Wl,-z,notext +two_file_shared_2_nonpic.so: two_file_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2.o +two_file_shared_nonpic.so: two_file_test_1.o two_file_test_1b.o two_file_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o two_file_test_2.o -Wl,-z,notext +two_file_shared_mixed.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o -Wl,-z,notext +two_file_shared_mixed_1.so: two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so -Wl,-z,notext + +two_file_shared_1_nonpic_test_SOURCES = \ + two_file_test_2.cc two_file_test_main.cc +two_file_shared_1_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1_nonpic.so +two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so + +two_file_shared_2_nonpic_test_SOURCES = \ + two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc +two_file_shared_2_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_2_nonpic.so +two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so + +two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc +two_file_same_shared_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_nonpic.so +two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so + +two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc +two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so +two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_separate_shared_12_nonpic_test_LDADD = \ + two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so + +two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc +two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so +two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_separate_shared_21_nonpic_test_LDADD = \ + two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so + +two_file_mixed_shared_test_SOURCES = two_file_test_main.cc +two_file_mixed_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed.so +two_file_mixed_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_mixed_shared_test_LDADD = two_file_shared_mixed.so + +two_file_mixed_2_shared_test_SOURCES = two_file_test_main.cc +two_file_mixed_2_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed_1.so two_file_shared_2.so +two_file_mixed_2_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_mixed_2_shared_test_LDADD = two_file_shared_mixed_1.so two_file_shared_2.so + +check_PROGRAMS += two_file_mixed_pie_test +two_file_mixed_pie_test: two_file_test_1.o two_file_test_1b_pie.o \ + two_file_test_main_pie.o two_file_shared_2.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,-R,. -pie two_file_test_1.o two_file_test_1b_pie.o two_file_test_main_pie.o two_file_shared_2.so + +endif FN_PTRS_IN_SO_WITHOUT_PIC + +check_PROGRAMS += two_file_strip_test +two_file_strip_test: two_file_test + $(TEST_STRIP) -o two_file_strip_test two_file_test + +check_PROGRAMS += two_file_same_shared_strip_test +two_file_same_shared_strip_test_SOURCES = two_file_test_main.cc +two_file_same_shared_strip_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_strip.so +two_file_same_shared_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R. +two_file_same_shared_strip_test_LDADD = two_file_shared_strip.so +two_file_shared_strip.so: two_file_shared.so + $(TEST_STRIP) -S -o two_file_shared_strip.so two_file_shared.so + +check_PROGRAMS += common_test_1 +common_test_1_SOURCES = common_test_1.c +common_test_1_DEPENDENCIES = gcctestdir/ld +common_test_1_LDFLAGS = -Bgcctestdir/ +common_test_1_LDADD = + +check_PROGRAMS += common_test_2 +common_test_2_SOURCES = common_test_1.c +common_test_2_DEPENDENCIES = common_test_2.so common_test_3.so gcctestdir/ld +common_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +common_test_2_LDADD = common_test_2.so common_test_3.so +common_test_2_pic.o: common_test_2.c + $(COMPILE) -c -fpic -o $@ $< +common_test_2.so: common_test_2_pic.o common_test_3.so gcctestdir/ld + $(LINK) -Bgcctestdir/ -shared common_test_2_pic.o common_test_3.so +common_test_3_pic.o: common_test_3.c + $(COMPILE) -c -fpic -o $@ $< +common_test_3.so: common_test_3_pic.o ver_test_2.script gcctestdir/ld + $(LINK) -Bgcctestdir/ -shared common_test_3_pic.o -Wl,--version-script,$(srcdir)/ver_test_2.script + +check_PROGRAMS += exception_test +check_PROGRAMS += exception_shared_1_test +check_PROGRAMS += exception_shared_2_test +check_PROGRAMS += exception_same_shared_test +check_PROGRAMS += exception_separate_shared_12_test +check_PROGRAMS += exception_separate_shared_21_test +exception_test_1_pic.o: exception_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +exception_test_2_pic.o: exception_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +exception_shared_1.so: exception_test_1_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o +exception_shared_2.so: exception_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared exception_test_2_pic.o +exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o exception_test_2_pic.o + +exception_test_SOURCES = \ + exception_test_main.cc \ + exception_test_1.cc \ + exception_test_2.cc \ + exception_test.h +exception_test_DEPENDENCIES = gcctestdir/ld +exception_test_LDFLAGS = -Bgcctestdir/ +exception_test_LDADD = + +if HAVE_STATIC +check_PROGRAMS += exception_static_test +exception_static_test_SOURCES = $(exception_test_SOURCES) +exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES) +exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static +exception_static_test_LDADD = $(exception_test_LDADD) +endif + +exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc +exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so +exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +exception_shared_1_test_LDADD = exception_shared_1.so + +exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc +exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so +exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +exception_shared_2_test_LDADD = exception_shared_2.so + +exception_same_shared_test_SOURCES = exception_test_main.cc +exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so +exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +exception_same_shared_test_LDADD = exception_shared.so + +exception_separate_shared_12_test_SOURCES = exception_test_main.cc +exception_separate_shared_12_test_DEPENDENCIES = \ + gcctestdir/ld exception_shared_1.so exception_shared_2.so +exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. \ + -Wl,--no-as-needed +exception_separate_shared_12_test_LDADD = \ + exception_shared_1.so exception_shared_2.so + +exception_separate_shared_21_test_SOURCES = exception_test_main.cc +exception_separate_shared_21_test_DEPENDENCIES = \ + gcctestdir/ld exception_shared_1.so exception_shared_2.so +exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. \ + -Wl,--no-as-needed +exception_separate_shared_21_test_LDADD = \ + exception_shared_2.so exception_shared_1.so + + +check_PROGRAMS += weak_test +weak_test_SOURCES = weak_test.cc +weak_test_DEPENDENCIES = gcctestdir/ld +weak_test_LDFLAGS = -Bgcctestdir/ +weak_test_LDADD = + +check_PROGRAMS += weak_undef_test +MOSTLYCLEANFILES += alt/weak_undef_lib.so +weak_undef_test_SOURCES = weak_undef_test.cc +weak_undef_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib.so alt/weak_undef_lib.so +weak_undef_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt +weak_undef_test_LDADD = -L . weak_undef_lib.so +weak_undef_file1.o: weak_undef_file1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_undef_file2.o: weak_undef_file2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_undef_lib.so: weak_undef_file1.o + $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1.o +alt/weak_undef_lib.so: weak_undef_file2.o + test -d alt || mkdir -p alt + $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2.o + +if FN_PTRS_IN_SO_WITHOUT_PIC +check_PROGRAMS += weak_undef_nonpic_test +MOSTLYCLEANFILES += alt/weak_undef_lib_nonpic.so +weak_undef_nonpic_test_SOURCES = weak_undef_test.cc +weak_undef_nonpic_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib_nonpic.so alt/weak_undef_lib_nonpic.so +weak_undef_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt +weak_undef_nonpic_test_LDADD = -L . weak_undef_lib_nonpic.so +weak_undef_file1_nonpic.o: weak_undef_file1.cc + $(CXXCOMPILE) -c -o $@ $< +weak_undef_file2_nonpic.o: weak_undef_file2.cc + $(CXXCOMPILE) -c -o $@ $< +weak_undef_lib_nonpic.so: weak_undef_file1_nonpic.o + $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1_nonpic.o -Wl,-z,notext +alt/weak_undef_lib_nonpic.so: weak_undef_file2_nonpic.o + test -d alt || mkdir -p alt + $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2_nonpic.o -Wl,-z,notext +endif FN_PTRS_IN_SO_WITHOUT_PIC + + +check_PROGRAMS += weak_alias_test +weak_alias_test_SOURCES = weak_alias_test_main.cc +weak_alias_test_DEPENDENCIES = \ + gcctestdir/ld weak_alias_test_1.so weak_alias_test_2.so \ + weak_alias_test_3.o weak_alias_test_4.so weak_alias_test_5.so +weak_alias_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +weak_alias_test_LDADD = \ + weak_alias_test_1.so weak_alias_test_2.so weak_alias_test_3.o \ + weak_alias_test_4.so weak_alias_test_5.so +weak_alias_test_1_pic.o: weak_alias_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_alias_test_1.so: weak_alias_test_1_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_1_pic.o +weak_alias_test_2_pic.o: weak_alias_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_alias_test_2.so: weak_alias_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_2_pic.o +weak_alias_test_3.o: weak_alias_test_3.cc + $(CXXCOMPILE) -c -o $@ $< +weak_alias_test_4_pic.o: weak_alias_test_4.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_alias_test_4.so: weak_alias_test_4_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_4_pic.o +weak_alias_test_5_pic.o: weak_alias_test_5.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_alias_test_5.so: weak_alias_test_5_pic.o $(srcdir)/weak_alias_test.script gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_5_pic.o \ + -Wl,--version-script,$(srcdir)/weak_alias_test.script + +check_SCRIPTS += weak_plt.sh +check_PROGRAMS += weak_plt +check_DATA += weak_plt_shared.so +weak_plt_main_pic.o: weak_plt_main.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_plt: weak_plt_main_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ weak_plt_main_pic.o +weak_plt_shared_pic.o: weak_plt_shared.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_plt_shared.so: weak_plt_shared_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_plt_shared_pic.o + +check_PROGRAMS += copy_test +copy_test_SOURCES = copy_test.cc +copy_test_DEPENDENCIES = gcctestdir/ld copy_test_1.so copy_test_2.so +copy_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +copy_test_LDADD = copy_test_1.so copy_test_2.so +copy_test_1_pic.o: copy_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +copy_test_1.so: gcctestdir/ld copy_test_1_pic.o + $(CXXLINK) -Bgcctestdir/ -shared copy_test_1_pic.o +copy_test_2_pic.o: copy_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +copy_test_2.so: gcctestdir/ld copy_test_2_pic.o + $(CXXLINK) -Bgcctestdir/ -shared copy_test_2_pic.o + +if TLS + +check_PROGRAMS += tls_test +check_PROGRAMS += tls_pic_test +check_PROGRAMS += tls_pie_test +check_PROGRAMS += tls_pie_pic_test +check_PROGRAMS += tls_shared_test +check_PROGRAMS += tls_shared_ie_test +check_PROGRAMS += tls_shared_gd_to_ie_test +tls_test_pic.o: tls_test.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +tls_test_file2_pic.o: tls_test_file2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +tls_test_c_pic.o: tls_test_c.c + $(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $< +tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o -Wl,-z,defs +tls_test_shared2.so: tls_test_file2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_pic.o + +tls_test_pic_ie.o: tls_test.cc + $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $< +tls_test_file2_pic_ie.o: tls_test_file2.cc + $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $< +tls_test_c_pic_ie.o: tls_test_c.c + $(COMPILE) -c -fpic -ftls-model=initial-exec $(TLS_TEST_C_CFLAGS) -o $@ $< +tls_test_ie_shared.so: tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o + +tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h +tls_test_DEPENDENCIES = gcctestdir/ld tls_test_c.o +tls_test_LDFLAGS = -Bgcctestdir/ +tls_test_LDADD = tls_test_c.o -lpthread +tls_test_c.o: tls_test_c.c + $(COMPILE) -c $(TLS_TEST_C_CFLAGS) -o $@ $< + +tls_pic_test_SOURCES = tls_test_main.cc +tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o \ + tls_test_c_pic.o +tls_pic_test_LDFLAGS = -Bgcctestdir/ +tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o \ + -lpthread + +tls_test_main_pie.o: tls_test_main.cc tls_test.h + $(CXXCOMPILE) -c -fpie -o $@ $< +tls_test_pie.o: tls_test.cc tls_test.h + $(CXXCOMPILE) -c -fpie -o $@ $< +tls_test_file2_pie.o: tls_test_file2.cc tls_test.h + $(CXXCOMPILE) -c -fpie -o $@ $< +tls_test_c_pie.o: tls_test_c.c + $(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $< +tls_pie_test: tls_test_main_pie.o tls_test_pie.o tls_test_file2_pie.o \ + tls_test_c_pie.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -pie tls_test_main_pie.o tls_test_pie.o tls_test_file2_pie.o tls_test_c_pie.o -lpthread + +tls_pie_pic_test: tls_test_main_pie.o tls_test_pic.o tls_test_file2_pic.o \ + tls_test_c_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -pie tls_test_main_pie.o tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o -lpthread + +tls_shared_test_SOURCES = tls_test_main.cc +tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so +tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_test_LDADD = tls_test_shared.so -lpthread + +tls_shared_ie_test_SOURCES = tls_test_main.cc +tls_shared_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_ie_shared.so +tls_shared_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_ie_test_LDADD = tls_test_ie_shared.so -lpthread + +tls_shared_gd_to_ie_test_SOURCES = tls_test_main.cc +tls_shared_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o \ + tls_test_c_pic.o tls_test_shared2.so +tls_shared_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_gd_to_ie_test_LDADD = tls_test_pic.o tls_test_c_pic.o \ + tls_test_shared2.so -lpthread + +if TLS_GNU2_DIALECT + +check_PROGRAMS += tls_shared_gnu2_gd_to_ie_test + +tls_test_gnu2.o: tls_test.cc + $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $< +tls_test_file2_gnu2.o: tls_test_file2.cc + $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $< +tls_test_c_gnu2.o: tls_test_c.c + $(COMPILE) -c -fpic -mtls-dialect=gnu2 $(TLS_TEST_C_CFLAGS) -o $@ $< +tls_test_gnu2_shared2.so: tls_test_file2_gnu2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_gnu2.o + +tls_shared_gnu2_gd_to_ie_test_SOURCES = tls_test_main.cc +tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2.o \ + tls_test_c_gnu2.o tls_test_gnu2_shared2.so +tls_shared_gnu2_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_gnu2_gd_to_ie_test_LDADD = tls_test_gnu2.o tls_test_c_gnu2.o \ + tls_test_gnu2_shared2.so -lpthread + +if TLS_DESCRIPTORS + +check_PROGRAMS += tls_shared_gnu2_test + +tls_test_gnu2_shared.so: tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o + +tls_shared_gnu2_test_SOURCES = tls_test_main.cc +tls_shared_gnu2_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2_shared.so +tls_shared_gnu2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_gnu2_test_LDADD = tls_test_gnu2_shared.so -lpthread + +endif TLS_DESCRIPTORS + +endif TLS_GNU2_DIALECT + +if HAVE_STATIC +if STATIC_TLS +check_PROGRAMS += tls_static_test +check_PROGRAMS += tls_static_pic_test + +tls_static_test_SOURCES = $(tls_test_SOURCES) +tls_static_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) +tls_static_test_LDFLAGS = $(tls_test_LDFLAGS) -static +tls_static_test_LDADD = $(tls_test_LDADD) + +tls_static_pic_test_SOURCES = $(tls_pic_test_SOURCES) +tls_static_pic_test_DEPENDENCIES = $(tls_pic_test_DEPENDENCIES) +tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static +tls_static_pic_test_LDADD = $(tls_pic_test_LDADD) +endif +endif + +if FN_PTRS_IN_SO_WITHOUT_PIC +check_PROGRAMS += tls_shared_nonpic_test +tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o tls_test_c.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test.o tls_test_file2.o tls_test_c.o -Wl,-z,notext + +tls_shared_nonpic_test_SOURCES = tls_test_main.cc +tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so +tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread +endif FN_PTRS_IN_SO_WITHOUT_PIC + +endif TLS + +check_PROGRAMS += many_sections_test +many_sections_test_SOURCES = many_sections_test.cc +many_sections_test_DEPENDENCIES = gcctestdir/ld +many_sections_test_LDFLAGS = -Bgcctestdir/ -rdynamic +many_sections_test_LDADD = + +BUILT_SOURCES += many_sections_define.h +MOSTLYCLEANFILES += many_sections_define.h +many_sections_define.h: + (for i in `seq 1 70000`; do \ + echo "int var_$$i __attribute__((section(\"section_$$i\"))) = $$i;"; \ + done) > $@.tmp + mv -f $@.tmp $@ + +BUILT_SOURCES += many_sections_check.h +MOSTLYCLEANFILES += many_sections_check.h +many_sections_check.h: + (for i in `seq 1 1000 70000`; do \ + echo "assert(var_$$i == $$i);"; \ + done) > $@.tmp + mv -f $@.tmp $@ + +check_PROGRAMS += many_sections_r_test +many_sections_r_test.o: many_sections_test.o gcctestdir/ld + gcctestdir/ld -r -o $@ many_sections_test.o +many_sections_r_test: many_sections_r_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ many_sections_r_test.o $(LIBS) + +check_PROGRAMS += initpri1 +initpri1_SOURCES = initpri1.c +initpri1_DEPENDENCIES = gcctestdir/ld +initpri1_LDFLAGS = -Bgcctestdir/ +initpri1_LDADD = + +check_PROGRAMS += initpri2 +initpri2_SOURCES = initpri2.c +initpri2_DEPENDENCIES = gcctestdir/ld +initpri2_LDFLAGS = -Bgcctestdir/ -Wl,--ctors-in-init-array +initpri2_LDADD = + +check_PROGRAMS += initpri3a +initpri3a_SOURCES = initpri3.c +initpri3a_DEPENDENCIES = gcctestdir/ld +initpri3a_LDFLAGS = -Bgcctestdir/ +initpri3a_LDADD = + +# This test fails on targets not using .ctors and .dtors sections (e.g. ARM +# EABI). Given that gcc is moving towards using .init_array in all cases, +# this test is commented out. A better fix would be checking whether gcc +# uses .ctors or .init_array sections in configure. + +# check_PROGRAMS += initpri3b +# initpri3b_SOURCES = initpri3.c +# initpri3b_DEPENDENCIES = gcctestdir/ld +# initpri3b_LDFLAGS = -Bgcctestdir/ -Wl,--no-ctors-in-init-array +# initpri3b_LDADD = + +# Test --detect-odr-violations +check_SCRIPTS += debug_msg.sh + +# Create the data files that debug_msg.sh analyzes. +check_DATA += debug_msg.err +MOSTLYCLEANFILES += debug_msg.err +debug_msg.o: debug_msg.cc + $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc +odr_violation1.o: odr_violation1.cc + $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc +# Compile with different optimization flags to check that rearranged +# instructions don't cause a false positive. +odr_violation2.o: odr_violation2.cc + $(CXXCOMPILE) -O2 -g -c -w -o $@ $(srcdir)/odr_violation2.cc +debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \ + then \ + echo 1>&2 "Link of debug_msg should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + +# Test error message when a vtable is undefined. +check_SCRIPTS += missing_key_func.sh +check_DATA += missing_key_func.err +MOSTLYCLEANFILES += missing_key_func.err +missing_key_func.o: missing_key_func.cc + $(CXXCOMPILE) -O0 -g -c -o $@ $(srcdir)/missing_key_func.cc +missing_key_func.err: missing_key_func.o gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -o missing_key_func missing_key_func.o "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -o missing_key_func missing_key_func.o 2>$@; \ + then \ + echo 1>&2 "Link of missing_key_func should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + +if HAVE_ZLIB + +# Check that --detect-odr-violations works with compressed debug sections. +check_DATA += debug_msg_cdebug.err +MOSTLYCLEANFILES += debug_msg_cdebug.err +debug_msg_cdebug.o: debug_msg.cc gcctestdir/as + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/debug_msg.cc +odr_violation1_cdebug.o: odr_violation1.cc gcctestdir/as + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/odr_violation1.cc +odr_violation2_cdebug.o: odr_violation2.cc gcctestdir/as + $(CXXCOMPILE) -Bgcctestdir/ -O2 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/odr_violation2.cc +debug_msg_cdebug.err: debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_cdebug debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_cdebug debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o 2>$@; \ + then \ + echo 1>&2 "Link of debug_msg_cdebug should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + +endif HAVE_ZLIB + +# See if we can also detect problems when we're linking .so's, not .o's. +check_DATA += debug_msg_so.err +MOSTLYCLEANFILES += debug_msg_so.err +debug_msg.so: debug_msg.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc +odr_violation1.so: odr_violation1.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc +odr_violation2.so: odr_violation2.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O2 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc +debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld + @echo $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@" + @if $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \ + then \ + echo 1>&2 "Link of debug_msg_so should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + +# We also want to make sure we do something reasonable when there's no +# debug info available. For the best test, we use .so's. +check_DATA += debug_msg_ndebug.err +MOSTLYCLEANFILES += debug_msg_ndebug.err +debug_msg_ndebug.so: debug_msg.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc +odr_violation1_ndebug.so: odr_violation1.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc +odr_violation2_ndebug.so: odr_violation2.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O2 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc +debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld + @echo $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so -shared-libgcc -Bdynamic -lstdc++ "2>$@" + @if $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so -shared-libgcc -Bdynamic -lstdc++ 2>$@; \ + then \ + echo 1>&2 "Link of debug_msg_ndebug should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + + +# Similar to --detect-odr-violations: check for undefined symbols in .so's +check_SCRIPTS += undef_symbol.sh +check_DATA += undef_symbol.err +MOSTLYCLEANFILES += undef_symbol.err +undef_symbol.o: undef_symbol.cc + $(CXXCOMPILE) -O0 -g -c -fPIC $< +undef_symbol.so: undef_symbol.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared undef_symbol.o +undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \ + then \ + echo 1>&2 "Link of undef_symbol_test should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + + +# Test -o when emitting to a special file (such as something in /dev). +check_PROGRAMS += flagstest_o_specialfile +flagstest_o_specialfile: flagstest_debug.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< 2>&1 | cat > $@ + chmod a+x $@ + test -s $@ + +if HAVE_ZLIB + +# Test --compress-debug-sections. FIXME: check we actually compress. +check_PROGRAMS += flagstest_compress_debug_sections +flagstest_compress_debug_sections: flagstest_debug.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib + test -s $@ + + +# The specialfile output has a tricky case when we also compress debug +# sections, because it requires output-file resizing. +check_PROGRAMS += flagstest_o_specialfile_and_compress_debug_sections +flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \ + gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< -Wl,--compress-debug-sections=zlib 2>&1 | cat > $@ + chmod a+x $@ + test -s $@ + +endif HAVE_ZLIB + +# Test -TText and -Tdata. +check_PROGRAMS += flagstest_o_ttext_1 +flagstest_o_ttext_1: flagstest_debug.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,-Ttext,0x400000 -Wl,-Tdata,0x800000 + +# This version won't be runnable, because there is no way to put the +# PT_PHDR segment at file offset 0. We just make sure that we can +# build it without error. +check_DATA += flagstest_o_ttext_2 +MOSTLYCLEANFILES += flagstest_o_ttext_2 +flagstest_o_ttext_2: flagstest_debug.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,-Ttext,0x400010 -Wl,-Tdata,0x800010 + +# Test symbol versioning. +check_PROGRAMS += ver_test +ver_test_SOURCES = ver_test_main.cc +ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so +ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so +ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so +ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_2.script -Wl,-R,. ver_test_2.o ver_test_4.so +ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o +ver_test_1.o: ver_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +ver_test_2.o: ver_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +ver_test_3.o: ver_test_3.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +ver_test_4.o: ver_test_4.cc + $(CXXCOMPILE) -c -fpic -o $@ $< + +check_SCRIPTS += ver_test_1.sh +check_DATA += ver_test_1.syms +ver_test_1.syms: ver_test_1.so + $(TEST_READELF) -s $< >$@ 2>/dev/null + +check_PROGRAMS += ver_test_2 +ver_test_2_SOURCES = ver_test_main_2.cc +ver_test_2_DEPENDENCIES = gcctestdir/ld ver_test_4.so ver_test_2.so +ver_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_2_LDADD = ver_test_4.so ver_test_2.so + +check_SCRIPTS += ver_test_2.sh +check_DATA += ver_test_2.syms +ver_test_2.syms: ver_test_2 + $(TEST_READELF) -s $< >$@ 2>/dev/null + +check_SCRIPTS += ver_test_4.sh +check_DATA += ver_test_4.syms +ver_test_4.syms: ver_test_4.so + $(TEST_READELF) -s $< >$@ 2>/dev/null + +ver_test_5.so: ver_test_5.o $(srcdir)/ver_test_5.script ver_test_4.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_5.script ver_test_5.o ver_test_4.so +ver_test_5.o: ver_test_5.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +check_SCRIPTS += ver_test_5.sh +check_DATA += ver_test_5.syms +ver_test_5.syms: ver_test_5.so + $(TEST_READELF) -s $< >$@ 2>/dev/null + +check_PROGRAMS += ver_test_6 +ver_test_6_SOURCES = ver_test_6.c +ver_test_6_DEPENDENCIES = gcctestdir/ld ver_test_2.so +ver_test_6_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_6_LDADD = ver_test_2.so + +ver_test_7.so: ver_test_4.o $(srcdir)/ver_test_4.script ver_test_7.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o ver_test_7.o +ver_test_7.o: ver_test_7.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +check_SCRIPTS += ver_test_7.sh +check_DATA += ver_test_7.syms +ver_test_7.syms: ver_test_7.so + $(TEST_READELF) -s $< >$@ 2>/dev/null + +check_PROGRAMS += ver_test_8 +ver_test_8_SOURCES = two_file_test_main.cc +ver_test_8_DEPENDENCIES = gcctestdir/ld ver_test_8_1.so ver_test_8_2.so +ver_test_8_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_8_LDADD = ver_test_8_1.so ver_test_8_2.so +ver_test_8_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so +ver_test_8_2.so: two_file_test_2_pic.o $(srcdir)/ver_test_8.script gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_8.script two_file_test_2_pic.o + +check_PROGRAMS += ver_test_9 +ver_test_9_SOURCES = ver_test_main.cc +ver_test_9_DEPENDENCIES = gcctestdir/ld ver_test_9.so +ver_test_9_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_9_LDADD = ver_test_9.so +ver_test_9.so: ver_test_9.o ver_test_4.so ver_test_5.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,-R,. ver_test_9.o ver_test_5.so ver_test_4.so +ver_test_9.o: ver_test_9.cc + $(CXXCOMPILE) -c -fpic -o $@ $< + +check_SCRIPTS += ver_test_10.sh +check_DATA += ver_test_10.syms +ver_test_10.syms: ver_test_10.so + $(TEST_READELF) -s $< >$@ 2>/dev/null +ver_test_10.so: gcctestdir/ld ver_test_2.o ver_test_10.script + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_10.script ver_test_2.o + +check_PROGRAMS += ver_test_11 +MOSTLYCLEANFILES += ver_test_11.a +ver_test_11_SOURCES = ver_test_main_2.cc +ver_test_11_DEPENDENCIES = gcctestdir/ld ver_test_11.a +ver_test_11_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_11_LDADD = ver_test_11.a +ver_test_11.a: ver_test_1.o ver_test_2.o ver_test_4.o + $(TEST_AR) rc $@ $^ + +check_PROGRAMS += ver_test_12 +ver_test_12_SOURCES = ver_test_main_2.cc +ver_test_12_DEPENDENCIES = gcctestdir/ld ver_test_12.o +ver_test_12_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_12_LDADD = ver_test_12.o +ver_test_12.o: gcctestdir/ld ver_test_1.o ver_test_2.o ver_test_4.o + gcctestdir/ld -r -o $@ ver_test_1.o ver_test_2.o ver_test_4.o + +check_PROGRAMS += protected_1 +protected_1_SOURCES = \ + protected_main_1.cc protected_main_2.cc protected_main_3.cc +protected_1_DEPENDENCIES = gcctestdir/ld protected_1.so +protected_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +protected_1_LDADD = protected_1.so + +protected_1.so: gcctestdir/ld protected_1_pic.o protected_2_pic.o protected_3_pic.o + $(CXXLINK) -Bgcctestdir/ -shared protected_1_pic.o protected_2_pic.o protected_3_pic.o +protected_1_pic.o: protected_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +protected_2_pic.o: protected_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +protected_3_pic.o: protected_3.cc + $(CXXCOMPILE) -c -fpic -o $@ $< + +check_PROGRAMS += protected_2 +protected_2_SOURCES = protected_main_1.cc protected_3.cc +protected_2_DEPENDENCIES = gcctestdir/ld protected_1.so +protected_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +protected_2_LDADD = protected_1.so + +check_DATA += protected_3.err +MOSTLYCLEANFILES += protected_3.err +protected_4_pic.o: protected_4.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +protected_3.err: protected_4_pic.o gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -shared -o protected_4.so protected_4_pic.o "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -shared -o protected_4.so protected_4_pic.o 2>$@; then \ + echo 1>&2 "Link of protected_4.so should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + +check_PROGRAMS += relro_test +check_SCRIPTS += relro_test.sh +check_DATA += relro_test.stdout +relro_test_SOURCES = relro_test_main.cc +relro_test_DEPENDENCIES = gcctestdir/ld relro_test.so +relro_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +relro_test_LDADD = relro_test.so +relro_test.so: gcctestdir/ld relro_test_pic.o + $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro relro_test_pic.o +relro_test_pic.o: relro_test.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +relro_test.stdout: relro_test.so + $(TEST_READELF) -SlW relro_test.so > relro_test.stdout + +check_PROGRAMS += relro_now_test +relro_now_test_SOURCES = relro_test_main.cc +relro_now_test_DEPENDENCIES = gcctestdir/ld relro_now_test.so +relro_now_test_LDFLAGS = -Bgcctestdir -Wl,-R,. -Wl,-z,relro -Wl,-z,now +relro_now_test_LDADD = relro_now_test.so +relro_now_test.so: gcctestdir/ld relro_test_pic.o + $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -Wl,-z,now relro_test_pic.o + +check_PROGRAMS += relro_strip_test +relro_strip_test_SOURCES = relro_test_main.cc +relro_strip_test_DEPENDENCIES = gcctestdir/ld relro_strip_test.so +relro_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +relro_strip_test_LDADD = relro_strip_test.so +relro_strip_test.so: relro_test.so + $(TEST_STRIP) -o $@ $< + +check_PROGRAMS += relro_script_test +relro_script_test_SOURCES = relro_test_main.cc +relro_script_test_DEPENDENCIES = gcctestdir/ld relro_script_test.so +relro_script_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +relro_script_test_LDADD = relro_script_test.so +relro_script_test.so: gcctestdir/ld relro_script_test.t relro_test_pic.o + $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -Wl,-T,$(srcdir)/relro_script_test.t relro_test_pic.o + +check_PROGRAMS += script_test_1 +script_test_1_SOURCES = script_test_1.cc +script_test_1_DEPENDENCIES = gcctestdir/ld script_test_1.t +script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -Wl,-T,$(srcdir)/script_test_1.t +script_test_1_LDADD = + +check_PROGRAMS += script_test_2 +script_test_2_SOURCES = script_test_2.cc script_test_2a.cc script_test_2b.cc +script_test_2_DEPENDENCIES = gcctestdir/ld script_test_2.t +script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -Wl,-T,$(srcdir)/script_test_2.t +script_test_2_LDADD = + +check_PROGRAMS += justsyms +justsyms_SOURCES = justsyms_1.cc +justsyms_DEPENDENCIES = gcctestdir/ld justsyms_2r.o +justsyms_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_2r.o +justsyms_LDADD = +justsyms_2.o: justsyms_2.cc + $(CXXCOMPILE) -c -o $@ $< +justsyms_2r.o: justsyms_2.o gcctestdir/ld $(srcdir)/justsyms.t + gcctestdir/ld -o $@ -r -T $(srcdir)/justsyms.t justsyms_2.o + +check_PROGRAMS += justsyms_exec +justsyms_exec_SOURCES = justsyms_exec.c +justsyms_exec_DEPENDENCIES = gcctestdir/ld justsyms_lib +justsyms_exec_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_lib +justsyms_exec_LDADD = +MOSTLYCLEANFILES += justsyms_lib +justsyms_lib.o: justsyms_lib.c + $(COMPILE) -c -o $@ $< +justsyms_lib: justsyms_lib.o gcctestdir/ld + gcctestdir/ld -o $@ -Ttext=0x1000200 -Tdata=0x2000000 -e exported_func justsyms_lib.o + +check_PROGRAMS += binary_test +MOSTLYCLEANFILES += binary.txt +binary_test_SOURCES = binary_test.cc +binary_test_DEPENDENCIES = gcctestdir/ld binary.txt +binary_test_LDFLAGS = -Bgcctestdir/ -Wl,--format,binary,binary.txt,--format,elf +binary_test_LDADD = +# Copy the file to the build directory to avoid worrying about the +# full pathname in the generated symbols. +binary.txt: $(srcdir)/binary.in + rm -f $@ + $(LN_S) $< $@ + +check_SCRIPTS += ver_matching_test.sh +check_DATA += ver_matching_test.stdout +MOSTLYCLEANFILES += ver_matching_test.stdout +ver_matching_def.so: ver_matching_def_pic.o $(srcdir)/version_script.map gcctestdir/ld + $(CXXLINK) -O0 -Bgcctestdir/ -shared ver_matching_def_pic.o -Wl,--version-script=$(srcdir)/version_script.map +ver_matching_def_pic.o: ver_matching_def.cc + $(CXXCOMPILE) -O0 -c -fpic -o $@ $< +ver_matching_test.stdout: ver_matching_def.so + $(TEST_OBJDUMP) -T ver_matching_def.so | $(TEST_CXXFILT) > ver_matching_test.stdout + +check_PROGRAMS += script_test_3 +check_SCRIPTS += script_test_3.sh +check_DATA += script_test_3.stdout +MOSTLYCLEANFILES += script_test_3.stdout +script_test_3: basic_test.o gcctestdir/ld script_test_3.t + $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_3.t +script_test_3.stdout: script_test_3 + $(TEST_READELF) -SlW script_test_3 > script_test_3.stdout + +check_PROGRAMS += tls_phdrs_script_test +tls_phdrs_script_test_SOURCES = $(tls_test_SOURCES) +tls_phdrs_script_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) $(srcdir)/script_test_3.t +tls_phdrs_script_test_LDFLAGS = $(tls_test_LDFLAGS) -Wl,-T,$(srcdir)/script_test_3.t +tls_phdrs_script_test_LDADD = $(tls_test_LDADD) + +check_SCRIPTS += script_test_4.sh +check_DATA += script_test_4.stdout +MOSTLYCLEANFILES += script_test_4 +script_test_4: basic_test.o gcctestdir/ld $(srcdir)/script_test_4.t + $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_4.t +script_test_4.stdout: script_test_4 + $(TEST_READELF) -SlW script_test_4 > script_test_4.stdout + +check_PROGRAMS += tls_script_test +tls_script_test_SOURCES = $(tls_test_SOURCES) +tls_script_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) $(srcdir)/script_test_4.t +tls_script_test_LDFLAGS = $(tls_test_LDFLAGS) -Wl,-T,$(srcdir)/script_test_4.t +tls_script_test_LDADD = $(tls_test_LDADD) + +check_SCRIPTS += script_test_5.sh +check_DATA += script_test_5.stdout +MOSTLYCLEANFILES += script_test_5 +script_test_5: script_test_5.o gcctestdir/ld $(srcdir)/script_test_5.t + $(CXXLINK) -Bgcctestdir/ script_test_5.o -Wl,-T,$(srcdir)/script_test_5.t +script_test_5.stdout: script_test_5 + $(TEST_READELF) -SW script_test_5 > script_test_5.stdout + +check_SCRIPTS += script_test_6.sh +check_DATA += script_test_6.stdout +MOSTLYCLEANFILES += script_test_6 +script_test_6: basic_test.o gcctestdir/ld $(srcdir)/script_test_6.t + $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_6.t \ + -Wl,-Ttext=0x10001000 -Wl,-Tdata=0x10200000 -Wl,-Tbss=0x10400000 +script_test_6.stdout: script_test_6 + $(TEST_READELF) -SlW script_test_6 > script_test_6.stdout + +check_SCRIPTS += script_test_7.sh +check_DATA += script_test_7.stdout +MOSTLYCLEANFILES += script_test_7 +script_test_7: basic_test.o gcctestdir/ld $(srcdir)/script_test_7.t + $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_7.t +script_test_7.stdout: script_test_7 + $(TEST_READELF) -SlW script_test_7 > script_test_7.stdout + +check_SCRIPTS += script_test_8.sh +check_DATA += script_test_8.stdout +MOSTLYCLEANFILES += script_test_8 +script_test_8: basic_test.o gcctestdir/ld $(srcdir)/script_test_7.t + $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_7.t \ + -Wl,-Ttext=0x20001000 -Wl,-Tdata=0x20200000 -Wl,-Tbss=0x20400000 +script_test_8.stdout: script_test_8 + $(TEST_READELF) -SlW script_test_8 > script_test_8.stdout + +check_SCRIPTS += script_test_9.sh +check_DATA += script_test_9.stdout +MOSTLYCLEANFILES += script_test_9 +script_test_9.o: script_test_9.cc + $(CXXCOMPILE) -O0 -c -o $@ $< +script_test_9: gcctestdir/ld $(srcdir)/script_test_9.t script_test_9.o + $(CXXLINK) -Bgcctestdir/ script_test_9.o -Wl,-T,$(srcdir)/script_test_9.t +script_test_9.stdout: script_test_9 + $(TEST_READELF) -lW script_test_9 > script_test_9.stdout + +# Test scripts with a relocatable link. +# The -g option is necessary to trigger a bug where a section +# declared in a script file is assigned a non-zero starting address. +check_PROGRAMS += script_test_11 +script_test_11: gcctestdir/ld script_test_11_r.o + $(LINK) -Bgcctestdir/ script_test_11_r.o +script_test_11_r.o: gcctestdir/ld $(srcdir)/script_test_11.t script_test_11.o + gcctestdir/ld -r -o $@ -T $(srcdir)/script_test_11.t script_test_11.o +script_test_11.o: script_test_11.c + $(COMPILE) -c -g -o $@ $< + +# Test --dynamic-list, --dynamic-list-data, --dynamic-list-cpp-new, +# and --dynamic-list-cpp-typeinfo + +check_SCRIPTS += dynamic_list.sh +check_DATA += dynamic_list.stdout +MOSTLYCLEANFILES += dynamic_list dynamic_list.stdout +dynamic_list: basic_test.o gcctestdir/ld $(srcdir)/dynamic_list.t + $(CXXLINK) -Bgcctestdir/ basic_test.o \ + -Wl,--dynamic-list $(srcdir)/dynamic_list.t \ + -Wl,--dynamic-list-data \ + -Wl,--dynamic-list-cpp-new \ + -Wl,--dynamic-list-cpp-typeinfo +dynamic_list.stdout: dynamic_list + $(TEST_READELF) -W --dyn-syms dynamic_list > dynamic_list.stdout + +check_PROGRAMS += thin_archive_test_1 +MOSTLYCLEANFILES += libthin1.a libthin3.a libthinall.a \ + alt/thin_archive_test_2.o alt/thin_archive_test_4.o \ + alt/libthin2.a alt/libthin4.a +thin_archive_test_1_SOURCES = thin_archive_main.cc +thin_archive_test_1_DEPENDENCIES = gcctestdir/ld libthin1.a alt/libthin2.a +thin_archive_test_1_LDFLAGS = -Bgcctestdir/ -Lalt +thin_archive_test_1_LDADD = libthin1.a -lthin2 + +check_PROGRAMS += thin_archive_test_2 +thin_archive_test_2_SOURCES = thin_archive_main.cc +thin_archive_test_2_DEPENDENCIES = gcctestdir/ld libthinall.a +thin_archive_test_2_LDFLAGS = -Bgcctestdir/ -L. +thin_archive_test_2_LDADD = -lthinall + +libthin1.a: thin_archive_test_1.o alt/thin_archive_test_2.o + rm -f $@ + $(TEST_AR) crT $@ $^ +alt/libthin2.a: thin_archive_test_3.o alt/thin_archive_test_4.o + rm -f $@ + $(TEST_AR) crT $@ $^ +libthin3.a: thin_archive_test_1.o alt/thin_archive_test_4.o + rm -f $@ + $(TEST_AR) crT $@ $^ +alt/libthin4.a: alt/thin_archive_test_2.o thin_archive_test_3.o + rm -f $@ + $(TEST_AR) crT $@ $^ +libthinall.a: libthin3.a alt/libthin4.a + rm -f $@ + $(TEST_AR) crT $@ $^ +alt/thin_archive_test_2.o: thin_archive_test_2.cc + test -d alt || mkdir -p alt + $(CXXCOMPILE) -c -o $@ $< +alt/thin_archive_test_4.o: thin_archive_test_4.cc + test -d alt || mkdir -p alt + $(CXXCOMPILE) -c -o $@ $< + +if PLUGINS + +check_PROGRAMS += plugin_test_1 +check_SCRIPTS += plugin_test_1.sh +check_DATA += plugin_test_1.err +MOSTLYCLEANFILES += plugin_test_1.err +plugin_test_1: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_1.err +plugin_test_1.err: plugin_test_1 + @touch plugin_test_1.err + +check_PROGRAMS += plugin_test_2 +check_SCRIPTS += plugin_test_2.sh +check_DATA += plugin_test_2.err +MOSTLYCLEANFILES += plugin_test_2.err +plugin_test_2: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,-R,.,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so 2>plugin_test_2.err +plugin_test_2.err: plugin_test_2 + @touch plugin_test_2.err + +check_PROGRAMS += plugin_test_3 +check_SCRIPTS += plugin_test_3.sh +check_DATA += plugin_test_3.err +MOSTLYCLEANFILES += plugin_test_3.err +plugin_test_3: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--export-dynamic -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_3.err +plugin_test_3.err: plugin_test_3 + @touch plugin_test_3.err + +check_PROGRAMS += plugin_test_4 +check_SCRIPTS += plugin_test_4.sh +check_DATA += plugin_test_4.err +MOSTLYCLEANFILES += plugin_test_4.a plugin_test_4.err +plugin_test_4: two_file_test_main.o plugin_test_4.a gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o -Wl,--whole-archive,plugin_test_4.a,--no-whole-archive 2>plugin_test_4.err +plugin_test_4.err: plugin_test_4 + @touch plugin_test_4.err + +plugin_test_4.a: two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms + $(TEST_AR) cr $@ $^ + +check_PROGRAMS += plugin_test_5 +plugin_test_5: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms unused.syms gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv",--gc-sections two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms unused.syms + +check_PROGRAMS += plugin_test_6 +check_SCRIPTS += plugin_test_6.sh +check_DATA += plugin_test_6.err +MOSTLYCLEANFILES += plugin_test_6.err +plugin_test_6: plugin_common_test_1.syms plugin_common_test_2.syms gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so" plugin_common_test_1.syms plugin_common_test_2.syms 2>plugin_test_6.err +plugin_test_6.err: plugin_test_6 + @touch plugin_test_6.err + +check_PROGRAMS += plugin_test_7 +check_SCRIPTS += plugin_test_7.sh +check_DATA += plugin_test_7.err plugin_test_7.syms +MOSTLYCLEANFILES += plugin_test_7.err +plugin_test_7: plugin_test_7_1.o plugin_test_7_1.syms plugin_test_7_2.o gcctestdir/ld plugin_test.so + $(LINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--gc-sections,--print-gc-sections plugin_test_7_1.syms plugin_test_7_2.o 2>plugin_test_7.err +plugin_test_7.syms: plugin_test_7 + $(TEST_READELF) -sW $< >$@ 2>/dev/null +plugin_test_7_1.o: plugin_test_7_1.c + $(COMPILE) -DLTO -O0 -c -ffunction-sections -fdata-sections -o $@ $< +plugin_test_7_1_orig.o: plugin_test_7_1.c + $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $< +plugin_test_7_1.syms: plugin_test_7_1_orig.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +plugin_test_7_2.o: plugin_test_7_2.c + $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $< +plugin_test_7.err: plugin_test_7 + +# Test plugins with -r. +check_PROGRAMS += plugin_test_8 +plugin_test_8.o: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.o ../ld-new plugin_test.so + ../ld-new -r -o $@ --no-demangle --plugin "./plugin_test.so" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.o +plugin_test_8: plugin_test_8.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle plugin_test_8.o + +# Test that symbols known in the IR file but not in the replacement file +# produce an unresolved symbol error. +check_DATA += plugin_test_9.err +MOSTLYCLEANFILES += plugin_test_9.err +plugin_test_9.err: two_file_test_main.o two_file_test_1c.syms two_file_test_2.syms gcctestdir/ld plugin_test.so + @echo $(CXXLINK) -Bgcctestdir/ -o plugin_test_9 -Wl,--no-demangle,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1c.syms two_file_test_2.syms "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -o plugin_test_9 -Wl,--no-demangle,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1c.syms two_file_test_2.syms 2>$@; then \ + echo 1>&2 "Link of plugin_test_9 should have failed"; \ + rm -f $@; \ + exit 1; \ + fi +# Make a .syms file that claims to define the symbol _Z4t16av. +two_file_test_1c.syms: two_file_test_1.syms two_file_test_1c.o + cp two_file_test_1.syms $@.tmp + grep "_Z4t16av" two_file_test_1b.syms >> $@.tmp + mv -f $@.tmp $@ +# Make a copy of two_file_test_1.o, which does not define the symbol _Z4t16av. +MOSTLYCLEANFILES += two_file_test_1c.o +two_file_test_1c.o: two_file_test_1.o + cp two_file_test_1.o $@ + +plugin_test.so: plugin_test.o + $(LINK) -Bgcctestdir/ -shared plugin_test.o +plugin_test.o: plugin_test.c + $(COMPILE) -O0 -c -fpic -o $@ $< + +two_file_test_main.syms: two_file_test_main.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +two_file_test_1.syms: two_file_test_1.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +two_file_test_1b.syms: two_file_test_1b.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +two_file_test_2.syms: two_file_test_2.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +plugin_common_test_1.syms: plugin_common_test_1.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +plugin_common_test_2.syms: plugin_common_test_2.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null + +empty.syms: + @echo "" >$@ + @echo "Symbol table" >>$@ + +if TLS + +check_PROGRAMS += plugin_test_tls +check_SCRIPTS += plugin_test_tls.sh +check_DATA += plugin_test_tls.err +MOSTLYCLEANFILES += plugin_test_tls.err +plugin_test_tls: two_file_test_tls.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2_tls.syms gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_tls.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2_tls.syms 2>plugin_test_tls.err +plugin_test_tls.err: plugin_test_tls + @touch plugin_test_tls.err + +two_file_test_2_tls.syms: two_file_test_2_tls.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null + +endif TLS + +MOSTLYCLEANFILES += unused.c +unused.syms: unused.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null + @echo " 1: 00000000 4 FUNC GLOBAL DEFAULT 1 UNUSED" >>$@ +unused.o: unused.c + $(COMPILE) -c -o $@ $< +unused.c: + @cp /dev/null $@ + +check_SCRIPTS += plugin_final_layout.sh +check_DATA += plugin_final_layout.stdout plugin_final_layout_readelf.stdout +MOSTLYCLEANFILES += plugin_final_layout +plugin_final_layout.o: plugin_final_layout.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $< +plugin_final_layout: plugin_final_layout.o plugin_section_order.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_section_order.so" plugin_final_layout.o +plugin_final_layout.stdout: plugin_final_layout + $(TEST_NM) -n --synthetic plugin_final_layout > plugin_final_layout.stdout +plugin_final_layout_readelf.stdout: plugin_final_layout + $(TEST_READELF) -Wl plugin_final_layout > plugin_final_layout_readelf.stdout + +plugin_section_order.so: plugin_section_order.o + $(LINK) -Bgcctestdir/ -shared plugin_section_order.o +plugin_section_order.o: plugin_section_order.c + $(COMPILE) -O0 -c -fpic -o $@ $< + +endif PLUGINS + +check_PROGRAMS += exclude_libs_test +check_SCRIPTS += exclude_libs_test.sh +check_DATA += exclude_libs_test.syms +MOSTLYCLEANFILES += exclude_libs_test.syms libexclude_libs_test_1.a \ + libexclude_libs_test_2.a alt/libexclude_libs_test_3.a +exclude_libs_test_SOURCES = exclude_libs_test.c +exclude_libs_test_DEPENDENCIES = gcctestdir/ld libexclude_libs_test_1.a \ + libexclude_libs_test_2.a alt/libexclude_libs_test_3.a +exclude_libs_test_LDFLAGS = -Bgcctestdir/ -L. -Lalt \ + -Wl,--exclude-libs,dummy:libexclude_libs_test_1 \ + -Wl,--exclude-libs,libexclude_libs_test_3 +exclude_libs_test_LDADD = -lexclude_libs_test_1 -lexclude_libs_test_2 \ + alt/libexclude_libs_test_3.a +exclude_libs_test.syms: exclude_libs_test + $(TEST_READELF) -sW $< >$@ 2>/dev/null +libexclude_libs_test_1.a: exclude_libs_test_1.o + $(TEST_AR) rc $@ $^ +libexclude_libs_test_2.a: exclude_libs_test_2.o + $(TEST_AR) rc $@ $^ +alt/libexclude_libs_test_3.a: exclude_libs_test_3.o + test -d alt || mkdir -p alt + $(TEST_AR) rc $@ $^ + +check_PROGRAMS += local_labels_test +local_labels_test.o: ver_test_6.c + $(COMPILE) -g -c -Wa,-L -o $@ $< +local_labels_test: local_labels_test.o + $(LINK) -Bgcctestdir/ local_labels_test.o + +check_PROGRAMS += discard_locals_test +check_SCRIPTS += discard_locals_test.sh +check_DATA += discard_locals_test.syms \ + discard_locals_relocatable_test1.syms \ + discard_locals_relocatable_test2.syms +MOSTLYCLEANFILES += discard_locals_test.syms \ + discard_locals_relocatable_test1.syms \ + discard_locals_relocatable_test2.syms \ + discard_locals_relocatable_test1.out \ + discard_locals_relocatable_test2.out +discard_locals_test_SOURCES = discard_locals_test.c +discard_locals_test_LDFLAGS = -Bgcctestdir/ -Wl,--discard-locals +discard_locals_test.syms: discard_locals_test + $(TEST_READELF) -sW $< >$@ 2>/dev/null +# '-Wa,-L' is required to preserve the local label used for testing. +discard_locals_test.o: discard_locals_test.c + $(COMPILE) -c -Wa,-L -o $@ $< + +discard_locals_relocatable_test1.syms: discard_locals_relocatable_test1.out + $(TEST_READELF) -sW $< >$@ 2>/dev/null +discard_locals_relocatable_test.o: discard_locals_relocatable_test.c + $(COMPILE) -c -Wa,-L -fPIC -o $@ $< +discard_locals_relocatable_test1.out: discard_locals_relocatable_test.o ../ld-new + ../ld-new --discard-locals -relocatable -o $@ $< + +discard_locals_relocatable_test2.syms: discard_locals_relocatable_test2.out + $(TEST_READELF) -sW $< >$@ 2>/dev/null +discard_locals_relocatable_test2.out: discard_locals_relocatable_test.o ../ld-new + ../ld-new --discard-all -relocatable -o $@ $< + +if MCMODEL_MEDIUM +check_PROGRAMS += large +large_SOURCES = large.c +large_CFLAGS = -mcmodel=medium +large_DEPENDENCIES = gcctestdir/ld +large_LDFLAGS = -Bgcctestdir/ +large_LDADD = +endif MCMODEL_MEDIUM + +# Test that hidden and internal symbols in the main program cannot be +# referenced by a shared library. +check_SCRIPTS += hidden_test.sh +check_DATA += hidden_test.err +MOSTLYCLEANFILES += hidden_test hidden_test.err +libhidden.so: hidden_test_1.c gcctestdir/ld + $(COMPILE) -Bgcctestdir/ -g -shared -fPIC -w -o $@ $(srcdir)/hidden_test_1.c +hidden_test: hidden_test_main.o libhidden.so gcctestdir/ld + $(LINK) -Bgcctestdir/ -Wl,-R,. hidden_test_main.o libhidden.so 2>hidden_test.err +hidden_test.err: hidden_test + @touch hidden_test.err + +# Test -retain-symbols-file. +check_SCRIPTS += retain_symbols_file_test.sh +check_DATA += retain_symbols_file_test.stdout +MOSTLYCLEANFILES += retain_symbols_file_test retain_symbols_file_test.in \ + retain_symbols_file_test.stdout +retain_symbols_file_test.so: basic_pic_test.o gcctestdir/ld + echo 'main' > retain_symbols_file_test.in + echo 't1' >> retain_symbols_file_test.in + echo '_ZN4t16bC1Ev' >> retain_symbols_file_test.in + echo '_ZNK4t20a3getEv' >> retain_symbols_file_test.in + echo '_Z3t18v' >> retain_symbols_file_test.in + echo '__tcf_0' >> retain_symbols_file_test.in + $(CXXLINK) -Bgcctestdir/ -shared -Wl,-retain-symbols-file,retain_symbols_file_test.in basic_pic_test.o +retain_symbols_file_test.stdout: retain_symbols_file_test.so + $(TEST_NM) -C retain_symbols_file_test.so > $@ + + +# Test that if the output file already exists and is empty, +# it will get execute permission. +check_PROGRAMS += permission_test +permission_test: basic_test.o gcctestdir/ld + umask 022; \ + rm -f $@; \ + touch $@; \ + chmod 600 $@; \ + $(CXXLINK) -Bgcctestdir/ basic_test.o + +# Check -l:foo.a +check_PROGRAMS += searched_file_test +MOSTLYCLEANFILES += searched_file_test searched_file_test_lib.o \ + alt/searched_file_test_lib.a +searched_file_test_SOURCES = searched_file_test.cc +searched_file_test_DEPENDENCIES = alt/searched_file_test_lib.a +searched_file_test_LDFLAGS = -Bgcctestdir/ -Lalt +searched_file_test_LDADD = -l:searched_file_test_lib.a +searched_file_test_lib.o: searched_file_test_lib.cc + $(CXXCOMPILE) -c -o $@ $< +alt/searched_file_test_lib.a: searched_file_test_lib.o + test -d alt || mkdir -p alt + $(TEST_AR) rc $@ $^ + +# Test that no .gnu.version sections are created when +# symbol versioning is not used. +check_SCRIPTS += no_version_test.sh +check_DATA += no_version_test.stdout +MOSTLYCLEANFILES += libno_version_test.so no_version_test.stdout +# We invoke the linker directly since gcc may include additional objects that +# uses symbol versioning. +libno_version_test.so: no_version_test.o gcctestdir/ld + gcctestdir/ld -shared -o $@ no_version_test.o +no_version_test.o: no_version_test.c + $(COMPILE) -o $@ -c -fPIC $< +no_version_test.stdout: libno_version_test.so + $(TEST_OBJDUMP) -h $< > $@ + +# Test STT_GNU_IFUNC symbols. +if IFUNC + +ifuncmod1.o: ifuncmod1.c + $(COMPILE) -c -fPIC -o $@ $< +ifuncmod1.so: ifuncmod1.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -shared ifuncmod1.o + +ifuncdep1.o: ifuncmod1.c + $(COMPILE) -c -o $@ $< + +ifuncmain1pic.o: ifuncmain1.c + $(COMPILE) -c -fPIC -o $@ $< +ifuncmain1pie.o: ifuncmain1.c + $(COMPILE) -c -fPIE -o $@ $< + +if HAVE_STATIC +if IFUNC_STATIC +check_PROGRAMS += ifuncmain1static +ifuncmain1static_SOURCES = ifuncmain1.c +ifuncmain1static_DEPENDENCIES = gcctestdir/ld ifuncdep1.o +ifuncmain1static_LDFLAGS = -Bgcctestdir/ -static +ifuncmain1static_LDADD = ifuncdep1.o + +check_PROGRAMS += ifuncmain1picstatic +ifuncmain1picstatic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -static ifuncmain1pic.o ifuncmod1.o +endif +endif + +check_PROGRAMS += ifuncmain1 +ifuncmain1_SOURCES = ifuncmain1.c +ifuncmain1_DEPENDENCIES = gcctestdir/ld ifuncmod1.so +ifuncmain1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ifuncmain1_LDADD = ifuncmod1.so + +check_PROGRAMS += ifuncmain1pic +ifuncmain1pic: ifuncmain1pic.o ifuncmod1.so gcctestdir/ld + $(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.so -Wl,-R,. + +check_PROGRAMS += ifuncmain1vis +ifuncmain1vis_SOURCES = ifuncmain1vis.c +ifuncmain1vis_DEPENDENCIES = gcctestdir/ld ifuncmod1.so +ifuncmain1vis_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ifuncmain1vis_LDADD = ifuncmod1.so + +check_PROGRAMS += ifuncmain1vispic +ifuncmain1vispic.o: ifuncmain1vis.c + $(COMPILE) -c -fPIC -o $@ $< +ifuncmain1vispic: ifuncmain1vispic.o ifuncmod1.so gcctestdir/ld + $(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.so -Wl,-R,. + +check_PROGRAMS += ifuncmain1staticpic +ifuncmain1staticpic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld + $(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.o + +check_PROGRAMS += ifuncmain1pie +ifuncmain1pie: ifuncmain1pie.o ifuncmod1.so gcctestdir/ld + $(LINK) -Bgcctestdir/ -pie ifuncmain1pie.o ifuncmod1.so -Wl,-R,. + +check_PROGRAMS += ifuncmain1vispie +ifuncmain1vispie.o: ifuncmain1vis.c + $(COMPILE) -c -fPIE -o $@ $< +ifuncmain1vispie: ifuncmain1vispie.o ifuncmod1.so gcctestdir/ld + $(LINK) -Bgcctestdir/ -pie ifuncmain1vispie.o ifuncmod1.so -Wl,-R,. + +check_PROGRAMS += ifuncmain1staticpie +ifuncmain1staticpie: ifuncmain1pie.o ifuncmod1.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -pie ifuncmain1pie.o ifuncmod1.o + +ifuncmain2pic.o: ifuncmain2.c + $(COMPILE) -c -fPIC -o $@ $< + +ifuncdep2pic.o: ifuncdep2.c + $(COMPILE) -c -fPIC -o $@ $< + +if HAVE_STATIC +if IFUNC_STATIC +check_PROGRAMS += ifuncmain2static +ifuncmain2static_SOURCES = ifuncmain2.c ifuncdep2.c +ifuncmain2static_DEPENDENCIES = gcctestdir/ld +ifuncmain2static_LDFLAGS = -Bgcctestdir/ -static +ifuncmain2static_LDADD = + +check_PROGRAMS += ifuncmain2picstatic +ifuncmain2picstatic: ifuncmain2pic.o ifuncdep2pic.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -static ifuncmain2pic.o ifuncdep2pic.o +endif +endif + +check_PROGRAMS += ifuncmain2 +ifuncmain2_SOURCES = ifuncmain2.c ifuncdep2.c +ifuncmain2_DEPENDENCIES = gcctestdir/ld +ifuncmain2_LDFLAGS = -Bgcctestdir/ +ifuncmain2_LDADD = + +check_PROGRAMS += ifuncmain2pic +ifuncmain2pic: ifuncmain2pic.o ifuncdep2pic.o gcctestdir/ld + $(LINK) -Bgcctestdir/ ifuncmain2pic.o ifuncdep2pic.o + +ifuncmod3.o: ifuncmod3.c + $(COMPILE) -c -fPIC -o $@ $< +ifuncmod3.so: ifuncmod3.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -shared ifuncmod3.o + +check_PROGRAMS += ifuncmain3 +ifuncmain3_SOURCES = ifuncmain3.c +ifuncmain3_DEPENDENCIES = gcctestdir/ld ifuncmod3.so +ifuncmain3_LDFLAGS = -Bgcctestdir/ -Wl,--export-dynamic -Wl,-R,. +ifuncmain3_LDADD = -ldl + +ifuncmain4pic.o: ifuncmain4.c + $(COMPILE) -c -fPIC -o $@ $< + +if HAVE_STATIC +if IFUNC_STATIC +check_PROGRAMS += ifuncmain4static +ifuncmain4static_SOURCES = ifuncmain4.c +ifuncmain4static_DEPENDENCIES = gcctestdir/ld +ifuncmain4static_LDFLAGS = -Bgcctestdir/ -static +ifuncmain4static_LDADD = + +check_PROGRAMS += ifuncmain4picstatic +ifuncmain4picstatic: ifuncmain4pic.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -static ifuncmain4pic.o +endif +endif + +check_PROGRAMS += ifuncmain4 +ifuncmain4_SOURCES = ifuncmain4.c +ifuncmain4_DEPENDENCIES = gcctestdir/ld +ifuncmain4_LDFLAGS = -Bgcctestdir/ +ifuncmain4_LDADD = + +ifuncmain5pic.o: ifuncmain5.c + $(COMPILE) -c -fPIC -o $@ $< + +ifuncmain5pie.o: ifuncmain5.c + $(COMPILE) -c -fPIE -o $@ $< + +ifuncmod5.o: ifuncmod5.c + $(COMPILE) -c -fPIC -o $@ $< +ifuncmod5.so: ifuncmod5.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -shared ifuncmod5.o + +ifuncdep5.o: ifuncmod5.c + $(COMPILE) -c -o $@ $< + +if HAVE_STATIC +if IFUNC_STATIC +check_PROGRAMS += ifuncmain5static +ifuncmain5static_SOURCES = ifuncmain5.c +ifuncmain5static_DEPENDENCIES = gcctestdir/ld ifuncdep5.o +ifuncmain5static_LDFLAGS = -Bgcctestdir/ -static +ifuncmain5static_LDADD = ifuncdep5.o + +check_PROGRAMS += ifuncmain5picstatic +ifuncmain5picstatic: ifuncmain5pic.o ifuncmod5.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -static ifuncmain5pic.o ifuncmod5.o +endif +endif + +check_PROGRAMS += ifuncmain5 +ifuncmain5_SOURCES = ifuncmain5.c +ifuncmain5_DEPENDENCIES = gcctestdir/ld ifuncmod5.so +ifuncmain5_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ifuncmain5_LDADD = ifuncmod5.so + +check_PROGRAMS += ifuncmain5pic +ifuncmain5pic: ifuncmain5pic.o ifuncmod5.so gcctestdir/ld + $(LINK) -Bgcctestdir/ ifuncmain5pic.o ifuncmod5.so -Wl,-R,. + +check_PROGRAMS += ifuncmain5staticpic +ifuncmain5staticpic: ifuncmain5pic.o ifuncmod5.o gcctestdir/ld + $(LINK) -Bgcctestdir/ ifuncmain5pic.o ifuncmod5.o + +check_PROGRAMS += ifuncmain5pie +ifuncmain5pie: ifuncmain5pie.o ifuncmod5.so gcctestdir/ld + $(LINK) -Bgcctestdir/ -pie ifuncmain5pie.o ifuncmod5.so -Wl,-R,. + +ifuncmain6pie.o: ifuncmain6pie.c + $(COMPILE) -c -fPIE -o $@ $< + +ifuncmod6.o: ifuncmod6.c + $(COMPILE) -c -fPIC -o $@ $< +ifuncmod6.so: ifuncmod6.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -shared ifuncmod6.o + +check_PROGRAMS += ifuncmain6pie +ifuncmain6pie: ifuncmain6pie.o ifuncmod6.so gcctestdir/ld + $(LINK) -Bgcctestdir/ -pie ifuncmain6pie.o ifuncmod6.so -Wl,-R,. + +ifuncmain7pic.o: ifuncmain7.c + $(COMPILE) -c -fPIC -o $@ $< + +ifuncmain7pie.o: ifuncmain7.c + $(COMPILE) -c -fPIE -o $@ $< + +if HAVE_STATIC +if IFUNC_STATIC +check_PROGRAMS += ifuncmain7static +ifuncmain7static_SOURCES = ifuncmain7.c +ifuncmain7static_DEPENDENCIES = gcctestdir/ld +ifuncmain7static_LDFLAGS = -Bgcctestdir/ -static +ifuncmain7static_LDADD = + +check_PROGRAMS += ifuncmain7picstatic +ifuncmain7picstatic: ifuncmain7pic.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -static ifuncmain7pic.o +endif +endif + +check_PROGRAMS += ifuncmain7 +ifuncmain7_SOURCES = ifuncmain7.c +ifuncmain7_DEPENDENCIES = gcctestdir/ld +ifuncmain7_LDFLAGS = -Bgcctestdir/ +ifuncmain7_LDADD = + +check_PROGRAMS += ifuncmain7pic +ifuncmain7pic: ifuncmain7pic.o gcctestdir/ld + $(LINK) -Bgcctestdir/ ifuncmain7pic.o + +check_PROGRAMS += ifuncmain7pie +ifuncmain7pie: ifuncmain7pie.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -pie ifuncmain7pie.o + +check_PROGRAMS += ifuncvar +ifuncvar1_pic.o: ifuncvar1.c + $(COMPILE) -c -fPIC -o $@ $< +ifuncvar2_pic.o: ifuncvar2.c + $(COMPILE) -c -fPIC -o $@ $< +ifuncvar.so: ifuncvar1_pic.o ifuncvar2_pic.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -shared ifuncvar1_pic.o ifuncvar2_pic.o +ifuncvar_SOURCES = ifuncvar3.c +ifuncvar_DEPENDENCIES = gcctestdir/ld ifuncvar.so +ifuncvar_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ifuncvar_LDADD = ifuncvar.so + +endif IFUNC + +# Test that strong reference to a weak symbol in a DSO remains strong. +check_SCRIPTS += strong_ref_weak_def.sh +check_DATA += strong_ref_weak_def.stdout +MOSTLYCLEANFILES += strong_ref_weak_def_1.so strong_ref_weak_def_2.so \ + strong_ref_weak_def.stdout +strong_ref_weak_def_2.o: strong_ref_weak_def_2.c + $(COMPILE) -o $@ -c -fPIC $< +strong_ref_weak_def_2.so: strong_ref_weak_def_2.o gcctestdir/ld + gcctestdir/ld -shared -o $@ strong_ref_weak_def_2.o +strong_ref_weak_def_1.o: strong_ref_weak_def_1.c + $(COMPILE) -o $@ -c -fPIC $< +strong_ref_weak_def_1.so: strong_ref_weak_def_1.o strong_ref_weak_def_2.so \ + gcctestdir/ld + gcctestdir/ld -shared -o $@ strong_ref_weak_def_1.o \ + strong_ref_weak_def_2.so +strong_ref_weak_def.stdout: strong_ref_weak_def_1.so + $(TEST_READELF) -sWD $< > $@ + +# Test that a strong weak reference remains strong if there is another +# weak reference in a DSO. +check_SCRIPTS += dyn_weak_ref.sh +check_DATA += dyn_weak_ref.stdout +MOSTLYCLEANFILES += dyn_weak_ref_1.so dyn_weak_ref_2.so \ + dyn_weak_ref.stdout +dyn_weak_ref_2.o: dyn_weak_ref_2.c + $(COMPILE) -o $@ -c -fPIC $< +dyn_weak_ref_2.so: dyn_weak_ref_2.o gcctestdir/ld + gcctestdir/ld -shared -o $@ dyn_weak_ref_2.o +dyn_weak_ref_1.o: dyn_weak_ref_1.c + $(COMPILE) -o $@ -c -fPIC $< +# We intentionally put dyn_weak_ref_2.so in front of dyn_weak_ref_1.o +# so that the weak ref there goes to gold's symbol table first. +dyn_weak_ref_1.so: dyn_weak_ref_1.o dyn_weak_ref_2.so gcctestdir/ld + gcctestdir/ld -shared -o $@ dyn_weak_ref_2.so dyn_weak_ref_1.o +dyn_weak_ref.stdout: dyn_weak_ref_1.so + $(TEST_READELF) -sWD $< > $@ + + +# Test that --start-lib and --end-lib function correctly. +check_PROGRAMS += start_lib_test +MOSTLYCLEANFILES += libstart_lib_test.a +start_lib_test: start_lib_test_main.o libstart_lib_test.a start_lib_test_2.o start_lib_test_3.o \ + gcctestdir/ld + $(LINK) -Bgcctestdir/ -o $@ start_lib_test_main.o -L. -lstart_lib_test \ + -Wl,--start-lib start_lib_test_2.o start_lib_test_3.o -Wl,--end-lib +libstart_lib_test.a: start_lib_test_1.o + $(TEST_AR) rc $@ $^ + +# Test that MEMORY region support works. +check_SCRIPTS += memory_test.sh +check_DATA += memory_test.stdout +MOSTLYCLEANFILES += memory_test.stdout memory_test memory_test.o +memory_test.o: memory_test.s + $(COMPILE) -o $@ -c $< +memory_test: memory_test.o gcctestdir/ld $(srcdir)/memory_test.t + $(LINK) -Bgcctestdir/ -nostartfiles -nostdlib -z max-page-size=0x1000 -z common-page-size=0x1000 -Wl,-T,$(srcdir)/memory_test.t -o $@ memory_test.o +memory_test.stdout: memory_test + $(TEST_READELF) -lWS $< > $@ + +if HAVE_PUBNAMES + +# Test that --gdb-index functions correctly without gcc-generated pubnames. +check_SCRIPTS += gdb_index_test_1.sh +check_DATA += gdb_index_test_1.stdout +MOSTLYCLEANFILES += gdb_index_test_1.stdout gdb_index_test_1 +gdb_index_test.o: gdb_index_test.cc + $(CXXCOMPILE) -O0 -g -gno-pubnames -c -o $@ $< +gdb_index_test_1: gdb_index_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $< +gdb_index_test_1.stdout: gdb_index_test_1 + $(TEST_READELF) --debug-dump=gdb_index $< > $@ + +if HAVE_ZLIB + +# Test that --gdb-index functions correctly with compressed debug sections. +check_SCRIPTS += gdb_index_test_2.sh +check_DATA += gdb_index_test_2.stdout +MOSTLYCLEANFILES += gdb_index_test_2.stdout gdb_index_test_2 +gdb_index_test_cdebug.o: gdb_index_test.cc + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -o $@ $< +gdb_index_test_2: gdb_index_test_cdebug.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $< +gdb_index_test_2.stdout: gdb_index_test_2 + $(TEST_READELF) --debug-dump=gdb_index $< > $@ + +endif HAVE_ZLIB + +# Another simple C test (DW_AT_high_pc encoding) for --gdb-index. +check_SCRIPTS += gdb_index_test_3.sh +check_DATA += gdb_index_test_3.stdout +MOSTLYCLEANFILES += gdb_index_test_3.stdout gdb_index_test_3 +gdb_index_test_3.o: gdb_index_test_3.c + $(COMPILE) -O0 -g -c -o $@ $< +gdb_index_test_3: gdb_index_test_3.o gcctestdir/ld + $(LINK) -Bgcctestdir/ -Wl,--gdb-index,--fatal-warnings $< +gdb_index_test_3.stdout: gdb_index_test_3 + $(TEST_READELF) --debug-dump=gdb_index $< > $@ + +# Test that --gdb-index functions correctly with gcc-generated pubnames. +check_SCRIPTS += gdb_index_test_4.sh +check_DATA += gdb_index_test_4.stdout +MOSTLYCLEANFILES += gdb_index_test_4.stdout gdb_index_test_4 +gdb_index_test_pub.o: gdb_index_test.cc + $(CXXCOMPILE) -O0 -g -gpubnames -c -o $@ $< +gdb_index_test_4: gdb_index_test_pub.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $< +gdb_index_test_4.stdout: gdb_index_test_4 + $(TEST_READELF) --debug-dump=gdb_index $< > $@ + +endif HAVE_PUBNAMES + +# End-to-end incremental linking tests. +# Incremental linking is currently supported only on the x86_64 target. + +if DEFAULT_TARGET_X86_64 + +two_file_test_1_v1_ndebug.o: two_file_test_1_v1.cc + $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +two_file_test_1_ndebug.o: two_file_test_1.cc + $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +two_file_test_1b_ndebug.o: two_file_test_1b.cc + $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +two_file_test_2_ndebug.o: two_file_test_2.cc + $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +two_file_test_main_ndebug.o: two_file_test_main.cc + $(CXXCOMPILE) -O0 -g0 -c -o $@ $< + +check_PROGRAMS += incremental_test_2 +MOSTLYCLEANFILES += two_file_test_tmp_2.o +incremental_test_2: two_file_test_1_v1_ndebug.o two_file_test_1_ndebug.o two_file_test_1b_ndebug.o \ + two_file_test_2_ndebug.o two_file_test_main_ndebug.o gcctestdir/ld + cp -f two_file_test_1_v1_ndebug.o two_file_test_tmp_2.o + $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o + @sleep 1 + cp -f two_file_test_1_ndebug.o two_file_test_tmp_2.o + $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o + +check_PROGRAMS += incremental_test_3 +MOSTLYCLEANFILES += two_file_test_tmp_3.o +incremental_test_3: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \ + two_file_test_2.o two_file_test_main.o gcctestdir/ld + cp -f two_file_test_1b_v1.o two_file_test_tmp_3.o + $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o + @sleep 1 + cp -f two_file_test_1b.o two_file_test_tmp_3.o + $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o + +check_PROGRAMS += incremental_test_4 +MOSTLYCLEANFILES += incremental_test_4.base two_file_test_tmp_4.o +incremental_test_4: two_file_test_1.o two_file_test_1b.o two_file_test_2_v1.o \ + two_file_test_2.o two_file_test_main.o gcctestdir/ld + cp -f two_file_test_2_v1.o two_file_test_tmp_4.o + $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o + mv -f incremental_test_4 incremental_test_4.base + @sleep 1 + cp -f two_file_test_2.o two_file_test_tmp_4.o + $(CXXLINK) -Wl,--incremental-update,--incremental-base=incremental_test_4.base -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o + +check_PROGRAMS += incremental_test_5 +MOSTLYCLEANFILES += two_file_test_5.a +incremental_test_5: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \ + two_file_test_2.o two_file_test_main.o gcctestdir/ld + cp -f two_file_test_1b_v1.o two_file_test_tmp_5.o + $(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o + $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_main.o two_file_test_5.a + @sleep 1 + cp -f two_file_test_1b.o two_file_test_tmp_5.o + $(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o + $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ two_file_test_main.o two_file_test_5.a + +# Test the --incremental-unchanged flag with an archive library. +# The second link should not update the library. +check_PROGRAMS += incremental_test_6 +MOSTLYCLEANFILES += two_file_test_6.a +incremental_test_6: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \ + two_file_test_2.o two_file_test_main.o gcctestdir/ld + cp -f two_file_test_1b.o two_file_test_tmp_6.o + $(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o + $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_main.o two_file_test_6.a + @sleep 1 + cp -f two_file_test_1b_v1.o two_file_test_tmp_6.o + $(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o + $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ two_file_test_main.o -Wl,--incremental-unchanged two_file_test_6.a -Wl,--incremental-unknown + +check_PROGRAMS += incremental_copy_test +incremental_copy_test: copy_test_v1.o copy_test.o copy_test_1.so copy_test_2.so + cp -f copy_test_v1.o copy_test_tmp.o + $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so + @sleep 1 + cp -f copy_test.o copy_test_tmp.o + $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so + +check_PROGRAMS += incremental_common_test_1 +incremental_common_test_1: common_test_1_v1.o common_test_1_v2.o gcctestdir/ld + cp -f common_test_1_v1.o common_test_1_tmp.o + $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ common_test_1_tmp.o + @sleep 1 + cp -f common_test_1_v2.o common_test_1_tmp.o + $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ common_test_1_tmp.o + +check_PROGRAMS += incremental_comdat_test_1 +incremental_comdat_test_1: incr_comdat_test_1.o incr_comdat_test_2_v1.o incr_comdat_test_2_v2.o incr_comdat_test_2_v3.o gcctestdir/ld + cp -f incr_comdat_test_2_v1.o incr_comdat_test_1_tmp.o + $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o + @sleep 1 + cp -f incr_comdat_test_2_v2.o incr_comdat_test_1_tmp.o + $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o + @sleep 1 + cp -f incr_comdat_test_2_v3.o incr_comdat_test_1_tmp.o + $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o + +endif DEFAULT_TARGET_X86_64 + +endif GCC +endif NATIVE_LINKER + +# These tests work with native and cross linkers. + +if NATIVE_OR_CROSS_LINKER + +# Test script section order. +check_SCRIPTS += script_test_10.sh +check_DATA += script_test_10.stdout +MOSTLYCLEANFILES += script_test_10 +script_test_10.o: script_test_10.s + $(TEST_AS) -o $@ $< +script_test_10: $(srcdir)/script_test_10.t script_test_10.o gcctestdir/ld + gcctestdir/ld -o $@ script_test_10.o -T $(srcdir)/script_test_10.t +script_test_10.stdout: script_test_10 + $(TEST_READELF) -SW script_test_10 > $@ + +# These tests work with cross linkers only. + +if DEFAULT_TARGET_I386 + +check_SCRIPTS += split_i386.sh +check_DATA += split_i386_1.stdout split_i386_2.stdout \ + split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout +SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +split_i386_1.o: split_i386_1.s + $(TEST_AS) -o $@ $< +split_i386_2.o: split_i386_2.s + $(TEST_AS) -o $@ $< +split_i386_3.o: split_i386_3.s + $(TEST_AS) -o $@ $< +split_i386_4.o: split_i386_4.s + $(TEST_AS) -o $@ $< +split_i386_n.o: split_i386_n.s + $(TEST_AS) -o $@ $< +split_i386_1: split_i386_1.o split_i386_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_1.o split_i386_n.o +split_i386_1.stdout: split_i386_1 + $(TEST_OBJDUMP) -d $< > $@ +split_i386_2: split_i386_2.o split_i386_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_2.o split_i386_n.o +split_i386_2.stdout: split_i386_2 + $(TEST_OBJDUMP) -d $< > $@ +split_i386_3.stdout: split_i386_3.o split_i386_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o split_i386_3 split_i386_3.o split_i386_n.o > $@ 2>&1 || exit 0 +split_i386_4: split_i386_4.o split_i386_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_4.o split_i386_n.o +split_i386_4.stdout: split_i386_4 + $(TEST_OBJDUMP) -d $< > $@ +split_i386_r.stdout: split_i386_1.o split_i386_n.o ../ld-new + ../ld-new -r split_i386_1.o split_i386_n.o -o split_i386_r > $@ 2>&1 || exit 0 +MOSTLYCLEANFILES += split_i386_1 split_i386_2 split_i386_3 \ + split_i386_4 split_i386_r + +endif DEFAULT_TARGET_I386 + +if DEFAULT_TARGET_X86_64 + +check_SCRIPTS += split_x86_64.sh +check_DATA += split_x86_64_1.stdout split_x86_64_2.stdout \ + split_x86_64_3.stdout split_x86_64_4.stdout split_x86_64_r.stdout +SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +split_x86_64_1.o: split_x86_64_1.s + $(TEST_AS) -o $@ $< +split_x86_64_2.o: split_x86_64_2.s + $(TEST_AS) -o $@ $< +split_x86_64_3.o: split_x86_64_3.s + $(TEST_AS) -o $@ $< +split_x86_64_4.o: split_x86_64_4.s + $(TEST_AS) -o $@ $< +split_x86_64_n.o: split_x86_64_n.s + $(TEST_AS) -o $@ $< +split_x86_64_1: split_x86_64_1.o split_x86_64_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_1.o split_x86_64_n.o +split_x86_64_1.stdout: split_x86_64_1 + $(TEST_OBJDUMP) -d $< > $@ +split_x86_64_2: split_x86_64_2.o split_x86_64_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_2.o split_x86_64_n.o +split_x86_64_2.stdout: split_x86_64_2 + $(TEST_OBJDUMP) -d $< > $@ +split_x86_64_3.stdout: split_x86_64_3.o split_x86_64_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o split_x86_64_3 split_x86_64_3.o split_x86_64_n.o > $@ 2>&1 || exit 0 +split_x86_64_4: split_x86_64_4.o split_x86_64_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_4.o split_x86_64_n.o +split_x86_64_4.stdout: split_x86_64_4 + $(TEST_OBJDUMP) -d $< > $@ +split_x86_64_r.stdout: split_x86_64_1.o split_x86_64_n.o ../ld-new + ../ld-new -r split_x86_64_1.o split_x86_64_n.o -o split_x86_64_r > $@ 2>&1 || exit 0 +MOSTLYCLEANFILES += split_x86_64_1 split_x86_64_2 split_x86_64_3 \ + split_x86_64_4 split_x86_64_r + +endif DEFAULT_TARGET_X86_64 + +if DEFAULT_TARGET_ARM + +check_SCRIPTS += arm_abs_global.sh +check_DATA += arm_abs_global.stdout +arm_abs_lib.o: arm_abs_lib.s + $(TEST_AS) -march=armv7-a -o $@ $< +libarm_abs.so: arm_abs_lib.o ../ld-new + ../ld-new -shared -o $@ arm_abs_lib.o +arm_abs_global.o: arm_abs_global.s + $(TEST_AS) -march=armv7-a -o $@ $< +arm_abs_global: arm_abs_global.o libarm_abs.so ../ld-new + ../ld-new -o $@ arm_abs_global.o -L. -larm_abs +arm_abs_global.stdout: arm_abs_global + $(TEST_READELF) -r $< > $@ + +MOSTLYCLEANFILES += arm_abs_global + +check_SCRIPTS += arm_branch_in_range.sh arm_branch_out_of_range.sh +check_DATA += arm_bl_in_range.stdout arm_bl_out_of_range.stdout \ + thumb_bl_in_range.stdout thumb_bl_out_of_range.stdout \ + thumb2_bl_in_range.stdout thumb2_bl_out_of_range.stdout \ + thumb_blx_in_range.stdout thumb_blx_out_of_range.stdout \ + thumb2_blx_in_range.stdout thumb2_blx_out_of_range.stdout \ + thumb_bl_out_of_range_local.stdout arm_thm_jump11.stdout \ + arm_thm_jump8.stdout + +arm_bl_in_range.stdout: arm_bl_in_range + $(TEST_OBJDUMP) -D $< > $@ + +arm_bl_in_range: arm_bl_in_range.o ../ld-new + ../ld-new -T $(srcdir)/arm_branch_range.t -o $@ $< + +arm_bl_in_range.o: arm_bl_in_range.s + $(TEST_AS) -o $@ $< + +arm_bl_out_of_range.stdout: arm_bl_out_of_range + $(TEST_OBJDUMP) -S $< > $@ + +arm_bl_out_of_range: arm_bl_out_of_range.o ../ld-new + ../ld-new -T $(srcdir)/arm_branch_range.t -o $@ $< + +arm_bl_out_of_range.o: arm_bl_out_of_range.s + $(TEST_AS) -o $@ $< + +thumb_bl_in_range.stdout: thumb_bl_in_range + $(TEST_OBJDUMP) -D $< > $@ + +thumb_bl_in_range: thumb_bl_in_range.o ../ld-new + ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +thumb_bl_in_range.o: thumb_bl_in_range.s + $(TEST_AS) -o $@ -march=armv5te $< + +thumb_bl_out_of_range.stdout: thumb_bl_out_of_range + $(TEST_OBJDUMP) -D $< > $@ + +thumb_bl_out_of_range: thumb_bl_out_of_range.o ../ld-new + ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +thumb_bl_out_of_range.o: thumb_bl_out_of_range.s + $(TEST_AS) -o $@ -march=armv5te $< + +thumb2_bl_in_range.stdout: thumb2_bl_in_range + $(TEST_OBJDUMP) -D $< > $@ + +thumb2_bl_in_range: thumb2_bl_in_range.o ../ld-new + ../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $< + +thumb2_bl_in_range.o: thumb_bl_in_range.s + $(TEST_AS) -o $@ -march=armv7-a $< + +thumb2_bl_out_of_range.stdout: thumb2_bl_out_of_range + $(TEST_OBJDUMP) -D $< > $@ + +thumb2_bl_out_of_range: thumb2_bl_out_of_range.o ../ld-new + ../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $< + +thumb2_bl_out_of_range.o: thumb_bl_out_of_range.s + $(TEST_AS) -o $@ -march=armv7-a $< + +thumb_blx_in_range.stdout: thumb_blx_in_range + $(TEST_OBJDUMP) -D $< > $@ + +thumb_blx_in_range: thumb_blx_in_range.o ../ld-new + ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +thumb_blx_in_range.o: thumb_blx_in_range.s + $(TEST_AS) -o $@ -march=armv5te $< + +thumb_blx_out_of_range.stdout: thumb_blx_out_of_range + $(TEST_OBJDUMP) -D $< > $@ + +thumb_blx_out_of_range: thumb_blx_out_of_range.o ../ld-new + ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +thumb_blx_out_of_range.o: thumb_blx_out_of_range.s + $(TEST_AS) -o $@ -march=armv5te $< + +thumb2_blx_in_range.stdout: thumb2_blx_in_range + $(TEST_OBJDUMP) -D $< > $@ + +thumb2_blx_in_range: thumb2_blx_in_range.o ../ld-new + ../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $< + +thumb2_blx_in_range.o: thumb_blx_in_range.s + $(TEST_AS) -o $@ -march=armv7-a $< + +thumb2_blx_out_of_range.stdout: thumb2_blx_out_of_range + $(TEST_OBJDUMP) -D $< > $@ + +thumb2_blx_out_of_range: thumb2_blx_out_of_range.o ../ld-new + ../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $< + +thumb2_blx_out_of_range.o: thumb_blx_out_of_range.s + $(TEST_AS) -o $@ -march=armv7-a $< + +thumb_bl_out_of_range_local.stdout: thumb_bl_out_of_range_local + $(TEST_OBJDUMP) -D $< > $@ + +thumb_bl_out_of_range_local: thumb_bl_out_of_range_local.o ../ld-new + ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +thumb_bl_out_of_range_local.o: thumb_bl_out_of_range_local.s + $(TEST_AS) -o $@ -march=armv5te $< + +arm_thm_jump11.stdout: arm_thm_jump11 + $(TEST_OBJDUMP) -D $< > $@ + +arm_thm_jump11: arm_thm_jump11.o ../ld-new + ../ld-new -T $(srcdir)/arm_thm_jump11.t -o $@ $< + +arm_thm_jump11.o: arm_thm_jump11.s + $(TEST_AS) -o $@ $< + +arm_thm_jump8.stdout: arm_thm_jump8 + $(TEST_OBJDUMP) -D $< > $@ + +arm_thm_jump8: arm_thm_jump8.o ../ld-new + ../ld-new -T $(srcdir)/arm_thm_jump8.t -o $@ $< + +arm_thm_jump8.o: arm_thm_jump8.s + $(TEST_AS) -o $@ $< + +MOSTLYCLEANFILES += arm_bl_in_range arm_bl_out_of_range thumb_bl_in_range \ + thumb_bl_out_of_range thumb2_bl_in_range thumb2_bl_out_of_range \ + thumb_blx_in_range thumb_blx_out_of_range thumb2_blx_in_range \ + thumb2_blx_out_of_range thumb_bl_out_of_range_local arm_thm_jump11 \ + arm_thm_jump8 + +check_SCRIPTS += arm_fix_v4bx.sh +check_DATA += arm_fix_v4bx.stdout arm_fix_v4bx_interworking.stdout \ + arm_no_fix_v4bx.stdout + +arm_fix_v4bx.stdout: arm_fix_v4bx + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_fix_v4bx: arm_fix_v4bx.o ../ld-new + ../ld-new --no-fix-arm1176 --fix-v4bx -o $@ $< + +arm_fix_v4bx.o: arm_fix_v4bx.s + $(TEST_AS) -o $@ $< + +arm_fix_v4bx_interworking.stdout: arm_fix_v4bx_interworking + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_fix_v4bx_interworking: arm_fix_v4bx.o ../ld-new + ../ld-new --no-fix-arm1176 --fix-v4bx-interworking -o $@ $< + +arm_no_fix_v4bx.stdout: arm_no_fix_v4bx + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_no_fix_v4bx: arm_fix_v4bx.o ../ld-new + ../ld-new --no-fix-arm1176 -o $@ $< + +MOSTLYCLEANFILES += arm_fix_v4bx arm_fix_v4bx_interworking arm_no_fix_v4bx + +check_SCRIPTS += arm_attr_merge.sh +check_DATA += arm_attr_merge_6.stdout arm_attr_merge_6r.stdout \ + arm_attr_merge_7.stdout + +arm_attr_merge_6.stdout: arm_attr_merge_6 + $(TEST_READELF) -A $< > $@ + +arm_attr_merge_6: arm_attr_merge_6a.o arm_attr_merge_6b.o + ../ld-new -o $@ arm_attr_merge_6a.o arm_attr_merge_6b.o + +arm_attr_merge_6a.o: arm_attr_merge_6a.s + $(TEST_AS) -o $@ $< + +arm_attr_merge_6b.o: arm_attr_merge_6b.s + $(TEST_AS) -o $@ $< + +arm_attr_merge_6r.stdout: arm_attr_merge_6r + $(TEST_READELF) -A $< > $@ + +arm_attr_merge_6r: arm_attr_merge_6b.o arm_attr_merge_6a.o + ../ld-new -o $@ arm_attr_merge_6b.o arm_attr_merge_6a.o + +arm_attr_merge_7.stdout: arm_attr_merge_7 + $(TEST_READELF) -A $< > $@ + +arm_attr_merge_7: arm_attr_merge_7a.o arm_attr_merge_7b.o + ../ld-new -o $@ arm_attr_merge_7a.o arm_attr_merge_7b.o + +arm_attr_merge_7a.o: arm_attr_merge_7a.s + $(TEST_AS) -o $@ $< + +arm_attr_merge_7b.o: arm_attr_merge_7b.s + $(TEST_AS) -o $@ $< + +MOSTLYCLEANFILES += arm_attr_merge_6 arm_attr_merge_6r arm_attr_merge_7 + +# ARM1176 workaround test. +check_SCRIPTS += arm_fix_1176.sh +check_DATA += arm_fix_1176_default_v6z.stdout arm_fix_1176_on_v6z.stdout \ + arm_fix_1176_off_v6z.stdout arm_fix_1176_default_v5te.stdout \ + arm_fix_1176_default_v7a.stdout arm_fix_1176_default_1156t2f_s.stdout + +arm_fix_1176_default_v6z.stdout: arm_fix_1176_default_v6z + $(TEST_OBJDUMP) -D -j.foo $< > $@ + +arm_fix_1176_default_v6z: arm_fix_1176_default_v6z.o ../ld-new + ../ld-new --section-start=.foo=0x2001014 -o $@ $< + +arm_fix_1176_default_v6z.o: arm_fix_1176.s + $(TEST_AS) -march=armv6z -o $@ $< + +arm_fix_1176_on_v6z.stdout: arm_fix_1176_on_v6z + $(TEST_OBJDUMP) -D -j.foo $< > $@ + +arm_fix_1176_on_v6z: arm_fix_1176_on_v6z.o ../ld-new + ../ld-new --section-start=.foo=0x2001014 --fix-arm1176 -o $@ $< + +arm_fix_1176_on_v6z.o: arm_fix_1176.s + $(TEST_AS) -march=armv6z -o $@ $< + +arm_fix_1176_off_v6z.stdout: arm_fix_1176_off_v6z + $(TEST_OBJDUMP) -D -j.foo $< > $@ + +arm_fix_1176_off_v6z: arm_fix_1176_off_v6z.o ../ld-new + ../ld-new --section-start=.foo=0x2001014 --no-fix-arm1176 -o $@ $< + +arm_fix_1176_off_v6z.o: arm_fix_1176.s + $(TEST_AS) -march=armv6z -o $@ $< + +arm_fix_1176_default_v5te.stdout: arm_fix_1176_default_v5te + $(TEST_OBJDUMP) -D -j.foo $< > $@ + +arm_fix_1176_default_v5te: arm_fix_1176_default_v5te.o ../ld-new + ../ld-new --section-start=.foo=0x2001014 -o $@ $< + +arm_fix_1176_default_v5te.o: arm_fix_1176.s + $(TEST_AS) -march=armv5te -o $@ $< + +arm_fix_1176_default_v7a.stdout: arm_fix_1176_default_v7a + $(TEST_OBJDUMP) -D -j.foo $< > $@ + +arm_fix_1176_default_v7a: arm_fix_1176_default_v7a.o ../ld-new + ../ld-new --section-start=.foo=0x2001014 -o $@ $< + +arm_fix_1176_default_v7a.o: arm_fix_1176.s + $(TEST_AS) -march=armv7-a -o $@ $< + +arm_fix_1176_default_1156t2f_s.stdout: arm_fix_1176_default_1156t2f_s + $(TEST_OBJDUMP) -D -j.foo $< > $@ + +arm_fix_1176_default_1156t2f_s: arm_fix_1176_default_1156t2f_s.o ../ld-new + ../ld-new --section-start=.foo=0x2001014 -o $@ $< + +arm_fix_1176_default_1156t2f_s.o: arm_fix_1176.s + $(TEST_AS) -mcpu=arm1156t2f-s -o $@ $< + +MOSTLYCLEANFILES += arm_fix_1176_default_v6z arm_fix_1176_on_v6z arm_fix_1176_off_v6z \ + arm_fix_1176_default_v5te arm_fix_1176_default_v7a arm_fix_1176_default_1156t2f_s + +# Cortex-A8 workaround test. + +check_SCRIPTS += arm_cortex_a8.sh +check_DATA += arm_cortex_a8_b_cond.stdout arm_cortex_a8_b.stdout \ + arm_cortex_a8_bl.stdout arm_cortex_a8_blx.stdout \ + arm_cortex_a8_local.stdout arm_cortex_a8_local_reloc.stdout + +arm_cortex_a8_b_cond.stdout: arm_cortex_a8_b_cond + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_cortex_a8_b_cond: arm_cortex_a8_b_cond.o ../ld-new + ../ld-new -o $@ $< + +arm_cortex_a8_b_cond.o: arm_cortex_a8_b_cond.s + $(TEST_AS) -o $@ $< + +arm_cortex_a8_b.stdout: arm_cortex_a8_b + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_cortex_a8_b: arm_cortex_a8_b.o ../ld-new + ../ld-new --fix-cortex-a8 -o $@ $< + +arm_cortex_a8_b.o: arm_cortex_a8_b.s + $(TEST_AS) -o $@ $< + +arm_cortex_a8_bl.stdout: arm_cortex_a8_bl + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_cortex_a8_bl: arm_cortex_a8_bl.o ../ld-new + ../ld-new -o $@ $< + +arm_cortex_a8_bl.o: arm_cortex_a8_bl.s + $(TEST_AS) -o $@ $< + +arm_cortex_a8_blx.stdout: arm_cortex_a8_blx + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_cortex_a8_blx: arm_cortex_a8_blx.o ../ld-new + ../ld-new -o $@ $< + +arm_cortex_a8_blx.o: arm_cortex_a8_blx.s + $(TEST_AS) -o $@ $< + +arm_cortex_a8_local.stdout: arm_cortex_a8_local + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_cortex_a8_local: arm_cortex_a8_local.o ../ld-new + ../ld-new -o $@ $< + +arm_cortex_a8_local.o: arm_cortex_a8_local.s + $(TEST_AS) -o $@ $< + +arm_cortex_a8_local_reloc.stdout: arm_cortex_a8_local_reloc + $(TEST_OBJDUMP) -D -j.text $< > $@ + +arm_cortex_a8_local_reloc: arm_cortex_a8_local_reloc.o ../ld-new + ../ld-new -o $@ $< + +arm_cortex_a8_local_reloc.o: arm_cortex_a8_local_reloc.s + $(TEST_AS) -o $@ $< + +MOSTLYCLEANFILES += arm_cortex_a8_b_cond arm_cortex_a8_b arm_cortex_a8_bl \ + arm_cortex_a8_blx arm_cortex_a8_local arm_cortex_a8_local_reloc + +check_SCRIPTS += arm_exidx_test.sh +check_DATA += arm_exidx_test.stdout + +arm_exidx_test.stdout: arm_exidx_test.so + $(TEST_READELF) -Sr $< > $@ + +arm_exidx_test.so: arm_exidx_test.o ../ld-new + ../ld-new -shared -o $@ $< + +arm_exidx_test.o: arm_exidx_test.s + $(TEST_AS) -o $@ $< + +check_SCRIPTS += pr12826.sh +check_DATA += pr12826.stdout + +pr12826.stdout: pr12826.so + $(TEST_READELF) -A $< > $@ + +pr12826.so: pr12826_1.o pr12826_2.o ../ld-new + ../ld-new -shared -o $@ $< + +pr12826_1.o: pr12826_1.s + $(TEST_AS) -o $@ $< + +pr12826_2.o: pr12826_2.s + $(TEST_AS) -o $@ $< + +check_SCRIPTS += arm_unaligned_reloc.sh +check_DATA += arm_unaligned_reloc.stdout arm_unaligned_reloc_r.stdout + +arm_unaligned_reloc.stdout: arm_unaligned_reloc + $(TEST_OBJDUMP) -D $< > $@ + +arm_unaligned_reloc_r.stdout: arm_unaligned_reloc_r + $(TEST_OBJDUMP) -Dr $< > $@ + +arm_unaligned_reloc: arm_unaligned_reloc.o ../ld-new + ../ld-new -o $@ $< + +arm_unaligned_reloc_r: arm_unaligned_reloc.o ../ld-new + ../ld-new -r -o $@ $< + +arm_unaligned_reloc.o: arm_unaligned_reloc.s + $(TEST_AS) -o $@ $< + +MOSTLYCLEANFILES += arm_unaligned_reloc arm_unaligned_reloc_r + +# Check ARM to ARM farcall veneers + +check_SCRIPTS += arm_farcall_arm_arm.sh +check_DATA += arm_farcall_arm_arm.stdout + +arm_farcall_arm_arm.stdout: arm_farcall_arm_arm + $(TEST_OBJDUMP) -d $< > $@ + +arm_farcall_arm_arm: arm_farcall_arm_arm.o ../ld-new + ../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001020 -o $@ $< + +arm_farcall_arm_arm.o: arm_farcall_arm_arm.s + $(TEST_AS) -o $@ $< + +MOSTLYCLEANFILES += arm_farcall_arm_arm + +# Check ARM to Thumb farcall veneers + +check_SCRIPTS += arm_farcall_arm_thumb.sh +check_DATA += arm_farcall_arm_thumb.stdout arm_farcall_arm_thumb_5t.stdout + +arm_farcall_arm_thumb.stdout: arm_farcall_arm_thumb + $(TEST_OBJDUMP) -D $< > $@ + +arm_farcall_arm_thumb: arm_farcall_arm_thumb.o ../ld-new + ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +arm_farcall_arm_thumb.o: arm_farcall_arm_thumb.s + $(TEST_AS) -o $@ $< + +arm_farcall_arm_thumb_5t.stdout: arm_farcall_arm_thumb_5t + $(TEST_OBJDUMP) -D $< > $@ + +arm_farcall_arm_thumb_5t: arm_farcall_arm_thumb_5t.o ../ld-new + ../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +arm_farcall_arm_thumb_5t.o: arm_farcall_arm_thumb.s + $(TEST_AS) -march=armv5t -o $@ $< + +MOSTLYCLEANFILES += arm_farcall_arm_thumb arm_farcall_arm_thumb_5t + +# Check Thumb to Thumb farcall veneers + +check_SCRIPTS += arm_farcall_thumb_thumb.sh +check_DATA += arm_farcall_thumb_thumb.stdout \ + arm_farcall_thumb_thumb_5t.stdout \ + arm_farcall_thumb_thumb_7m.stdout \ + arm_farcall_thumb_thumb_6m.stdout + +arm_farcall_thumb_thumb.stdout: arm_farcall_thumb_thumb + $(TEST_OBJDUMP) -D $< > $@ + +arm_farcall_thumb_thumb: arm_farcall_thumb_thumb.o ../ld-new + ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +arm_farcall_thumb_thumb.o: arm_farcall_thumb_thumb.s + $(TEST_AS) -march=armv4t -o $@ $< + +arm_farcall_thumb_thumb_5t.stdout: arm_farcall_thumb_thumb_5t + $(TEST_OBJDUMP) -D $< > $@ + +arm_farcall_thumb_thumb_5t: arm_farcall_thumb_thumb_5t.o ../ld-new + ../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +arm_farcall_thumb_thumb_5t.o: arm_farcall_thumb_thumb.s + $(TEST_AS) -march=armv5t -o $@ $< + +arm_farcall_thumb_thumb_7m.stdout: arm_farcall_thumb_thumb_7m + $(TEST_OBJDUMP) -D $< > $@ + +arm_farcall_thumb_thumb_7m: arm_farcall_thumb_thumb_7m.o ../ld-new + ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +arm_farcall_thumb_thumb_7m.o: arm_farcall_thumb_thumb.s + $(TEST_AS) -march=armv7-m -o $@ $< + +arm_farcall_thumb_thumb_6m.stdout: arm_farcall_thumb_thumb_6m + $(TEST_OBJDUMP) -D $< > $@ + +arm_farcall_thumb_thumb_6m: arm_farcall_thumb_thumb_6m.o ../ld-new + ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +arm_farcall_thumb_thumb_6m.o: arm_farcall_thumb_thumb.s + $(TEST_AS) -march=armv6-m -o $@ $< + +MOSTLYCLEANFILES += arm_farcall_thumb_thumb arm_farcall_thumb_thumb_5t \ + arm_farcall_thumb_thumb_7m arm_farcall_thumb_thumb_6m + +# Check Thumb to ARM farcall veneers + +check_SCRIPTS += arm_farcall_thumb_arm.sh +check_DATA += arm_farcall_thumb_arm.stdout \ + arm_farcall_thumb_arm_5t.stdout + +arm_farcall_thumb_arm.stdout: arm_farcall_thumb_arm + $(TEST_OBJDUMP) -D $< > $@ + +arm_farcall_thumb_arm: arm_farcall_thumb_arm.o ../ld-new + ../ld-new --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $< + +arm_farcall_thumb_arm.o: arm_farcall_thumb_arm.s + $(TEST_AS) -o $@ $< + +arm_farcall_thumb_arm_5t.stdout: arm_farcall_thumb_arm_5t + $(TEST_OBJDUMP) -D $< > $@ + +arm_farcall_thumb_arm_5t: arm_farcall_thumb_arm_5t.o ../ld-new + ../ld-new --no-fix-arm1176 --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $< + +arm_farcall_thumb_arm_5t.o: arm_farcall_thumb_arm.s + $(TEST_AS) -march=armv5t -o $@ $< + +MOSTLYCLEANFILES += arm_farcall_thumb_arm arm_farcall_thumb_arm_5t + +endif DEFAULT_TARGET_ARM + +endif NATIVE_OR_CROSS_LINKER + +# Tests for the dwp tool. +# We don't want to rely yet on GCC support for -gsplit-dwarf, +# so we use (for now) test cases in x86 assembly language, +# compiled from the dwp_test_*.cc sources. + +if DEFAULT_TARGET_X86_64 + +dwp_test_main.o: dwp_test_main.s + $(TEST_AS) -o $@ $< +dwp_test_1.o: dwp_test_1.s + $(TEST_AS) -o $@ $< +dwp_test_1b.o: dwp_test_1b.s + $(TEST_AS) -o $@ $< +dwp_test_2.o: dwp_test_2.s + $(TEST_AS) -o $@ $< + +dwp_test_main.dwo: dwp_test_main.o + $(TEST_OBJCOPY) --extract-dwo $< $@ +dwp_test_1.dwo: dwp_test_1.o + $(TEST_OBJCOPY) --extract-dwo $< $@ +dwp_test_1b.dwo: dwp_test_1b.o + $(TEST_OBJCOPY) --extract-dwo $< $@ +dwp_test_2.dwo: dwp_test_2.o + $(TEST_OBJCOPY) --extract-dwo $< $@ + +MOSTLYCLEANFILES += *.dwo *.dwp +check_SCRIPTS += dwp_test_1.sh +check_DATA += dwp_test_1.stdout +dwp_test_1.stdout: dwp_test_1.dwp + $(TEST_READELF) -wi $< > $@ +dwp_test_1.dwp: ../dwp dwp_test_main.dwo dwp_test_1.dwo dwp_test_1b.dwo dwp_test_2.dwo + ../dwp -o $@ dwp_test_main.dwo dwp_test_1.dwo dwp_test_1b.dwo dwp_test_2.dwo + +check_SCRIPTS += dwp_test_2.sh +check_DATA += dwp_test_2.stdout +dwp_test_2.stdout: dwp_test_2.dwp + $(TEST_READELF) -wi $< > $@ +dwp_test_2.dwp: ../dwp dwp_test_2a.dwp dwp_test_2b.dwp + ../dwp -o $@ dwp_test_2a.dwp dwp_test_2b.dwp +dwp_test_2a.dwp: ../dwp dwp_test_main.dwo dwp_test_1.dwo + ../dwp -o $@ dwp_test_main.dwo dwp_test_1.dwo +dwp_test_2b.dwp: ../dwp dwp_test_1b.dwo dwp_test_2.dwo + ../dwp -o $@ dwp_test_1b.dwo dwp_test_2.dwo + +endif DEFAULT_TARGET_X86_64 diff --git a/binutils-2.25/gold/testsuite/Makefile.in b/binutils-2.25/gold/testsuite/Makefile.in new file mode 100644 index 00000000..07bb534a --- /dev/null +++ b/binutils-2.25/gold/testsuite/Makefile.in @@ -0,0 +1,5892 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Process this file with automake to generate Makefile.in + +# As far as I can tell automake testing support assumes that the build +# system and the host system are the same. So these tests will not +# work when building with a cross-compiler. +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ + $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \ + $(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \ + $(am__EXEEXT_10) $(am__EXEEXT_11) $(am__EXEEXT_12) \ + $(am__EXEEXT_13) $(am__EXEEXT_14) $(am__EXEEXT_15) \ + $(am__EXEEXT_16) $(am__EXEEXT_17) $(am__EXEEXT_18) \ + $(am__EXEEXT_19) $(am__EXEEXT_20) $(am__EXEEXT_21) \ + $(am__EXEEXT_22) $(am__EXEEXT_23) $(am__EXEEXT_24) \ + $(am__EXEEXT_25) $(am__EXEEXT_26) $(am__EXEEXT_27) \ + $(am__EXEEXT_28) $(am__EXEEXT_29) $(am__EXEEXT_30) \ + $(am__EXEEXT_31) $(am__EXEEXT_32) $(am__EXEEXT_33) \ + $(am__EXEEXT_34) $(am__EXEEXT_35) $(am__EXEEXT_36) \ + $(am__EXEEXT_37) $(am__EXEEXT_38) $(am__EXEEXT_39) +@NATIVE_OR_CROSS_LINKER_TRUE@am__append_1 = object_unittest \ +@NATIVE_OR_CROSS_LINKER_TRUE@ binary_unittest leb128_unittest + +# This test fails on targets not using .ctors and .dtors sections (e.g. ARM +# EABI). Given that gcc is moving towards using .init_array in all cases, +# this test is commented out. A better fix would be checking whether gcc +# uses .ctors or .init_array sections in configure. + +# check_PROGRAMS += initpri3b +# initpri3b_SOURCES = initpri3.c +# initpri3b_DEPENDENCIES = gcctestdir/ld +# initpri3b_LDFLAGS = -Bgcctestdir/ -Wl,--no-ctors-in-init-array +# initpri3b_LDADD = + +# Test --detect-odr-violations + +# Test error message when a vtable is undefined. + +# Similar to --detect-odr-violations: check for undefined symbols in .so's + +# Test --dynamic-list, --dynamic-list-data, --dynamic-list-cpp-new, +# and --dynamic-list-cpp-typeinfo +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_2 = incremental_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_comdat_test.sh gc_tls_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_orphan_section_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ pr14265.sh icf_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_keep_unique_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_so_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ final_layout.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_grouping.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ section_sorting_name.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_preemptible_functions_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_string_merge_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_sht_rel_addend_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ merge_string_literals.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared.sh weak_plt.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg.sh missing_key_func.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ undef_symbol.sh ver_test_1.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_2.sh ver_test_4.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_5.sh ver_test_7.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_10.sh relro_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_matching_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_4.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_5.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_6.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_7.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_8.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_9.sh dynamic_list.sh + +# Create the data files that debug_msg.sh analyzes. +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_3 = incremental_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_comdat_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_tls_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_orphan_section_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ pr14265.stdout icf_test.map \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_keep_unique_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_test_1.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_test_2.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_test.map \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_so_test_1.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_so_test_2.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_so_test.map \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ final_layout.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_grouping.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_no_grouping.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ section_sorting_name.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_preemptible_functions_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_string_merge_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_sht_rel_addend_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ merge_string_literals.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared.dbg \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_plt_shared.so debug_msg.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ missing_key_func.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_4 = incremental_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test.cmdline \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_comdat_test gc_tls_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_orphan_section_test pr14265 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_test icf_test.map \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_keep_unique_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_test icf_safe_test.map \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_so_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_so_test.map \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ final_layout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ final_layout_sequence.txt \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ final_layout_script.lds \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_grouping \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_no_grouping \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ section_sorting_name \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_virtual_function_folding_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_virtual_function_folding_test.map \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_preemptible_functions_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_string_merge_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_sht_rel_addend_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ merge_string_literals \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared.dbg \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/weak_undef_lib.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_5 = icf_virtual_function_folding_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ large_symbol_alignment \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_test basic_pic_test +@GCC_FALSE@large_symbol_alignment_DEPENDENCIES = +@NATIVE_LINKER_FALSE@large_symbol_alignment_DEPENDENCIES = +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am__append_6 = basic_static_test \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@ basic_static_pic_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_7 = basic_pie_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test +@GCC_FALSE@constructor_test_DEPENDENCIES = +@NATIVE_LINKER_FALSE@constructor_test_DEPENDENCIES = +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am__append_8 = constructor_static_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_9 = two_file_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_pic_test +@GCC_FALSE@two_file_test_DEPENDENCIES = +@NATIVE_LINKER_FALSE@two_file_test_DEPENDENCIES = +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am__append_10 = two_file_static_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_11 = two_file_shared_1_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_pic_2_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_pic_1_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_relocatable_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_pie_test + +# The nonpic tests will fail on platforms which can not put non-PIC +# code into shared libraries, so we just don't run them in that case. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_12 = two_file_shared_1_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_shared_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_2_shared_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_pie_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_13 = two_file_strip_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_strip_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ common_test_1 common_test_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_same_shared_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_12_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_21_test +@GCC_FALSE@common_test_1_DEPENDENCIES = +@NATIVE_LINKER_FALSE@common_test_1_DEPENDENCIES = +@GCC_FALSE@exception_test_DEPENDENCIES = +@NATIVE_LINKER_FALSE@exception_test_DEPENDENCIES = +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am__append_14 = exception_static_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_15 = weak_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_undef_test +@GCC_FALSE@weak_test_DEPENDENCIES = +@NATIVE_LINKER_FALSE@weak_test_DEPENDENCIES = +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_16 = weak_undef_nonpic_test +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_17 = alt/weak_undef_lib_nonpic.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_18 = weak_alias_test weak_plt \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ copy_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__append_19 = tls_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pic_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pie_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pie_pic_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_ie_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_gd_to_ie_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am__append_20 = tls_shared_gnu2_gd_to_ie_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am__append_21 = tls_shared_gnu2_test +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am__append_22 = tls_static_test \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@ tls_static_pic_test +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__append_23 = tls_shared_nonpic_test + +# Test -o when emitting to a special file (such as something in /dev). +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_24 = many_sections_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_r_test initpri1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri2 initpri3a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile +@GCC_FALSE@many_sections_test_DEPENDENCIES = +@NATIVE_LINKER_FALSE@many_sections_test_DEPENDENCIES = +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_25 = many_sections_define.h \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_check.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_26 = many_sections_define.h \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_check.h \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ missing_key_func.err +@GCC_FALSE@initpri1_DEPENDENCIES = +@NATIVE_LINKER_FALSE@initpri1_DEPENDENCIES = +@GCC_FALSE@initpri2_DEPENDENCIES = +@NATIVE_LINKER_FALSE@initpri2_DEPENDENCIES = +@GCC_FALSE@initpri3a_DEPENDENCIES = +@NATIVE_LINKER_FALSE@initpri3a_DEPENDENCIES = + +# Check that --detect-odr-violations works with compressed debug sections. +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__append_27 = debug_msg_cdebug.err +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__append_28 = debug_msg_cdebug.err + +# See if we can also detect problems when we're linking .so's, not .o's. + +# We also want to make sure we do something reasonable when there's no +# debug info available. For the best test, we use .so's. + +# This version won't be runnable, because there is no way to put the +# PT_PHDR segment at file offset 0. We just make sure that we can +# build it without error. +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_29 = debug_msg_so.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg_ndebug.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ undef_symbol.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_ttext_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_1.syms ver_test_2.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_4.syms ver_test_5.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_7.syms ver_test_10.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_3.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_matching_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_4.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_5.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_6.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_7.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_8.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_9.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dynamic_list.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_30 = debug_msg_so.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg_ndebug.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ undef_symbol.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_ttext_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_11.a protected_3.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms_lib binary.txt \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_matching_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_4 script_test_5 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_6 script_test_7 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_8 script_test_9 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dynamic_list dynamic_list.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libthin1.a libthin3.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libthinall.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/thin_archive_test_2.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/thin_archive_test_4.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/libthin2.a alt/libthin4.a + +# Test --compress-debug-sections. FIXME: check we actually compress. + +# The specialfile output has a tricky case when we also compress debug +# sections, because it requires output-file resizing. +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__append_31 = flagstest_compress_debug_sections \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections + +# Test -TText and -Tdata. + +# Test symbol versioning. + +# Test scripts with a relocatable link. +# The -g option is necessary to trigger a bug where a section +# declared in a script file is assigned a non-zero starting address. +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_32 = flagstest_o_ttext_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test ver_test_2 ver_test_6 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_8 ver_test_9 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_11 ver_test_12 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_1 protected_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test relro_now_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_strip_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_script_test script_test_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2 justsyms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms_exec binary_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ tls_phdrs_script_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ tls_script_test script_test_11 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_2 +@GCC_FALSE@script_test_1_DEPENDENCIES = +@NATIVE_LINKER_FALSE@script_test_1_DEPENDENCIES = +@GCC_FALSE@script_test_2_DEPENDENCIES = +@NATIVE_LINKER_FALSE@script_test_2_DEPENDENCIES = +@GCC_FALSE@justsyms_DEPENDENCIES = +@NATIVE_LINKER_FALSE@justsyms_DEPENDENCIES = +@GCC_FALSE@justsyms_exec_DEPENDENCIES = +@NATIVE_LINKER_FALSE@justsyms_exec_DEPENDENCIES = +@GCC_FALSE@binary_test_DEPENDENCIES = +@NATIVE_LINKER_FALSE@binary_test_DEPENDENCIES = +@GCC_FALSE@thin_archive_test_2_DEPENDENCIES = +@NATIVE_LINKER_FALSE@thin_archive_test_2_DEPENDENCIES = + +# Test plugins with -r. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_33 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_5 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_8 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_34 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.sh + +# Test that symbols known in the IR file but not in the replacement file +# produce an unresolved symbol error. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_35 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_9.err +# Make a copy of two_file_test_1.o, which does not define the symbol _Z4t16av. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_36 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_9.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ two_file_test_1c.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_37 = plugin_test_tls +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_38 = plugin_test_tls.sh +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_39 = plugin_test_tls.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_40 = plugin_test_tls.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_41 = unused.c \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_final_layout +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_42 = plugin_final_layout.sh +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_43 = plugin_final_layout.stdout plugin_final_layout_readelf.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_44 = exclude_libs_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test + +# Test that hidden and internal symbols in the main program cannot be +# referenced by a shared library. + +# Test -retain-symbols-file. + +# Test that no .gnu.version sections are created when +# symbol versioning is not used. + +# Test that strong reference to a weak symbol in a DSO remains strong. + +# Test that a strong weak reference remains strong if there is another +# weak reference in a DSO. + +# Test that MEMORY region support works. +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_45 = exclude_libs_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ no_version_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref.sh memory_test.sh +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_46 = exclude_libs_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test1.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test2.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ no_version_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_47 = exclude_libs_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_1.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_2.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/libexclude_libs_test_3.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test1.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test2.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test1.out \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test2.out \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test hidden_test.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.in \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test_lib.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/searched_file_test_lib.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libno_version_test.so \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ no_version_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def_1.so \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def_2.so \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref_1.so \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref_2.so \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libstart_lib_test.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test.stdout memory_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test.o +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__append_48 = large +@GCC_FALSE@large_DEPENDENCIES = +@MCMODEL_MEDIUM_FALSE@large_DEPENDENCIES = +@NATIVE_LINKER_FALSE@large_DEPENDENCIES = + +# Test that if the output file already exists and is empty, +# it will get execute permission. + +# Check -l:foo.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_49 = permission_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test +@GCC_FALSE@searched_file_test_DEPENDENCIES = +@NATIVE_LINKER_FALSE@searched_file_test_DEPENDENCIES = +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_50 = ifuncmain1static \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1picstatic +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_51 = ifuncmain1 \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1pic \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vis \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vispic \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1staticpic \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1pie \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vispie \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1staticpie +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_52 = ifuncmain2static \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain2picstatic +@GCC_FALSE@ifuncmain2static_DEPENDENCIES = +@HAVE_STATIC_FALSE@ifuncmain2static_DEPENDENCIES = +@IFUNC_FALSE@ifuncmain2static_DEPENDENCIES = +@IFUNC_STATIC_FALSE@ifuncmain2static_DEPENDENCIES = +@NATIVE_LINKER_FALSE@ifuncmain2static_DEPENDENCIES = +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_53 = ifuncmain2 \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain2pic \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain3 +@GCC_FALSE@ifuncmain2_DEPENDENCIES = +@IFUNC_FALSE@ifuncmain2_DEPENDENCIES = +@NATIVE_LINKER_FALSE@ifuncmain2_DEPENDENCIES = +@GCC_FALSE@ifuncmain3_DEPENDENCIES = +@IFUNC_FALSE@ifuncmain3_DEPENDENCIES = +@NATIVE_LINKER_FALSE@ifuncmain3_DEPENDENCIES = +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_54 = ifuncmain4static \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain4picstatic +@GCC_FALSE@ifuncmain4static_DEPENDENCIES = +@HAVE_STATIC_FALSE@ifuncmain4static_DEPENDENCIES = +@IFUNC_FALSE@ifuncmain4static_DEPENDENCIES = +@IFUNC_STATIC_FALSE@ifuncmain4static_DEPENDENCIES = +@NATIVE_LINKER_FALSE@ifuncmain4static_DEPENDENCIES = +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_55 = ifuncmain4 +@GCC_FALSE@ifuncmain4_DEPENDENCIES = +@IFUNC_FALSE@ifuncmain4_DEPENDENCIES = +@NATIVE_LINKER_FALSE@ifuncmain4_DEPENDENCIES = +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_56 = ifuncmain5static \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5picstatic +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_57 = ifuncmain5 \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5pic \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5staticpic \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5pie \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain6pie +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_58 = ifuncmain7static \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7picstatic +@GCC_FALSE@ifuncmain7static_DEPENDENCIES = +@HAVE_STATIC_FALSE@ifuncmain7static_DEPENDENCIES = +@IFUNC_FALSE@ifuncmain7static_DEPENDENCIES = +@IFUNC_STATIC_FALSE@ifuncmain7static_DEPENDENCIES = +@NATIVE_LINKER_FALSE@ifuncmain7static_DEPENDENCIES = +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_59 = ifuncmain7 \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7pic \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7pie \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncvar +@GCC_FALSE@ifuncmain7_DEPENDENCIES = +@IFUNC_FALSE@ifuncmain7_DEPENDENCIES = +@NATIVE_LINKER_FALSE@ifuncmain7_DEPENDENCIES = + +# Test that --start-lib and --end-lib function correctly. +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_60 = start_lib_test + +# Test that --gdb-index functions correctly without gcc-generated pubnames. +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_61 = gdb_index_test_1.sh +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_62 = gdb_index_test_1.stdout +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_63 = gdb_index_test_1.stdout gdb_index_test_1 + +# Test that --gdb-index functions correctly with compressed debug sections. +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__append_64 = gdb_index_test_2.sh +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__append_65 = gdb_index_test_2.stdout +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__append_66 = gdb_index_test_2.stdout gdb_index_test_2 + +# Another simple C test (DW_AT_high_pc encoding) for --gdb-index. + +# Test that --gdb-index functions correctly with gcc-generated pubnames. +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_67 = gdb_index_test_3.sh \ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_4.sh +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_68 = gdb_index_test_3.stdout \ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_4.stdout +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_69 = gdb_index_test_3.stdout \ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_3 \ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_4.stdout \ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_4 + +# Test the --incremental-unchanged flag with an archive library. +# The second link should not update the library. +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_70 = incremental_test_2 \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_3 \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_4 \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_5 \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_6 \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_copy_test \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_common_test_1 \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_comdat_test_1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_71 = two_file_test_tmp_2.o \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_tmp_3.o \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_4.base \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_tmp_4.o \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_5.a \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_6.a + +# These tests work with native and cross linkers. + +# Test script section order. +@NATIVE_OR_CROSS_LINKER_TRUE@am__append_72 = script_test_10.sh +@NATIVE_OR_CROSS_LINKER_TRUE@am__append_73 = script_test_10.stdout +@NATIVE_OR_CROSS_LINKER_TRUE@am__append_74 = script_test_10 + +# These tests work with cross linkers only. +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_75 = split_i386.sh +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_76 = split_i386_1.stdout split_i386_2.stdout \ +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout + +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_77 = split_i386_1 split_i386_2 split_i386_3 \ +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_i386_4 split_i386_r + +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_78 = split_x86_64.sh +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_79 = split_x86_64_1.stdout split_x86_64_2.stdout \ +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x86_64_3.stdout split_x86_64_4.stdout split_x86_64_r.stdout + +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_80 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \ +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x86_64_4 split_x86_64_r + + +# ARM1176 workaround test. + +# Cortex-A8 workaround test. + +# Check ARM to ARM farcall veneers + +# Check ARM to Thumb farcall veneers + +# Check Thumb to Thumb farcall veneers + +# Check Thumb to ARM farcall veneers +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_81 = arm_abs_global.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_in_range.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_out_of_range.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_v4bx.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_attr_merge.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_exidx_test.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr12826.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb.sh \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm.sh +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_82 = arm_abs_global.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_in_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_out_of_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb2_bl_in_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb2_bl_out_of_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_blx_in_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_blx_out_of_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb2_blx_in_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb2_blx_out_of_range.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_out_of_range_local.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_thm_jump11.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_thm_jump8.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_v4bx.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_v4bx_interworking.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_no_fix_v4bx.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_attr_merge_6.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_attr_merge_6r.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_attr_merge_7.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_default_v6z.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_on_v6z.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_off_v6z.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_default_v5te.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_default_v7a.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_default_1156t2f_s.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_b_cond.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_b.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_bl.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_blx.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local_reloc.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_exidx_test.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr12826.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc_r.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb_5t.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_5t.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_7m.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm.stdout \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t.stdout +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_83 = arm_abs_global \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_in_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_out_of_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb2_bl_in_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb2_bl_out_of_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_blx_in_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_blx_out_of_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb2_blx_in_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb2_blx_out_of_range \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_out_of_range_local \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_thm_jump11 \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_thm_jump8 \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_v4bx \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_v4bx_interworking \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_no_fix_v4bx \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_attr_merge_6 \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_attr_merge_6r \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_attr_merge_7 \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_default_v6z \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_on_v6z \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_off_v6z \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_default_v5te \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_default_v7a \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_1176_default_1156t2f_s \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_b_cond \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_b \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_bl \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_blx \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local_reloc \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc_r \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb_5t \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_5t \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_7m \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm \ +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t +@DEFAULT_TARGET_X86_64_TRUE@am__append_84 = *.dwo *.dwp +@DEFAULT_TARGET_X86_64_TRUE@am__append_85 = dwp_test_1.sh \ +@DEFAULT_TARGET_X86_64_TRUE@ dwp_test_2.sh +@DEFAULT_TARGET_X86_64_TRUE@am__append_86 = dwp_test_1.stdout \ +@DEFAULT_TARGET_X86_64_TRUE@ dwp_test_2.stdout +subdir = testsuite +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/gettext-sister.m4 \ + $(top_srcdir)/../config/lcmessage.m4 \ + $(top_srcdir)/../config/lead-dot.m4 \ + $(top_srcdir)/../config/nls.m4 \ + $(top_srcdir)/../config/override.m4 \ + $(top_srcdir)/../config/po.m4 \ + $(top_srcdir)/../config/progtest.m4 \ + $(top_srcdir)/../config/zlib.m4 \ + $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AR = ar +ARFLAGS = cru +libgoldtest_a_AR = $(AR) $(ARFLAGS) +libgoldtest_a_LIBADD = +am_libgoldtest_a_OBJECTS = test.$(OBJEXT) testmain.$(OBJEXT) \ + testfile.$(OBJEXT) +libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS) +@NATIVE_OR_CROSS_LINKER_TRUE@am__EXEEXT_1 = object_unittest$(EXEEXT) \ +@NATIVE_OR_CROSS_LINKER_TRUE@ binary_unittest$(EXEEXT) \ +@NATIVE_OR_CROSS_LINKER_TRUE@ leb128_unittest$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_2 = icf_virtual_function_folding_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ large_symbol_alignment$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_pic_test$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_3 = basic_static_test$(EXEEXT) \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@ basic_static_pic_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_4 = basic_pie_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_5 = constructor_static_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_6 = two_file_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_pic_test$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_7 = two_file_static_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_8 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_pic_2_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_pic_1_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_relocatable_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_pie_test$(EXEEXT) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_9 = two_file_shared_1_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_shared_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_2_shared_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_pie_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_10 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_strip_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_strip_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ common_test_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ common_test_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_same_shared_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_12_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_21_test$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_11 = exception_static_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_12 = weak_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_undef_test$(EXEEXT) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_13 = weak_undef_nonpic_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_14 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_plt$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ copy_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__EXEEXT_15 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pic_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pie_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pie_pic_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_ie_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_gd_to_ie_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am__EXEEXT_16 = tls_shared_gnu2_gd_to_ie_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am__EXEEXT_17 = tls_shared_gnu2_test$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am__EXEEXT_18 = tls_static_test$(EXEEXT) \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@ tls_static_pic_test$(EXEEXT) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__EXEEXT_19 = tls_shared_nonpic_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_20 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_r_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri3a$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile$(EXEEXT) +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_21 = flagstest_compress_debug_sections$(EXEEXT) \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_22 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_ttext_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_6$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_8$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_9$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_11$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_12$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_now_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_strip_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_script_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms_exec$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ binary_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ tls_phdrs_script_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ tls_script_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_11$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_2$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__EXEEXT_23 = plugin_test_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_5$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_8$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__EXEEXT_24 = plugin_test_tls$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_25 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exclude_libs_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test$(EXEEXT) +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_26 = large$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_27 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ permission_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_28 = ifuncmain1static$(EXEEXT) \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1picstatic$(EXEEXT) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_29 = \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1pic$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vis$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vispic$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1staticpic$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1pie$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vispie$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1staticpie$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_30 = ifuncmain2static$(EXEEXT) \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain2picstatic$(EXEEXT) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_31 = \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain2$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain2pic$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain3$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_32 = ifuncmain4static$(EXEEXT) \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain4picstatic$(EXEEXT) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_33 = \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain4$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_34 = ifuncmain5static$(EXEEXT) \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5picstatic$(EXEEXT) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_35 = \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5pic$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5staticpic$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5pie$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain6pie$(EXEEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_36 = ifuncmain7static$(EXEEXT) \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7picstatic$(EXEEXT) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_37 = \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7pic$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7pie$(EXEEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncvar$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_38 = start_lib_test$(EXEEXT) +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_39 = incremental_test_2$(EXEEXT) \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_3$(EXEEXT) \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_4$(EXEEXT) \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_5$(EXEEXT) \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_6$(EXEEXT) \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_copy_test$(EXEEXT) \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_common_test_1$(EXEEXT) \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_comdat_test_1$(EXEEXT) +basic_pic_test_SOURCES = basic_pic_test.c +basic_pic_test_OBJECTS = basic_pic_test.$(OBJEXT) +basic_pic_test_LDADD = $(LDADD) +am__DEPENDENCIES_1 = +basic_pic_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +basic_pie_test_SOURCES = basic_pie_test.c +basic_pie_test_OBJECTS = basic_pie_test.$(OBJEXT) +basic_pie_test_LDADD = $(LDADD) +basic_pie_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +basic_static_pic_test_SOURCES = basic_static_pic_test.c +basic_static_pic_test_OBJECTS = basic_static_pic_test.$(OBJEXT) +basic_static_pic_test_LDADD = $(LDADD) +basic_static_pic_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +basic_static_test_SOURCES = basic_static_test.c +basic_static_test_OBJECTS = basic_static_test.$(OBJEXT) +basic_static_test_LDADD = $(LDADD) +basic_static_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +basic_test_SOURCES = basic_test.c +basic_test_OBJECTS = basic_test.$(OBJEXT) +basic_test_LDADD = $(LDADD) +basic_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_binary_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ binary_test.$(OBJEXT) +binary_test_OBJECTS = $(am_binary_test_OBJECTS) +binary_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(binary_test_LDFLAGS) $(LDFLAGS) -o $@ +@NATIVE_OR_CROSS_LINKER_TRUE@am_binary_unittest_OBJECTS = \ +@NATIVE_OR_CROSS_LINKER_TRUE@ binary_unittest.$(OBJEXT) +binary_unittest_OBJECTS = $(am_binary_unittest_OBJECTS) +binary_unittest_LDADD = $(LDADD) +binary_unittest_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_common_test_1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ common_test_1.$(OBJEXT) +common_test_1_OBJECTS = $(am_common_test_1_OBJECTS) +common_test_1_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(common_test_1_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_common_test_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ common_test_1.$(OBJEXT) +common_test_2_OBJECTS = $(am_common_test_2_OBJECTS) +common_test_2_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(common_test_2_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__objects_1 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test.$(OBJEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am_constructor_static_test_OBJECTS = $(am__objects_1) +constructor_static_test_OBJECTS = \ + $(am_constructor_static_test_OBJECTS) +constructor_static_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(constructor_static_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_constructor_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test.$(OBJEXT) +constructor_test_OBJECTS = $(am_constructor_test_OBJECTS) +constructor_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(constructor_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_copy_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ copy_test.$(OBJEXT) +copy_test_OBJECTS = $(am_copy_test_OBJECTS) +copy_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(copy_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_discard_locals_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.$(OBJEXT) +discard_locals_test_OBJECTS = $(am_discard_locals_test_OBJECTS) +discard_locals_test_LDADD = $(LDADD) +discard_locals_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +discard_locals_test_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(discard_locals_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_same_shared_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_same_shared_test_OBJECTS = \ + $(am_exception_same_shared_test_OBJECTS) +exception_same_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_same_shared_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_separate_shared_12_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_separate_shared_12_test_OBJECTS = \ + $(am_exception_separate_shared_12_test_OBJECTS) +exception_separate_shared_12_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(exception_separate_shared_12_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_separate_shared_21_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_separate_shared_21_test_OBJECTS = \ + $(am_exception_separate_shared_21_test_OBJECTS) +exception_separate_shared_21_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(exception_separate_shared_21_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_shared_1_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_shared_1_test_OBJECTS = \ + $(am_exception_shared_1_test_OBJECTS) +exception_shared_1_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_shared_1_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_shared_2_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_shared_2_test_OBJECTS = \ + $(am_exception_shared_2_test_OBJECTS) +exception_shared_2_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_shared_2_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__objects_2 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am_exception_static_test_OBJECTS = $(am__objects_2) +exception_static_test_OBJECTS = $(am_exception_static_test_OBJECTS) +exception_static_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_static_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT) +exception_test_OBJECTS = $(am_exception_test_OBJECTS) +exception_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exclude_libs_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exclude_libs_test.$(OBJEXT) +exclude_libs_test_OBJECTS = $(am_exclude_libs_test_OBJECTS) +exclude_libs_test_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(exclude_libs_test_LDFLAGS) $(LDFLAGS) -o $@ +flagstest_compress_debug_sections_SOURCES = \ + flagstest_compress_debug_sections.c +flagstest_compress_debug_sections_OBJECTS = \ + flagstest_compress_debug_sections.$(OBJEXT) +flagstest_compress_debug_sections_LDADD = $(LDADD) +flagstest_compress_debug_sections_DEPENDENCIES = libgoldtest.a \ + ../libgold.a ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +flagstest_o_specialfile_SOURCES = flagstest_o_specialfile.c +flagstest_o_specialfile_OBJECTS = flagstest_o_specialfile.$(OBJEXT) +flagstest_o_specialfile_LDADD = $(LDADD) +flagstest_o_specialfile_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +flagstest_o_specialfile_and_compress_debug_sections_SOURCES = \ + flagstest_o_specialfile_and_compress_debug_sections.c +flagstest_o_specialfile_and_compress_debug_sections_OBJECTS = \ + flagstest_o_specialfile_and_compress_debug_sections.$(OBJEXT) +flagstest_o_specialfile_and_compress_debug_sections_LDADD = $(LDADD) +flagstest_o_specialfile_and_compress_debug_sections_DEPENDENCIES = \ + libgoldtest.a ../libgold.a ../../libiberty/libiberty.a \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +flagstest_o_ttext_1_SOURCES = flagstest_o_ttext_1.c +flagstest_o_ttext_1_OBJECTS = flagstest_o_ttext_1.$(OBJEXT) +flagstest_o_ttext_1_LDADD = $(LDADD) +flagstest_o_ttext_1_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +icf_virtual_function_folding_test_SOURCES = \ + icf_virtual_function_folding_test.c +icf_virtual_function_folding_test_OBJECTS = \ + icf_virtual_function_folding_test.$(OBJEXT) +icf_virtual_function_folding_test_LDADD = $(LDADD) +icf_virtual_function_folding_test_DEPENDENCIES = libgoldtest.a \ + ../libgold.a ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain1_OBJECTS = ifuncmain1.$(OBJEXT) +ifuncmain1_OBJECTS = $(am_ifuncmain1_OBJECTS) +ifuncmain1_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ifuncmain1_LDFLAGS) \ + $(LDFLAGS) -o $@ +ifuncmain1pic_SOURCES = ifuncmain1pic.c +ifuncmain1pic_OBJECTS = ifuncmain1pic.$(OBJEXT) +ifuncmain1pic_LDADD = $(LDADD) +ifuncmain1pic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain1picstatic_SOURCES = ifuncmain1picstatic.c +ifuncmain1picstatic_OBJECTS = ifuncmain1picstatic.$(OBJEXT) +ifuncmain1picstatic_LDADD = $(LDADD) +ifuncmain1picstatic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain1pie_SOURCES = ifuncmain1pie.c +ifuncmain1pie_OBJECTS = ifuncmain1pie.$(OBJEXT) +ifuncmain1pie_LDADD = $(LDADD) +ifuncmain1pie_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain1static_OBJECTS = ifuncmain1.$(OBJEXT) +ifuncmain1static_OBJECTS = $(am_ifuncmain1static_OBJECTS) +ifuncmain1static_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(ifuncmain1static_LDFLAGS) $(LDFLAGS) -o $@ +ifuncmain1staticpic_SOURCES = ifuncmain1staticpic.c +ifuncmain1staticpic_OBJECTS = ifuncmain1staticpic.$(OBJEXT) +ifuncmain1staticpic_LDADD = $(LDADD) +ifuncmain1staticpic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain1staticpie_SOURCES = ifuncmain1staticpie.c +ifuncmain1staticpie_OBJECTS = ifuncmain1staticpie.$(OBJEXT) +ifuncmain1staticpie_LDADD = $(LDADD) +ifuncmain1staticpie_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain1vis_OBJECTS = ifuncmain1vis.$(OBJEXT) +ifuncmain1vis_OBJECTS = $(am_ifuncmain1vis_OBJECTS) +ifuncmain1vis_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(ifuncmain1vis_LDFLAGS) $(LDFLAGS) -o $@ +ifuncmain1vispic_SOURCES = ifuncmain1vispic.c +ifuncmain1vispic_OBJECTS = ifuncmain1vispic.$(OBJEXT) +ifuncmain1vispic_LDADD = $(LDADD) +ifuncmain1vispic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain1vispie_SOURCES = ifuncmain1vispie.c +ifuncmain1vispie_OBJECTS = ifuncmain1vispie.$(OBJEXT) +ifuncmain1vispie_LDADD = $(LDADD) +ifuncmain1vispie_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain2_OBJECTS = ifuncmain2.$(OBJEXT) \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncdep2.$(OBJEXT) +ifuncmain2_OBJECTS = $(am_ifuncmain2_OBJECTS) +ifuncmain2_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ifuncmain2_LDFLAGS) \ + $(LDFLAGS) -o $@ +ifuncmain2pic_SOURCES = ifuncmain2pic.c +ifuncmain2pic_OBJECTS = ifuncmain2pic.$(OBJEXT) +ifuncmain2pic_LDADD = $(LDADD) +ifuncmain2pic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain2picstatic_SOURCES = ifuncmain2picstatic.c +ifuncmain2picstatic_OBJECTS = ifuncmain2picstatic.$(OBJEXT) +ifuncmain2picstatic_LDADD = $(LDADD) +ifuncmain2picstatic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain2static_OBJECTS = ifuncmain2.$(OBJEXT) \ +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncdep2.$(OBJEXT) +ifuncmain2static_OBJECTS = $(am_ifuncmain2static_OBJECTS) +ifuncmain2static_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(ifuncmain2static_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain3_OBJECTS = ifuncmain3.$(OBJEXT) +ifuncmain3_OBJECTS = $(am_ifuncmain3_OBJECTS) +ifuncmain3_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ifuncmain3_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain4_OBJECTS = ifuncmain4.$(OBJEXT) +ifuncmain4_OBJECTS = $(am_ifuncmain4_OBJECTS) +ifuncmain4_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ifuncmain4_LDFLAGS) \ + $(LDFLAGS) -o $@ +ifuncmain4picstatic_SOURCES = ifuncmain4picstatic.c +ifuncmain4picstatic_OBJECTS = ifuncmain4picstatic.$(OBJEXT) +ifuncmain4picstatic_LDADD = $(LDADD) +ifuncmain4picstatic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain4static_OBJECTS = ifuncmain4.$(OBJEXT) +ifuncmain4static_OBJECTS = $(am_ifuncmain4static_OBJECTS) +ifuncmain4static_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(ifuncmain4static_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain5_OBJECTS = ifuncmain5.$(OBJEXT) +ifuncmain5_OBJECTS = $(am_ifuncmain5_OBJECTS) +ifuncmain5_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ifuncmain5_LDFLAGS) \ + $(LDFLAGS) -o $@ +ifuncmain5pic_SOURCES = ifuncmain5pic.c +ifuncmain5pic_OBJECTS = ifuncmain5pic.$(OBJEXT) +ifuncmain5pic_LDADD = $(LDADD) +ifuncmain5pic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain5picstatic_SOURCES = ifuncmain5picstatic.c +ifuncmain5picstatic_OBJECTS = ifuncmain5picstatic.$(OBJEXT) +ifuncmain5picstatic_LDADD = $(LDADD) +ifuncmain5picstatic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain5pie_SOURCES = ifuncmain5pie.c +ifuncmain5pie_OBJECTS = ifuncmain5pie.$(OBJEXT) +ifuncmain5pie_LDADD = $(LDADD) +ifuncmain5pie_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain5static_OBJECTS = ifuncmain5.$(OBJEXT) +ifuncmain5static_OBJECTS = $(am_ifuncmain5static_OBJECTS) +ifuncmain5static_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(ifuncmain5static_LDFLAGS) $(LDFLAGS) -o $@ +ifuncmain5staticpic_SOURCES = ifuncmain5staticpic.c +ifuncmain5staticpic_OBJECTS = ifuncmain5staticpic.$(OBJEXT) +ifuncmain5staticpic_LDADD = $(LDADD) +ifuncmain5staticpic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain6pie_SOURCES = ifuncmain6pie.c +ifuncmain6pie_OBJECTS = ifuncmain6pie.$(OBJEXT) +ifuncmain6pie_LDADD = $(LDADD) +ifuncmain6pie_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain7_OBJECTS = ifuncmain7.$(OBJEXT) +ifuncmain7_OBJECTS = $(am_ifuncmain7_OBJECTS) +ifuncmain7_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ifuncmain7_LDFLAGS) \ + $(LDFLAGS) -o $@ +ifuncmain7pic_SOURCES = ifuncmain7pic.c +ifuncmain7pic_OBJECTS = ifuncmain7pic.$(OBJEXT) +ifuncmain7pic_LDADD = $(LDADD) +ifuncmain7pic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain7picstatic_SOURCES = ifuncmain7picstatic.c +ifuncmain7picstatic_OBJECTS = ifuncmain7picstatic.$(OBJEXT) +ifuncmain7picstatic_LDADD = $(LDADD) +ifuncmain7picstatic_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +ifuncmain7pie_SOURCES = ifuncmain7pie.c +ifuncmain7pie_OBJECTS = ifuncmain7pie.$(OBJEXT) +ifuncmain7pie_LDADD = $(LDADD) +ifuncmain7pie_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncmain7static_OBJECTS = ifuncmain7.$(OBJEXT) +ifuncmain7static_OBJECTS = $(am_ifuncmain7static_OBJECTS) +ifuncmain7static_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(ifuncmain7static_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am_ifuncvar_OBJECTS = \ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncvar3.$(OBJEXT) +ifuncvar_OBJECTS = $(am_ifuncvar_OBJECTS) +ifuncvar_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ifuncvar_LDFLAGS) \ + $(LDFLAGS) -o $@ +incremental_comdat_test_1_SOURCES = incremental_comdat_test_1.c +incremental_comdat_test_1_OBJECTS = \ + incremental_comdat_test_1.$(OBJEXT) +incremental_comdat_test_1_LDADD = $(LDADD) +incremental_comdat_test_1_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +incremental_common_test_1_SOURCES = incremental_common_test_1.c +incremental_common_test_1_OBJECTS = \ + incremental_common_test_1.$(OBJEXT) +incremental_common_test_1_LDADD = $(LDADD) +incremental_common_test_1_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +incremental_copy_test_SOURCES = incremental_copy_test.c +incremental_copy_test_OBJECTS = incremental_copy_test.$(OBJEXT) +incremental_copy_test_LDADD = $(LDADD) +incremental_copy_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +incremental_test_2_SOURCES = incremental_test_2.c +incremental_test_2_OBJECTS = incremental_test_2.$(OBJEXT) +incremental_test_2_LDADD = $(LDADD) +incremental_test_2_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +incremental_test_3_SOURCES = incremental_test_3.c +incremental_test_3_OBJECTS = incremental_test_3.$(OBJEXT) +incremental_test_3_LDADD = $(LDADD) +incremental_test_3_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +incremental_test_4_SOURCES = incremental_test_4.c +incremental_test_4_OBJECTS = incremental_test_4.$(OBJEXT) +incremental_test_4_LDADD = $(LDADD) +incremental_test_4_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +incremental_test_5_SOURCES = incremental_test_5.c +incremental_test_5_OBJECTS = incremental_test_5.$(OBJEXT) +incremental_test_5_LDADD = $(LDADD) +incremental_test_5_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +incremental_test_6_SOURCES = incremental_test_6.c +incremental_test_6_OBJECTS = incremental_test_6.$(OBJEXT) +incremental_test_6_LDADD = $(LDADD) +incremental_test_6_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_initpri1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri1.$(OBJEXT) +initpri1_OBJECTS = $(am_initpri1_OBJECTS) +initpri1_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(initpri1_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_initpri2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri2.$(OBJEXT) +initpri2_OBJECTS = $(am_initpri2_OBJECTS) +initpri2_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(initpri2_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_initpri3a_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri3.$(OBJEXT) +initpri3a_OBJECTS = $(am_initpri3a_OBJECTS) +initpri3a_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(initpri3a_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_justsyms_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms_1.$(OBJEXT) +justsyms_OBJECTS = $(am_justsyms_OBJECTS) +justsyms_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(justsyms_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_justsyms_exec_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms_exec.$(OBJEXT) +justsyms_exec_OBJECTS = $(am_justsyms_exec_OBJECTS) +justsyms_exec_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(justsyms_exec_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am_large_OBJECTS = large-large.$(OBJEXT) +large_OBJECTS = $(am_large_OBJECTS) +large_LINK = $(CCLD) $(large_CFLAGS) $(CFLAGS) $(large_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_large_symbol_alignment_OBJECTS = large_symbol_alignment.$(OBJEXT) +large_symbol_alignment_OBJECTS = $(am_large_symbol_alignment_OBJECTS) +large_symbol_alignment_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(large_symbol_alignment_LDFLAGS) $(LDFLAGS) -o $@ +@NATIVE_OR_CROSS_LINKER_TRUE@am_leb128_unittest_OBJECTS = \ +@NATIVE_OR_CROSS_LINKER_TRUE@ leb128_unittest.$(OBJEXT) +leb128_unittest_OBJECTS = $(am_leb128_unittest_OBJECTS) +leb128_unittest_LDADD = $(LDADD) +leb128_unittest_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +local_labels_test_SOURCES = local_labels_test.c +local_labels_test_OBJECTS = local_labels_test.$(OBJEXT) +local_labels_test_LDADD = $(LDADD) +local_labels_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +many_sections_r_test_SOURCES = many_sections_r_test.c +many_sections_r_test_OBJECTS = many_sections_r_test.$(OBJEXT) +many_sections_r_test_LDADD = $(LDADD) +many_sections_r_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_many_sections_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_test.$(OBJEXT) +many_sections_test_OBJECTS = $(am_many_sections_test_OBJECTS) +many_sections_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(many_sections_test_LDFLAGS) $(LDFLAGS) -o $@ +@NATIVE_OR_CROSS_LINKER_TRUE@am_object_unittest_OBJECTS = \ +@NATIVE_OR_CROSS_LINKER_TRUE@ object_unittest.$(OBJEXT) +object_unittest_OBJECTS = $(am_object_unittest_OBJECTS) +object_unittest_LDADD = $(LDADD) +object_unittest_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +permission_test_SOURCES = permission_test.c +permission_test_OBJECTS = permission_test.$(OBJEXT) +permission_test_LDADD = $(LDADD) +permission_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_1_SOURCES = plugin_test_1.c +plugin_test_1_OBJECTS = plugin_test_1.$(OBJEXT) +plugin_test_1_LDADD = $(LDADD) +plugin_test_1_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_2_SOURCES = plugin_test_2.c +plugin_test_2_OBJECTS = plugin_test_2.$(OBJEXT) +plugin_test_2_LDADD = $(LDADD) +plugin_test_2_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_3_SOURCES = plugin_test_3.c +plugin_test_3_OBJECTS = plugin_test_3.$(OBJEXT) +plugin_test_3_LDADD = $(LDADD) +plugin_test_3_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_4_SOURCES = plugin_test_4.c +plugin_test_4_OBJECTS = plugin_test_4.$(OBJEXT) +plugin_test_4_LDADD = $(LDADD) +plugin_test_4_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_5_SOURCES = plugin_test_5.c +plugin_test_5_OBJECTS = plugin_test_5.$(OBJEXT) +plugin_test_5_LDADD = $(LDADD) +plugin_test_5_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_6_SOURCES = plugin_test_6.c +plugin_test_6_OBJECTS = plugin_test_6.$(OBJEXT) +plugin_test_6_LDADD = $(LDADD) +plugin_test_6_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_7_SOURCES = plugin_test_7.c +plugin_test_7_OBJECTS = plugin_test_7.$(OBJEXT) +plugin_test_7_LDADD = $(LDADD) +plugin_test_7_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_8_SOURCES = plugin_test_8.c +plugin_test_8_OBJECTS = plugin_test_8.$(OBJEXT) +plugin_test_8_LDADD = $(LDADD) +plugin_test_8_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_tls_SOURCES = plugin_test_tls.c +plugin_test_tls_OBJECTS = plugin_test_tls.$(OBJEXT) +plugin_test_tls_LDADD = $(LDADD) +plugin_test_tls_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_protected_1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_3.$(OBJEXT) +protected_1_OBJECTS = $(am_protected_1_OBJECTS) +protected_1_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(protected_1_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_protected_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_3.$(OBJEXT) +protected_2_OBJECTS = $(am_protected_2_OBJECTS) +protected_2_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(protected_2_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_relro_now_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test_main.$(OBJEXT) +relro_now_test_OBJECTS = $(am_relro_now_test_OBJECTS) +relro_now_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(relro_now_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_relro_script_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test_main.$(OBJEXT) +relro_script_test_OBJECTS = $(am_relro_script_test_OBJECTS) +relro_script_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(relro_script_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_relro_strip_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test_main.$(OBJEXT) +relro_strip_test_OBJECTS = $(am_relro_strip_test_OBJECTS) +relro_strip_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(relro_strip_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_relro_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test_main.$(OBJEXT) +relro_test_OBJECTS = $(am_relro_test_OBJECTS) +relro_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(relro_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_script_test_1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_1.$(OBJEXT) +script_test_1_OBJECTS = $(am_script_test_1_OBJECTS) +script_test_1_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(script_test_1_LDFLAGS) $(LDFLAGS) -o $@ +script_test_11_SOURCES = script_test_11.c +script_test_11_OBJECTS = script_test_11.$(OBJEXT) +script_test_11_LDADD = $(LDADD) +script_test_11_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_script_test_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2a.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2b.$(OBJEXT) +script_test_2_OBJECTS = $(am_script_test_2_OBJECTS) +script_test_2_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(script_test_2_LDFLAGS) $(LDFLAGS) -o $@ +script_test_3_SOURCES = script_test_3.c +script_test_3_OBJECTS = script_test_3.$(OBJEXT) +script_test_3_LDADD = $(LDADD) +script_test_3_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_searched_file_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test.$(OBJEXT) +searched_file_test_OBJECTS = $(am_searched_file_test_OBJECTS) +searched_file_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(searched_file_test_LDFLAGS) $(LDFLAGS) -o $@ +start_lib_test_SOURCES = start_lib_test.c +start_lib_test_OBJECTS = start_lib_test.$(OBJEXT) +start_lib_test_LDADD = $(LDADD) +start_lib_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_thin_archive_test_1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_main.$(OBJEXT) +thin_archive_test_1_OBJECTS = $(am_thin_archive_test_1_OBJECTS) +thin_archive_test_1_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(thin_archive_test_1_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_thin_archive_test_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_main.$(OBJEXT) +thin_archive_test_2_OBJECTS = $(am_thin_archive_test_2_OBJECTS) +thin_archive_test_2_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(thin_archive_test_2_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__objects_3 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_file2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_main.$(OBJEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_tls_phdrs_script_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(am__objects_3) +tls_phdrs_script_test_OBJECTS = $(am_tls_phdrs_script_test_OBJECTS) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__DEPENDENCIES_2 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c.o +tls_phdrs_script_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_phdrs_script_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_pic_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_pic_test_OBJECTS = $(am_tls_pic_test_OBJECTS) +tls_pic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_pic_test_LDFLAGS) $(LDFLAGS) -o $@ +tls_pie_pic_test_SOURCES = tls_pie_pic_test.c +tls_pie_pic_test_OBJECTS = tls_pie_pic_test.$(OBJEXT) +tls_pie_pic_test_LDADD = $(LDADD) +tls_pie_pic_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +tls_pie_test_SOURCES = tls_pie_test.c +tls_pie_test_OBJECTS = tls_pie_test.$(OBJEXT) +tls_pie_test_LDADD = $(LDADD) +tls_pie_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_tls_script_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(am__objects_3) +tls_script_test_OBJECTS = $(am_tls_script_test_OBJECTS) +tls_script_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_script_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_shared_gd_to_ie_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_gd_to_ie_test_OBJECTS = \ + $(am_tls_shared_gd_to_ie_test_OBJECTS) +tls_shared_gd_to_ie_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_gd_to_ie_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am_tls_shared_gnu2_gd_to_ie_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_gnu2_gd_to_ie_test_OBJECTS = \ + $(am_tls_shared_gnu2_gd_to_ie_test_OBJECTS) +tls_shared_gnu2_gd_to_ie_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(tls_shared_gnu2_gd_to_ie_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am_tls_shared_gnu2_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_gnu2_test_OBJECTS = $(am_tls_shared_gnu2_test_OBJECTS) +tls_shared_gnu2_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_gnu2_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_shared_ie_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_ie_test_OBJECTS = $(am_tls_shared_ie_test_OBJECTS) +tls_shared_ie_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_ie_test_LDFLAGS) $(LDFLAGS) -o $@ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_shared_nonpic_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_nonpic_test_OBJECTS = $(am_tls_shared_nonpic_test_OBJECTS) +tls_shared_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_nonpic_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_shared_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_test_OBJECTS = $(am_tls_shared_test_OBJECTS) +tls_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__objects_4 = tls_test_main.$(OBJEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am_tls_static_pic_test_OBJECTS = $(am__objects_4) +tls_static_pic_test_OBJECTS = $(am_tls_static_pic_test_OBJECTS) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__DEPENDENCIES_3 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_file2_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c_pic.o +tls_static_pic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_static_pic_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am_tls_static_test_OBJECTS = $(am__objects_3) +tls_static_test_OBJECTS = $(am_tls_static_test_OBJECTS) +tls_static_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_static_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_file2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_main.$(OBJEXT) +tls_test_OBJECTS = $(am_tls_test_OBJECTS) +tls_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_test_LDFLAGS) $(LDFLAGS) -o $@ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_mixed_2_shared_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_mixed_2_shared_test_OBJECTS = \ + $(am_two_file_mixed_2_shared_test_OBJECTS) +two_file_mixed_2_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_mixed_2_shared_test_LDFLAGS) $(LDFLAGS) \ + -o $@ +two_file_mixed_pie_test_SOURCES = two_file_mixed_pie_test.c +two_file_mixed_pie_test_OBJECTS = two_file_mixed_pie_test.$(OBJEXT) +two_file_mixed_pie_test_LDADD = $(LDADD) +two_file_mixed_pie_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_mixed_shared_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_mixed_shared_test_OBJECTS = \ + $(am_two_file_mixed_shared_test_OBJECTS) +two_file_mixed_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_mixed_shared_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_pic_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_pic_test_OBJECTS = $(am_two_file_pic_test_OBJECTS) +two_file_pic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_pic_test_LDFLAGS) $(LDFLAGS) -o $@ +two_file_pie_test_SOURCES = two_file_pie_test.c +two_file_pie_test_OBJECTS = two_file_pie_test.$(OBJEXT) +two_file_pie_test_LDADD = $(LDADD) +two_file_pie_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_relocatable_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_relocatable_test_OBJECTS = \ + $(am_two_file_relocatable_test_OBJECTS) +two_file_relocatable_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_relocatable_test_LDFLAGS) $(LDFLAGS) -o $@ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_same_shared_nonpic_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_same_shared_nonpic_test_OBJECTS = \ + $(am_two_file_same_shared_nonpic_test_OBJECTS) +two_file_same_shared_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_same_shared_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_same_shared_strip_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_same_shared_strip_test_OBJECTS = \ + $(am_two_file_same_shared_strip_test_OBJECTS) +two_file_same_shared_strip_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_same_shared_strip_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_same_shared_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_same_shared_test_OBJECTS = \ + $(am_two_file_same_shared_test_OBJECTS) +two_file_same_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_same_shared_test_LDFLAGS) $(LDFLAGS) -o $@ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_separate_shared_12_nonpic_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_separate_shared_12_nonpic_test_OBJECTS = \ + $(am_two_file_separate_shared_12_nonpic_test_OBJECTS) +two_file_separate_shared_12_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_separate_shared_12_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_separate_shared_12_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_separate_shared_12_test_OBJECTS = \ + $(am_two_file_separate_shared_12_test_OBJECTS) +two_file_separate_shared_12_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_separate_shared_12_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_separate_shared_21_nonpic_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_separate_shared_21_nonpic_test_OBJECTS = \ + $(am_two_file_separate_shared_21_nonpic_test_OBJECTS) +two_file_separate_shared_21_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_separate_shared_21_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_separate_shared_21_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_separate_shared_21_test_OBJECTS = \ + $(am_two_file_separate_shared_21_test_OBJECTS) +two_file_separate_shared_21_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_separate_shared_21_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_1_nonpic_test_OBJECTS = two_file_test_2.$(OBJEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_1_nonpic_test_OBJECTS = \ + $(am_two_file_shared_1_nonpic_test_OBJECTS) +two_file_shared_1_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_shared_1_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_1_pic_2_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_1_pic_2_test_OBJECTS = \ + $(am_two_file_shared_1_pic_2_test_OBJECTS) +two_file_shared_1_pic_2_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_shared_1_pic_2_test_LDFLAGS) $(LDFLAGS) \ + -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_1_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_1_test_OBJECTS = $(am_two_file_shared_1_test_OBJECTS) +two_file_shared_1_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_shared_1_test_LDFLAGS) $(LDFLAGS) -o $@ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_2_nonpic_test_OBJECTS = two_file_test_1.$(OBJEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.$(OBJEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_2_nonpic_test_OBJECTS = \ + $(am_two_file_shared_2_nonpic_test_OBJECTS) +two_file_shared_2_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_shared_2_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_2_pic_1_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_2_pic_1_test_OBJECTS = \ + $(am_two_file_shared_2_pic_1_test_OBJECTS) +two_file_shared_2_pic_1_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_shared_2_pic_1_test_LDFLAGS) $(LDFLAGS) \ + -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_2_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_2_test_OBJECTS = $(am_two_file_shared_2_test_OBJECTS) +two_file_shared_2_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_shared_2_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__objects_5 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_static_test_OBJECTS = $(am__objects_5) +two_file_static_test_OBJECTS = $(am_two_file_static_test_OBJECTS) +two_file_static_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_static_test_LDFLAGS) $(LDFLAGS) -o $@ +two_file_strip_test_SOURCES = two_file_strip_test.c +two_file_strip_test_OBJECTS = two_file_strip_test.$(OBJEXT) +two_file_strip_test_LDADD = $(LDADD) +two_file_strip_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_test_OBJECTS = $(am_two_file_test_OBJECTS) +two_file_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main.$(OBJEXT) +ver_test_OBJECTS = $(am_ver_test_OBJECTS) +ver_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_11_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main_2.$(OBJEXT) +ver_test_11_OBJECTS = $(am_ver_test_11_OBJECTS) +ver_test_11_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_11_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_12_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main_2.$(OBJEXT) +ver_test_12_OBJECTS = $(am_ver_test_12_OBJECTS) +ver_test_12_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_12_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main_2.$(OBJEXT) +ver_test_2_OBJECTS = $(am_ver_test_2_OBJECTS) +ver_test_2_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_2_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_6_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_6.$(OBJEXT) +ver_test_6_OBJECTS = $(am_ver_test_6_OBJECTS) +ver_test_6_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ver_test_6_LDFLAGS) \ + $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_8_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +ver_test_8_OBJECTS = $(am_ver_test_8_OBJECTS) +ver_test_8_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_8_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_9_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main.$(OBJEXT) +ver_test_9_OBJECTS = $(am_ver_test_9_OBJECTS) +ver_test_9_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_9_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_alias_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test_main.$(OBJEXT) +weak_alias_test_OBJECTS = $(am_weak_alias_test_OBJECTS) +weak_alias_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(weak_alias_test_LDFLAGS) $(LDFLAGS) -o $@ +weak_plt_SOURCES = weak_plt.c +weak_plt_OBJECTS = weak_plt.$(OBJEXT) +weak_plt_LDADD = $(LDADD) +weak_plt_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_test.$(OBJEXT) +weak_test_OBJECTS = $(am_weak_test_OBJECTS) +weak_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(weak_test_LDFLAGS) $(LDFLAGS) -o $@ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_undef_nonpic_test_OBJECTS = weak_undef_test.$(OBJEXT) +weak_undef_nonpic_test_OBJECTS = $(am_weak_undef_nonpic_test_OBJECTS) +weak_undef_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(weak_undef_nonpic_test_LDFLAGS) $(LDFLAGS) -o $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_undef_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_undef_test.$(OBJEXT) +weak_undef_test_OBJECTS = $(am_weak_undef_test_OBJECTS) +weak_undef_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(weak_undef_test_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/../depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CCLD = $(CC) +CXXLD = $(CXX) +SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c basic_pie_test.c \ + basic_static_pic_test.c basic_static_test.c basic_test.c \ + $(binary_test_SOURCES) $(binary_unittest_SOURCES) \ + $(common_test_1_SOURCES) $(common_test_2_SOURCES) \ + $(constructor_static_test_SOURCES) $(constructor_test_SOURCES) \ + $(copy_test_SOURCES) $(discard_locals_test_SOURCES) \ + $(exception_same_shared_test_SOURCES) \ + $(exception_separate_shared_12_test_SOURCES) \ + $(exception_separate_shared_21_test_SOURCES) \ + $(exception_shared_1_test_SOURCES) \ + $(exception_shared_2_test_SOURCES) \ + $(exception_static_test_SOURCES) $(exception_test_SOURCES) \ + $(exclude_libs_test_SOURCES) \ + flagstest_compress_debug_sections.c flagstest_o_specialfile.c \ + flagstest_o_specialfile_and_compress_debug_sections.c \ + flagstest_o_ttext_1.c icf_virtual_function_folding_test.c \ + $(ifuncmain1_SOURCES) ifuncmain1pic.c ifuncmain1picstatic.c \ + ifuncmain1pie.c $(ifuncmain1static_SOURCES) \ + ifuncmain1staticpic.c ifuncmain1staticpie.c \ + $(ifuncmain1vis_SOURCES) ifuncmain1vispic.c ifuncmain1vispie.c \ + $(ifuncmain2_SOURCES) ifuncmain2pic.c ifuncmain2picstatic.c \ + $(ifuncmain2static_SOURCES) $(ifuncmain3_SOURCES) \ + $(ifuncmain4_SOURCES) ifuncmain4picstatic.c \ + $(ifuncmain4static_SOURCES) $(ifuncmain5_SOURCES) \ + ifuncmain5pic.c ifuncmain5picstatic.c ifuncmain5pie.c \ + $(ifuncmain5static_SOURCES) ifuncmain5staticpic.c \ + ifuncmain6pie.c $(ifuncmain7_SOURCES) ifuncmain7pic.c \ + ifuncmain7picstatic.c ifuncmain7pie.c \ + $(ifuncmain7static_SOURCES) $(ifuncvar_SOURCES) \ + incremental_comdat_test_1.c incremental_common_test_1.c \ + incremental_copy_test.c incremental_test_2.c \ + incremental_test_3.c incremental_test_4.c incremental_test_5.c \ + incremental_test_6.c $(initpri1_SOURCES) $(initpri2_SOURCES) \ + $(initpri3a_SOURCES) $(justsyms_SOURCES) \ + $(justsyms_exec_SOURCES) $(large_SOURCES) \ + $(large_symbol_alignment_SOURCES) $(leb128_unittest_SOURCES) \ + local_labels_test.c many_sections_r_test.c \ + $(many_sections_test_SOURCES) $(object_unittest_SOURCES) \ + permission_test.c plugin_test_1.c plugin_test_2.c \ + plugin_test_3.c plugin_test_4.c plugin_test_5.c \ + plugin_test_6.c plugin_test_7.c plugin_test_8.c \ + plugin_test_tls.c $(protected_1_SOURCES) \ + $(protected_2_SOURCES) $(relro_now_test_SOURCES) \ + $(relro_script_test_SOURCES) $(relro_strip_test_SOURCES) \ + $(relro_test_SOURCES) $(script_test_1_SOURCES) \ + script_test_11.c $(script_test_2_SOURCES) script_test_3.c \ + $(searched_file_test_SOURCES) start_lib_test.c \ + $(thin_archive_test_1_SOURCES) $(thin_archive_test_2_SOURCES) \ + $(tls_phdrs_script_test_SOURCES) $(tls_pic_test_SOURCES) \ + tls_pie_pic_test.c tls_pie_test.c $(tls_script_test_SOURCES) \ + $(tls_shared_gd_to_ie_test_SOURCES) \ + $(tls_shared_gnu2_gd_to_ie_test_SOURCES) \ + $(tls_shared_gnu2_test_SOURCES) $(tls_shared_ie_test_SOURCES) \ + $(tls_shared_nonpic_test_SOURCES) $(tls_shared_test_SOURCES) \ + $(tls_static_pic_test_SOURCES) $(tls_static_test_SOURCES) \ + $(tls_test_SOURCES) $(two_file_mixed_2_shared_test_SOURCES) \ + two_file_mixed_pie_test.c \ + $(two_file_mixed_shared_test_SOURCES) \ + $(two_file_pic_test_SOURCES) two_file_pie_test.c \ + $(two_file_relocatable_test_SOURCES) \ + $(two_file_same_shared_nonpic_test_SOURCES) \ + $(two_file_same_shared_strip_test_SOURCES) \ + $(two_file_same_shared_test_SOURCES) \ + $(two_file_separate_shared_12_nonpic_test_SOURCES) \ + $(two_file_separate_shared_12_test_SOURCES) \ + $(two_file_separate_shared_21_nonpic_test_SOURCES) \ + $(two_file_separate_shared_21_test_SOURCES) \ + $(two_file_shared_1_nonpic_test_SOURCES) \ + $(two_file_shared_1_pic_2_test_SOURCES) \ + $(two_file_shared_1_test_SOURCES) \ + $(two_file_shared_2_nonpic_test_SOURCES) \ + $(two_file_shared_2_pic_1_test_SOURCES) \ + $(two_file_shared_2_test_SOURCES) \ + $(two_file_static_test_SOURCES) two_file_strip_test.c \ + $(two_file_test_SOURCES) $(ver_test_SOURCES) \ + $(ver_test_11_SOURCES) $(ver_test_12_SOURCES) \ + $(ver_test_2_SOURCES) $(ver_test_6_SOURCES) \ + $(ver_test_8_SOURCES) $(ver_test_9_SOURCES) \ + $(weak_alias_test_SOURCES) weak_plt.c $(weak_test_SOURCES) \ + $(weak_undef_nonpic_test_SOURCES) $(weak_undef_test_SOURCES) +ETAGS = etags +CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +# Restructured Text title and section. +am__rst_title = sed 's/.*/ & /;h;s/./=/g;p;x;p;g;p;s/.*//' +am__rst_section = sed 'p;s/./=/g;p;g' +# Put stdin (possibly several lines separated by ". ") in a box. +am__text_box = $(AWK) '{ \ + n = split($$0, lines, "\\. "); max = 0; \ + for (i = 1; i <= n; ++i) \ + if (max < length(lines[i])) \ + max = length(lines[i]); \ + for (i = 0; i < max; ++i) line = line "="; \ + print line; \ + for (i = 1; i <= n; ++i) if (lines[i]) print lines[i];\ + print line; \ +}' +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL). This contradicts POSIX. Work around the problem +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log, and passes +# TESTS_ENVIRONMENT. Save and restore TERM around use of +# TESTS_ENVIRONMENT, in case that unsets it. +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +srcdir=$(srcdir); export srcdir; \ +rm -f $@-t; \ +trap 'st=$$?; rm -f '\''$(abs_builddir)/$@-t'\''; (exit $$st); exit $$st' \ + 1 2 13 15; \ +am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`; \ +test "x$$am__odir" = x. || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; __SAVED_TERM=$$TERM; \ +$(TESTS_ENVIRONMENT) +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check check-html recheck recheck-html +TEST_SUITE_LOG = test-suite.log +TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html) +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +TEST_LOGS_TMP = $(TEST_LOGS:.log=.log-t) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFAULT_TARGET = @DEFAULT_TARGET@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLOPEN_LIBS = @DLOPEN_LIBS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GMSGFMT = @GMSGFMT@ +GOLD_LDADD = @GOLD_LDADD@ +GOLD_LDFLAGS = @GOLD_LDFLAGS@ +GREP = @GREP@ +INCINTL = @INCINTL@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +LDFLAGS = @LDFLAGS@ +LFS_CFLAGS = @LFS_CFLAGS@ +LIBINTL = @LIBINTL@ +LIBINTL_DEP = @LIBINTL_DEP@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MERGE_CONSTANTS_FLAG = @MERGE_CONSTANTS_FLAG@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NO_WERROR = @NO_WERROR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANDOM_SEED_CFLAGS = @RANDOM_SEED_CFLAGS@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TARGETOBJS = @TARGETOBJS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_as_default = @install_as_default@ +install_sh = @install_sh@ +installed_linker = @installed_linker@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Ignore warning about AM_PROG_CC_C_O due to large_CFLAGS +AUTOMAKE_OPTIONS = foreign -Wno-portability + +# The two_file_test tests -fmerge-constants, so we simply always turn +# it on. For compilers that do not support the command-line option, +# we assume they just always emit SHF_MERGE sections unconditionally. +AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) $(MERGE_CONSTANTS_FLAG) +AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) $(MERGE_CONSTANTS_FLAG) +AM_CPPFLAGS = \ + -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \ + -I$(srcdir)/../../elfcpp -I.. \ + -DLOCALEDIR="\"$(datadir)/locale\"" \ + @INCINTL@ + + +# COMPILE1, LINK1, CXXCOMPILE1, CXXLINK1 are renamed from COMPILE, LINK, +# CXXCOMPILE and CXXLINK generated by automake 1.11.1. FIXME: they should +# be updated if they are different from automake used by gold. +COMPILE1 = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + +LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXCOMPILE1 = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) + +CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ + + +# Strip out -Wp,-D_FORTIFY_SOURCE=, which is rrelevant for the gold +# testsuite and incompatible with -O0 used in gold tests, from +# COMPILE, LINK, CXXCOMPILE and CXXLINK. +COMPILE = `echo $(COMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9[0-9]]*//'` +LINK = `echo $(LINK1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'` +CXXCOMPILE = `echo $(CXXCOMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'` +CXXLINK = `echo $(CXXLINK1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'` + +# Strip out -static-libgcc and -static-libstdc++ options, for tests +# that must have these libraries linked dynamically. The -shared-libgcc +# option does not work correctly, and there is no -shared-libstdc++ option. +# (See GCC PR 55781 and PR 55782.) +CXXLINK_S = `echo $(CXXLINK1) | sed -e 's/-static-lib\\(gcc\\|stdc++\\)//g'` +TEST_READELF = $(top_builddir)/../binutils/readelf +TEST_OBJDUMP = $(top_builddir)/../binutils/objdump +TEST_OBJCOPY = $(top_builddir)/../binutils/objcopy +TEST_CXXFILT = $(top_builddir)/../binutils/cxxfilt +TEST_STRIP = $(top_builddir)/../binutils/strip-new +TEST_AR = $(top_builddir)/../binutils/ar +TEST_NM = $(top_builddir)/../binutils/nm-new +TEST_AS = $(top_builddir)/../gas/as-new +@PLUGINS_TRUE@LIBDL = -ldl +@THREADS_TRUE@THREADSLIB = -lpthread +@OMP_SUPPORT_TRUE@TLS_TEST_C_CFLAGS = -fopenmp + +# 'make clean' is good about deleting some intermediate files (such as +# .o's), but not all of them (such as .so's and .err files). We +# improve on that here. automake-1.9 info docs say "mostlyclean" is +# the right choice for files 'make' builds that people rebuild. +MOSTLYCLEANFILES = *.so *.syms *.stdout $(am__append_4) \ + $(am__append_17) $(am__append_26) $(am__append_28) \ + $(am__append_30) $(am__append_36) $(am__append_40) \ + $(am__append_41) $(am__append_47) $(am__append_63) \ + $(am__append_66) $(am__append_69) $(am__append_71) \ + $(am__append_74) $(am__append_77) $(am__append_80) \ + $(am__append_83) $(am__append_84) + +# We will add to these later, for each individual test. Note +# that we add each test under check_SCRIPTS or check_PROGRAMS; +# the TESTS variable is automatically populated from these. +check_SCRIPTS = $(am__append_2) $(am__append_34) $(am__append_38) \ + $(am__append_42) $(am__append_45) $(am__append_61) \ + $(am__append_64) $(am__append_67) $(am__append_72) \ + $(am__append_75) $(am__append_78) $(am__append_81) \ + $(am__append_85) +check_DATA = $(am__append_3) $(am__append_27) $(am__append_29) \ + $(am__append_35) $(am__append_39) $(am__append_43) \ + $(am__append_46) $(am__append_62) $(am__append_65) \ + $(am__append_68) $(am__append_73) $(am__append_76) \ + $(am__append_79) $(am__append_82) $(am__append_86) +BUILT_SOURCES = $(am__append_25) +TESTS = $(check_SCRIPTS) $(check_PROGRAMS) + +# --------------------------------------------------------------------- +# These tests test the internals of gold (unittests). + +# Infrastucture needed for the unittests +check_LIBRARIES = libgoldtest.a +libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc +DEPENDENCIES = \ + libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP) + +LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \ + $(THREADSLIB) $(LIBDL) + +@NATIVE_OR_CROSS_LINKER_TRUE@object_unittest_SOURCES = object_unittest.cc +@NATIVE_OR_CROSS_LINKER_TRUE@binary_unittest_SOURCES = binary_unittest.cc +@NATIVE_OR_CROSS_LINKER_TRUE@leb128_unittest_SOURCES = leb128_unittest.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@large_symbol_alignment_SOURCES = large_symbol_alignment.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@large_symbol_alignment_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@large_symbol_alignment_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@large_symbol_alignment_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_test_SOURCES = constructor_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_test_LDADD = +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@constructor_static_test_SOURCES = $(constructor_test_SOURCES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@constructor_static_test_LDADD = $(constructor_test_LDADD) +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_SOURCES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test.h + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_LDADD = +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@two_file_static_test_SOURCES = $(two_file_test_SOURCES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@two_file_static_test_LDADD = $(two_file_test_LDADD) +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pic_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pic_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pic_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_test_LDADD = two_file_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_test_LDADD = two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_pic_2_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_2.so two_file_test_1_pic.o two_file_test_1b_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_pic_2_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_pic_1_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_2.so two_file_test_2_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_test_LDADD = two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1.so two_file_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1.so two_file_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1.so two_file_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2.so two_file_shared_1.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_relocatable.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable_test_LDADD = two_file_relocatable.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic_test_SOURCES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.cc two_file_test_main.cc + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic_test_SOURCES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_2_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_nonpic_test_LDADD = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_LDADD = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_shared_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_shared_test_LDADD = two_file_shared_mixed.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_2_shared_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_2_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed_1.so two_file_shared_2.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_2_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_2_shared_test_LDADD = two_file_shared_mixed_1.so two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_strip_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_strip_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_strip.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_strip_test_LDADD = two_file_shared_strip.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_1_SOURCES = common_test_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_1_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_1_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_1_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_2_SOURCES = common_test_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_2_DEPENDENCIES = common_test_2.so common_test_3.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_2_LDADD = common_test_2.so common_test_3.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_SOURCES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test.h + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_LDADD = +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_SOURCES = $(exception_test_SOURCES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_LDADD = $(exception_test_LDADD) +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_LDADD = exception_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_LDADD = exception_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_SOURCES = exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_LDADD = exception_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_SOURCES = exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld exception_shared_1.so exception_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--no-as-needed + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1.so exception_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_SOURCES = exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld exception_shared_1.so exception_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--no-as-needed + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2.so exception_shared_1.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_test_SOURCES = weak_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_test_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_test_SOURCES = weak_undef_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib.so alt/weak_undef_lib.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_test_LDADD = -L . weak_undef_lib.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_nonpic_test_SOURCES = weak_undef_test.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_nonpic_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib_nonpic.so alt/weak_undef_lib_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_nonpic_test_LDADD = -L . weak_undef_lib_nonpic.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_SOURCES = weak_alias_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld weak_alias_test_1.so weak_alias_test_2.so \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test_3.o weak_alias_test_4.so weak_alias_test_5.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test_1.so weak_alias_test_2.so weak_alias_test_3.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test_4.so weak_alias_test_5.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_SOURCES = copy_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_DEPENDENCIES = gcctestdir/ld copy_test_1.so copy_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_LDADD = copy_test_1.so copy_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_DEPENDENCIES = gcctestdir/ld tls_test_c.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_LDADD = tls_test_c.o -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pic_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pic_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ -lpthread + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_test_LDADD = tls_test_shared.so -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_ie_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_ie_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_ie_test_LDADD = tls_test_ie_shared.so -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_gd_to_ie_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c_pic.o tls_test_shared2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_gd_to_ie_test_LDADD = tls_test_pic.o tls_test_c_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_shared2.so -lpthread + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_gd_to_ie_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ tls_test_c_gnu2.o tls_test_gnu2_shared2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_gd_to_ie_test_LDADD = tls_test_gnu2.o tls_test_c_gnu2.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ tls_test_gnu2_shared2.so -lpthread + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_test_LDADD = tls_test_gnu2_shared.so -lpthread +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_test_SOURCES = $(tls_test_SOURCES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_test_LDFLAGS = $(tls_test_LDFLAGS) -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_test_LDADD = $(tls_test_LDADD) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_pic_test_SOURCES = $(tls_pic_test_SOURCES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_pic_test_DEPENDENCIES = $(tls_pic_test_DEPENDENCIES) +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_pic_test_LDADD = $(tls_pic_test_LDADD) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_SOURCES = tls_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_SOURCES = many_sections_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_LDFLAGS = -Bgcctestdir/ -rdynamic +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri1_SOURCES = initpri1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri1_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri1_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri1_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri2_SOURCES = initpri2.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri2_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri2_LDFLAGS = -Bgcctestdir/ -Wl,--ctors-in-init-array +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri2_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3a_SOURCES = initpri3.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3a_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3a_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3a_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_SOURCES = ver_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2_SOURCES = ver_test_main_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2_DEPENDENCIES = gcctestdir/ld ver_test_4.so ver_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2_LDADD = ver_test_4.so ver_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_6_SOURCES = ver_test_6.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_6_DEPENDENCIES = gcctestdir/ld ver_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_6_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_6_LDADD = ver_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_DEPENDENCIES = gcctestdir/ld ver_test_8_1.so ver_test_8_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_LDADD = ver_test_8_1.so ver_test_8_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9_SOURCES = ver_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9_DEPENDENCIES = gcctestdir/ld ver_test_9.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9_LDADD = ver_test_9.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11_SOURCES = ver_test_main_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11_DEPENDENCIES = gcctestdir/ld ver_test_11.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11_LDADD = ver_test_11.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_12_SOURCES = ver_test_main_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_12_DEPENDENCIES = gcctestdir/ld ver_test_12.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_12_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_12_LDADD = ver_test_12.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_SOURCES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.cc protected_main_2.cc protected_main_3.cc + +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_DEPENDENCIES = gcctestdir/ld protected_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_LDADD = protected_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_SOURCES = protected_main_1.cc protected_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_DEPENDENCIES = gcctestdir/ld protected_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_LDADD = protected_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_SOURCES = relro_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_DEPENDENCIES = gcctestdir/ld relro_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_LDADD = relro_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_now_test_SOURCES = relro_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_now_test_DEPENDENCIES = gcctestdir/ld relro_now_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_now_test_LDFLAGS = -Bgcctestdir -Wl,-R,. -Wl,-z,relro -Wl,-z,now +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_now_test_LDADD = relro_now_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_strip_test_SOURCES = relro_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_strip_test_DEPENDENCIES = gcctestdir/ld relro_strip_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_strip_test_LDADD = relro_strip_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test_SOURCES = relro_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test_DEPENDENCIES = gcctestdir/ld relro_script_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test_LDADD = relro_script_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_1_SOURCES = script_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_1_DEPENDENCIES = gcctestdir/ld script_test_1.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -Wl,-T,$(srcdir)/script_test_1.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_1_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_2_SOURCES = script_test_2.cc script_test_2a.cc script_test_2b.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_2_DEPENDENCIES = gcctestdir/ld script_test_2.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -Wl,-T,$(srcdir)/script_test_2.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_2_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_SOURCES = justsyms_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_DEPENDENCIES = gcctestdir/ld justsyms_2r.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_2r.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_exec_SOURCES = justsyms_exec.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_exec_DEPENDENCIES = gcctestdir/ld justsyms_lib +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_exec_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_lib +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_exec_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary_test_SOURCES = binary_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary_test_DEPENDENCIES = gcctestdir/ld binary.txt +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary_test_LDFLAGS = -Bgcctestdir/ -Wl,--format,binary,binary.txt,--format,elf +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary_test_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@tls_phdrs_script_test_SOURCES = $(tls_test_SOURCES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@tls_phdrs_script_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) $(srcdir)/script_test_3.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@tls_phdrs_script_test_LDFLAGS = $(tls_test_LDFLAGS) -Wl,-T,$(srcdir)/script_test_3.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@tls_phdrs_script_test_LDADD = $(tls_test_LDADD) +@GCC_TRUE@@NATIVE_LINKER_TRUE@tls_script_test_SOURCES = $(tls_test_SOURCES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@tls_script_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) $(srcdir)/script_test_4.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@tls_script_test_LDFLAGS = $(tls_test_LDFLAGS) -Wl,-T,$(srcdir)/script_test_4.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@tls_script_test_LDADD = $(tls_test_LDADD) +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_1_SOURCES = thin_archive_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_1_DEPENDENCIES = gcctestdir/ld libthin1.a alt/libthin2.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_1_LDFLAGS = -Bgcctestdir/ -Lalt +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_1_LDADD = libthin1.a -lthin2 +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_2_SOURCES = thin_archive_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_2_DEPENDENCIES = gcctestdir/ld libthinall.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_2_LDFLAGS = -Bgcctestdir/ -L. +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_2_LDADD = -lthinall +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test_SOURCES = exclude_libs_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test_DEPENDENCIES = gcctestdir/ld libexclude_libs_test_1.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_2.a alt/libexclude_libs_test_3.a + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test_LDFLAGS = -Bgcctestdir/ -L. -Lalt \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--exclude-libs,dummy:libexclude_libs_test_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--exclude-libs,libexclude_libs_test_3 + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test_LDADD = -lexclude_libs_test_1 -lexclude_libs_test_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/libexclude_libs_test_3.a + +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_test_SOURCES = discard_locals_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_test_LDFLAGS = -Bgcctestdir/ -Wl,--discard-locals +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_SOURCES = large.c +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_CFLAGS = -mcmodel=medium +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_LDADD = +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_SOURCES = searched_file_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_DEPENDENCIES = alt/searched_file_test_lib.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_LDFLAGS = -Bgcctestdir/ -Lalt +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_LDADD = -l:searched_file_test_lib.a +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1static_SOURCES = ifuncmain1.c +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1static_DEPENDENCIES = gcctestdir/ld ifuncdep1.o +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1static_LDFLAGS = -Bgcctestdir/ -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1static_LDADD = ifuncdep1.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1_SOURCES = ifuncmain1.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1_DEPENDENCIES = gcctestdir/ld ifuncmod1.so +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1_LDADD = ifuncmod1.so +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vis_SOURCES = ifuncmain1vis.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vis_DEPENDENCIES = gcctestdir/ld ifuncmod1.so +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vis_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vis_LDADD = ifuncmod1.so +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2static_SOURCES = ifuncmain2.c ifuncdep2.c +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2static_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2static_LDFLAGS = -Bgcctestdir/ -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2static_LDADD = +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2_SOURCES = ifuncmain2.c ifuncdep2.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2_LDADD = +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain3_SOURCES = ifuncmain3.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain3_DEPENDENCIES = gcctestdir/ld ifuncmod3.so +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain3_LDFLAGS = -Bgcctestdir/ -Wl,--export-dynamic -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain3_LDADD = -ldl +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4static_SOURCES = ifuncmain4.c +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4static_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4static_LDFLAGS = -Bgcctestdir/ -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4static_LDADD = +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4_SOURCES = ifuncmain4.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4_LDADD = +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5static_SOURCES = ifuncmain5.c +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5static_DEPENDENCIES = gcctestdir/ld ifuncdep5.o +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5static_LDFLAGS = -Bgcctestdir/ -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5static_LDADD = ifuncdep5.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5_SOURCES = ifuncmain5.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5_DEPENDENCIES = gcctestdir/ld ifuncmod5.so +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5_LDADD = ifuncmod5.so +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7static_SOURCES = ifuncmain7.c +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7static_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7static_LDFLAGS = -Bgcctestdir/ -static +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7static_LDADD = +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7_SOURCES = ifuncmain7.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7_LDADD = +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncvar_SOURCES = ifuncvar3.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncvar_DEPENDENCIES = gcctestdir/ld ifuncvar.so +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncvar_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncvar_LDADD = ifuncvar.so +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .cc .html .log .o .obj .test .test$(EXEEXT) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign testsuite/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLIBRARIES: + -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES) +libgoldtest.a: $(libgoldtest_a_OBJECTS) $(libgoldtest_a_DEPENDENCIES) + -rm -f libgoldtest.a + $(libgoldtest_a_AR) libgoldtest.a $(libgoldtest_a_OBJECTS) $(libgoldtest_a_LIBADD) + $(RANLIB) libgoldtest.a + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +@GCC_FALSE@basic_pic_test$(EXEEXT): $(basic_pic_test_OBJECTS) $(basic_pic_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_pic_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_pic_test_OBJECTS) $(basic_pic_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_pic_test$(EXEEXT): $(basic_pic_test_OBJECTS) $(basic_pic_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_pic_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_pic_test_OBJECTS) $(basic_pic_test_LDADD) $(LIBS) +@GCC_FALSE@basic_pie_test$(EXEEXT): $(basic_pie_test_OBJECTS) $(basic_pie_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_pie_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_pie_test_OBJECTS) $(basic_pie_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_pie_test$(EXEEXT): $(basic_pie_test_OBJECTS) $(basic_pie_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_pie_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_pie_test_OBJECTS) $(basic_pie_test_LDADD) $(LIBS) +@GCC_FALSE@basic_static_pic_test$(EXEEXT): $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_static_pic_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_LDADD) $(LIBS) +@HAVE_STATIC_FALSE@basic_static_pic_test$(EXEEXT): $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_DEPENDENCIES) +@HAVE_STATIC_FALSE@ @rm -f basic_static_pic_test$(EXEEXT) +@HAVE_STATIC_FALSE@ $(LINK) $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_static_pic_test$(EXEEXT): $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_static_pic_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_LDADD) $(LIBS) +@GCC_FALSE@basic_static_test$(EXEEXT): $(basic_static_test_OBJECTS) $(basic_static_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_static_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_static_test_OBJECTS) $(basic_static_test_LDADD) $(LIBS) +@HAVE_STATIC_FALSE@basic_static_test$(EXEEXT): $(basic_static_test_OBJECTS) $(basic_static_test_DEPENDENCIES) +@HAVE_STATIC_FALSE@ @rm -f basic_static_test$(EXEEXT) +@HAVE_STATIC_FALSE@ $(LINK) $(basic_static_test_OBJECTS) $(basic_static_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_static_test$(EXEEXT): $(basic_static_test_OBJECTS) $(basic_static_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_static_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_static_test_OBJECTS) $(basic_static_test_LDADD) $(LIBS) +@GCC_FALSE@basic_test$(EXEEXT): $(basic_test_OBJECTS) $(basic_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_test_OBJECTS) $(basic_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_test$(EXEEXT): $(basic_test_OBJECTS) $(basic_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_test_OBJECTS) $(basic_test_LDADD) $(LIBS) +binary_test$(EXEEXT): $(binary_test_OBJECTS) $(binary_test_DEPENDENCIES) + @rm -f binary_test$(EXEEXT) + $(binary_test_LINK) $(binary_test_OBJECTS) $(binary_test_LDADD) $(LIBS) +binary_unittest$(EXEEXT): $(binary_unittest_OBJECTS) $(binary_unittest_DEPENDENCIES) + @rm -f binary_unittest$(EXEEXT) + $(CXXLINK) $(binary_unittest_OBJECTS) $(binary_unittest_LDADD) $(LIBS) +common_test_1$(EXEEXT): $(common_test_1_OBJECTS) $(common_test_1_DEPENDENCIES) + @rm -f common_test_1$(EXEEXT) + $(common_test_1_LINK) $(common_test_1_OBJECTS) $(common_test_1_LDADD) $(LIBS) +common_test_2$(EXEEXT): $(common_test_2_OBJECTS) $(common_test_2_DEPENDENCIES) + @rm -f common_test_2$(EXEEXT) + $(common_test_2_LINK) $(common_test_2_OBJECTS) $(common_test_2_LDADD) $(LIBS) +constructor_static_test$(EXEEXT): $(constructor_static_test_OBJECTS) $(constructor_static_test_DEPENDENCIES) + @rm -f constructor_static_test$(EXEEXT) + $(constructor_static_test_LINK) $(constructor_static_test_OBJECTS) $(constructor_static_test_LDADD) $(LIBS) +constructor_test$(EXEEXT): $(constructor_test_OBJECTS) $(constructor_test_DEPENDENCIES) + @rm -f constructor_test$(EXEEXT) + $(constructor_test_LINK) $(constructor_test_OBJECTS) $(constructor_test_LDADD) $(LIBS) +copy_test$(EXEEXT): $(copy_test_OBJECTS) $(copy_test_DEPENDENCIES) + @rm -f copy_test$(EXEEXT) + $(copy_test_LINK) $(copy_test_OBJECTS) $(copy_test_LDADD) $(LIBS) +discard_locals_test$(EXEEXT): $(discard_locals_test_OBJECTS) $(discard_locals_test_DEPENDENCIES) + @rm -f discard_locals_test$(EXEEXT) + $(discard_locals_test_LINK) $(discard_locals_test_OBJECTS) $(discard_locals_test_LDADD) $(LIBS) +exception_same_shared_test$(EXEEXT): $(exception_same_shared_test_OBJECTS) $(exception_same_shared_test_DEPENDENCIES) + @rm -f exception_same_shared_test$(EXEEXT) + $(exception_same_shared_test_LINK) $(exception_same_shared_test_OBJECTS) $(exception_same_shared_test_LDADD) $(LIBS) +exception_separate_shared_12_test$(EXEEXT): $(exception_separate_shared_12_test_OBJECTS) $(exception_separate_shared_12_test_DEPENDENCIES) + @rm -f exception_separate_shared_12_test$(EXEEXT) + $(exception_separate_shared_12_test_LINK) $(exception_separate_shared_12_test_OBJECTS) $(exception_separate_shared_12_test_LDADD) $(LIBS) +exception_separate_shared_21_test$(EXEEXT): $(exception_separate_shared_21_test_OBJECTS) $(exception_separate_shared_21_test_DEPENDENCIES) + @rm -f exception_separate_shared_21_test$(EXEEXT) + $(exception_separate_shared_21_test_LINK) $(exception_separate_shared_21_test_OBJECTS) $(exception_separate_shared_21_test_LDADD) $(LIBS) +exception_shared_1_test$(EXEEXT): $(exception_shared_1_test_OBJECTS) $(exception_shared_1_test_DEPENDENCIES) + @rm -f exception_shared_1_test$(EXEEXT) + $(exception_shared_1_test_LINK) $(exception_shared_1_test_OBJECTS) $(exception_shared_1_test_LDADD) $(LIBS) +exception_shared_2_test$(EXEEXT): $(exception_shared_2_test_OBJECTS) $(exception_shared_2_test_DEPENDENCIES) + @rm -f exception_shared_2_test$(EXEEXT) + $(exception_shared_2_test_LINK) $(exception_shared_2_test_OBJECTS) $(exception_shared_2_test_LDADD) $(LIBS) +exception_static_test$(EXEEXT): $(exception_static_test_OBJECTS) $(exception_static_test_DEPENDENCIES) + @rm -f exception_static_test$(EXEEXT) + $(exception_static_test_LINK) $(exception_static_test_OBJECTS) $(exception_static_test_LDADD) $(LIBS) +exception_test$(EXEEXT): $(exception_test_OBJECTS) $(exception_test_DEPENDENCIES) + @rm -f exception_test$(EXEEXT) + $(exception_test_LINK) $(exception_test_OBJECTS) $(exception_test_LDADD) $(LIBS) +exclude_libs_test$(EXEEXT): $(exclude_libs_test_OBJECTS) $(exclude_libs_test_DEPENDENCIES) + @rm -f exclude_libs_test$(EXEEXT) + $(exclude_libs_test_LINK) $(exclude_libs_test_OBJECTS) $(exclude_libs_test_LDADD) $(LIBS) +@GCC_FALSE@flagstest_compress_debug_sections$(EXEEXT): $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_DEPENDENCIES) +@GCC_FALSE@ @rm -f flagstest_compress_debug_sections$(EXEEXT) +@GCC_FALSE@ $(LINK) $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_LDADD) $(LIBS) +@HAVE_ZLIB_FALSE@flagstest_compress_debug_sections$(EXEEXT): $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_DEPENDENCIES) +@HAVE_ZLIB_FALSE@ @rm -f flagstest_compress_debug_sections$(EXEEXT) +@HAVE_ZLIB_FALSE@ $(LINK) $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@flagstest_compress_debug_sections$(EXEEXT): $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f flagstest_compress_debug_sections$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_LDADD) $(LIBS) +@GCC_FALSE@flagstest_o_specialfile$(EXEEXT): $(flagstest_o_specialfile_OBJECTS) $(flagstest_o_specialfile_DEPENDENCIES) +@GCC_FALSE@ @rm -f flagstest_o_specialfile$(EXEEXT) +@GCC_FALSE@ $(LINK) $(flagstest_o_specialfile_OBJECTS) $(flagstest_o_specialfile_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@flagstest_o_specialfile$(EXEEXT): $(flagstest_o_specialfile_OBJECTS) $(flagstest_o_specialfile_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f flagstest_o_specialfile$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(flagstest_o_specialfile_OBJECTS) $(flagstest_o_specialfile_LDADD) $(LIBS) +@GCC_FALSE@flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT): $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_DEPENDENCIES) +@GCC_FALSE@ @rm -f flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) +@GCC_FALSE@ $(LINK) $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_LDADD) $(LIBS) +@HAVE_ZLIB_FALSE@flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT): $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_DEPENDENCIES) +@HAVE_ZLIB_FALSE@ @rm -f flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) +@HAVE_ZLIB_FALSE@ $(LINK) $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT): $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_LDADD) $(LIBS) +@GCC_FALSE@flagstest_o_ttext_1$(EXEEXT): $(flagstest_o_ttext_1_OBJECTS) $(flagstest_o_ttext_1_DEPENDENCIES) +@GCC_FALSE@ @rm -f flagstest_o_ttext_1$(EXEEXT) +@GCC_FALSE@ $(LINK) $(flagstest_o_ttext_1_OBJECTS) $(flagstest_o_ttext_1_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@flagstest_o_ttext_1$(EXEEXT): $(flagstest_o_ttext_1_OBJECTS) $(flagstest_o_ttext_1_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f flagstest_o_ttext_1$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(flagstest_o_ttext_1_OBJECTS) $(flagstest_o_ttext_1_LDADD) $(LIBS) +@GCC_FALSE@icf_virtual_function_folding_test$(EXEEXT): $(icf_virtual_function_folding_test_OBJECTS) $(icf_virtual_function_folding_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f icf_virtual_function_folding_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(icf_virtual_function_folding_test_OBJECTS) $(icf_virtual_function_folding_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@icf_virtual_function_folding_test$(EXEEXT): $(icf_virtual_function_folding_test_OBJECTS) $(icf_virtual_function_folding_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f icf_virtual_function_folding_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(icf_virtual_function_folding_test_OBJECTS) $(icf_virtual_function_folding_test_LDADD) $(LIBS) +ifuncmain1$(EXEEXT): $(ifuncmain1_OBJECTS) $(ifuncmain1_DEPENDENCIES) + @rm -f ifuncmain1$(EXEEXT) + $(ifuncmain1_LINK) $(ifuncmain1_OBJECTS) $(ifuncmain1_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain1pic$(EXEEXT): $(ifuncmain1pic_OBJECTS) $(ifuncmain1pic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain1pic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain1pic_OBJECTS) $(ifuncmain1pic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain1pic$(EXEEXT): $(ifuncmain1pic_OBJECTS) $(ifuncmain1pic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain1pic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain1pic_OBJECTS) $(ifuncmain1pic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain1pic$(EXEEXT): $(ifuncmain1pic_OBJECTS) $(ifuncmain1pic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain1pic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain1pic_OBJECTS) $(ifuncmain1pic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain1picstatic$(EXEEXT): $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain1picstatic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_LDADD) $(LIBS) +@HAVE_STATIC_FALSE@ifuncmain1picstatic$(EXEEXT): $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_DEPENDENCIES) +@HAVE_STATIC_FALSE@ @rm -f ifuncmain1picstatic$(EXEEXT) +@HAVE_STATIC_FALSE@ $(LINK) $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain1picstatic$(EXEEXT): $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain1picstatic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_LDADD) $(LIBS) +@IFUNC_STATIC_FALSE@ifuncmain1picstatic$(EXEEXT): $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_DEPENDENCIES) +@IFUNC_STATIC_FALSE@ @rm -f ifuncmain1picstatic$(EXEEXT) +@IFUNC_STATIC_FALSE@ $(LINK) $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain1picstatic$(EXEEXT): $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain1picstatic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain1picstatic_OBJECTS) $(ifuncmain1picstatic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain1pie$(EXEEXT): $(ifuncmain1pie_OBJECTS) $(ifuncmain1pie_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain1pie$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain1pie_OBJECTS) $(ifuncmain1pie_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain1pie$(EXEEXT): $(ifuncmain1pie_OBJECTS) $(ifuncmain1pie_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain1pie$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain1pie_OBJECTS) $(ifuncmain1pie_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain1pie$(EXEEXT): $(ifuncmain1pie_OBJECTS) $(ifuncmain1pie_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain1pie$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain1pie_OBJECTS) $(ifuncmain1pie_LDADD) $(LIBS) +ifuncmain1static$(EXEEXT): $(ifuncmain1static_OBJECTS) $(ifuncmain1static_DEPENDENCIES) + @rm -f ifuncmain1static$(EXEEXT) + $(ifuncmain1static_LINK) $(ifuncmain1static_OBJECTS) $(ifuncmain1static_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain1staticpic$(EXEEXT): $(ifuncmain1staticpic_OBJECTS) $(ifuncmain1staticpic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain1staticpic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain1staticpic_OBJECTS) $(ifuncmain1staticpic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain1staticpic$(EXEEXT): $(ifuncmain1staticpic_OBJECTS) $(ifuncmain1staticpic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain1staticpic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain1staticpic_OBJECTS) $(ifuncmain1staticpic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain1staticpic$(EXEEXT): $(ifuncmain1staticpic_OBJECTS) $(ifuncmain1staticpic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain1staticpic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain1staticpic_OBJECTS) $(ifuncmain1staticpic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain1staticpie$(EXEEXT): $(ifuncmain1staticpie_OBJECTS) $(ifuncmain1staticpie_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain1staticpie$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain1staticpie_OBJECTS) $(ifuncmain1staticpie_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain1staticpie$(EXEEXT): $(ifuncmain1staticpie_OBJECTS) $(ifuncmain1staticpie_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain1staticpie$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain1staticpie_OBJECTS) $(ifuncmain1staticpie_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain1staticpie$(EXEEXT): $(ifuncmain1staticpie_OBJECTS) $(ifuncmain1staticpie_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain1staticpie$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain1staticpie_OBJECTS) $(ifuncmain1staticpie_LDADD) $(LIBS) +ifuncmain1vis$(EXEEXT): $(ifuncmain1vis_OBJECTS) $(ifuncmain1vis_DEPENDENCIES) + @rm -f ifuncmain1vis$(EXEEXT) + $(ifuncmain1vis_LINK) $(ifuncmain1vis_OBJECTS) $(ifuncmain1vis_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain1vispic$(EXEEXT): $(ifuncmain1vispic_OBJECTS) $(ifuncmain1vispic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain1vispic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain1vispic_OBJECTS) $(ifuncmain1vispic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain1vispic$(EXEEXT): $(ifuncmain1vispic_OBJECTS) $(ifuncmain1vispic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain1vispic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain1vispic_OBJECTS) $(ifuncmain1vispic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain1vispic$(EXEEXT): $(ifuncmain1vispic_OBJECTS) $(ifuncmain1vispic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain1vispic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain1vispic_OBJECTS) $(ifuncmain1vispic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain1vispie$(EXEEXT): $(ifuncmain1vispie_OBJECTS) $(ifuncmain1vispie_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain1vispie$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain1vispie_OBJECTS) $(ifuncmain1vispie_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain1vispie$(EXEEXT): $(ifuncmain1vispie_OBJECTS) $(ifuncmain1vispie_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain1vispie$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain1vispie_OBJECTS) $(ifuncmain1vispie_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain1vispie$(EXEEXT): $(ifuncmain1vispie_OBJECTS) $(ifuncmain1vispie_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain1vispie$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain1vispie_OBJECTS) $(ifuncmain1vispie_LDADD) $(LIBS) +ifuncmain2$(EXEEXT): $(ifuncmain2_OBJECTS) $(ifuncmain2_DEPENDENCIES) + @rm -f ifuncmain2$(EXEEXT) + $(ifuncmain2_LINK) $(ifuncmain2_OBJECTS) $(ifuncmain2_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain2pic$(EXEEXT): $(ifuncmain2pic_OBJECTS) $(ifuncmain2pic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain2pic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain2pic_OBJECTS) $(ifuncmain2pic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain2pic$(EXEEXT): $(ifuncmain2pic_OBJECTS) $(ifuncmain2pic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain2pic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain2pic_OBJECTS) $(ifuncmain2pic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain2pic$(EXEEXT): $(ifuncmain2pic_OBJECTS) $(ifuncmain2pic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain2pic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain2pic_OBJECTS) $(ifuncmain2pic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain2picstatic$(EXEEXT): $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain2picstatic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_LDADD) $(LIBS) +@HAVE_STATIC_FALSE@ifuncmain2picstatic$(EXEEXT): $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_DEPENDENCIES) +@HAVE_STATIC_FALSE@ @rm -f ifuncmain2picstatic$(EXEEXT) +@HAVE_STATIC_FALSE@ $(LINK) $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain2picstatic$(EXEEXT): $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain2picstatic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_LDADD) $(LIBS) +@IFUNC_STATIC_FALSE@ifuncmain2picstatic$(EXEEXT): $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_DEPENDENCIES) +@IFUNC_STATIC_FALSE@ @rm -f ifuncmain2picstatic$(EXEEXT) +@IFUNC_STATIC_FALSE@ $(LINK) $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain2picstatic$(EXEEXT): $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain2picstatic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain2picstatic_OBJECTS) $(ifuncmain2picstatic_LDADD) $(LIBS) +ifuncmain2static$(EXEEXT): $(ifuncmain2static_OBJECTS) $(ifuncmain2static_DEPENDENCIES) + @rm -f ifuncmain2static$(EXEEXT) + $(ifuncmain2static_LINK) $(ifuncmain2static_OBJECTS) $(ifuncmain2static_LDADD) $(LIBS) +ifuncmain3$(EXEEXT): $(ifuncmain3_OBJECTS) $(ifuncmain3_DEPENDENCIES) + @rm -f ifuncmain3$(EXEEXT) + $(ifuncmain3_LINK) $(ifuncmain3_OBJECTS) $(ifuncmain3_LDADD) $(LIBS) +ifuncmain4$(EXEEXT): $(ifuncmain4_OBJECTS) $(ifuncmain4_DEPENDENCIES) + @rm -f ifuncmain4$(EXEEXT) + $(ifuncmain4_LINK) $(ifuncmain4_OBJECTS) $(ifuncmain4_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain4picstatic$(EXEEXT): $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain4picstatic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_LDADD) $(LIBS) +@HAVE_STATIC_FALSE@ifuncmain4picstatic$(EXEEXT): $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_DEPENDENCIES) +@HAVE_STATIC_FALSE@ @rm -f ifuncmain4picstatic$(EXEEXT) +@HAVE_STATIC_FALSE@ $(LINK) $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain4picstatic$(EXEEXT): $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain4picstatic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_LDADD) $(LIBS) +@IFUNC_STATIC_FALSE@ifuncmain4picstatic$(EXEEXT): $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_DEPENDENCIES) +@IFUNC_STATIC_FALSE@ @rm -f ifuncmain4picstatic$(EXEEXT) +@IFUNC_STATIC_FALSE@ $(LINK) $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain4picstatic$(EXEEXT): $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain4picstatic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain4picstatic_OBJECTS) $(ifuncmain4picstatic_LDADD) $(LIBS) +ifuncmain4static$(EXEEXT): $(ifuncmain4static_OBJECTS) $(ifuncmain4static_DEPENDENCIES) + @rm -f ifuncmain4static$(EXEEXT) + $(ifuncmain4static_LINK) $(ifuncmain4static_OBJECTS) $(ifuncmain4static_LDADD) $(LIBS) +ifuncmain5$(EXEEXT): $(ifuncmain5_OBJECTS) $(ifuncmain5_DEPENDENCIES) + @rm -f ifuncmain5$(EXEEXT) + $(ifuncmain5_LINK) $(ifuncmain5_OBJECTS) $(ifuncmain5_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain5pic$(EXEEXT): $(ifuncmain5pic_OBJECTS) $(ifuncmain5pic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain5pic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain5pic_OBJECTS) $(ifuncmain5pic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain5pic$(EXEEXT): $(ifuncmain5pic_OBJECTS) $(ifuncmain5pic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain5pic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain5pic_OBJECTS) $(ifuncmain5pic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain5pic$(EXEEXT): $(ifuncmain5pic_OBJECTS) $(ifuncmain5pic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain5pic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain5pic_OBJECTS) $(ifuncmain5pic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain5picstatic$(EXEEXT): $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain5picstatic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_LDADD) $(LIBS) +@HAVE_STATIC_FALSE@ifuncmain5picstatic$(EXEEXT): $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_DEPENDENCIES) +@HAVE_STATIC_FALSE@ @rm -f ifuncmain5picstatic$(EXEEXT) +@HAVE_STATIC_FALSE@ $(LINK) $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain5picstatic$(EXEEXT): $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain5picstatic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_LDADD) $(LIBS) +@IFUNC_STATIC_FALSE@ifuncmain5picstatic$(EXEEXT): $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_DEPENDENCIES) +@IFUNC_STATIC_FALSE@ @rm -f ifuncmain5picstatic$(EXEEXT) +@IFUNC_STATIC_FALSE@ $(LINK) $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain5picstatic$(EXEEXT): $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain5picstatic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain5picstatic_OBJECTS) $(ifuncmain5picstatic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain5pie$(EXEEXT): $(ifuncmain5pie_OBJECTS) $(ifuncmain5pie_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain5pie$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain5pie_OBJECTS) $(ifuncmain5pie_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain5pie$(EXEEXT): $(ifuncmain5pie_OBJECTS) $(ifuncmain5pie_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain5pie$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain5pie_OBJECTS) $(ifuncmain5pie_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain5pie$(EXEEXT): $(ifuncmain5pie_OBJECTS) $(ifuncmain5pie_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain5pie$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain5pie_OBJECTS) $(ifuncmain5pie_LDADD) $(LIBS) +ifuncmain5static$(EXEEXT): $(ifuncmain5static_OBJECTS) $(ifuncmain5static_DEPENDENCIES) + @rm -f ifuncmain5static$(EXEEXT) + $(ifuncmain5static_LINK) $(ifuncmain5static_OBJECTS) $(ifuncmain5static_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain5staticpic$(EXEEXT): $(ifuncmain5staticpic_OBJECTS) $(ifuncmain5staticpic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain5staticpic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain5staticpic_OBJECTS) $(ifuncmain5staticpic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain5staticpic$(EXEEXT): $(ifuncmain5staticpic_OBJECTS) $(ifuncmain5staticpic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain5staticpic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain5staticpic_OBJECTS) $(ifuncmain5staticpic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain5staticpic$(EXEEXT): $(ifuncmain5staticpic_OBJECTS) $(ifuncmain5staticpic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain5staticpic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain5staticpic_OBJECTS) $(ifuncmain5staticpic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain6pie$(EXEEXT): $(ifuncmain6pie_OBJECTS) $(ifuncmain6pie_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain6pie$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain6pie_OBJECTS) $(ifuncmain6pie_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain6pie$(EXEEXT): $(ifuncmain6pie_OBJECTS) $(ifuncmain6pie_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain6pie$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain6pie_OBJECTS) $(ifuncmain6pie_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain6pie$(EXEEXT): $(ifuncmain6pie_OBJECTS) $(ifuncmain6pie_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain6pie$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain6pie_OBJECTS) $(ifuncmain6pie_LDADD) $(LIBS) +ifuncmain7$(EXEEXT): $(ifuncmain7_OBJECTS) $(ifuncmain7_DEPENDENCIES) + @rm -f ifuncmain7$(EXEEXT) + $(ifuncmain7_LINK) $(ifuncmain7_OBJECTS) $(ifuncmain7_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain7pic$(EXEEXT): $(ifuncmain7pic_OBJECTS) $(ifuncmain7pic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain7pic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain7pic_OBJECTS) $(ifuncmain7pic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain7pic$(EXEEXT): $(ifuncmain7pic_OBJECTS) $(ifuncmain7pic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain7pic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain7pic_OBJECTS) $(ifuncmain7pic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain7pic$(EXEEXT): $(ifuncmain7pic_OBJECTS) $(ifuncmain7pic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain7pic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain7pic_OBJECTS) $(ifuncmain7pic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain7picstatic$(EXEEXT): $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain7picstatic$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_LDADD) $(LIBS) +@HAVE_STATIC_FALSE@ifuncmain7picstatic$(EXEEXT): $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_DEPENDENCIES) +@HAVE_STATIC_FALSE@ @rm -f ifuncmain7picstatic$(EXEEXT) +@HAVE_STATIC_FALSE@ $(LINK) $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain7picstatic$(EXEEXT): $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain7picstatic$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_LDADD) $(LIBS) +@IFUNC_STATIC_FALSE@ifuncmain7picstatic$(EXEEXT): $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_DEPENDENCIES) +@IFUNC_STATIC_FALSE@ @rm -f ifuncmain7picstatic$(EXEEXT) +@IFUNC_STATIC_FALSE@ $(LINK) $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain7picstatic$(EXEEXT): $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain7picstatic$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain7picstatic_OBJECTS) $(ifuncmain7picstatic_LDADD) $(LIBS) +@GCC_FALSE@ifuncmain7pie$(EXEEXT): $(ifuncmain7pie_OBJECTS) $(ifuncmain7pie_DEPENDENCIES) +@GCC_FALSE@ @rm -f ifuncmain7pie$(EXEEXT) +@GCC_FALSE@ $(LINK) $(ifuncmain7pie_OBJECTS) $(ifuncmain7pie_LDADD) $(LIBS) +@IFUNC_FALSE@ifuncmain7pie$(EXEEXT): $(ifuncmain7pie_OBJECTS) $(ifuncmain7pie_DEPENDENCIES) +@IFUNC_FALSE@ @rm -f ifuncmain7pie$(EXEEXT) +@IFUNC_FALSE@ $(LINK) $(ifuncmain7pie_OBJECTS) $(ifuncmain7pie_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@ifuncmain7pie$(EXEEXT): $(ifuncmain7pie_OBJECTS) $(ifuncmain7pie_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f ifuncmain7pie$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(ifuncmain7pie_OBJECTS) $(ifuncmain7pie_LDADD) $(LIBS) +ifuncmain7static$(EXEEXT): $(ifuncmain7static_OBJECTS) $(ifuncmain7static_DEPENDENCIES) + @rm -f ifuncmain7static$(EXEEXT) + $(ifuncmain7static_LINK) $(ifuncmain7static_OBJECTS) $(ifuncmain7static_LDADD) $(LIBS) +ifuncvar$(EXEEXT): $(ifuncvar_OBJECTS) $(ifuncvar_DEPENDENCIES) + @rm -f ifuncvar$(EXEEXT) + $(ifuncvar_LINK) $(ifuncvar_OBJECTS) $(ifuncvar_LDADD) $(LIBS) +@DEFAULT_TARGET_X86_64_FALSE@incremental_comdat_test_1$(EXEEXT): $(incremental_comdat_test_1_OBJECTS) $(incremental_comdat_test_1_DEPENDENCIES) +@DEFAULT_TARGET_X86_64_FALSE@ @rm -f incremental_comdat_test_1$(EXEEXT) +@DEFAULT_TARGET_X86_64_FALSE@ $(LINK) $(incremental_comdat_test_1_OBJECTS) $(incremental_comdat_test_1_LDADD) $(LIBS) +@GCC_FALSE@incremental_comdat_test_1$(EXEEXT): $(incremental_comdat_test_1_OBJECTS) $(incremental_comdat_test_1_DEPENDENCIES) +@GCC_FALSE@ @rm -f incremental_comdat_test_1$(EXEEXT) +@GCC_FALSE@ $(LINK) $(incremental_comdat_test_1_OBJECTS) $(incremental_comdat_test_1_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@incremental_comdat_test_1$(EXEEXT): $(incremental_comdat_test_1_OBJECTS) $(incremental_comdat_test_1_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f incremental_comdat_test_1$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(incremental_comdat_test_1_OBJECTS) $(incremental_comdat_test_1_LDADD) $(LIBS) +@DEFAULT_TARGET_X86_64_FALSE@incremental_common_test_1$(EXEEXT): $(incremental_common_test_1_OBJECTS) $(incremental_common_test_1_DEPENDENCIES) +@DEFAULT_TARGET_X86_64_FALSE@ @rm -f incremental_common_test_1$(EXEEXT) +@DEFAULT_TARGET_X86_64_FALSE@ $(LINK) $(incremental_common_test_1_OBJECTS) $(incremental_common_test_1_LDADD) $(LIBS) +@GCC_FALSE@incremental_common_test_1$(EXEEXT): $(incremental_common_test_1_OBJECTS) $(incremental_common_test_1_DEPENDENCIES) +@GCC_FALSE@ @rm -f incremental_common_test_1$(EXEEXT) +@GCC_FALSE@ $(LINK) $(incremental_common_test_1_OBJECTS) $(incremental_common_test_1_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@incremental_common_test_1$(EXEEXT): $(incremental_common_test_1_OBJECTS) $(incremental_common_test_1_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f incremental_common_test_1$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(incremental_common_test_1_OBJECTS) $(incremental_common_test_1_LDADD) $(LIBS) +@DEFAULT_TARGET_X86_64_FALSE@incremental_copy_test$(EXEEXT): $(incremental_copy_test_OBJECTS) $(incremental_copy_test_DEPENDENCIES) +@DEFAULT_TARGET_X86_64_FALSE@ @rm -f incremental_copy_test$(EXEEXT) +@DEFAULT_TARGET_X86_64_FALSE@ $(LINK) $(incremental_copy_test_OBJECTS) $(incremental_copy_test_LDADD) $(LIBS) +@GCC_FALSE@incremental_copy_test$(EXEEXT): $(incremental_copy_test_OBJECTS) $(incremental_copy_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f incremental_copy_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(incremental_copy_test_OBJECTS) $(incremental_copy_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@incremental_copy_test$(EXEEXT): $(incremental_copy_test_OBJECTS) $(incremental_copy_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f incremental_copy_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(incremental_copy_test_OBJECTS) $(incremental_copy_test_LDADD) $(LIBS) +@DEFAULT_TARGET_X86_64_FALSE@incremental_test_2$(EXEEXT): $(incremental_test_2_OBJECTS) $(incremental_test_2_DEPENDENCIES) +@DEFAULT_TARGET_X86_64_FALSE@ @rm -f incremental_test_2$(EXEEXT) +@DEFAULT_TARGET_X86_64_FALSE@ $(LINK) $(incremental_test_2_OBJECTS) $(incremental_test_2_LDADD) $(LIBS) +@GCC_FALSE@incremental_test_2$(EXEEXT): $(incremental_test_2_OBJECTS) $(incremental_test_2_DEPENDENCIES) +@GCC_FALSE@ @rm -f incremental_test_2$(EXEEXT) +@GCC_FALSE@ $(LINK) $(incremental_test_2_OBJECTS) $(incremental_test_2_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@incremental_test_2$(EXEEXT): $(incremental_test_2_OBJECTS) $(incremental_test_2_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f incremental_test_2$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(incremental_test_2_OBJECTS) $(incremental_test_2_LDADD) $(LIBS) +@DEFAULT_TARGET_X86_64_FALSE@incremental_test_3$(EXEEXT): $(incremental_test_3_OBJECTS) $(incremental_test_3_DEPENDENCIES) +@DEFAULT_TARGET_X86_64_FALSE@ @rm -f incremental_test_3$(EXEEXT) +@DEFAULT_TARGET_X86_64_FALSE@ $(LINK) $(incremental_test_3_OBJECTS) $(incremental_test_3_LDADD) $(LIBS) +@GCC_FALSE@incremental_test_3$(EXEEXT): $(incremental_test_3_OBJECTS) $(incremental_test_3_DEPENDENCIES) +@GCC_FALSE@ @rm -f incremental_test_3$(EXEEXT) +@GCC_FALSE@ $(LINK) $(incremental_test_3_OBJECTS) $(incremental_test_3_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@incremental_test_3$(EXEEXT): $(incremental_test_3_OBJECTS) $(incremental_test_3_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f incremental_test_3$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(incremental_test_3_OBJECTS) $(incremental_test_3_LDADD) $(LIBS) +@DEFAULT_TARGET_X86_64_FALSE@incremental_test_4$(EXEEXT): $(incremental_test_4_OBJECTS) $(incremental_test_4_DEPENDENCIES) +@DEFAULT_TARGET_X86_64_FALSE@ @rm -f incremental_test_4$(EXEEXT) +@DEFAULT_TARGET_X86_64_FALSE@ $(LINK) $(incremental_test_4_OBJECTS) $(incremental_test_4_LDADD) $(LIBS) +@GCC_FALSE@incremental_test_4$(EXEEXT): $(incremental_test_4_OBJECTS) $(incremental_test_4_DEPENDENCIES) +@GCC_FALSE@ @rm -f incremental_test_4$(EXEEXT) +@GCC_FALSE@ $(LINK) $(incremental_test_4_OBJECTS) $(incremental_test_4_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@incremental_test_4$(EXEEXT): $(incremental_test_4_OBJECTS) $(incremental_test_4_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f incremental_test_4$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(incremental_test_4_OBJECTS) $(incremental_test_4_LDADD) $(LIBS) +@DEFAULT_TARGET_X86_64_FALSE@incremental_test_5$(EXEEXT): $(incremental_test_5_OBJECTS) $(incremental_test_5_DEPENDENCIES) +@DEFAULT_TARGET_X86_64_FALSE@ @rm -f incremental_test_5$(EXEEXT) +@DEFAULT_TARGET_X86_64_FALSE@ $(LINK) $(incremental_test_5_OBJECTS) $(incremental_test_5_LDADD) $(LIBS) +@GCC_FALSE@incremental_test_5$(EXEEXT): $(incremental_test_5_OBJECTS) $(incremental_test_5_DEPENDENCIES) +@GCC_FALSE@ @rm -f incremental_test_5$(EXEEXT) +@GCC_FALSE@ $(LINK) $(incremental_test_5_OBJECTS) $(incremental_test_5_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@incremental_test_5$(EXEEXT): $(incremental_test_5_OBJECTS) $(incremental_test_5_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f incremental_test_5$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(incremental_test_5_OBJECTS) $(incremental_test_5_LDADD) $(LIBS) +@DEFAULT_TARGET_X86_64_FALSE@incremental_test_6$(EXEEXT): $(incremental_test_6_OBJECTS) $(incremental_test_6_DEPENDENCIES) +@DEFAULT_TARGET_X86_64_FALSE@ @rm -f incremental_test_6$(EXEEXT) +@DEFAULT_TARGET_X86_64_FALSE@ $(LINK) $(incremental_test_6_OBJECTS) $(incremental_test_6_LDADD) $(LIBS) +@GCC_FALSE@incremental_test_6$(EXEEXT): $(incremental_test_6_OBJECTS) $(incremental_test_6_DEPENDENCIES) +@GCC_FALSE@ @rm -f incremental_test_6$(EXEEXT) +@GCC_FALSE@ $(LINK) $(incremental_test_6_OBJECTS) $(incremental_test_6_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@incremental_test_6$(EXEEXT): $(incremental_test_6_OBJECTS) $(incremental_test_6_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f incremental_test_6$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(incremental_test_6_OBJECTS) $(incremental_test_6_LDADD) $(LIBS) +initpri1$(EXEEXT): $(initpri1_OBJECTS) $(initpri1_DEPENDENCIES) + @rm -f initpri1$(EXEEXT) + $(initpri1_LINK) $(initpri1_OBJECTS) $(initpri1_LDADD) $(LIBS) +initpri2$(EXEEXT): $(initpri2_OBJECTS) $(initpri2_DEPENDENCIES) + @rm -f initpri2$(EXEEXT) + $(initpri2_LINK) $(initpri2_OBJECTS) $(initpri2_LDADD) $(LIBS) +initpri3a$(EXEEXT): $(initpri3a_OBJECTS) $(initpri3a_DEPENDENCIES) + @rm -f initpri3a$(EXEEXT) + $(initpri3a_LINK) $(initpri3a_OBJECTS) $(initpri3a_LDADD) $(LIBS) +justsyms$(EXEEXT): $(justsyms_OBJECTS) $(justsyms_DEPENDENCIES) + @rm -f justsyms$(EXEEXT) + $(justsyms_LINK) $(justsyms_OBJECTS) $(justsyms_LDADD) $(LIBS) +justsyms_exec$(EXEEXT): $(justsyms_exec_OBJECTS) $(justsyms_exec_DEPENDENCIES) + @rm -f justsyms_exec$(EXEEXT) + $(justsyms_exec_LINK) $(justsyms_exec_OBJECTS) $(justsyms_exec_LDADD) $(LIBS) +large$(EXEEXT): $(large_OBJECTS) $(large_DEPENDENCIES) + @rm -f large$(EXEEXT) + $(large_LINK) $(large_OBJECTS) $(large_LDADD) $(LIBS) +large_symbol_alignment$(EXEEXT): $(large_symbol_alignment_OBJECTS) $(large_symbol_alignment_DEPENDENCIES) + @rm -f large_symbol_alignment$(EXEEXT) + $(large_symbol_alignment_LINK) $(large_symbol_alignment_OBJECTS) $(large_symbol_alignment_LDADD) $(LIBS) +leb128_unittest$(EXEEXT): $(leb128_unittest_OBJECTS) $(leb128_unittest_DEPENDENCIES) + @rm -f leb128_unittest$(EXEEXT) + $(CXXLINK) $(leb128_unittest_OBJECTS) $(leb128_unittest_LDADD) $(LIBS) +@GCC_FALSE@local_labels_test$(EXEEXT): $(local_labels_test_OBJECTS) $(local_labels_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f local_labels_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(local_labels_test_OBJECTS) $(local_labels_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@local_labels_test$(EXEEXT): $(local_labels_test_OBJECTS) $(local_labels_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f local_labels_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(local_labels_test_OBJECTS) $(local_labels_test_LDADD) $(LIBS) +@GCC_FALSE@many_sections_r_test$(EXEEXT): $(many_sections_r_test_OBJECTS) $(many_sections_r_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f many_sections_r_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(many_sections_r_test_OBJECTS) $(many_sections_r_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@many_sections_r_test$(EXEEXT): $(many_sections_r_test_OBJECTS) $(many_sections_r_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f many_sections_r_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(many_sections_r_test_OBJECTS) $(many_sections_r_test_LDADD) $(LIBS) +many_sections_test$(EXEEXT): $(many_sections_test_OBJECTS) $(many_sections_test_DEPENDENCIES) + @rm -f many_sections_test$(EXEEXT) + $(many_sections_test_LINK) $(many_sections_test_OBJECTS) $(many_sections_test_LDADD) $(LIBS) +object_unittest$(EXEEXT): $(object_unittest_OBJECTS) $(object_unittest_DEPENDENCIES) + @rm -f object_unittest$(EXEEXT) + $(CXXLINK) $(object_unittest_OBJECTS) $(object_unittest_LDADD) $(LIBS) +@GCC_FALSE@permission_test$(EXEEXT): $(permission_test_OBJECTS) $(permission_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f permission_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(permission_test_OBJECTS) $(permission_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@permission_test$(EXEEXT): $(permission_test_OBJECTS) $(permission_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f permission_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(permission_test_OBJECTS) $(permission_test_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_1$(EXEEXT): $(plugin_test_1_OBJECTS) $(plugin_test_1_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_1$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_1_OBJECTS) $(plugin_test_1_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_1$(EXEEXT): $(plugin_test_1_OBJECTS) $(plugin_test_1_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_1$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_1_OBJECTS) $(plugin_test_1_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_1$(EXEEXT): $(plugin_test_1_OBJECTS) $(plugin_test_1_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_1$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_1_OBJECTS) $(plugin_test_1_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_2$(EXEEXT): $(plugin_test_2_OBJECTS) $(plugin_test_2_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_2$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_2_OBJECTS) $(plugin_test_2_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_2$(EXEEXT): $(plugin_test_2_OBJECTS) $(plugin_test_2_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_2$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_2_OBJECTS) $(plugin_test_2_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_2$(EXEEXT): $(plugin_test_2_OBJECTS) $(plugin_test_2_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_2$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_2_OBJECTS) $(plugin_test_2_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_3$(EXEEXT): $(plugin_test_3_OBJECTS) $(plugin_test_3_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_3$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_3_OBJECTS) $(plugin_test_3_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_3$(EXEEXT): $(plugin_test_3_OBJECTS) $(plugin_test_3_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_3$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_3_OBJECTS) $(plugin_test_3_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_3$(EXEEXT): $(plugin_test_3_OBJECTS) $(plugin_test_3_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_3$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_3_OBJECTS) $(plugin_test_3_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_4$(EXEEXT): $(plugin_test_4_OBJECTS) $(plugin_test_4_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_4$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_4_OBJECTS) $(plugin_test_4_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_4$(EXEEXT): $(plugin_test_4_OBJECTS) $(plugin_test_4_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_4$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_4_OBJECTS) $(plugin_test_4_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_4$(EXEEXT): $(plugin_test_4_OBJECTS) $(plugin_test_4_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_4$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_4_OBJECTS) $(plugin_test_4_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_5$(EXEEXT): $(plugin_test_5_OBJECTS) $(plugin_test_5_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_5$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_5_OBJECTS) $(plugin_test_5_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_5$(EXEEXT): $(plugin_test_5_OBJECTS) $(plugin_test_5_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_5$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_5_OBJECTS) $(plugin_test_5_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_5$(EXEEXT): $(plugin_test_5_OBJECTS) $(plugin_test_5_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_5$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_5_OBJECTS) $(plugin_test_5_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_6$(EXEEXT): $(plugin_test_6_OBJECTS) $(plugin_test_6_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_6$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_6_OBJECTS) $(plugin_test_6_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_6$(EXEEXT): $(plugin_test_6_OBJECTS) $(plugin_test_6_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_6$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_6_OBJECTS) $(plugin_test_6_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_6$(EXEEXT): $(plugin_test_6_OBJECTS) $(plugin_test_6_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_6$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_6_OBJECTS) $(plugin_test_6_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_7$(EXEEXT): $(plugin_test_7_OBJECTS) $(plugin_test_7_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_7$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_7_OBJECTS) $(plugin_test_7_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_7$(EXEEXT): $(plugin_test_7_OBJECTS) $(plugin_test_7_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_7$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_7_OBJECTS) $(plugin_test_7_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_7$(EXEEXT): $(plugin_test_7_OBJECTS) $(plugin_test_7_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_7$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_7_OBJECTS) $(plugin_test_7_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_8$(EXEEXT): $(plugin_test_8_OBJECTS) $(plugin_test_8_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_8$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_8_OBJECTS) $(plugin_test_8_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_8$(EXEEXT): $(plugin_test_8_OBJECTS) $(plugin_test_8_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_8$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_8_OBJECTS) $(plugin_test_8_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_8$(EXEEXT): $(plugin_test_8_OBJECTS) $(plugin_test_8_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_8$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_8_OBJECTS) $(plugin_test_8_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_tls$(EXEEXT): $(plugin_test_tls_OBJECTS) $(plugin_test_tls_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_tls$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_tls_OBJECTS) $(plugin_test_tls_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_tls$(EXEEXT): $(plugin_test_tls_OBJECTS) $(plugin_test_tls_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_tls$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_tls_OBJECTS) $(plugin_test_tls_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_tls$(EXEEXT): $(plugin_test_tls_OBJECTS) $(plugin_test_tls_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_tls$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_tls_OBJECTS) $(plugin_test_tls_LDADD) $(LIBS) +@TLS_FALSE@plugin_test_tls$(EXEEXT): $(plugin_test_tls_OBJECTS) $(plugin_test_tls_DEPENDENCIES) +@TLS_FALSE@ @rm -f plugin_test_tls$(EXEEXT) +@TLS_FALSE@ $(LINK) $(plugin_test_tls_OBJECTS) $(plugin_test_tls_LDADD) $(LIBS) +protected_1$(EXEEXT): $(protected_1_OBJECTS) $(protected_1_DEPENDENCIES) + @rm -f protected_1$(EXEEXT) + $(protected_1_LINK) $(protected_1_OBJECTS) $(protected_1_LDADD) $(LIBS) +protected_2$(EXEEXT): $(protected_2_OBJECTS) $(protected_2_DEPENDENCIES) + @rm -f protected_2$(EXEEXT) + $(protected_2_LINK) $(protected_2_OBJECTS) $(protected_2_LDADD) $(LIBS) +relro_now_test$(EXEEXT): $(relro_now_test_OBJECTS) $(relro_now_test_DEPENDENCIES) + @rm -f relro_now_test$(EXEEXT) + $(relro_now_test_LINK) $(relro_now_test_OBJECTS) $(relro_now_test_LDADD) $(LIBS) +relro_script_test$(EXEEXT): $(relro_script_test_OBJECTS) $(relro_script_test_DEPENDENCIES) + @rm -f relro_script_test$(EXEEXT) + $(relro_script_test_LINK) $(relro_script_test_OBJECTS) $(relro_script_test_LDADD) $(LIBS) +relro_strip_test$(EXEEXT): $(relro_strip_test_OBJECTS) $(relro_strip_test_DEPENDENCIES) + @rm -f relro_strip_test$(EXEEXT) + $(relro_strip_test_LINK) $(relro_strip_test_OBJECTS) $(relro_strip_test_LDADD) $(LIBS) +relro_test$(EXEEXT): $(relro_test_OBJECTS) $(relro_test_DEPENDENCIES) + @rm -f relro_test$(EXEEXT) + $(relro_test_LINK) $(relro_test_OBJECTS) $(relro_test_LDADD) $(LIBS) +script_test_1$(EXEEXT): $(script_test_1_OBJECTS) $(script_test_1_DEPENDENCIES) + @rm -f script_test_1$(EXEEXT) + $(script_test_1_LINK) $(script_test_1_OBJECTS) $(script_test_1_LDADD) $(LIBS) +@GCC_FALSE@script_test_11$(EXEEXT): $(script_test_11_OBJECTS) $(script_test_11_DEPENDENCIES) +@GCC_FALSE@ @rm -f script_test_11$(EXEEXT) +@GCC_FALSE@ $(LINK) $(script_test_11_OBJECTS) $(script_test_11_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@script_test_11$(EXEEXT): $(script_test_11_OBJECTS) $(script_test_11_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f script_test_11$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(script_test_11_OBJECTS) $(script_test_11_LDADD) $(LIBS) +script_test_2$(EXEEXT): $(script_test_2_OBJECTS) $(script_test_2_DEPENDENCIES) + @rm -f script_test_2$(EXEEXT) + $(script_test_2_LINK) $(script_test_2_OBJECTS) $(script_test_2_LDADD) $(LIBS) +@GCC_FALSE@script_test_3$(EXEEXT): $(script_test_3_OBJECTS) $(script_test_3_DEPENDENCIES) +@GCC_FALSE@ @rm -f script_test_3$(EXEEXT) +@GCC_FALSE@ $(LINK) $(script_test_3_OBJECTS) $(script_test_3_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@script_test_3$(EXEEXT): $(script_test_3_OBJECTS) $(script_test_3_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f script_test_3$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(script_test_3_OBJECTS) $(script_test_3_LDADD) $(LIBS) +searched_file_test$(EXEEXT): $(searched_file_test_OBJECTS) $(searched_file_test_DEPENDENCIES) + @rm -f searched_file_test$(EXEEXT) + $(searched_file_test_LINK) $(searched_file_test_OBJECTS) $(searched_file_test_LDADD) $(LIBS) +@GCC_FALSE@start_lib_test$(EXEEXT): $(start_lib_test_OBJECTS) $(start_lib_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f start_lib_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(start_lib_test_OBJECTS) $(start_lib_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@start_lib_test$(EXEEXT): $(start_lib_test_OBJECTS) $(start_lib_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f start_lib_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(start_lib_test_OBJECTS) $(start_lib_test_LDADD) $(LIBS) +thin_archive_test_1$(EXEEXT): $(thin_archive_test_1_OBJECTS) $(thin_archive_test_1_DEPENDENCIES) + @rm -f thin_archive_test_1$(EXEEXT) + $(thin_archive_test_1_LINK) $(thin_archive_test_1_OBJECTS) $(thin_archive_test_1_LDADD) $(LIBS) +thin_archive_test_2$(EXEEXT): $(thin_archive_test_2_OBJECTS) $(thin_archive_test_2_DEPENDENCIES) + @rm -f thin_archive_test_2$(EXEEXT) + $(thin_archive_test_2_LINK) $(thin_archive_test_2_OBJECTS) $(thin_archive_test_2_LDADD) $(LIBS) +tls_phdrs_script_test$(EXEEXT): $(tls_phdrs_script_test_OBJECTS) $(tls_phdrs_script_test_DEPENDENCIES) + @rm -f tls_phdrs_script_test$(EXEEXT) + $(tls_phdrs_script_test_LINK) $(tls_phdrs_script_test_OBJECTS) $(tls_phdrs_script_test_LDADD) $(LIBS) +tls_pic_test$(EXEEXT): $(tls_pic_test_OBJECTS) $(tls_pic_test_DEPENDENCIES) + @rm -f tls_pic_test$(EXEEXT) + $(tls_pic_test_LINK) $(tls_pic_test_OBJECTS) $(tls_pic_test_LDADD) $(LIBS) +@GCC_FALSE@tls_pie_pic_test$(EXEEXT): $(tls_pie_pic_test_OBJECTS) $(tls_pie_pic_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f tls_pie_pic_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(tls_pie_pic_test_OBJECTS) $(tls_pie_pic_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@tls_pie_pic_test$(EXEEXT): $(tls_pie_pic_test_OBJECTS) $(tls_pie_pic_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f tls_pie_pic_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(tls_pie_pic_test_OBJECTS) $(tls_pie_pic_test_LDADD) $(LIBS) +@TLS_FALSE@tls_pie_pic_test$(EXEEXT): $(tls_pie_pic_test_OBJECTS) $(tls_pie_pic_test_DEPENDENCIES) +@TLS_FALSE@ @rm -f tls_pie_pic_test$(EXEEXT) +@TLS_FALSE@ $(LINK) $(tls_pie_pic_test_OBJECTS) $(tls_pie_pic_test_LDADD) $(LIBS) +@GCC_FALSE@tls_pie_test$(EXEEXT): $(tls_pie_test_OBJECTS) $(tls_pie_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f tls_pie_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(tls_pie_test_OBJECTS) $(tls_pie_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@tls_pie_test$(EXEEXT): $(tls_pie_test_OBJECTS) $(tls_pie_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f tls_pie_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(tls_pie_test_OBJECTS) $(tls_pie_test_LDADD) $(LIBS) +@TLS_FALSE@tls_pie_test$(EXEEXT): $(tls_pie_test_OBJECTS) $(tls_pie_test_DEPENDENCIES) +@TLS_FALSE@ @rm -f tls_pie_test$(EXEEXT) +@TLS_FALSE@ $(LINK) $(tls_pie_test_OBJECTS) $(tls_pie_test_LDADD) $(LIBS) +tls_script_test$(EXEEXT): $(tls_script_test_OBJECTS) $(tls_script_test_DEPENDENCIES) + @rm -f tls_script_test$(EXEEXT) + $(tls_script_test_LINK) $(tls_script_test_OBJECTS) $(tls_script_test_LDADD) $(LIBS) +tls_shared_gd_to_ie_test$(EXEEXT): $(tls_shared_gd_to_ie_test_OBJECTS) $(tls_shared_gd_to_ie_test_DEPENDENCIES) + @rm -f tls_shared_gd_to_ie_test$(EXEEXT) + $(tls_shared_gd_to_ie_test_LINK) $(tls_shared_gd_to_ie_test_OBJECTS) $(tls_shared_gd_to_ie_test_LDADD) $(LIBS) +tls_shared_gnu2_gd_to_ie_test$(EXEEXT): $(tls_shared_gnu2_gd_to_ie_test_OBJECTS) $(tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES) + @rm -f tls_shared_gnu2_gd_to_ie_test$(EXEEXT) + $(tls_shared_gnu2_gd_to_ie_test_LINK) $(tls_shared_gnu2_gd_to_ie_test_OBJECTS) $(tls_shared_gnu2_gd_to_ie_test_LDADD) $(LIBS) +tls_shared_gnu2_test$(EXEEXT): $(tls_shared_gnu2_test_OBJECTS) $(tls_shared_gnu2_test_DEPENDENCIES) + @rm -f tls_shared_gnu2_test$(EXEEXT) + $(tls_shared_gnu2_test_LINK) $(tls_shared_gnu2_test_OBJECTS) $(tls_shared_gnu2_test_LDADD) $(LIBS) +tls_shared_ie_test$(EXEEXT): $(tls_shared_ie_test_OBJECTS) $(tls_shared_ie_test_DEPENDENCIES) + @rm -f tls_shared_ie_test$(EXEEXT) + $(tls_shared_ie_test_LINK) $(tls_shared_ie_test_OBJECTS) $(tls_shared_ie_test_LDADD) $(LIBS) +tls_shared_nonpic_test$(EXEEXT): $(tls_shared_nonpic_test_OBJECTS) $(tls_shared_nonpic_test_DEPENDENCIES) + @rm -f tls_shared_nonpic_test$(EXEEXT) + $(tls_shared_nonpic_test_LINK) $(tls_shared_nonpic_test_OBJECTS) $(tls_shared_nonpic_test_LDADD) $(LIBS) +tls_shared_test$(EXEEXT): $(tls_shared_test_OBJECTS) $(tls_shared_test_DEPENDENCIES) + @rm -f tls_shared_test$(EXEEXT) + $(tls_shared_test_LINK) $(tls_shared_test_OBJECTS) $(tls_shared_test_LDADD) $(LIBS) +tls_static_pic_test$(EXEEXT): $(tls_static_pic_test_OBJECTS) $(tls_static_pic_test_DEPENDENCIES) + @rm -f tls_static_pic_test$(EXEEXT) + $(tls_static_pic_test_LINK) $(tls_static_pic_test_OBJECTS) $(tls_static_pic_test_LDADD) $(LIBS) +tls_static_test$(EXEEXT): $(tls_static_test_OBJECTS) $(tls_static_test_DEPENDENCIES) + @rm -f tls_static_test$(EXEEXT) + $(tls_static_test_LINK) $(tls_static_test_OBJECTS) $(tls_static_test_LDADD) $(LIBS) +tls_test$(EXEEXT): $(tls_test_OBJECTS) $(tls_test_DEPENDENCIES) + @rm -f tls_test$(EXEEXT) + $(tls_test_LINK) $(tls_test_OBJECTS) $(tls_test_LDADD) $(LIBS) +two_file_mixed_2_shared_test$(EXEEXT): $(two_file_mixed_2_shared_test_OBJECTS) $(two_file_mixed_2_shared_test_DEPENDENCIES) + @rm -f two_file_mixed_2_shared_test$(EXEEXT) + $(two_file_mixed_2_shared_test_LINK) $(two_file_mixed_2_shared_test_OBJECTS) $(two_file_mixed_2_shared_test_LDADD) $(LIBS) +@FN_PTRS_IN_SO_WITHOUT_PIC_FALSE@two_file_mixed_pie_test$(EXEEXT): $(two_file_mixed_pie_test_OBJECTS) $(two_file_mixed_pie_test_DEPENDENCIES) +@FN_PTRS_IN_SO_WITHOUT_PIC_FALSE@ @rm -f two_file_mixed_pie_test$(EXEEXT) +@FN_PTRS_IN_SO_WITHOUT_PIC_FALSE@ $(LINK) $(two_file_mixed_pie_test_OBJECTS) $(two_file_mixed_pie_test_LDADD) $(LIBS) +@GCC_FALSE@two_file_mixed_pie_test$(EXEEXT): $(two_file_mixed_pie_test_OBJECTS) $(two_file_mixed_pie_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f two_file_mixed_pie_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(two_file_mixed_pie_test_OBJECTS) $(two_file_mixed_pie_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@two_file_mixed_pie_test$(EXEEXT): $(two_file_mixed_pie_test_OBJECTS) $(two_file_mixed_pie_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f two_file_mixed_pie_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(two_file_mixed_pie_test_OBJECTS) $(two_file_mixed_pie_test_LDADD) $(LIBS) +two_file_mixed_shared_test$(EXEEXT): $(two_file_mixed_shared_test_OBJECTS) $(two_file_mixed_shared_test_DEPENDENCIES) + @rm -f two_file_mixed_shared_test$(EXEEXT) + $(two_file_mixed_shared_test_LINK) $(two_file_mixed_shared_test_OBJECTS) $(two_file_mixed_shared_test_LDADD) $(LIBS) +two_file_pic_test$(EXEEXT): $(two_file_pic_test_OBJECTS) $(two_file_pic_test_DEPENDENCIES) + @rm -f two_file_pic_test$(EXEEXT) + $(two_file_pic_test_LINK) $(two_file_pic_test_OBJECTS) $(two_file_pic_test_LDADD) $(LIBS) +@GCC_FALSE@two_file_pie_test$(EXEEXT): $(two_file_pie_test_OBJECTS) $(two_file_pie_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f two_file_pie_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(two_file_pie_test_OBJECTS) $(two_file_pie_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@two_file_pie_test$(EXEEXT): $(two_file_pie_test_OBJECTS) $(two_file_pie_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f two_file_pie_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(two_file_pie_test_OBJECTS) $(two_file_pie_test_LDADD) $(LIBS) +two_file_relocatable_test$(EXEEXT): $(two_file_relocatable_test_OBJECTS) $(two_file_relocatable_test_DEPENDENCIES) + @rm -f two_file_relocatable_test$(EXEEXT) + $(two_file_relocatable_test_LINK) $(two_file_relocatable_test_OBJECTS) $(two_file_relocatable_test_LDADD) $(LIBS) +two_file_same_shared_nonpic_test$(EXEEXT): $(two_file_same_shared_nonpic_test_OBJECTS) $(two_file_same_shared_nonpic_test_DEPENDENCIES) + @rm -f two_file_same_shared_nonpic_test$(EXEEXT) + $(two_file_same_shared_nonpic_test_LINK) $(two_file_same_shared_nonpic_test_OBJECTS) $(two_file_same_shared_nonpic_test_LDADD) $(LIBS) +two_file_same_shared_strip_test$(EXEEXT): $(two_file_same_shared_strip_test_OBJECTS) $(two_file_same_shared_strip_test_DEPENDENCIES) + @rm -f two_file_same_shared_strip_test$(EXEEXT) + $(two_file_same_shared_strip_test_LINK) $(two_file_same_shared_strip_test_OBJECTS) $(two_file_same_shared_strip_test_LDADD) $(LIBS) +two_file_same_shared_test$(EXEEXT): $(two_file_same_shared_test_OBJECTS) $(two_file_same_shared_test_DEPENDENCIES) + @rm -f two_file_same_shared_test$(EXEEXT) + $(two_file_same_shared_test_LINK) $(two_file_same_shared_test_OBJECTS) $(two_file_same_shared_test_LDADD) $(LIBS) +two_file_separate_shared_12_nonpic_test$(EXEEXT): $(two_file_separate_shared_12_nonpic_test_OBJECTS) $(two_file_separate_shared_12_nonpic_test_DEPENDENCIES) + @rm -f two_file_separate_shared_12_nonpic_test$(EXEEXT) + $(two_file_separate_shared_12_nonpic_test_LINK) $(two_file_separate_shared_12_nonpic_test_OBJECTS) $(two_file_separate_shared_12_nonpic_test_LDADD) $(LIBS) +two_file_separate_shared_12_test$(EXEEXT): $(two_file_separate_shared_12_test_OBJECTS) $(two_file_separate_shared_12_test_DEPENDENCIES) + @rm -f two_file_separate_shared_12_test$(EXEEXT) + $(two_file_separate_shared_12_test_LINK) $(two_file_separate_shared_12_test_OBJECTS) $(two_file_separate_shared_12_test_LDADD) $(LIBS) +two_file_separate_shared_21_nonpic_test$(EXEEXT): $(two_file_separate_shared_21_nonpic_test_OBJECTS) $(two_file_separate_shared_21_nonpic_test_DEPENDENCIES) + @rm -f two_file_separate_shared_21_nonpic_test$(EXEEXT) + $(two_file_separate_shared_21_nonpic_test_LINK) $(two_file_separate_shared_21_nonpic_test_OBJECTS) $(two_file_separate_shared_21_nonpic_test_LDADD) $(LIBS) +two_file_separate_shared_21_test$(EXEEXT): $(two_file_separate_shared_21_test_OBJECTS) $(two_file_separate_shared_21_test_DEPENDENCIES) + @rm -f two_file_separate_shared_21_test$(EXEEXT) + $(two_file_separate_shared_21_test_LINK) $(two_file_separate_shared_21_test_OBJECTS) $(two_file_separate_shared_21_test_LDADD) $(LIBS) +two_file_shared_1_nonpic_test$(EXEEXT): $(two_file_shared_1_nonpic_test_OBJECTS) $(two_file_shared_1_nonpic_test_DEPENDENCIES) + @rm -f two_file_shared_1_nonpic_test$(EXEEXT) + $(two_file_shared_1_nonpic_test_LINK) $(two_file_shared_1_nonpic_test_OBJECTS) $(two_file_shared_1_nonpic_test_LDADD) $(LIBS) +two_file_shared_1_pic_2_test$(EXEEXT): $(two_file_shared_1_pic_2_test_OBJECTS) $(two_file_shared_1_pic_2_test_DEPENDENCIES) + @rm -f two_file_shared_1_pic_2_test$(EXEEXT) + $(two_file_shared_1_pic_2_test_LINK) $(two_file_shared_1_pic_2_test_OBJECTS) $(two_file_shared_1_pic_2_test_LDADD) $(LIBS) +two_file_shared_1_test$(EXEEXT): $(two_file_shared_1_test_OBJECTS) $(two_file_shared_1_test_DEPENDENCIES) + @rm -f two_file_shared_1_test$(EXEEXT) + $(two_file_shared_1_test_LINK) $(two_file_shared_1_test_OBJECTS) $(two_file_shared_1_test_LDADD) $(LIBS) +two_file_shared_2_nonpic_test$(EXEEXT): $(two_file_shared_2_nonpic_test_OBJECTS) $(two_file_shared_2_nonpic_test_DEPENDENCIES) + @rm -f two_file_shared_2_nonpic_test$(EXEEXT) + $(two_file_shared_2_nonpic_test_LINK) $(two_file_shared_2_nonpic_test_OBJECTS) $(two_file_shared_2_nonpic_test_LDADD) $(LIBS) +two_file_shared_2_pic_1_test$(EXEEXT): $(two_file_shared_2_pic_1_test_OBJECTS) $(two_file_shared_2_pic_1_test_DEPENDENCIES) + @rm -f two_file_shared_2_pic_1_test$(EXEEXT) + $(two_file_shared_2_pic_1_test_LINK) $(two_file_shared_2_pic_1_test_OBJECTS) $(two_file_shared_2_pic_1_test_LDADD) $(LIBS) +two_file_shared_2_test$(EXEEXT): $(two_file_shared_2_test_OBJECTS) $(two_file_shared_2_test_DEPENDENCIES) + @rm -f two_file_shared_2_test$(EXEEXT) + $(two_file_shared_2_test_LINK) $(two_file_shared_2_test_OBJECTS) $(two_file_shared_2_test_LDADD) $(LIBS) +two_file_static_test$(EXEEXT): $(two_file_static_test_OBJECTS) $(two_file_static_test_DEPENDENCIES) + @rm -f two_file_static_test$(EXEEXT) + $(two_file_static_test_LINK) $(two_file_static_test_OBJECTS) $(two_file_static_test_LDADD) $(LIBS) +@GCC_FALSE@two_file_strip_test$(EXEEXT): $(two_file_strip_test_OBJECTS) $(two_file_strip_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f two_file_strip_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(two_file_strip_test_OBJECTS) $(two_file_strip_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@two_file_strip_test$(EXEEXT): $(two_file_strip_test_OBJECTS) $(two_file_strip_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f two_file_strip_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(two_file_strip_test_OBJECTS) $(two_file_strip_test_LDADD) $(LIBS) +two_file_test$(EXEEXT): $(two_file_test_OBJECTS) $(two_file_test_DEPENDENCIES) + @rm -f two_file_test$(EXEEXT) + $(two_file_test_LINK) $(two_file_test_OBJECTS) $(two_file_test_LDADD) $(LIBS) +ver_test$(EXEEXT): $(ver_test_OBJECTS) $(ver_test_DEPENDENCIES) + @rm -f ver_test$(EXEEXT) + $(ver_test_LINK) $(ver_test_OBJECTS) $(ver_test_LDADD) $(LIBS) +ver_test_11$(EXEEXT): $(ver_test_11_OBJECTS) $(ver_test_11_DEPENDENCIES) + @rm -f ver_test_11$(EXEEXT) + $(ver_test_11_LINK) $(ver_test_11_OBJECTS) $(ver_test_11_LDADD) $(LIBS) +ver_test_12$(EXEEXT): $(ver_test_12_OBJECTS) $(ver_test_12_DEPENDENCIES) + @rm -f ver_test_12$(EXEEXT) + $(ver_test_12_LINK) $(ver_test_12_OBJECTS) $(ver_test_12_LDADD) $(LIBS) +ver_test_2$(EXEEXT): $(ver_test_2_OBJECTS) $(ver_test_2_DEPENDENCIES) + @rm -f ver_test_2$(EXEEXT) + $(ver_test_2_LINK) $(ver_test_2_OBJECTS) $(ver_test_2_LDADD) $(LIBS) +ver_test_6$(EXEEXT): $(ver_test_6_OBJECTS) $(ver_test_6_DEPENDENCIES) + @rm -f ver_test_6$(EXEEXT) + $(ver_test_6_LINK) $(ver_test_6_OBJECTS) $(ver_test_6_LDADD) $(LIBS) +ver_test_8$(EXEEXT): $(ver_test_8_OBJECTS) $(ver_test_8_DEPENDENCIES) + @rm -f ver_test_8$(EXEEXT) + $(ver_test_8_LINK) $(ver_test_8_OBJECTS) $(ver_test_8_LDADD) $(LIBS) +ver_test_9$(EXEEXT): $(ver_test_9_OBJECTS) $(ver_test_9_DEPENDENCIES) + @rm -f ver_test_9$(EXEEXT) + $(ver_test_9_LINK) $(ver_test_9_OBJECTS) $(ver_test_9_LDADD) $(LIBS) +weak_alias_test$(EXEEXT): $(weak_alias_test_OBJECTS) $(weak_alias_test_DEPENDENCIES) + @rm -f weak_alias_test$(EXEEXT) + $(weak_alias_test_LINK) $(weak_alias_test_OBJECTS) $(weak_alias_test_LDADD) $(LIBS) +@GCC_FALSE@weak_plt$(EXEEXT): $(weak_plt_OBJECTS) $(weak_plt_DEPENDENCIES) +@GCC_FALSE@ @rm -f weak_plt$(EXEEXT) +@GCC_FALSE@ $(LINK) $(weak_plt_OBJECTS) $(weak_plt_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@weak_plt$(EXEEXT): $(weak_plt_OBJECTS) $(weak_plt_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f weak_plt$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(weak_plt_OBJECTS) $(weak_plt_LDADD) $(LIBS) +weak_test$(EXEEXT): $(weak_test_OBJECTS) $(weak_test_DEPENDENCIES) + @rm -f weak_test$(EXEEXT) + $(weak_test_LINK) $(weak_test_OBJECTS) $(weak_test_LDADD) $(LIBS) +weak_undef_nonpic_test$(EXEEXT): $(weak_undef_nonpic_test_OBJECTS) $(weak_undef_nonpic_test_DEPENDENCIES) + @rm -f weak_undef_nonpic_test$(EXEEXT) + $(weak_undef_nonpic_test_LINK) $(weak_undef_nonpic_test_OBJECTS) $(weak_undef_nonpic_test_LDADD) $(LIBS) +weak_undef_test$(EXEEXT): $(weak_undef_test_OBJECTS) $(weak_undef_test_DEPENDENCIES) + @rm -f weak_undef_test$(EXEEXT) + $(weak_undef_test_LINK) $(weak_undef_test_OBJECTS) $(weak_undef_test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_pic_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_pie_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_static_pic_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_static_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/constructor_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/discard_locals_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exclude_libs_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flagstest_compress_debug_sections.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flagstest_o_specialfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flagstest_o_specialfile_and_compress_debug_sections.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flagstest_o_ttext_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icf_virtual_function_folding_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncdep2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1pic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1picstatic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1pie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1staticpic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1staticpie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1vis.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1vispic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain1vispie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain2pic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain2picstatic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain4picstatic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain5pic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain5picstatic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain5pie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain5staticpic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain6pie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain7.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain7pic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain7picstatic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncmain7pie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifuncvar3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremental_comdat_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremental_common_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremental_copy_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremental_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremental_test_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremental_test_4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremental_test_5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incremental_test_6.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initpri1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initpri2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initpri3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/justsyms_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/justsyms_exec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large-large.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large_symbol_alignment.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leb128_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/local_labels_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/many_sections_r_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/many_sections_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/permission_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_6.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_7.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_8.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_tls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relro_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_11.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_2a.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_2b.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/searched_file_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/start_lib_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testmain.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thin_archive_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls_pie_pic_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls_pie_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls_test_file2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_mixed_pie_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_pie_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_strip_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_1b.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ver_test_6.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ver_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ver_test_main_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_alias_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_plt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_undef_test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +large-large.o: large.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -MT large-large.o -MD -MP -MF $(DEPDIR)/large-large.Tpo -c -o large-large.o `test -f 'large.c' || echo '$(srcdir)/'`large.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/large-large.Tpo $(DEPDIR)/large-large.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='large.c' object='large-large.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -c -o large-large.o `test -f 'large.c' || echo '$(srcdir)/'`large.c + +large-large.obj: large.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -MT large-large.obj -MD -MP -MF $(DEPDIR)/large-large.Tpo -c -o large-large.obj `if test -f 'large.c'; then $(CYGPATH_W) 'large.c'; else $(CYGPATH_W) '$(srcdir)/large.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/large-large.Tpo $(DEPDIR)/large-large.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='large.c' object='large-large.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -c -o large-large.obj `if test -f 'large.c'; then $(CYGPATH_W) 'large.c'; else $(CYGPATH_W) '$(srcdir)/large.c'; fi` + +.cc.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# To be appended to the command running the test. Handle the stdout +# and stderr redirection, and catch the exit status. +am__check_post = \ +>$@-t 2>&1; \ +estatus=$$?; \ +if test -n '$(DISABLE_HARD_ERRORS)' \ + && test $$estatus -eq 99; then \ + estatus=1; \ +fi; \ +TERM=$$__SAVED_TERM; export TERM; \ +$(am__tty_colors); \ +xfailed=PASS; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + xfailed=XFAIL;; \ +esac; \ +case $$estatus:$$xfailed in \ + 0:XFAIL) col=$$red; res=XPASS;; \ + 0:*) col=$$grn; res=PASS ;; \ + 77:*) col=$$blu; res=SKIP ;; \ + 99:*) col=$$red; res=FAIL ;; \ + *:XFAIL) col=$$lgn; res=XFAIL;; \ + *:*) col=$$red; res=FAIL ;; \ +esac; \ +echo "$${col}$$res$${std}: $$f"; \ +echo "$$res: $$f (exit: $$estatus)" | \ + $(am__rst_section) >$@; \ +cat $@-t >>$@; \ +rm -f $@-t + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__sh_e_setup); \ + list='$(TEST_LOGS)'; \ + results=`for f in $$list; do \ + read line < $$f && echo "$$line" || echo FAIL; \ + done`; \ + all=`echo "$$results" | sed '/^$$/d' | wc -l | sed -e 's/^[ ]*//'`; \ + fail=`echo "$$results" | grep -c '^FAIL'`; \ + pass=`echo "$$results" | grep -c '^PASS'`; \ + skip=`echo "$$results" | grep -c '^SKIP'`; \ + xfail=`echo "$$results" | grep -c '^XFAIL'`; \ + xpass=`echo "$$results" | grep -c '^XPASS'`; \ + failures=`expr $$fail + $$xpass`; \ + all=`expr $$all - $$skip`; \ + if test "$$all" -eq 1; then tests=test; All=; \ + else tests=tests; All="All "; fi; \ + case fail=$$fail:xpass=$$xpass:xfail=$$xfail in \ + fail=0:xpass=0:xfail=0) \ + msg="$$All$$all $$tests passed. "; \ + exit=true;; \ + fail=0:xpass=0:xfail=*) \ + msg="$$All$$all $$tests behaved as expected"; \ + if test "$$xfail" -eq 1; then xfailures=failure; \ + else xfailures=failures; fi; \ + msg="$$msg ($$xfail expected $$xfailures). "; \ + exit=true;; \ + fail=*:xpass=0:xfail=*) \ + msg="$$fail of $$all $$tests failed. "; \ + exit=false;; \ + fail=*:xpass=*:xfail=*) \ + msg="$$failures of $$all $$tests did not behave as expected"; \ + if test "$$xpass" -eq 1; then xpasses=pass; \ + else xpasses=passes; fi; \ + msg="$$msg ($$xpass unexpected $$xpasses). "; \ + exit=false;; \ + *) \ + echo >&2 "incorrect case"; exit 4;; \ + esac; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + msg="$$msg($$skip test was not run). "; \ + else \ + msg="$$msg($$skip tests were not run). "; \ + fi; \ + fi; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + echo "$$msg"; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for f in $$list; do \ + read line < $$f; \ + case $$line in \ + PASS:*|XFAIL:*);; \ + *) echo; cat $$f;; \ + esac; \ + done; \ + } >$(TEST_SUITE_LOG).tmp; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if test "$$failures" -ne 0; then \ + msg="$${msg}See $(subdir)/$(TEST_SUITE_LOG). "; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + msg="$${msg}Please report to $(PACKAGE_BUGREPORT). "; \ + fi; \ + fi; \ + test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG); \ + $(am__tty_colors); \ + if $$exit; then \ + echo $(ECHO_N) "$$grn$(ECHO_C)"; \ + else \ + echo $(ECHO_N) "$$red$(ECHO_C)"; \ + fi; \ + echo "$$msg" | $(am__text_box); \ + echo $(ECHO_N) "$$std$(ECHO_C)"; \ + $$exit + +# Run all the tests. +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @list='$(TEST_LOGS)'; \ + list=`for f in $$list; do \ + test .log = $$f || echo $$f; \ + done | tr '\012\015' ' '`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$list" + +.log.html: + @list='$(RST2HTML) $$RST2HTML rst2html rst2html.py'; \ + for r2h in $$list; do \ + if ($$r2h --version) >/dev/null 2>&1; then \ + R2H=$$r2h; \ + fi; \ + done; \ + if test -z "$$R2H"; then \ + echo >&2 "cannot find rst2html, cannot create $@"; \ + exit 2; \ + fi; \ + $$R2H $< >$@.tmp + @mv $@.tmp $@ + +# Be sure to run check first, and then to convert the result. +# Beware of concurrent executions. Run "check" not "check-TESTS", as +# check-SCRIPTS and other dependencies are rebuilt by the former only. +# And expect check to fail. +check-html: + @if $(MAKE) $(AM_MAKEFLAGS) check; then \ + rv=0; else rv=$$?; \ + fi; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) || exit 4; \ + exit $$rv +recheck recheck-html: + @target=`echo $@ | sed 's,^re,,'`; \ + list='$(TEST_LOGS)'; \ + list=`for f in $$list; do \ + test -f $$f || continue; \ + if read line < $$f; then \ + case $$line in FAIL*|XPASS*) echo $$f;; esac; \ + else echo $$f; fi; \ + done | tr '\012\015' ' '`; \ + $(MAKE) $(AM_MAKEFLAGS) $$target AM_MAKEFLAGS='$(AM_MAKEFLAGS) TEST_LOGS="'"$$list"'"' +incremental_test.sh.log: incremental_test.sh + @p='incremental_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +gc_comdat_test.sh.log: gc_comdat_test.sh + @p='gc_comdat_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +gc_tls_test.sh.log: gc_tls_test.sh + @p='gc_tls_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +gc_orphan_section_test.sh.log: gc_orphan_section_test.sh + @p='gc_orphan_section_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +pr14265.sh.log: pr14265.sh + @p='pr14265.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +icf_test.sh.log: icf_test.sh + @p='icf_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +icf_keep_unique_test.sh.log: icf_keep_unique_test.sh + @p='icf_keep_unique_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +icf_safe_test.sh.log: icf_safe_test.sh + @p='icf_safe_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +icf_safe_so_test.sh.log: icf_safe_so_test.sh + @p='icf_safe_so_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +final_layout.sh.log: final_layout.sh + @p='final_layout.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +text_section_grouping.sh.log: text_section_grouping.sh + @p='text_section_grouping.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +section_sorting_name.sh.log: section_sorting_name.sh + @p='section_sorting_name.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +icf_preemptible_functions_test.sh.log: icf_preemptible_functions_test.sh + @p='icf_preemptible_functions_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +icf_string_merge_test.sh.log: icf_string_merge_test.sh + @p='icf_string_merge_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +icf_sht_rel_addend_test.sh.log: icf_sht_rel_addend_test.sh + @p='icf_sht_rel_addend_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +merge_string_literals.sh.log: merge_string_literals.sh + @p='merge_string_literals.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_shared.sh.log: two_file_shared.sh + @p='two_file_shared.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +weak_plt.sh.log: weak_plt.sh + @p='weak_plt.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +debug_msg.sh.log: debug_msg.sh + @p='debug_msg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +missing_key_func.sh.log: missing_key_func.sh + @p='missing_key_func.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +undef_symbol.sh.log: undef_symbol.sh + @p='undef_symbol.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_1.sh.log: ver_test_1.sh + @p='ver_test_1.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_2.sh.log: ver_test_2.sh + @p='ver_test_2.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_4.sh.log: ver_test_4.sh + @p='ver_test_4.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_5.sh.log: ver_test_5.sh + @p='ver_test_5.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_7.sh.log: ver_test_7.sh + @p='ver_test_7.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_10.sh.log: ver_test_10.sh + @p='ver_test_10.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +relro_test.sh.log: relro_test.sh + @p='relro_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_matching_test.sh.log: ver_matching_test.sh + @p='ver_matching_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_3.sh.log: script_test_3.sh + @p='script_test_3.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_4.sh.log: script_test_4.sh + @p='script_test_4.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_5.sh.log: script_test_5.sh + @p='script_test_5.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_6.sh.log: script_test_6.sh + @p='script_test_6.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_7.sh.log: script_test_7.sh + @p='script_test_7.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_8.sh.log: script_test_8.sh + @p='script_test_8.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_9.sh.log: script_test_9.sh + @p='script_test_9.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +dynamic_list.sh.log: dynamic_list.sh + @p='dynamic_list.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_1.sh.log: plugin_test_1.sh + @p='plugin_test_1.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_2.sh.log: plugin_test_2.sh + @p='plugin_test_2.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_3.sh.log: plugin_test_3.sh + @p='plugin_test_3.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_4.sh.log: plugin_test_4.sh + @p='plugin_test_4.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_6.sh.log: plugin_test_6.sh + @p='plugin_test_6.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_7.sh.log: plugin_test_7.sh + @p='plugin_test_7.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_tls.sh.log: plugin_test_tls.sh + @p='plugin_test_tls.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_final_layout.sh.log: plugin_final_layout.sh + @p='plugin_final_layout.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exclude_libs_test.sh.log: exclude_libs_test.sh + @p='exclude_libs_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +discard_locals_test.sh.log: discard_locals_test.sh + @p='discard_locals_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +hidden_test.sh.log: hidden_test.sh + @p='hidden_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +retain_symbols_file_test.sh.log: retain_symbols_file_test.sh + @p='retain_symbols_file_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +no_version_test.sh.log: no_version_test.sh + @p='no_version_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +strong_ref_weak_def.sh.log: strong_ref_weak_def.sh + @p='strong_ref_weak_def.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +dyn_weak_ref.sh.log: dyn_weak_ref.sh + @p='dyn_weak_ref.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +memory_test.sh.log: memory_test.sh + @p='memory_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +gdb_index_test_1.sh.log: gdb_index_test_1.sh + @p='gdb_index_test_1.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +gdb_index_test_2.sh.log: gdb_index_test_2.sh + @p='gdb_index_test_2.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +gdb_index_test_3.sh.log: gdb_index_test_3.sh + @p='gdb_index_test_3.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +gdb_index_test_4.sh.log: gdb_index_test_4.sh + @p='gdb_index_test_4.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_10.sh.log: script_test_10.sh + @p='script_test_10.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +split_i386.sh.log: split_i386.sh + @p='split_i386.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +split_x86_64.sh.log: split_x86_64.sh + @p='split_x86_64.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_abs_global.sh.log: arm_abs_global.sh + @p='arm_abs_global.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_branch_in_range.sh.log: arm_branch_in_range.sh + @p='arm_branch_in_range.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_branch_out_of_range.sh.log: arm_branch_out_of_range.sh + @p='arm_branch_out_of_range.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_fix_v4bx.sh.log: arm_fix_v4bx.sh + @p='arm_fix_v4bx.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_attr_merge.sh.log: arm_attr_merge.sh + @p='arm_attr_merge.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_fix_1176.sh.log: arm_fix_1176.sh + @p='arm_fix_1176.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_cortex_a8.sh.log: arm_cortex_a8.sh + @p='arm_cortex_a8.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_exidx_test.sh.log: arm_exidx_test.sh + @p='arm_exidx_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +pr12826.sh.log: pr12826.sh + @p='pr12826.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_unaligned_reloc.sh.log: arm_unaligned_reloc.sh + @p='arm_unaligned_reloc.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_farcall_arm_arm.sh.log: arm_farcall_arm_arm.sh + @p='arm_farcall_arm_arm.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_farcall_arm_thumb.sh.log: arm_farcall_arm_thumb.sh + @p='arm_farcall_arm_thumb.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_farcall_thumb_thumb.sh.log: arm_farcall_thumb_thumb.sh + @p='arm_farcall_thumb_thumb.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +arm_farcall_thumb_arm.sh.log: arm_farcall_thumb_arm.sh + @p='arm_farcall_thumb_arm.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +dwp_test_1.sh.log: dwp_test_1.sh + @p='dwp_test_1.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +dwp_test_2.sh.log: dwp_test_2.sh + @p='dwp_test_2.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +object_unittest.log: object_unittest$(EXEEXT) + @p='object_unittest$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +binary_unittest.log: binary_unittest$(EXEEXT) + @p='binary_unittest$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +leb128_unittest.log: leb128_unittest$(EXEEXT) + @p='leb128_unittest$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +icf_virtual_function_folding_test.log: icf_virtual_function_folding_test$(EXEEXT) + @p='icf_virtual_function_folding_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +large_symbol_alignment.log: large_symbol_alignment$(EXEEXT) + @p='large_symbol_alignment$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +basic_test.log: basic_test$(EXEEXT) + @p='basic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +basic_pic_test.log: basic_pic_test$(EXEEXT) + @p='basic_pic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +basic_static_test.log: basic_static_test$(EXEEXT) + @p='basic_static_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +basic_static_pic_test.log: basic_static_pic_test$(EXEEXT) + @p='basic_static_pic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +basic_pie_test.log: basic_pie_test$(EXEEXT) + @p='basic_pie_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +constructor_test.log: constructor_test$(EXEEXT) + @p='constructor_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +constructor_static_test.log: constructor_static_test$(EXEEXT) + @p='constructor_static_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_test.log: two_file_test$(EXEEXT) + @p='two_file_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_pic_test.log: two_file_pic_test$(EXEEXT) + @p='two_file_pic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_static_test.log: two_file_static_test$(EXEEXT) + @p='two_file_static_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_shared_1_test.log: two_file_shared_1_test$(EXEEXT) + @p='two_file_shared_1_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_shared_2_test.log: two_file_shared_2_test$(EXEEXT) + @p='two_file_shared_2_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_shared_1_pic_2_test.log: two_file_shared_1_pic_2_test$(EXEEXT) + @p='two_file_shared_1_pic_2_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_shared_2_pic_1_test.log: two_file_shared_2_pic_1_test$(EXEEXT) + @p='two_file_shared_2_pic_1_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_same_shared_test.log: two_file_same_shared_test$(EXEEXT) + @p='two_file_same_shared_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_separate_shared_12_test.log: two_file_separate_shared_12_test$(EXEEXT) + @p='two_file_separate_shared_12_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_separate_shared_21_test.log: two_file_separate_shared_21_test$(EXEEXT) + @p='two_file_separate_shared_21_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_relocatable_test.log: two_file_relocatable_test$(EXEEXT) + @p='two_file_relocatable_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_pie_test.log: two_file_pie_test$(EXEEXT) + @p='two_file_pie_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_shared_1_nonpic_test.log: two_file_shared_1_nonpic_test$(EXEEXT) + @p='two_file_shared_1_nonpic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_shared_2_nonpic_test.log: two_file_shared_2_nonpic_test$(EXEEXT) + @p='two_file_shared_2_nonpic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_same_shared_nonpic_test.log: two_file_same_shared_nonpic_test$(EXEEXT) + @p='two_file_same_shared_nonpic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_separate_shared_12_nonpic_test.log: two_file_separate_shared_12_nonpic_test$(EXEEXT) + @p='two_file_separate_shared_12_nonpic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_separate_shared_21_nonpic_test.log: two_file_separate_shared_21_nonpic_test$(EXEEXT) + @p='two_file_separate_shared_21_nonpic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_mixed_shared_test.log: two_file_mixed_shared_test$(EXEEXT) + @p='two_file_mixed_shared_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_mixed_2_shared_test.log: two_file_mixed_2_shared_test$(EXEEXT) + @p='two_file_mixed_2_shared_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_mixed_pie_test.log: two_file_mixed_pie_test$(EXEEXT) + @p='two_file_mixed_pie_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_strip_test.log: two_file_strip_test$(EXEEXT) + @p='two_file_strip_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +two_file_same_shared_strip_test.log: two_file_same_shared_strip_test$(EXEEXT) + @p='two_file_same_shared_strip_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +common_test_1.log: common_test_1$(EXEEXT) + @p='common_test_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +common_test_2.log: common_test_2$(EXEEXT) + @p='common_test_2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exception_test.log: exception_test$(EXEEXT) + @p='exception_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exception_shared_1_test.log: exception_shared_1_test$(EXEEXT) + @p='exception_shared_1_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exception_shared_2_test.log: exception_shared_2_test$(EXEEXT) + @p='exception_shared_2_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exception_same_shared_test.log: exception_same_shared_test$(EXEEXT) + @p='exception_same_shared_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exception_separate_shared_12_test.log: exception_separate_shared_12_test$(EXEEXT) + @p='exception_separate_shared_12_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exception_separate_shared_21_test.log: exception_separate_shared_21_test$(EXEEXT) + @p='exception_separate_shared_21_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exception_static_test.log: exception_static_test$(EXEEXT) + @p='exception_static_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +weak_test.log: weak_test$(EXEEXT) + @p='weak_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +weak_undef_test.log: weak_undef_test$(EXEEXT) + @p='weak_undef_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +weak_undef_nonpic_test.log: weak_undef_nonpic_test$(EXEEXT) + @p='weak_undef_nonpic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +weak_alias_test.log: weak_alias_test$(EXEEXT) + @p='weak_alias_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +weak_plt.log: weak_plt$(EXEEXT) + @p='weak_plt$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +copy_test.log: copy_test$(EXEEXT) + @p='copy_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_test.log: tls_test$(EXEEXT) + @p='tls_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_pic_test.log: tls_pic_test$(EXEEXT) + @p='tls_pic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_pie_test.log: tls_pie_test$(EXEEXT) + @p='tls_pie_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_pie_pic_test.log: tls_pie_pic_test$(EXEEXT) + @p='tls_pie_pic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_shared_test.log: tls_shared_test$(EXEEXT) + @p='tls_shared_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_shared_ie_test.log: tls_shared_ie_test$(EXEEXT) + @p='tls_shared_ie_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_shared_gd_to_ie_test.log: tls_shared_gd_to_ie_test$(EXEEXT) + @p='tls_shared_gd_to_ie_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_shared_gnu2_gd_to_ie_test.log: tls_shared_gnu2_gd_to_ie_test$(EXEEXT) + @p='tls_shared_gnu2_gd_to_ie_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_shared_gnu2_test.log: tls_shared_gnu2_test$(EXEEXT) + @p='tls_shared_gnu2_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_static_test.log: tls_static_test$(EXEEXT) + @p='tls_static_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_static_pic_test.log: tls_static_pic_test$(EXEEXT) + @p='tls_static_pic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_shared_nonpic_test.log: tls_shared_nonpic_test$(EXEEXT) + @p='tls_shared_nonpic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +many_sections_test.log: many_sections_test$(EXEEXT) + @p='many_sections_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +many_sections_r_test.log: many_sections_r_test$(EXEEXT) + @p='many_sections_r_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +initpri1.log: initpri1$(EXEEXT) + @p='initpri1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +initpri2.log: initpri2$(EXEEXT) + @p='initpri2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +initpri3a.log: initpri3a$(EXEEXT) + @p='initpri3a$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +flagstest_o_specialfile.log: flagstest_o_specialfile$(EXEEXT) + @p='flagstest_o_specialfile$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +flagstest_compress_debug_sections.log: flagstest_compress_debug_sections$(EXEEXT) + @p='flagstest_compress_debug_sections$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +flagstest_o_specialfile_and_compress_debug_sections.log: flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) + @p='flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +flagstest_o_ttext_1.log: flagstest_o_ttext_1$(EXEEXT) + @p='flagstest_o_ttext_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test.log: ver_test$(EXEEXT) + @p='ver_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_2.log: ver_test_2$(EXEEXT) + @p='ver_test_2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_6.log: ver_test_6$(EXEEXT) + @p='ver_test_6$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_8.log: ver_test_8$(EXEEXT) + @p='ver_test_8$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_9.log: ver_test_9$(EXEEXT) + @p='ver_test_9$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_11.log: ver_test_11$(EXEEXT) + @p='ver_test_11$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ver_test_12.log: ver_test_12$(EXEEXT) + @p='ver_test_12$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +protected_1.log: protected_1$(EXEEXT) + @p='protected_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +protected_2.log: protected_2$(EXEEXT) + @p='protected_2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +relro_test.log: relro_test$(EXEEXT) + @p='relro_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +relro_now_test.log: relro_now_test$(EXEEXT) + @p='relro_now_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +relro_strip_test.log: relro_strip_test$(EXEEXT) + @p='relro_strip_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +relro_script_test.log: relro_script_test$(EXEEXT) + @p='relro_script_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_1.log: script_test_1$(EXEEXT) + @p='script_test_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_2.log: script_test_2$(EXEEXT) + @p='script_test_2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +justsyms.log: justsyms$(EXEEXT) + @p='justsyms$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +justsyms_exec.log: justsyms_exec$(EXEEXT) + @p='justsyms_exec$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +binary_test.log: binary_test$(EXEEXT) + @p='binary_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_3.log: script_test_3$(EXEEXT) + @p='script_test_3$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_phdrs_script_test.log: tls_phdrs_script_test$(EXEEXT) + @p='tls_phdrs_script_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +tls_script_test.log: tls_script_test$(EXEEXT) + @p='tls_script_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +script_test_11.log: script_test_11$(EXEEXT) + @p='script_test_11$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +thin_archive_test_1.log: thin_archive_test_1$(EXEEXT) + @p='thin_archive_test_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +thin_archive_test_2.log: thin_archive_test_2$(EXEEXT) + @p='thin_archive_test_2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_1.log: plugin_test_1$(EXEEXT) + @p='plugin_test_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_2.log: plugin_test_2$(EXEEXT) + @p='plugin_test_2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_3.log: plugin_test_3$(EXEEXT) + @p='plugin_test_3$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_4.log: plugin_test_4$(EXEEXT) + @p='plugin_test_4$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_5.log: plugin_test_5$(EXEEXT) + @p='plugin_test_5$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_6.log: plugin_test_6$(EXEEXT) + @p='plugin_test_6$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_7.log: plugin_test_7$(EXEEXT) + @p='plugin_test_7$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_8.log: plugin_test_8$(EXEEXT) + @p='plugin_test_8$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +plugin_test_tls.log: plugin_test_tls$(EXEEXT) + @p='plugin_test_tls$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +exclude_libs_test.log: exclude_libs_test$(EXEEXT) + @p='exclude_libs_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +local_labels_test.log: local_labels_test$(EXEEXT) + @p='local_labels_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +discard_locals_test.log: discard_locals_test$(EXEEXT) + @p='discard_locals_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +large.log: large$(EXEEXT) + @p='large$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +permission_test.log: permission_test$(EXEEXT) + @p='permission_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +searched_file_test.log: searched_file_test$(EXEEXT) + @p='searched_file_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1static.log: ifuncmain1static$(EXEEXT) + @p='ifuncmain1static$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1picstatic.log: ifuncmain1picstatic$(EXEEXT) + @p='ifuncmain1picstatic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1.log: ifuncmain1$(EXEEXT) + @p='ifuncmain1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1pic.log: ifuncmain1pic$(EXEEXT) + @p='ifuncmain1pic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1vis.log: ifuncmain1vis$(EXEEXT) + @p='ifuncmain1vis$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1vispic.log: ifuncmain1vispic$(EXEEXT) + @p='ifuncmain1vispic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1staticpic.log: ifuncmain1staticpic$(EXEEXT) + @p='ifuncmain1staticpic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1pie.log: ifuncmain1pie$(EXEEXT) + @p='ifuncmain1pie$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1vispie.log: ifuncmain1vispie$(EXEEXT) + @p='ifuncmain1vispie$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain1staticpie.log: ifuncmain1staticpie$(EXEEXT) + @p='ifuncmain1staticpie$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain2static.log: ifuncmain2static$(EXEEXT) + @p='ifuncmain2static$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain2picstatic.log: ifuncmain2picstatic$(EXEEXT) + @p='ifuncmain2picstatic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain2.log: ifuncmain2$(EXEEXT) + @p='ifuncmain2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain2pic.log: ifuncmain2pic$(EXEEXT) + @p='ifuncmain2pic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain3.log: ifuncmain3$(EXEEXT) + @p='ifuncmain3$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain4static.log: ifuncmain4static$(EXEEXT) + @p='ifuncmain4static$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain4picstatic.log: ifuncmain4picstatic$(EXEEXT) + @p='ifuncmain4picstatic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain4.log: ifuncmain4$(EXEEXT) + @p='ifuncmain4$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain5static.log: ifuncmain5static$(EXEEXT) + @p='ifuncmain5static$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain5picstatic.log: ifuncmain5picstatic$(EXEEXT) + @p='ifuncmain5picstatic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain5.log: ifuncmain5$(EXEEXT) + @p='ifuncmain5$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain5pic.log: ifuncmain5pic$(EXEEXT) + @p='ifuncmain5pic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain5staticpic.log: ifuncmain5staticpic$(EXEEXT) + @p='ifuncmain5staticpic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain5pie.log: ifuncmain5pie$(EXEEXT) + @p='ifuncmain5pie$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain6pie.log: ifuncmain6pie$(EXEEXT) + @p='ifuncmain6pie$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain7static.log: ifuncmain7static$(EXEEXT) + @p='ifuncmain7static$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain7picstatic.log: ifuncmain7picstatic$(EXEEXT) + @p='ifuncmain7picstatic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain7.log: ifuncmain7$(EXEEXT) + @p='ifuncmain7$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain7pic.log: ifuncmain7pic$(EXEEXT) + @p='ifuncmain7pic$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncmain7pie.log: ifuncmain7pie$(EXEEXT) + @p='ifuncmain7pie$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +ifuncvar.log: ifuncvar$(EXEEXT) + @p='ifuncvar$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +start_lib_test.log: start_lib_test$(EXEEXT) + @p='start_lib_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +incremental_test_2.log: incremental_test_2$(EXEEXT) + @p='incremental_test_2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +incremental_test_3.log: incremental_test_3$(EXEEXT) + @p='incremental_test_3$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +incremental_test_4.log: incremental_test_4$(EXEEXT) + @p='incremental_test_4$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +incremental_test_5.log: incremental_test_5$(EXEEXT) + @p='incremental_test_5$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +incremental_test_6.log: incremental_test_6$(EXEEXT) + @p='incremental_test_6$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +incremental_copy_test.log: incremental_copy_test$(EXEEXT) + @p='incremental_copy_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +incremental_common_test_1.log: incremental_common_test_1$(EXEEXT) + @p='incremental_common_test_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +incremental_comdat_test_1.log: incremental_comdat_test_1$(EXEEXT) + @p='incremental_comdat_test_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +.test.log: + @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post) +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS_TMP)" || rm -f $(TEST_LOGS_TMP) + -test -z "$(TEST_SUITE_HTML)" || rm -f $(TEST_SUITE_HTML) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: all check check-am check-html install install-am install-strip \ + recheck recheck-html + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am check-html \ + clean clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \ + ctags distclean distclean-compile distclean-generic \ + distclean-tags dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + recheck recheck-html tags uninstall uninstall-am + + +# Export make variables to the shell scripts so that they can see +# (for example) DEFAULT_TARGET. +.EXPORT_ALL_VARIABLES: + +# The unittests themselves + +# Infrastucture needed for the unittests: a directory where the linker +# is named 'ld'. This is because the -B flag appends 'ld' to its arg. +@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@gcctestdir/ld: ../ld-new +@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ test -d gcctestdir || mkdir -p gcctestdir +@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ rm -f gcctestdir/ld +@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ (cd gcctestdir && $(LN_S) ../../ld-new ld) + +# Some tests require the latest features of an in-tree assembler. +@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@gcctestdir/as: $(TEST_AS) +@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ test -d gcctestdir || mkdir -p gcctestdir +@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ rm -f gcctestdir/as +@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ (cd gcctestdir && $(LN_S) $(abs_top_builddir)/../gas/as-new as) + +# --------------------------------------------------------------------- +# These tests test the output of gold (end-to-end tests). In +# particular, they make sure that gold can link "difficult" object +# files, and the resulting object files run correctly. These can only +# run if we've built ld-new for the native architecture (that is, +# we're not cross-compiling it), since we run ld-new as part of these +# tests. We use the gcc-specific flag '-B' to use our linker instead +# of the default linker, which is why we only run our tests under gcc. + +# Each of these .o's is a useful, small complete program. They're +# particularly useful for making sure ld-new's flags do what they're +# supposed to (hence their names), but are used for many tests that +# don't actually involve analyzing input data. +@GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_debug.o: constructor_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_ndebug.o: constructor_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_1.o: incremental_test_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_2.o: incremental_test_2.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test: incremental_test_1.o incremental_test_2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -Wl,--incremental-full incremental_test_1.o incremental_test_2.o -Wl,-debug 2> incremental_test.cmdline +@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test.stdout: incremental_test ../incremental-dump +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ../incremental-dump incremental_test > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test_1.o: gc_comdat_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test_2.o: gc_comdat_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test: gc_comdat_test_1.o gc_comdat_test_2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_comdat_test_1.o gc_comdat_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test.stdout: gc_comdat_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C gc_comdat_test > gc_comdat_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_tls_test.o: gc_tls_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_tls_test:gc_tls_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_tls_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_tls_test.stdout: gc_tls_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C gc_tls_test > gc_tls_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_orphan_section_test.o: gc_orphan_section_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_orphan_section_test:gc_orphan_section_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_orphan_section_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_orphan_section_test.stdout: gc_orphan_section_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) gc_orphan_section_test > gc_orphan_section_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@pr14265.o: pr14265.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -O0 -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@pr14265: pr14265.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -Wl,--gc-sections -Wl,-T,$(srcdir)/pr14265.t -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@pr14265.stdout: pr14265 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) --format=bsd --numeric-sort $< > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_test.o: icf_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_test: icf_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -o icf_test -Bgcctestdir/ -Wl,--icf=all,-Map,icf_test.map icf_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_test.map: icf_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @touch icf_test.map +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_keep_unique_test.o: icf_keep_unique_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_keep_unique_test: icf_keep_unique_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all -Wl,--keep-unique,_Z11unique_funcv icf_keep_unique_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_keep_unique_test.stdout: icf_keep_unique_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C $< > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_test.o: icf_safe_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_test: icf_safe_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -o icf_safe_test -Bgcctestdir/ -Wl,--icf=safe,-Map,icf_safe_test.map icf_safe_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_test.map: icf_safe_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @touch icf_safe_test.map +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_test_1.stdout: icf_safe_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) $< > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_test_2.stdout: icf_safe_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -h $< > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_so_test.o: icf_safe_so_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_so_test: icf_safe_so_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -o icf_safe_so_test -Bgcctestdir/ -Wl,--icf=safe,-Map,icf_safe_so_test.map icf_safe_so_test.o -fPIC -shared +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_so_test.map: +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @touch icf_safe_so_test.map +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_so_test_1.stdout: icf_safe_so_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) $< > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_so_test_2.stdout: icf_safe_so_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -h $< > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@final_layout.o: final_layout.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@final_layout_sequence.txt: +@GCC_TRUE@@NATIVE_LINKER_TRUE@ (echo "*_Z3barv*" && echo ".text._Z3bazv" && echo "*_Z3foov*" && echo "*global_varb*" && echo "*global_vara*" && echo "*global_varc*") > final_layout_sequence.txt +@GCC_TRUE@@NATIVE_LINKER_TRUE@final_layout_script.lds: +@GCC_TRUE@@NATIVE_LINKER_TRUE@ (echo "SECTIONS { .text : { *(.text*) } .got : { *(.got .toc) } .sbss : { *(.sbss*) } .bss : { *(.bss*) } }") > final_layout_script.lds +@GCC_TRUE@@NATIVE_LINKER_TRUE@final_layout: final_layout.o final_layout_sequence.txt final_layout_script.lds gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--section-ordering-file,final_layout_sequence.txt -Wl,-T,final_layout_script.lds final_layout.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@final_layout.stdout: final_layout +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -n --synthetic final_layout > final_layout.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@text_section_grouping.o: text_section_grouping.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@text_section_grouping: text_section_grouping.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ text_section_grouping.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@text_section_no_grouping: text_section_grouping.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-text-reorder text_section_grouping.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@text_section_grouping.stdout: text_section_grouping +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -n --synthetic text_section_grouping > text_section_grouping.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@text_section_no_grouping.stdout: text_section_no_grouping +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -n --synthetic text_section_no_grouping > text_section_no_grouping.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@section_sorting_name.o: section_sorting_name.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@section_sorting_name: section_sorting_name.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--sort-section=name section_sorting_name.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@section_sorting_name.stdout: section_sorting_name +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -n --synthetic section_sorting_name > section_sorting_name.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_virtual_function_folding_test.o: icf_virtual_function_folding_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIE -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_virtual_function_folding_test: icf_virtual_function_folding_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_virtual_function_folding_test.o -pie +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_preemptible_functions_test.o: icf_preemptible_functions_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_preemptible_functions_test: icf_preemptible_functions_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_preemptible_functions_test.o -fPIC -shared +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_preemptible_functions_test.stdout: icf_preemptible_functions_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) icf_preemptible_functions_test > icf_preemptible_functions_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_string_merge_test.o: icf_string_merge_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_string_merge_test: icf_string_merge_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_string_merge_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_string_merge_test.stdout: icf_string_merge_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) icf_string_merge_test > icf_string_merge_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_sht_rel_addend_test_1.o: icf_sht_rel_addend_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_sht_rel_addend_test_2.o: icf_sht_rel_addend_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_sht_rel_addend_test: icf_sht_rel_addend_test_1.o icf_sht_rel_addend_test_2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_sht_rel_addend_test_1.o icf_sht_rel_addend_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_sht_rel_addend_test.stdout: icf_sht_rel_addend_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) icf_sht_rel_addend_test > icf_sht_rel_addend_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@merge_string_literals_1.o: merge_string_literals_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O2 -c -fPIC -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@merge_string_literals_2.o: merge_string_literals_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O2 -c -fPIC -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@merge_string_literals: merge_string_literals_1.o merge_string_literals_2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ merge_string_literals_1.o merge_string_literals_2.o -O2 -shared -nostdlib +@GCC_TRUE@@NATIVE_LINKER_TRUE@merge_string_literals.stdout: merge_string_literals +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_OBJDUMP) -s -j.rodata merge_string_literals > merge_string_literals.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_test.o: basic_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_test: basic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@basic_static_test: basic_test.o gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -static basic_test.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_pic_test.o: basic_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_pic_test: basic_pic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_pic_test.o +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@basic_static_pic_test: basic_pic_test.o gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_pie_test.o: basic_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_pie_test: basic_pie_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -pie basic_pie_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1_pic.o: two_file_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1b_pic.o: two_file_test_1b.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_2_pic.o: two_file_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2.so: two_file_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable.o: gcctestdir/ld two_file_test_1.o two_file_test_1b.o two_file_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -r -o $@ two_file_test_1.o two_file_test_1b.o two_file_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1_pie.o: two_file_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1b_pie.o: two_file_test_1b.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_2_pie.o: two_file_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_main_pie.o: two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pie_test: two_file_test_1_pie.o two_file_test_1b_pie.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2_pie.o two_file_test_main_pie.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -pie two_file_test_1_pie.o two_file_test_1b_pie.o two_file_test_2_pie.o two_file_test_main_pie.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared.dbg: two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -w $< >$@ 2>/dev/null +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic.so: two_file_test_1.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o -Wl,-z,notext +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic.so: two_file_test_2.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_nonpic.so: two_file_test_1.o two_file_test_1b.o two_file_test_2.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o two_file_test_2.o -Wl,-z,notext +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_mixed.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o -Wl,-z,notext +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_mixed_1.so: two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so -Wl,-z,notext +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_pie_test: two_file_test_1.o two_file_test_1b_pie.o \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main_pie.o two_file_shared_2.so gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,-R,. -pie two_file_test_1.o two_file_test_1b_pie.o two_file_test_main_pie.o two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_strip_test: two_file_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_STRIP) -o two_file_strip_test two_file_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_strip.so: two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_STRIP) -S -o two_file_shared_strip.so two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_2_pic.o: common_test_2.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_2.so: common_test_2_pic.o common_test_3.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -shared common_test_2_pic.o common_test_3.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_3_pic.o: common_test_3.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_3.so: common_test_3_pic.o ver_test_2.script gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -shared common_test_3_pic.o -Wl,--version-script,$(srcdir)/ver_test_2.script +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_1_pic.o: exception_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_2_pic.o: exception_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1.so: exception_test_1_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2.so: exception_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared exception_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o exception_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_file1.o: weak_undef_file1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_file2.o: weak_undef_file2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_lib.so: weak_undef_file1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/weak_undef_lib.so: weak_undef_file2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_file1_nonpic.o: weak_undef_file1.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_file2_nonpic.o: weak_undef_file2.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_lib_nonpic.so: weak_undef_file1_nonpic.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1_nonpic.o -Wl,-z,notext +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/weak_undef_lib_nonpic.so: weak_undef_file2_nonpic.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2_nonpic.o -Wl,-z,notext +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_1_pic.o: weak_alias_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_1.so: weak_alias_test_1_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_1_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_2_pic.o: weak_alias_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_2.so: weak_alias_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_3.o: weak_alias_test_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_4_pic.o: weak_alias_test_4.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_4.so: weak_alias_test_4_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_4_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_5_pic.o: weak_alias_test_5.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_5.so: weak_alias_test_5_pic.o $(srcdir)/weak_alias_test.script gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_5_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--version-script,$(srcdir)/weak_alias_test.script +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_plt_main_pic.o: weak_plt_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_plt: weak_plt_main_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ weak_plt_main_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_plt_shared_pic.o: weak_plt_shared.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_plt_shared.so: weak_plt_shared_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_plt_shared_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_1_pic.o: copy_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_1.so: gcctestdir/ld copy_test_1_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared copy_test_1_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_2_pic.o: copy_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_2.so: gcctestdir/ld copy_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared copy_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_pic.o: tls_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_file2_pic.o: tls_test_file2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_c_pic.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o -Wl,-z,defs +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_shared2.so: tls_test_file2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_pic_ie.o: tls_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_file2_pic_ie.o: tls_test_file2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_c_pic_ie.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(COMPILE) -c -fpic -ftls-model=initial-exec $(TLS_TEST_C_CFLAGS) -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_ie_shared.so: tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_c.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(COMPILE) -c $(TLS_TEST_C_CFLAGS) -o $@ $< + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_main_pie.o: tls_test_main.cc tls_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_pie.o: tls_test.cc tls_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_file2_pie.o: tls_test_file2.cc tls_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_c_pie.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pie_test: tls_test_main_pie.o tls_test_pie.o tls_test_file2_pie.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c_pie.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -pie tls_test_main_pie.o tls_test_pie.o tls_test_file2_pie.o tls_test_c_pie.o -lpthread + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pie_pic_test: tls_test_main_pie.o tls_test_pic.o tls_test_file2_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -pie tls_test_main_pie.o tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o -lpthread + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_gnu2.o: tls_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_file2_gnu2.o: tls_test_file2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_c_gnu2.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(COMPILE) -c -fpic -mtls-dialect=gnu2 $(TLS_TEST_C_CFLAGS) -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_gnu2_shared2.so: tls_test_file2_gnu2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_gnu2.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_gnu2_shared.so: tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o tls_test_c.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test.o tls_test_file2.o tls_test_c.o -Wl,-z,notext +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_define.h: +@GCC_TRUE@@NATIVE_LINKER_TRUE@ (for i in `seq 1 70000`; do \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo "int var_$$i __attribute__((section(\"section_$$i\"))) = $$i;"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ done) > $@.tmp +@GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f $@.tmp $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_check.h: +@GCC_TRUE@@NATIVE_LINKER_TRUE@ (for i in `seq 1 1000 70000`; do \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo "assert(var_$$i == $$i);"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ done) > $@.tmp +@GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f $@.tmp $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_r_test.o: many_sections_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -r -o $@ many_sections_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_r_test: many_sections_r_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ many_sections_r_test.o $(LIBS) +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg.o: debug_msg.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation1.o: odr_violation1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc +# Compile with different optimization flags to check that rearranged +# instructions don't cause a false positive. +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation2.o: odr_violation2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O2 -g -c -w -o $@ $(srcdir)/odr_violation2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of debug_msg should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@missing_key_func.o: missing_key_func.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -o $@ $(srcdir)/missing_key_func.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@missing_key_func.err: missing_key_func.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -o missing_key_func missing_key_func.o "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -o missing_key_func missing_key_func.o 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of missing_key_func should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@debug_msg_cdebug.o: debug_msg.cc gcctestdir/as +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/debug_msg.cc +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@odr_violation1_cdebug.o: odr_violation1.cc gcctestdir/as +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/odr_violation1.cc +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@odr_violation2_cdebug.o: odr_violation2.cc gcctestdir/as +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O2 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/odr_violation2.cc +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@debug_msg_cdebug.err: debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o gcctestdir/ld +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_cdebug debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o "2>$@" +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_cdebug debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o 2>$@; \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of debug_msg_cdebug should have failed"; \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg.so: debug_msg.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation1.so: odr_violation1.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation2.so: odr_violation2.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O2 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of debug_msg_so should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg_ndebug.so: debug_msg.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation1_ndebug.so: odr_violation1.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation2_ndebug.so: odr_violation2.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O2 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so -shared-libgcc -Bdynamic -lstdc++ "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so -shared-libgcc -Bdynamic -lstdc++ 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of debug_msg_ndebug should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@undef_symbol.o: undef_symbol.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -fPIC $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@undef_symbol.so: undef_symbol.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared undef_symbol.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of undef_symbol_test should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_o_specialfile: flagstest_debug.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< 2>&1 | cat > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ chmod a+x $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -s $@ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@flagstest_compress_debug_sections: flagstest_debug.o gcctestdir/ld +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ test -s $@ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< -Wl,--compress-debug-sections=zlib 2>&1 | cat > $@ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ chmod a+x $@ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ test -s $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_o_ttext_1: flagstest_debug.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,-Ttext,0x400000 -Wl,-Tdata,0x800000 +@GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_o_ttext_2: flagstest_debug.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,-Ttext,0x400010 -Wl,-Tdata,0x800010 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_2.script -Wl,-R,. ver_test_2.o ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_1.o: ver_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2.o: ver_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_3.o: ver_test_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_4.o: ver_test_4.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_1.syms: ver_test_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2.syms: ver_test_2 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_4.syms: ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null + +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_5.so: ver_test_5.o $(srcdir)/ver_test_5.script ver_test_4.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_5.script ver_test_5.o ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_5.o: ver_test_5.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_5.syms: ver_test_5.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null + +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_7.so: ver_test_4.o $(srcdir)/ver_test_4.script ver_test_7.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o ver_test_7.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_7.o: ver_test_7.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_7.syms: ver_test_7.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_2.so: two_file_test_2_pic.o $(srcdir)/ver_test_8.script gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_8.script two_file_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9.so: ver_test_9.o ver_test_4.so ver_test_5.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-R,. ver_test_9.o ver_test_5.so ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9.o: ver_test_9.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_10.syms: ver_test_10.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_10.so: gcctestdir/ld ver_test_2.o ver_test_10.script +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_10.script ver_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11.a: ver_test_1.o ver_test_2.o ver_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_12.o: gcctestdir/ld ver_test_1.o ver_test_2.o ver_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -r -o $@ ver_test_1.o ver_test_2.o ver_test_4.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1.so: gcctestdir/ld protected_1_pic.o protected_2_pic.o protected_3_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared protected_1_pic.o protected_2_pic.o protected_3_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_pic.o: protected_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_pic.o: protected_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_3_pic.o: protected_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_4_pic.o: protected_4.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_3.err: protected_4_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -shared -o protected_4.so protected_4_pic.o "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -shared -o protected_4.so protected_4_pic.o 2>$@; then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of protected_4.so should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test.so: gcctestdir/ld relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_pic.o: relro_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test.stdout: relro_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SlW relro_test.so > relro_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_now_test.so: gcctestdir/ld relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -Wl,-z,now relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_strip_test.so: relro_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_STRIP) -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test.so: gcctestdir/ld relro_script_test.t relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -Wl,-T,$(srcdir)/relro_script_test.t relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_2.o: justsyms_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_2r.o: justsyms_2.o gcctestdir/ld $(srcdir)/justsyms.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -o $@ -r -T $(srcdir)/justsyms.t justsyms_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_lib.o: justsyms_lib.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_lib: justsyms_lib.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -o $@ -Ttext=0x1000200 -Tdata=0x2000000 -e exported_func justsyms_lib.o +# Copy the file to the build directory to avoid worrying about the +# full pathname in the generated symbols. +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary.txt: $(srcdir)/binary.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LN_S) $< $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_matching_def.so: ver_matching_def_pic.o $(srcdir)/version_script.map gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -O0 -Bgcctestdir/ -shared ver_matching_def_pic.o -Wl,--version-script=$(srcdir)/version_script.map +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_matching_def_pic.o: ver_matching_def.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_matching_test.stdout: ver_matching_def.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_OBJDUMP) -T ver_matching_def.so | $(TEST_CXXFILT) > ver_matching_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_3: basic_test.o gcctestdir/ld script_test_3.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_3.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_3.stdout: script_test_3 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SlW script_test_3 > script_test_3.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_4: basic_test.o gcctestdir/ld $(srcdir)/script_test_4.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_4.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_4.stdout: script_test_4 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SlW script_test_4 > script_test_4.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_5: script_test_5.o gcctestdir/ld $(srcdir)/script_test_5.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ script_test_5.o -Wl,-T,$(srcdir)/script_test_5.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_5.stdout: script_test_5 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SW script_test_5 > script_test_5.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_6: basic_test.o gcctestdir/ld $(srcdir)/script_test_6.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_6.t \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,-Ttext=0x10001000 -Wl,-Tdata=0x10200000 -Wl,-Tbss=0x10400000 +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_6.stdout: script_test_6 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SlW script_test_6 > script_test_6.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_7: basic_test.o gcctestdir/ld $(srcdir)/script_test_7.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_7.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_7.stdout: script_test_7 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SlW script_test_7 > script_test_7.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_8: basic_test.o gcctestdir/ld $(srcdir)/script_test_7.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_7.t \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,-Ttext=0x20001000 -Wl,-Tdata=0x20200000 -Wl,-Tbss=0x20400000 +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_8.stdout: script_test_8 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SlW script_test_8 > script_test_8.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_9.o: script_test_9.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_9: gcctestdir/ld $(srcdir)/script_test_9.t script_test_9.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ script_test_9.o -Wl,-T,$(srcdir)/script_test_9.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_9.stdout: script_test_9 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -lW script_test_9 > script_test_9.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_11: gcctestdir/ld script_test_11_r.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ script_test_11_r.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_11_r.o: gcctestdir/ld $(srcdir)/script_test_11.t script_test_11.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -r -o $@ -T $(srcdir)/script_test_11.t script_test_11.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_11.o: script_test_11.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list: basic_test.o gcctestdir/ld $(srcdir)/dynamic_list.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--dynamic-list $(srcdir)/dynamic_list.t \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--dynamic-list-data \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--dynamic-list-cpp-new \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--dynamic-list-cpp-typeinfo +@GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list.stdout: dynamic_list +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -W --dyn-syms dynamic_list > dynamic_list.stdout + +@GCC_TRUE@@NATIVE_LINKER_TRUE@libthin1.a: thin_archive_test_1.o alt/thin_archive_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/libthin2.a: thin_archive_test_3.o alt/thin_archive_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@libthin3.a: thin_archive_test_1.o alt/thin_archive_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/libthin4.a: alt/thin_archive_test_2.o thin_archive_test_3.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@libthinall.a: libthin3.a alt/libthin4.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/thin_archive_test_2.o: thin_archive_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/thin_archive_test_4.o: thin_archive_test_4.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_1: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_1.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_1.err: plugin_test_1 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_1.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_2: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,-R,.,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so 2>plugin_test_2.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_2.err: plugin_test_2 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_2.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_3: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--export-dynamic -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_3.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_3.err: plugin_test_3 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_3.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_4: two_file_test_main.o plugin_test_4.a gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o -Wl,--whole-archive,plugin_test_4.a,--no-whole-archive 2>plugin_test_4.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_4.err: plugin_test_4 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_4.err + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_4.a: two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_AR) cr $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_5: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms unused.syms gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv",--gc-sections two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms unused.syms +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_6: plugin_common_test_1.syms plugin_common_test_2.syms gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so" plugin_common_test_1.syms plugin_common_test_2.syms 2>plugin_test_6.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_6.err: plugin_test_6 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_6.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7: plugin_test_7_1.o plugin_test_7_1.syms plugin_test_7_2.o gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--gc-sections,--print-gc-sections plugin_test_7_1.syms plugin_test_7_2.o 2>plugin_test_7.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7.syms: plugin_test_7 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7_1.o: plugin_test_7_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -DLTO -O0 -c -ffunction-sections -fdata-sections -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7_1_orig.o: plugin_test_7_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7_1.syms: plugin_test_7_1_orig.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7_2.o: plugin_test_7_2.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7.err: plugin_test_7 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_8.o: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.o ../ld-new plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ ../ld-new -r -o $@ --no-demangle --plugin "./plugin_test.so" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_8: plugin_test_8.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle plugin_test_8.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_9.err: two_file_test_main.o two_file_test_1c.syms two_file_test_2.syms gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -o plugin_test_9 -Wl,--no-demangle,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1c.syms two_file_test_2.syms "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -o plugin_test_9 -Wl,--no-demangle,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1c.syms two_file_test_2.syms 2>$@; then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ echo 1>&2 "Link of plugin_test_9 should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ fi +# Make a .syms file that claims to define the symbol _Z4t16av. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_1c.syms: two_file_test_1.syms two_file_test_1c.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ cp two_file_test_1.syms $@.tmp +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ grep "_Z4t16av" two_file_test_1b.syms >> $@.tmp +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ mv -f $@.tmp $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_1c.o: two_file_test_1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ cp two_file_test_1.o $@ + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test.so: plugin_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -shared plugin_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test.o: plugin_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -fpic -o $@ $< + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_main.syms: two_file_test_main.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_1.syms: two_file_test_1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_1b.syms: two_file_test_1b.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_2.syms: two_file_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_common_test_1.syms: plugin_common_test_1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_common_test_2.syms: plugin_common_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@empty.syms: +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @echo "" >$@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @echo "Symbol table" >>$@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@plugin_test_tls: two_file_test_tls.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2_tls.syms gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_tls.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2_tls.syms 2>plugin_test_tls.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@plugin_test_tls.err: plugin_test_tls +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@ @touch plugin_test_tls.err + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@two_file_test_2_tls.syms: two_file_test_2_tls.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@unused.syms: unused.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @echo " 1: 00000000 4 FUNC GLOBAL DEFAULT 1 UNUSED" >>$@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@unused.o: unused.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@unused.c: +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @cp /dev/null $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_final_layout.o: plugin_final_layout.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_final_layout: plugin_final_layout.o plugin_section_order.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_section_order.so" plugin_final_layout.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_final_layout.stdout: plugin_final_layout +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_NM) -n --synthetic plugin_final_layout > plugin_final_layout.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_final_layout_readelf.stdout: plugin_final_layout +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -Wl plugin_final_layout > plugin_final_layout_readelf.stdout + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_section_order.so: plugin_section_order.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -shared plugin_section_order.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_section_order.o: plugin_section_order.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test.syms: exclude_libs_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@libexclude_libs_test_1.a: exclude_libs_test_1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@libexclude_libs_test_2.a: exclude_libs_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/libexclude_libs_test_3.a: exclude_libs_test_3.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@local_labels_test.o: ver_test_6.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -g -c -Wa,-L -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@local_labels_test: local_labels_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ local_labels_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_test.syms: discard_locals_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +# '-Wa,-L' is required to preserve the local label used for testing. +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_test.o: discard_locals_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -Wa,-L -o $@ $< + +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_relocatable_test1.syms: discard_locals_relocatable_test1.out +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_relocatable_test.o: discard_locals_relocatable_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -Wa,-L -fPIC -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_relocatable_test1.out: discard_locals_relocatable_test.o ../ld-new +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ../ld-new --discard-locals -relocatable -o $@ $< + +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_relocatable_test2.syms: discard_locals_relocatable_test2.out +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_relocatable_test2.out: discard_locals_relocatable_test.o ../ld-new +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ../ld-new --discard-all -relocatable -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@libhidden.so: hidden_test_1.c gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -Bgcctestdir/ -g -shared -fPIC -w -o $@ $(srcdir)/hidden_test_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@hidden_test: hidden_test_main.o libhidden.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -Wl,-R,. hidden_test_main.o libhidden.so 2>hidden_test.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@hidden_test.err: hidden_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @touch hidden_test.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@retain_symbols_file_test.so: basic_pic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 'main' > retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 't1' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo '_ZN4t16bC1Ev' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo '_ZNK4t20a3getEv' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo '_Z3t18v' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo '__tcf_0' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-retain-symbols-file,retain_symbols_file_test.in basic_pic_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@retain_symbols_file_test.stdout: retain_symbols_file_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C retain_symbols_file_test.so > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@permission_test: basic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ umask 022; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ touch $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ chmod 600 $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_lib.o: searched_file_test_lib.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/searched_file_test_lib.a: searched_file_test_lib.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +# We invoke the linker directly since gcc may include additional objects that +# uses symbol versioning. +@GCC_TRUE@@NATIVE_LINKER_TRUE@libno_version_test.so: no_version_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -shared -o $@ no_version_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@no_version_test.o: no_version_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -o $@ -c -fPIC $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@no_version_test.stdout: libno_version_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_OBJDUMP) -h $< > $@ + +# Test STT_GNU_IFUNC symbols. + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod1.o: ifuncmod1.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod1.so: ifuncmod1.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -shared ifuncmod1.o + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncdep1.o: ifuncmod1.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -o $@ $< + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1pic.o: ifuncmain1.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1pie.o: ifuncmain1.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIE -o $@ $< +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1picstatic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -static ifuncmain1pic.o ifuncmod1.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1pic: ifuncmain1pic.o ifuncmod1.so gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.so -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vispic.o: ifuncmain1vis.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vispic: ifuncmain1vispic.o ifuncmod1.so gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.so -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1staticpic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1pie: ifuncmain1pie.o ifuncmod1.so gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -pie ifuncmain1pie.o ifuncmod1.so -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vispie.o: ifuncmain1vis.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIE -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vispie: ifuncmain1vispie.o ifuncmod1.so gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -pie ifuncmain1vispie.o ifuncmod1.so -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1staticpie: ifuncmain1pie.o ifuncmod1.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -pie ifuncmain1pie.o ifuncmod1.o + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2pic.o: ifuncmain2.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncdep2pic.o: ifuncdep2.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2picstatic: ifuncmain2pic.o ifuncdep2pic.o gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -static ifuncmain2pic.o ifuncdep2pic.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain2pic: ifuncmain2pic.o ifuncdep2pic.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ ifuncmain2pic.o ifuncdep2pic.o + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod3.o: ifuncmod3.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod3.so: ifuncmod3.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -shared ifuncmod3.o + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4pic.o: ifuncmain4.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain4picstatic: ifuncmain4pic.o gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -static ifuncmain4pic.o + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5pic.o: ifuncmain5.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5pie.o: ifuncmain5.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIE -o $@ $< + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod5.o: ifuncmod5.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod5.so: ifuncmod5.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -shared ifuncmod5.o + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncdep5.o: ifuncmod5.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -o $@ $< +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5picstatic: ifuncmain5pic.o ifuncmod5.o gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -static ifuncmain5pic.o ifuncmod5.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5pic: ifuncmain5pic.o ifuncmod5.so gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ ifuncmain5pic.o ifuncmod5.so -Wl,-R,. +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5staticpic: ifuncmain5pic.o ifuncmod5.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ ifuncmain5pic.o ifuncmod5.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain5pie: ifuncmain5pie.o ifuncmod5.so gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -pie ifuncmain5pie.o ifuncmod5.so -Wl,-R,. + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain6pie.o: ifuncmain6pie.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIE -o $@ $< + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod6.o: ifuncmod6.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod6.so: ifuncmod6.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -shared ifuncmod6.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain6pie: ifuncmain6pie.o ifuncmod6.so gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -pie ifuncmain6pie.o ifuncmod6.so -Wl,-R,. + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7pic.o: ifuncmain7.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< + +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7pie.o: ifuncmain7.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIE -o $@ $< +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7picstatic: ifuncmain7pic.o gcctestdir/ld +@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -static ifuncmain7pic.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7pic: ifuncmain7pic.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ ifuncmain7pic.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain7pie: ifuncmain7pie.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -pie ifuncmain7pie.o +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncvar1_pic.o: ifuncvar1.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncvar2_pic.o: ifuncvar2.c +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIC -o $@ $< +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncvar.so: ifuncvar1_pic.o ifuncvar2_pic.o gcctestdir/ld +@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -shared ifuncvar1_pic.o ifuncvar2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@strong_ref_weak_def_2.o: strong_ref_weak_def_2.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -o $@ -c -fPIC $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@strong_ref_weak_def_2.so: strong_ref_weak_def_2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -shared -o $@ strong_ref_weak_def_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@strong_ref_weak_def_1.o: strong_ref_weak_def_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -o $@ -c -fPIC $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@strong_ref_weak_def_1.so: strong_ref_weak_def_1.o strong_ref_weak_def_2.so \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -shared -o $@ strong_ref_weak_def_1.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@strong_ref_weak_def.stdout: strong_ref_weak_def_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -sWD $< > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@dyn_weak_ref_2.o: dyn_weak_ref_2.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -o $@ -c -fPIC $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@dyn_weak_ref_2.so: dyn_weak_ref_2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -shared -o $@ dyn_weak_ref_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@dyn_weak_ref_1.o: dyn_weak_ref_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -o $@ -c -fPIC $< +# We intentionally put dyn_weak_ref_2.so in front of dyn_weak_ref_1.o +# so that the weak ref there goes to gold's symbol table first. +@GCC_TRUE@@NATIVE_LINKER_TRUE@dyn_weak_ref_1.so: dyn_weak_ref_1.o dyn_weak_ref_2.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -shared -o $@ dyn_weak_ref_2.so dyn_weak_ref_1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@dyn_weak_ref.stdout: dyn_weak_ref_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -sWD $< > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@start_lib_test: start_lib_test_main.o libstart_lib_test.a start_lib_test_2.o start_lib_test_3.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -o $@ start_lib_test_main.o -L. -lstart_lib_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--start-lib start_lib_test_2.o start_lib_test_3.o -Wl,--end-lib +@GCC_TRUE@@NATIVE_LINKER_TRUE@libstart_lib_test.a: start_lib_test_1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@memory_test.o: memory_test.s +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -o $@ -c $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@memory_test: memory_test.o gcctestdir/ld $(srcdir)/memory_test.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -nostartfiles -nostdlib -z max-page-size=0x1000 -z common-page-size=0x1000 -Wl,-T,$(srcdir)/memory_test.t -o $@ memory_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@memory_test.stdout: memory_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -lWS $< > $@ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test.o: gdb_index_test.cc +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -gno-pubnames -c -o $@ $< +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_1: gdb_index_test.o gcctestdir/ld +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $< +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_1.stdout: gdb_index_test_1 +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) --debug-dump=gdb_index $< > $@ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_cdebug.o: gdb_index_test.cc +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -o $@ $< +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_2: gdb_index_test_cdebug.o gcctestdir/ld +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $< +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_2.stdout: gdb_index_test_2 +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) --debug-dump=gdb_index $< > $@ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_3.o: gdb_index_test_3.c +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -O0 -g -c -o $@ $< +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_3: gdb_index_test_3.o gcctestdir/ld +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -Wl,--gdb-index,--fatal-warnings $< +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_3.stdout: gdb_index_test_3 +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) --debug-dump=gdb_index $< > $@ +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_pub.o: gdb_index_test.cc +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -gpubnames -c -o $@ $< +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_4: gdb_index_test_pub.o gcctestdir/ld +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $< +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@gdb_index_test_4.stdout: gdb_index_test_4 +@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) --debug-dump=gdb_index $< > $@ + +# End-to-end incremental linking tests. +# Incremental linking is currently supported only on the x86_64 target. + +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1_v1_ndebug.o: two_file_test_1_v1.cc +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1_ndebug.o: two_file_test_1.cc +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1b_ndebug.o: two_file_test_1b.cc +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_2_ndebug.o: two_file_test_2.cc +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_main_ndebug.o: two_file_test_main.cc +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -c -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_2: two_file_test_1_v1_ndebug.o two_file_test_1_ndebug.o two_file_test_1b_ndebug.o \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2_ndebug.o two_file_test_main_ndebug.o gcctestdir/ld +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1_v1_ndebug.o two_file_test_tmp_2.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1_ndebug.o two_file_test_tmp_2.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_3: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.o two_file_test_main.o gcctestdir/ld +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b_v1.o two_file_test_tmp_3.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b.o two_file_test_tmp_3.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_4: two_file_test_1.o two_file_test_1b.o two_file_test_2_v1.o \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.o two_file_test_main.o gcctestdir/ld +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_2_v1.o two_file_test_tmp_4.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f incremental_test_4 incremental_test_4.base +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_2.o two_file_test_tmp_4.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update,--incremental-base=incremental_test_4.base -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_5: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.o two_file_test_main.o gcctestdir/ld +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b_v1.o two_file_test_tmp_5.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_main.o two_file_test_5.a +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b.o two_file_test_tmp_5.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ two_file_test_main.o two_file_test_5.a +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_6: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \ +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.o two_file_test_main.o gcctestdir/ld +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b.o two_file_test_tmp_6.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ two_file_test_main.o two_file_test_6.a +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b_v1.o two_file_test_tmp_6.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ two_file_test_main.o -Wl,--incremental-unchanged two_file_test_6.a -Wl,--incremental-unknown +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_copy_test: copy_test_v1.o copy_test.o copy_test_1.so copy_test_2.so +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f copy_test_v1.o copy_test_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f copy_test.o copy_test_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_common_test_1: common_test_1_v1.o common_test_1_v2.o gcctestdir/ld +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f common_test_1_v1.o common_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ common_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f common_test_1_v2.o common_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ common_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_comdat_test_1: incr_comdat_test_1.o incr_comdat_test_2_v1.o incr_comdat_test_2_v2.o incr_comdat_test_2_v3.o gcctestdir/ld +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f incr_comdat_test_2_v1.o incr_comdat_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f incr_comdat_test_2_v2.o incr_comdat_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1 +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f incr_comdat_test_2_v3.o incr_comdat_test_1_tmp.o +@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o +@NATIVE_OR_CROSS_LINKER_TRUE@script_test_10.o: script_test_10.s +@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@NATIVE_OR_CROSS_LINKER_TRUE@script_test_10: $(srcdir)/script_test_10.t script_test_10.o gcctestdir/ld +@NATIVE_OR_CROSS_LINKER_TRUE@ gcctestdir/ld -o $@ script_test_10.o -T $(srcdir)/script_test_10.t +@NATIVE_OR_CROSS_LINKER_TRUE@script_test_10.stdout: script_test_10 +@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_READELF) -SW script_test_10 > $@ +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_1.o: split_i386_1.s +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_2.o: split_i386_2.s +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_3.o: split_i386_3.s +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_4.o: split_i386_4.s +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_n.o: split_i386_n.s +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_1: split_i386_1.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_1.o split_i386_n.o +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_1.stdout: split_i386_1 +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_2: split_i386_2.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_2.o split_i386_n.o +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_2.stdout: split_i386_2 +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_3.stdout: split_i386_3.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o split_i386_3 split_i386_3.o split_i386_n.o > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_4: split_i386_4.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_4.o split_i386_n.o +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_4.stdout: split_i386_4 +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_i386_r.stdout: split_i386_1.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -r split_i386_1.o split_i386_n.o -o split_i386_r > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_1.o: split_x86_64_1.s +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_2.o: split_x86_64_2.s +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_3.o: split_x86_64_3.s +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_4.o: split_x86_64_4.s +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_n.o: split_x86_64_n.s +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_1: split_x86_64_1.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_1.o split_x86_64_n.o +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_1.stdout: split_x86_64_1 +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_2: split_x86_64_2.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_2.o split_x86_64_n.o +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_2.stdout: split_x86_64_2 +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_3.stdout: split_x86_64_3.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o split_x86_64_3 split_x86_64_3.o split_x86_64_n.o > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_4: split_x86_64_4.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_4.o split_x86_64_n.o +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_4.stdout: split_x86_64_4 +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_x86_64_r.stdout: split_x86_64_1.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -r split_x86_64_1.o split_x86_64_n.o -o split_x86_64_r > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_abs_lib.o: arm_abs_lib.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv7-a -o $@ $< +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@libarm_abs.so: arm_abs_lib.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -shared -o $@ arm_abs_lib.o +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_abs_global.o: arm_abs_global.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv7-a -o $@ $< +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_abs_global: arm_abs_global.o libarm_abs.so ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ arm_abs_global.o -L. -larm_abs +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_abs_global.stdout: arm_abs_global +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_READELF) -r $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_bl_in_range.stdout: arm_bl_in_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_bl_in_range: arm_bl_in_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -T $(srcdir)/arm_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_bl_in_range.o: arm_bl_in_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_bl_out_of_range.stdout: arm_bl_out_of_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -S $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_bl_out_of_range: arm_bl_out_of_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -T $(srcdir)/arm_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_bl_out_of_range.o: arm_bl_out_of_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_in_range.stdout: thumb_bl_in_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_in_range: thumb_bl_in_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_in_range.o: thumb_bl_in_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv5te $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_out_of_range.stdout: thumb_bl_out_of_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_out_of_range: thumb_bl_out_of_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_out_of_range.o: thumb_bl_out_of_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv5te $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_bl_in_range.stdout: thumb2_bl_in_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_bl_in_range: thumb2_bl_in_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_bl_in_range.o: thumb_bl_in_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv7-a $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_bl_out_of_range.stdout: thumb2_bl_out_of_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_bl_out_of_range: thumb2_bl_out_of_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_bl_out_of_range.o: thumb_bl_out_of_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv7-a $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_blx_in_range.stdout: thumb_blx_in_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_blx_in_range: thumb_blx_in_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_blx_in_range.o: thumb_blx_in_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv5te $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_blx_out_of_range.stdout: thumb_blx_out_of_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_blx_out_of_range: thumb_blx_out_of_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_blx_out_of_range.o: thumb_blx_out_of_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv5te $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_blx_in_range.stdout: thumb2_blx_in_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_blx_in_range: thumb2_blx_in_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_blx_in_range.o: thumb_blx_in_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv7-a $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_blx_out_of_range.stdout: thumb2_blx_out_of_range +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_blx_out_of_range: thumb2_blx_out_of_range.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb2_blx_out_of_range.o: thumb_blx_out_of_range.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv7-a $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_out_of_range_local.stdout: thumb_bl_out_of_range_local +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_out_of_range_local: thumb_bl_out_of_range_local.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@thumb_bl_out_of_range_local.o: thumb_bl_out_of_range_local.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ -march=armv5te $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_thm_jump11.stdout: arm_thm_jump11 +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_thm_jump11: arm_thm_jump11.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -T $(srcdir)/arm_thm_jump11.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_thm_jump11.o: arm_thm_jump11.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_thm_jump8.stdout: arm_thm_jump8 +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_thm_jump8: arm_thm_jump8.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -T $(srcdir)/arm_thm_jump8.t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_thm_jump8.o: arm_thm_jump8.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_v4bx.stdout: arm_fix_v4bx +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_v4bx: arm_fix_v4bx.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 --fix-v4bx -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_v4bx.o: arm_fix_v4bx.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_v4bx_interworking.stdout: arm_fix_v4bx_interworking +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_v4bx_interworking: arm_fix_v4bx.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 --fix-v4bx-interworking -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_no_fix_v4bx.stdout: arm_no_fix_v4bx +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_no_fix_v4bx: arm_fix_v4bx.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_6.stdout: arm_attr_merge_6 +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_READELF) -A $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_6: arm_attr_merge_6a.o arm_attr_merge_6b.o +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ arm_attr_merge_6a.o arm_attr_merge_6b.o + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_6a.o: arm_attr_merge_6a.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_6b.o: arm_attr_merge_6b.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_6r.stdout: arm_attr_merge_6r +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_READELF) -A $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_6r: arm_attr_merge_6b.o arm_attr_merge_6a.o +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ arm_attr_merge_6b.o arm_attr_merge_6a.o + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_7.stdout: arm_attr_merge_7 +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_READELF) -A $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_7: arm_attr_merge_7a.o arm_attr_merge_7b.o +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ arm_attr_merge_7a.o arm_attr_merge_7b.o + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_7a.o: arm_attr_merge_7a.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_attr_merge_7b.o: arm_attr_merge_7b.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v6z.stdout: arm_fix_1176_default_v6z +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.foo $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v6z: arm_fix_1176_default_v6z.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start=.foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v6z.o: arm_fix_1176.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv6z -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_on_v6z.stdout: arm_fix_1176_on_v6z +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.foo $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_on_v6z: arm_fix_1176_on_v6z.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start=.foo=0x2001014 --fix-arm1176 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_on_v6z.o: arm_fix_1176.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv6z -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_off_v6z.stdout: arm_fix_1176_off_v6z +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.foo $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_off_v6z: arm_fix_1176_off_v6z.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start=.foo=0x2001014 --no-fix-arm1176 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_off_v6z.o: arm_fix_1176.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv6z -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v5te.stdout: arm_fix_1176_default_v5te +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.foo $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v5te: arm_fix_1176_default_v5te.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start=.foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v5te.o: arm_fix_1176.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv5te -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v7a.stdout: arm_fix_1176_default_v7a +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.foo $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v7a: arm_fix_1176_default_v7a.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start=.foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_v7a.o: arm_fix_1176.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv7-a -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_1156t2f_s.stdout: arm_fix_1176_default_1156t2f_s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.foo $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_1156t2f_s: arm_fix_1176_default_1156t2f_s.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start=.foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_fix_1176_default_1156t2f_s.o: arm_fix_1176.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -mcpu=arm1156t2f-s -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_b_cond.stdout: arm_cortex_a8_b_cond +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_b_cond: arm_cortex_a8_b_cond.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_b_cond.o: arm_cortex_a8_b_cond.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_b.stdout: arm_cortex_a8_b +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_b: arm_cortex_a8_b.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --fix-cortex-a8 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_b.o: arm_cortex_a8_b.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_bl.stdout: arm_cortex_a8_bl +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_bl: arm_cortex_a8_bl.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_bl.o: arm_cortex_a8_bl.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_blx.stdout: arm_cortex_a8_blx +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_blx: arm_cortex_a8_blx.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_blx.o: arm_cortex_a8_blx.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_local.stdout: arm_cortex_a8_local +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_local: arm_cortex_a8_local.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_local.o: arm_cortex_a8_local.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_local_reloc.stdout: arm_cortex_a8_local_reloc +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D -j.text $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_local_reloc: arm_cortex_a8_local_reloc.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_local_reloc.o: arm_cortex_a8_local_reloc.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_exidx_test.stdout: arm_exidx_test.so +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_READELF) -Sr $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_exidx_test.so: arm_exidx_test.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -shared -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_exidx_test.o: arm_exidx_test.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@pr12826.stdout: pr12826.so +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_READELF) -A $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@pr12826.so: pr12826_1.o pr12826_2.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -shared -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@pr12826_1.o: pr12826_1.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@pr12826_2.o: pr12826_2.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_unaligned_reloc.stdout: arm_unaligned_reloc +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_unaligned_reloc_r.stdout: arm_unaligned_reloc_r +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -Dr $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_unaligned_reloc: arm_unaligned_reloc.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_unaligned_reloc_r: arm_unaligned_reloc.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -r -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_unaligned_reloc.o: arm_unaligned_reloc.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm.stdout: arm_farcall_arm_arm +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm: arm_farcall_arm_arm.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001020 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm.o: arm_farcall_arm_arm.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb.stdout: arm_farcall_arm_thumb +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb: arm_farcall_arm_thumb.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb.o: arm_farcall_arm_thumb.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb_5t.stdout: arm_farcall_arm_thumb_5t +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb_5t: arm_farcall_arm_thumb_5t.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb_5t.o: arm_farcall_arm_thumb.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv5t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb.stdout: arm_farcall_thumb_thumb +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb: arm_farcall_thumb_thumb.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb.o: arm_farcall_thumb_thumb.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv4t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_5t.stdout: arm_farcall_thumb_thumb_5t +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_5t: arm_farcall_thumb_thumb_5t.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_5t.o: arm_farcall_thumb_thumb.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv5t -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_7m.stdout: arm_farcall_thumb_thumb_7m +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_7m: arm_farcall_thumb_thumb_7m.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_7m.o: arm_farcall_thumb_thumb.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv7-m -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_6m.stdout: arm_farcall_thumb_thumb_6m +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_6m: arm_farcall_thumb_thumb_6m.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_6m.o: arm_farcall_thumb_thumb.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv6-m -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm.stdout: arm_farcall_thumb_arm +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm: arm_farcall_thumb_arm.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm.o: arm_farcall_thumb_arm.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm_5t.stdout: arm_farcall_thumb_arm_5t +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@ + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm_5t: arm_farcall_thumb_arm_5t.o ../ld-new +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $< + +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm_5t.o: arm_farcall_thumb_arm.s +@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv5t -o $@ $< + +# Tests for the dwp tool. +# We don't want to rely yet on GCC support for -gsplit-dwarf, +# so we use (for now) test cases in x86 assembly language, +# compiled from the dwp_test_*.cc sources. + +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_main.o: dwp_test_main.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_1.o: dwp_test_1.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_1b.o: dwp_test_1b.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_2.o: dwp_test_2.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< + +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_main.dwo: dwp_test_main.o +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_OBJCOPY) --extract-dwo $< $@ +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_1.dwo: dwp_test_1.o +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_OBJCOPY) --extract-dwo $< $@ +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_1b.dwo: dwp_test_1b.o +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_OBJCOPY) --extract-dwo $< $@ +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_2.dwo: dwp_test_2.o +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_OBJCOPY) --extract-dwo $< $@ +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_1.stdout: dwp_test_1.dwp +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_READELF) -wi $< > $@ +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_1.dwp: ../dwp dwp_test_main.dwo dwp_test_1.dwo dwp_test_1b.dwo dwp_test_2.dwo +@DEFAULT_TARGET_X86_64_TRUE@ ../dwp -o $@ dwp_test_main.dwo dwp_test_1.dwo dwp_test_1b.dwo dwp_test_2.dwo +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_2.stdout: dwp_test_2.dwp +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_READELF) -wi $< > $@ +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_2.dwp: ../dwp dwp_test_2a.dwp dwp_test_2b.dwp +@DEFAULT_TARGET_X86_64_TRUE@ ../dwp -o $@ dwp_test_2a.dwp dwp_test_2b.dwp +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_2a.dwp: ../dwp dwp_test_main.dwo dwp_test_1.dwo +@DEFAULT_TARGET_X86_64_TRUE@ ../dwp -o $@ dwp_test_main.dwo dwp_test_1.dwo +@DEFAULT_TARGET_X86_64_TRUE@dwp_test_2b.dwp: ../dwp dwp_test_1b.dwo dwp_test_2.dwo +@DEFAULT_TARGET_X86_64_TRUE@ ../dwp -o $@ dwp_test_1b.dwo dwp_test_2.dwo + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/binutils-2.25/gold/testsuite/arm_abs_global.s b/binutils-2.25/gold/testsuite/arm_abs_global.s new file mode 100644 index 00000000..65cb309b --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_abs_global.s @@ -0,0 +1,31 @@ + .syntax unified + + .text + .align 2 + + .global _start + .type _start, %function +_start: + bx lr + .size _start, .-_start + + .global _arm_test + .type _arm_test, %function +_arm_test: + movt r0, #:upper16:_movt_abs_global + movw r0, #:lower16:_movw_abs_global + bx lr + .size _arm_test, .-_arm_test + + .thumb + .global _thumb_test +_thumb_test: + movt r0, #:upper16:_thm_movt_abs_global + movw r0, #:lower16:_thm_movw_abs_global + bx lr + .size _thumb_test, .-_thumb_test + + .data +_data_test: + .word _abs32_global + .word _abs32_global_plt diff --git a/binutils-2.25/gold/testsuite/arm_abs_global.sh b/binutils-2.25/gold/testsuite/arm_abs_global.sh new file mode 100755 index 00000000..26abc24a --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_abs_global.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +# arm_abs_global.sh -- test ARM absolute relocations against global symbols. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Doug Kwan + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with the assembler source file arm_abs_global.s, +# that is assembled and linked with a shared object libarm_abs.so. We +# want to check that a MOV[TW] instruction referencing an external function +# causes a PLT to be created. + +check() +{ + file=$1 + sym=$2 + reloc=$3 + + found=`grep " $sym\$" $file` + if test -z "$found"; then + echo "Symbol $sym not found." + exit 1 + fi + + match_reloc=`grep " $sym\$" $file | grep " $reloc "` + if test -z "$match_reloc"; then + echo "Expected symbol $sym to have relocation $reloc but found" + echo "$found" + exit 1 + fi +} + +check "arm_abs_global.stdout" "_movt_abs_global" "R_ARM_JUMP_SLOT" +check "arm_abs_global.stdout" "_movw_abs_global" "R_ARM_JUMP_SLOT" +check "arm_abs_global.stdout" "_thm_movt_abs_global" "R_ARM_JUMP_SLOT" +check "arm_abs_global.stdout" "_thm_movw_abs_global" "R_ARM_JUMP_SLOT" +check "arm_abs_global.stdout" "_abs32_global_plt" "R_ARM_JUMP_SLOT" +check "arm_abs_global.stdout" "_abs32_global" "R_ARM_ABS32" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_abs_lib.s b/binutils-2.25/gold/testsuite/arm_abs_lib.s new file mode 100644 index 00000000..a2d72071 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_abs_lib.s @@ -0,0 +1,37 @@ + .syntax unified + + .text + .align 2 + .global _movt_abs_global + .type _movt_abs_global, %function +_movt_abs_global: + bx lr + .size _movt_abs_global, .-_movt_abs_global + + .global _movw_abs_global + .type _movw_abs_global, %function +_movw_abs_global: + bx lr + .size _movw_abs_global, .-_movw_abs_global + + .thumb + .align 2 + .global _thm_movt_abs_global + .type _thm_movt_abs_global, %function +_thm_movt_abs_global: + bx lr + .size _thm_movt_abs_global, .-_thm_movt_abs_global + + .global _thm_movw_abs_global + .type _thm_movw_abs_global, %function +_thm_movw_abs_global: + bx lr + .size _thm_movw_abs_global, .-_thm_movw_abs_global + + .global _abs32_global_plt + .type _abs32_global_plt, %function +_abs32_global_plt: + bx lr + .size _abs32_global_plt, .-_abs32_global_plt + + .comm _abs32_global,4,4 diff --git a/binutils-2.25/gold/testsuite/arm_attr_merge.sh b/binutils-2.25/gold/testsuite/arm_attr_merge.sh new file mode 100755 index 00000000..3066f4f1 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_attr_merge.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# arm_attr_merge.sh -- test ARM attributes merging. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Doug Kwan + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with the assembler source files arm_attr_merge*.s + +check() +{ + file=$1 + pattern=$2 + found=`grep "$pattern" $file` + if test -z "$found"; then + echo "pattern \"$pattern\" not found in file $file." + exit 1 + fi +} + +# This is a bit crude. + +check arm_attr_merge_6.stdout "Tag_MPextension_use: Allowed" +check arm_attr_merge_6r.stdout "Tag_MPextension_use: Allowed" +check arm_attr_merge_7.stdout "Tag_MPextension_use: Allowed" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_attr_merge_6a.s b/binutils-2.25/gold/testsuite/arm_attr_merge_6a.s new file mode 100644 index 00000000..df62e535 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_attr_merge_6a.s @@ -0,0 +1,4 @@ + .cpu cortex-a9 + .fpu softvfp + .eabi_attribute 70, 1 + .file "arm_attr_merge_6a.s" diff --git a/binutils-2.25/gold/testsuite/arm_attr_merge_6b.s b/binutils-2.25/gold/testsuite/arm_attr_merge_6b.s new file mode 100644 index 00000000..b06e3e09 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_attr_merge_6b.s @@ -0,0 +1,3 @@ + .cpu cortex-a9 + .fpu softvfp + .file "arm_attr_merge_6b.s" diff --git a/binutils-2.25/gold/testsuite/arm_attr_merge_7a.s b/binutils-2.25/gold/testsuite/arm_attr_merge_7a.s new file mode 100644 index 00000000..4f550293 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_attr_merge_7a.s @@ -0,0 +1,4 @@ + .cpu cortex-a9 + .fpu softvfp + .eabi_attribute 70, 1 + .file "arm_attr_merge_7a.s" diff --git a/binutils-2.25/gold/testsuite/arm_attr_merge_7b.s b/binutils-2.25/gold/testsuite/arm_attr_merge_7b.s new file mode 100644 index 00000000..69135b51 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_attr_merge_7b.s @@ -0,0 +1,4 @@ + .cpu cortex-a9 + .fpu softvfp + .eabi_attribute Tag_MPextension_use, 1 + .file "arm_attr_merge_7b.s" diff --git a/binutils-2.25/gold/testsuite/arm_bl_in_range.s b/binutils-2.25/gold/testsuite/arm_bl_in_range.s new file mode 100644 index 00000000..23960f9a --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_bl_in_range.s @@ -0,0 +1,45 @@ +# arm_bl_in_range.s +# Test ARM bl instructions just within branch range limits. + .syntax unified + .arch armv5te + + .section .text.pre,"x" + +# Add padding so that target is just within branch range. + .space 12 + + .align 2 + .global _backward_target +_backward_target: + bx lr + .size _backward_target, .-_backward_target + + .text + .align 2 + +# Define _start so that linker does not complain. + .global _start +_start: + bx lr + .size _start, .-_start + + .global _backward_test +_backward_test: + bl _backward_target + .size _backward_test, .-_backward_test + + .global _forward_test +_forward_test: + bl _forward_target + .size _forward_test, .-_forward_test + + .section .text.post,"x" + +# Add padding so that target is just within of branch range. + .space 12 + + .align 2 + .global _forward_target +_forward_target: + bx lr + .size _forward_target, .-_forward_target diff --git a/binutils-2.25/gold/testsuite/arm_bl_out_of_range.s b/binutils-2.25/gold/testsuite/arm_bl_out_of_range.s new file mode 100644 index 00000000..cb5ff535 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_bl_out_of_range.s @@ -0,0 +1,46 @@ +# arm_bl_out_of_range.s +# Test ARM bl instructions just out of the branch range limits. + .syntax unified + .arch armv5te + + .section .text.pre,"x" + +# Add padding so that target is just out of branch range. + .space 8 + + .align 2 + .global _backward_target +_backward_target: + bx lr + .size _backward_target, .-_backward_target + + .text +# Use 256-byte alignment so that we know where the stubs start. + .align 8 + +# Define _start so that linker does not complain. + .global _start +_start: + bx lr + .size _start, .-_start + + .global _backward_test +_backward_test: + bl _backward_target + .size _backward_test, .-_backward_test + + .global _forward_test +_forward_test: + bl _forward_target + .size _forward_test, .-_forward_test + + .section .text.post,"x" + +# Add padding so that target is just out of branch range. + .space 16 + + .align 2 + .global _forward_target +_forward_target: + bx lr + .size _forward_target, .-_forward_target diff --git a/binutils-2.25/gold/testsuite/arm_branch_in_range.sh b/binutils-2.25/gold/testsuite/arm_branch_in_range.sh new file mode 100755 index 00000000..dc6f36f3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_branch_in_range.sh @@ -0,0 +1,73 @@ +#!/bin/sh + +# arm_branch_in_range.sh -- test ARM/THUMB/THUMB branch instructions whose +# targets are just within the branch range limits. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Doug Kwan + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with the assembler source files arm_bl_in_range.s +# thumb_bl_in_range.s that are assembled and linked to check that branches +# whose target are just within the branch range limits are handle correctly. + +check() +{ + file=$1 + pattern=$2 + + found=`grep "$pattern" $file` + if test -z "$found"; then + echo "pattern \"$pattern\" not found in file $file." + exit 1 + fi +} + +# This is a bit crude. Also, there are tabs in the grep patterns. + +check arm_bl_in_range.stdout \ + " 4000004: eb800000 bl 200000c <_backward_target>" +check arm_bl_in_range.stdout \ + " 4000008: eb7fffff bl 600000c <_forward_target>" +check thumb_bl_in_range.stdout \ + " 800004: f400 f800 bl 400008 <_backward_target>" +check thumb_bl_in_range.stdout \ + " 800008: f3ff ffff bl c0000a <_forward_target>" +check thumb2_bl_in_range.stdout \ + " 2000004: f400 d000 bl 1000008 <_backward_target>" +check thumb2_bl_in_range.stdout \ + " 2000008: f3ff d7ff bl 300000a <_forward_target>" +check thumb_blx_in_range.stdout \ + " 800006: f400 e800 blx 400008 <_backward_target>" +check thumb_blx_in_range.stdout \ + " 80000c: f3ff effe blx c0000c <_forward_target>" +check thumb2_blx_in_range.stdout \ + " 2000006: f400 c000 blx 1000008 <_backward_target>" +check thumb2_blx_in_range.stdout \ + " 200000c: f3ff c7fe blx 300000c <_forward_target>" +check arm_thm_jump11.stdout \ + " 8804: e400 b.n 8008 <_backward_target>" +check arm_thm_jump11.stdout \ + " 8806: e3ff b.n 9008 <_forward_target>" +check arm_thm_jump8.stdout \ + " 8104: d080 beq.n 8008 <_backward_target>" +check arm_thm_jump8.stdout \ + " 8106: d07f beq.n 8208 <_forward_target>" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_branch_out_of_range.sh b/binutils-2.25/gold/testsuite/arm_branch_out_of_range.sh new file mode 100755 index 00000000..aac638f3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_branch_out_of_range.sh @@ -0,0 +1,123 @@ +#!/bin/sh + +# arm_branch_out_of_range.sh -- test ARM/THUMB/THUMB branch instructions whose +# targets are just out of the branch range limits. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Doug Kwan + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with the assembler source files arm_bl_out_of_range.s, +# thumb_bl_out_of_range.s and thumb_bl_out_of_range_local.s that are assembled +# and linked to check that branches whose target are just out of the branch +# range limits are handle correctly. + +check() +{ + file=$1 + pattern=$2 + + found=`grep "$pattern" $file` + if test -z "$found"; then + echo "pattern \"$pattern\" not found in file $file." + exit 1 + fi +} + +# This is a bit crude. Also, there are tabs in the grep patterns. + +check arm_bl_out_of_range.stdout \ + " 4000004: eb00003d bl 4000100 <.*>" +check arm_bl_out_of_range.stdout \ + " 4000008: eb00003e bl 4000108 <.*>" +check arm_bl_out_of_range.stdout \ + " 4000100: e51ff004 ldr pc, \[pc, #-4\]" +check arm_bl_out_of_range.stdout \ + " 4000104: 02000008 " +check arm_bl_out_of_range.stdout \ + " 4000108: e51ff004 ldr pc, \[pc, #-4\]" +check arm_bl_out_of_range.stdout \ + " 400010c: 06000010 " + +check thumb_bl_out_of_range.stdout \ + " 800004: f000 e87c blx 800100 <.*>" +check thumb_bl_out_of_range.stdout \ + " 800008: f000 e87e blx 800108 <.*>" +check thumb_bl_out_of_range.stdout \ + " 800100: e51ff004 ldr pc, \[pc, #-4\]" +check thumb_bl_out_of_range.stdout \ + " 800104: 00400007 " +check thumb_bl_out_of_range.stdout \ + " 800108: e51ff004 ldr pc, \[pc, #-4\]" +check thumb_bl_out_of_range.stdout \ + " 80010c: 00c0000d " + +check thumb_blx_out_of_range.stdout \ + " 800004: f000 e87c blx 800100 <.*>" +check thumb_blx_out_of_range.stdout \ + " 80000a: f000 e87e blx 800108 <.*>" +check thumb_blx_out_of_range.stdout \ + " 800100: e51ff004 ldr pc, \[pc, #-4\]" +check thumb_blx_out_of_range.stdout \ + " 800104: 00400004 " +check thumb_blx_out_of_range.stdout \ + " 800108: e51ff004 ldr pc, \[pc, #-4\]" +check thumb_blx_out_of_range.stdout \ + " 80010c: 00c0000c " + +check thumb_bl_out_of_range_local.stdout \ + " 800004: f000 e87c blx 800100 <.*>" +check thumb_bl_out_of_range_local.stdout \ + " 800008: f000 e87e blx 800108 <.*>" +check thumb_bl_out_of_range_local.stdout \ + " 800100: e51ff004 ldr pc, \[pc, #-4\]" +check thumb_bl_out_of_range_local.stdout \ + " 800104: 00400007 " +check thumb_bl_out_of_range_local.stdout \ + " 800108: e51ff004 ldr pc, \[pc, #-4\]" +check thumb_bl_out_of_range_local.stdout \ + " 80010c: 00c0000d " + +check thumb2_bl_out_of_range.stdout \ + " 2000004: f000 e87c blx 2000100 <.*>" +check thumb2_bl_out_of_range.stdout \ + " 2000008: f000 e87e blx 2000108 <.*>" +check thumb2_bl_out_of_range.stdout \ + " 2000100: e51ff004 ldr pc, \[pc, #-4\]" +check thumb2_bl_out_of_range.stdout \ + " 2000104: 01000007 " +check thumb2_bl_out_of_range.stdout \ + " 2000108: e51ff004 ldr pc, \[pc, #-4\]" +check thumb2_bl_out_of_range.stdout \ + " 200010c: 0300000d " + +check thumb2_blx_out_of_range.stdout \ + " 2000004: f000 e87c blx 2000100 <.*>" +check thumb2_blx_out_of_range.stdout \ + " 200000a: f000 e87e blx 2000108 <.*>" +check thumb2_blx_out_of_range.stdout \ + " 2000100: e51ff004 ldr pc, \[pc, #-4\]" +check thumb2_blx_out_of_range.stdout \ + " 2000104: 01000004 " +check thumb2_blx_out_of_range.stdout \ + " 2000108: e51ff004 ldr pc, \[pc, #-4\]" +check thumb2_blx_out_of_range.stdout \ + " 200010c: 0300000c " + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_branch_range.t b/binutils-2.25/gold/testsuite/arm_branch_range.t new file mode 100644 index 00000000..865e4042 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_branch_range.t @@ -0,0 +1,36 @@ +/* arm_banch_range.t -- linker script to test ARM branch range. + + Copyright 2010 Free Software Foundation, Inc. + Written by Doug Kwan . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +SECTIONS +{ + . = 0x2000000; + + .text.pre : { *(.text.pre) } + . = ALIGN(0x2000000); + .text : { *(.text) } + . = ALIGN(0x2000000); + .text.post : { *(.text.post) } + . += 0x1000; + .data : { *(.data) } + .bss : { *(.bss) } + .ARM.attributes : { *(.ARM.attributes) } +} diff --git a/binutils-2.25/gold/testsuite/arm_cortex_a8.sh b/binutils-2.25/gold/testsuite/arm_cortex_a8.sh new file mode 100755 index 00000000..5e25c251 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_cortex_a8.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +# arm_cortex_a8.sh -- a test case for the Cortex-A8 workaround. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with arm_v4bx.s, an ARM assembly source file constructed to +# have test the handling of R_ARM_V4BX relocation. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected instruction in $1:" + echo " $2" + echo "" + echo "Actual instructions below:" + cat "$1" + exit 1 + fi +} + +# Test branch. +check arm_cortex_a8_b.stdout ".*ffe: .* b.w .*000 <.*>" +check arm_cortex_a8_b.stdout ".000: .* b.w .*100 <_func>" + +# Test conditional branch. +check arm_cortex_a8_b_cond.stdout ".*ffe: .* b.w .*000 <.*>" +check arm_cortex_a8_b_cond.stdout ".000: .* beq.n .*006 <.*>" +check arm_cortex_a8_b_cond.stdout ".002: .* b.w .*002 <.*>" +check arm_cortex_a8_b_cond.stdout ".006: .* b.w .*100 <_func>" + +# Test branch and link. +check arm_cortex_a8_bl.stdout ".*ffe: .* bl .*000 <.*>" +check arm_cortex_a8_bl.stdout ".000: .* b.w .*100 <_func>" + +# Test blx +check arm_cortex_a8_blx.stdout ".*ffe: .* blx .*000 <.*>" +check arm_cortex_a8_blx.stdout ".000: .* b .*100 <_func>" + +# Test a local branch without relocation. +check arm_cortex_a8_local.stdout ".*ffe: .* b.w .*000 <.*>" +check arm_cortex_a8_local.stdout ".000: .* bpl.n .*006 <.*>" +check arm_cortex_a8_local.stdout ".002: .* b.w .*002 <.*>" +check arm_cortex_a8_local.stdout ".006: .* b.w .*100 <.*>" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_cortex_a8_b.s b/binutils-2.25/gold/testsuite/arm_cortex_a8_b.s new file mode 100644 index 00000000..d2316a07 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_cortex_a8_b.s @@ -0,0 +1,30 @@ + .syntax unified + .cpu cortex-a8 + + .text + .align 12 + +_start: + .type _start,%function + bx lr + .size _start,.-_start + + .align 8 + .thumb + .global _func + .type _func,%function +_func: + bx lr + .size _func,.-_func + + .align 11 + .space 2042 + + .align 1 + .thumb + .global _test + .type _test,%function +_test: + add.w r0, r0, 0 + b.w _func + .size _test,.-_test diff --git a/binutils-2.25/gold/testsuite/arm_cortex_a8_b_cond.s b/binutils-2.25/gold/testsuite/arm_cortex_a8_b_cond.s new file mode 100644 index 00000000..a244aa70 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_cortex_a8_b_cond.s @@ -0,0 +1,30 @@ + .syntax unified + .cpu cortex-a8 + + .text + .align 12 + +_start: + .type _start,%function + bx lr + .size _start,.-_start + + .align 8 + .thumb + .global _func + .type _func,%function +_func: + bx lr + .size _func,.-_func + + .align 11 + .space 2042 + + .align 1 + .thumb + .global _test + .type _test,%function +_test: + add.w r0, r0, 0 + beq.w _func + .size _test,.-_test diff --git a/binutils-2.25/gold/testsuite/arm_cortex_a8_b_local.s b/binutils-2.25/gold/testsuite/arm_cortex_a8_b_local.s new file mode 100644 index 00000000..2432d91c --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_cortex_a8_b_local.s @@ -0,0 +1,52 @@ + .syntax unified + .cpu cortex-a8 + + .section .text.0, "x" + .align 12 + +_start: + .type _start,%function + bx lr + .size _start,.-_start + + .section .text.1, "x" + .align 11 + .thumb + .type .Lfunc1,%function +.Lfunc1: + bx lr + .size .Lfunc1,.-.Lfunc1 + + .section .text.2, "x" + .align 11 + .space 2042 + + .align 1 + .thumb + .global _test1 + .type _test1,%function +_test1: + add.w r0, r0, 0 + b.w .Lfunc1 + .size _test1,.-_test1 + + .align 8 + .thumb + .type .Lfunc2,%function +.Lfunc2: + bx lr + .size .Lfunc2,.-.Lfunc1 + + .align 11 + .space 2042 + + .align 1 + .thumb + .global _test2 + .type _test2,%function +_test2: + add.w r0, r0, 0 + b.w .Lfunc2 + .size _test2,.-_test2 + + diff --git a/binutils-2.25/gold/testsuite/arm_cortex_a8_bl.s b/binutils-2.25/gold/testsuite/arm_cortex_a8_bl.s new file mode 100644 index 00000000..c78fa8d8 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_cortex_a8_bl.s @@ -0,0 +1,30 @@ + .syntax unified + .cpu cortex-a8 + + .text + .align 12 + +_start: + .type _start,%function + bx lr + .size _start,.-_start + + .align 8 + .thumb + .global _func + .type _func,%function +_func: + bx lr + .size _func,.-_func + + .align 11 + .space 2042 + + .align 1 + .thumb + .global _test + .type _test,%function +_test: + add.w r0, r0, 0 + bl _func + .size _test,.-_test diff --git a/binutils-2.25/gold/testsuite/arm_cortex_a8_blx.s b/binutils-2.25/gold/testsuite/arm_cortex_a8_blx.s new file mode 100644 index 00000000..c323d250 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_cortex_a8_blx.s @@ -0,0 +1,33 @@ + .syntax unified + .cpu cortex-a8 + + .text + .align 12 + +_start: + .type _start,%function + bx lr + .size _start,.-_start + + .align 8 + .global _func + .type _func,%function +_func: + bx lr + .size _func,.-_func + + .align 11 + .space 2042 + + .align 1 + .thumb + .global _test + .type _test,%function +_test: + add.w r0, r0, 0 + blx _func + .size _test,.-_test + +# We have no mapping symbols for stubs. This make the disassembler +# list the stub correctly in ARM mode. + .arm diff --git a/binutils-2.25/gold/testsuite/arm_cortex_a8_local.s b/binutils-2.25/gold/testsuite/arm_cortex_a8_local.s new file mode 100644 index 00000000..462aa182 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_cortex_a8_local.s @@ -0,0 +1,29 @@ + .syntax unified + .cpu cortex-a8 + + .text + .align 12 + +_start: + .type _start,%function + bx lr + .size _start,.-_start + + .align 8 + .thumb + .type .Lfunc,%function +.Lfunc: + bx lr + .size .Lfunc,.-.Lfunc + + .align 11 + .space 2042 + + .align 1 + .thumb + .global _test + .type _test,%function +_test: + add.w r0, r0, 0 + bpl.w .Lfunc + .size _test,.-_test diff --git a/binutils-2.25/gold/testsuite/arm_cortex_a8_local_reloc.s b/binutils-2.25/gold/testsuite/arm_cortex_a8_local_reloc.s new file mode 100644 index 00000000..2b49184c --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_cortex_a8_local_reloc.s @@ -0,0 +1,31 @@ + .syntax unified + .cpu cortex-a8 + + .section .text.0, "x" + .align 12 + +_start: + .type _start,%function + bx lr + .size _start,.-_start + + .section .text.1, "x" + .align 11 + .thumb + .type .Lfunc,%function +.Lfunc: + bx lr + .size .Lfunc,.-.Lfunc + + .section .text.2, "x" + .align 11 + .space 2042 + + .align 1 + .thumb + .global _test + .type _test,%function +_test: + add.w r0, r0, 0 + b.w .Lfunc + .size _test,.-_test diff --git a/binutils-2.25/gold/testsuite/arm_exidx_test.s b/binutils-2.25/gold/testsuite/arm_exidx_test.s new file mode 100644 index 00000000..8e550e4e --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_exidx_test.s @@ -0,0 +1,31 @@ + .syntax unified + .arch armv5te + .section .text.answer,"ax",%progbits + .align 2 + .global answer + .type answer, %function +answer: + .fnstart + .cantunwind + mov r0, #42 + bx lr + .fnend + .size answer, .-answer + +# Check that we can handle an empty .text section + .section .text.empty,"ax",%progbits + .align 2 + .global empty + .type empty, %function +empty: + .fnstart + .cantunwind + .fnend + .size empty, .-empty + +# Check that no dynamic relocations for __exidx_start and __exidx_stop +# generated. + .data + .align 12 + .word __exidx_start(got) + .word __exidx_end(got) diff --git a/binutils-2.25/gold/testsuite/arm_exidx_test.sh b/binutils-2.25/gold/testsuite/arm_exidx_test.sh new file mode 100755 index 00000000..e196f122 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_exidx_test.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +# arm_exidx_test.sh -- a test case for .ARM.exidx section. + +# Copyright 2011 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with arm_exidx_test.s, an ARM assembly source file constructed +# to test handling of .ARM.exidx and .ARM.extab sections. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_not() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +# Check that SHF_LINK_ORDER is set. +check arm_exidx_test.stdout ".* .ARM.exidx .* ARM_EXIDX .* AL .*" +check arm_exidx_test.stdout ".* .ARM.extab .* PROGBITS .* A .*" +check_not arm_exidx_test.stdout ".* .* R_ARM_GLOB_DAT .* __exidx_start" +check_not arm_exidx_test.stdout ".* .* R_ARM_GLOB_DAT .* __exidx_end" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_farcall_arm_arm.s b/binutils-2.25/gold/testsuite/arm_farcall_arm_arm.s new file mode 100644 index 00000000..00c1e48b --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_farcall_arm_arm.s @@ -0,0 +1,20 @@ +@ Test to ensure that a ARM to ARM call exceeding 32Mb generates a stub. + + .global _start + .syntax unified + +@ We will place the section .text at 0x1000. + + .text + +_start: + bl bar + +@ We will place the section .foo at 0x2001020. + + .section .foo, "xa" + + .type bar, %function +bar: + bx lr + diff --git a/binutils-2.25/gold/testsuite/arm_farcall_arm_arm.sh b/binutils-2.25/gold/testsuite/arm_farcall_arm_arm.sh new file mode 100755 index 00000000..7d95528e --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_farcall_arm_arm.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# arm_farcall_arm_arm.sh -- a test case for ARM->ARM farcall veneers + +# Copyright 2010, 2011, Free Software Foundation, Inc. +# Written by Matthew Gretton-Dann +# Based upon arm_cortex_a8.sh +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected instruction in $1:" + echo " $2" + echo "" + echo "Actual instructions below:" + cat "$1" + exit 1 + fi +} + +# Check for ARM->ARM default +check arm_farcall_arm_arm.stdout "1004: .* ldr pc, \[pc, #-4\] .*" +check arm_farcall_arm_arm.stdout "1008: 02001020" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_farcall_arm_thumb.s b/binutils-2.25/gold/testsuite/arm_farcall_arm_thumb.s new file mode 100644 index 00000000..c69f31cb --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_farcall_arm_thumb.s @@ -0,0 +1,20 @@ +@ Test to ensure that a ARM to Thumb call exceeding 32Mb generates a stub. + + .global _start + .global bar + .syntax unified + +@ We will place the section .text at 0x1000. + + .text + +_start: + bl bar + +@ We will place the section .foo at 0x2001010. + + .section .foo, "xa" + .thumb_func +bar: + bx lr + diff --git a/binutils-2.25/gold/testsuite/arm_farcall_arm_thumb.sh b/binutils-2.25/gold/testsuite/arm_farcall_arm_thumb.sh new file mode 100755 index 00000000..2df2d653 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_farcall_arm_thumb.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +# arm_farcall_arm_thumb.sh -- a test case for ARM->Thumb farcall veneers. + +# Copyright 2010, 2011, Free Software Foundation, Inc. +# Written by Matthew Gretton-Dann +# Based upon arm_cortex_a8.sh +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected instruction in $1:" + echo " $2" + echo "" + echo "Actual instructions below:" + cat "$1" + exit 1 + fi +} + +# Check for ARM->Thumb default +check arm_farcall_arm_thumb.stdout "1004: .* ldr ip, \[pc\]" +check arm_farcall_arm_thumb.stdout "1008: .* bx ip" +check arm_farcall_arm_thumb.stdout "100c: 02001015" + +# Check for ARM->Thumb with v5t interworking +chck arm_farcall_arm_thumb_5t.stdout "1004: f004 e51f" +chck arm_farcall_arm_thumb_5t.stdout "1008: 1015" +chck arm_farcall_arm_thumb_5t.stdout "100a: 0200" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_farcall_thumb_arm.s b/binutils-2.25/gold/testsuite/arm_farcall_thumb_arm.s new file mode 100644 index 00000000..1fd6a078 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_farcall_thumb_arm.s @@ -0,0 +1,27 @@ +@ Test to ensure that a Thumb to ARM call exceeding 4Mb generates a stub. +@ Check that we can generate two types of stub in the same section. + + .global _start + .syntax unified + +@ We will place the section .text at 0x1c01010. + + .text + .thumb_func +_start: + .global bar + bl bar +@ This call is close enough to generate a "short branch" stub +@ or no stub if blx is available. + .space 0x0300000 + bl bar + +@ We will place the section .foo at 0x2001014. + + .section .foo, "xa" + + .arm + .type bar, %function +bar: + bx lr + diff --git a/binutils-2.25/gold/testsuite/arm_farcall_thumb_arm.sh b/binutils-2.25/gold/testsuite/arm_farcall_thumb_arm.sh new file mode 100755 index 00000000..e22da46a --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_farcall_thumb_arm.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +# arm_farcall_thumb_arm.sh -- a test case for Thumb->ARM farcall veneers. + +# Copyright 2010, 2011, Free Software Foundation, Inc. +# Written by Matthew Gretton-Dann +# Based upon arm_cortex_a8.sh +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected instruction in $1:" + echo " $2" + echo "" + echo "Actual instructions below:" + cat "$1" + exit 1 + fi +} + +# Thumb->ARM +check arm_farcall_thumb_arm.stdout "1f01018: .* bx pc" +check arm_farcall_thumb_arm.stdout "1f0101a: .* nop" +check arm_farcall_thumb_arm.stdout "1f0101c: f004 e51f" +check arm_farcall_thumb_arm.stdout "1f01020: 1014" +check arm_farcall_thumb_arm.stdout "1f01022: 0200" + +check arm_farcall_thumb_arm.stdout "1f01024: .* bx pc" +check arm_farcall_thumb_arm.stdout "1f01026: .* nop" +check arm_farcall_thumb_arm.stdout "1f01028: fff9 ea03" + +# Thumb->ARM with v5T interworking +check arm_farcall_thumb_arm_5t.stdout "1f01018: f004 e51f" +check arm_farcall_thumb_arm_5t.stdout "1f0101c: 1014" +check arm_farcall_thumb_arm_5t.stdout "1f0101e: 0200" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.s b/binutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.s new file mode 100644 index 00000000..650b1a6b --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.s @@ -0,0 +1,19 @@ +@ Test to ensure that a Thumb to Thumb call exceeding 4Mb generates a stub. + + .global _start + .syntax unified + +@ We will place the section .text at 0x1000. + + .text + .thumb_func +_start: + bl bar + +@ We will place the section .foo at 0x02001014. + + .section .foo, "xa" + .thumb_func +bar: + bx lr + diff --git a/binutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.sh b/binutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.sh new file mode 100755 index 00000000..23fb0cd7 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_farcall_thumb_thumb.sh @@ -0,0 +1,74 @@ +#!/bin/sh + +# arm_farcall_thumb_thumb.sh -- a test case for Thumb->Thumb farcall veneers. + +# Copyright 2010, 2011, Free Software Foundation, Inc. +# Written by Matthew Gretton-Dann +# Based upon arm_cortex_a8.sh +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected instruction in $1:" + echo " $2" + echo "" + echo "Actual instructions below:" + cat "$1" + exit 1 + fi +} + +# Thumb->Thumb default +check arm_farcall_thumb_thumb.stdout "1004: .* bx pc" +check arm_farcall_thumb_thumb.stdout "1006: .* nop" +check arm_farcall_thumb_thumb.stdout "1008: c000" +check arm_farcall_thumb_thumb.stdout "100a: e59f" +check arm_farcall_thumb_thumb.stdout "100c: ff1c e12f" +check arm_farcall_thumb_thumb.stdout "1010: 1015" +check arm_farcall_thumb_thumb.stdout "1012: 0200" + +# Thumb->Thumb with v5T interworking +check arm_farcall_thumb_thumb_5t.stdout "1004: f004 e51f" +check arm_farcall_thumb_thumb_5t.stdout "1008: 1015" +check arm_farcall_thumb_thumb_5t.stdout "100a: 0200" + +# Thumb->Thumb on v6-M +check arm_farcall_thumb_thumb_6m.stdout "1004: .* push {r0}" +check arm_farcall_thumb_thumb_6m.stdout "1006: .* ldr r0, \\[pc, #8\\]" +check arm_farcall_thumb_thumb_6m.stdout "1008: .* mov ip, r0" +check arm_farcall_thumb_thumb_6m.stdout "100a: .* pop {r0}" +check arm_farcall_thumb_thumb_6m.stdout "100c: .* bx ip" +check arm_farcall_thumb_thumb_6m.stdout "100e: .* nop" +check arm_farcall_thumb_thumb_6m.stdout "1010: 1015" +check arm_farcall_thumb_thumb_6m.stdout "1012: 0200" + +# Thumb->Thumb on v7-M +check arm_farcall_thumb_thumb_6m.stdout "1004: .* push {r0}" +check arm_farcall_thumb_thumb_6m.stdout "1006: .* ldr r0, \\[pc, #8\\]" +check arm_farcall_thumb_thumb_6m.stdout "1008: .* mov ip, r0" +check arm_farcall_thumb_thumb_6m.stdout "100a: .* pop {r0}" +check arm_farcall_thumb_thumb_6m.stdout "100c: .* bx ip" +check arm_farcall_thumb_thumb_6m.stdout "100e: .* nop" +check arm_farcall_thumb_thumb_6m.stdout "1010: 1015" +check arm_farcall_thumb_thumb_6m.stdout "1012: 0200" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_fix_1176.s b/binutils-2.25/gold/testsuite/arm_fix_1176.s new file mode 100644 index 00000000..96e03284 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_fix_1176.s @@ -0,0 +1,15 @@ + .syntax unified + .globl _start + .globl func_to_branch_to + + .arm + .text +func_to_branch_to: + bx lr + + .thumb + .section .foo, "xa" + .thumb_func +_start: + bl func_to_branch_to + diff --git a/binutils-2.25/gold/testsuite/arm_fix_1176.sh b/binutils-2.25/gold/testsuite/arm_fix_1176.sh new file mode 100755 index 00000000..152b0a32 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_fix_1176.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +# arm_fix_1176.sh -- a test case for the ARM1176 workaround. + +# Copyright 2010, 2011, Free Software Foundation, Inc. +# Written by Matthew Gretton-Dann +# Based upon arm_cortex_a8.sh +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with arm_v4bx.s, an ARM assembly source file constructed to +# have test the handling of R_ARM_V4BX relocation. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected instruction in $1:" + echo " $2" + echo "" + echo "Actual instructions below:" + cat "$1" + exit 1 + fi +} + +# Check for fix default state on v6Z. +check arm_fix_1176_default_v6z.stdout "2001014: .* bl 2001018 <.*>" + +# Check for fix explicitly on on v6Z. +check arm_fix_1176_on_v6z.stdout "2001014: .* bl 2001018 <.*>" + +# Check for explicitly off on v6Z +check arm_fix_1176_off_v6z.stdout "2001014: .* blx 2001018 <.*>" + +# Check for fix default state on v5TE +check arm_fix_1176_default_v5te.stdout "2001014: .* bl 2001018 <.*>" + +# Check for fix default state on v7A +check arm_fix_1176_default_v7a.stdout "2001014: .* blx 2001018 <.*>" + +# Check for fix default state on ARM1156T2F-S +check arm_fix_1176_default_1156t2f_s.stdout "2001014: .* blx 2001018 <.*>" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_fix_v4bx.s b/binutils-2.25/gold/testsuite/arm_fix_v4bx.s new file mode 100644 index 00000000..fc3aa2a8 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_fix_v4bx.s @@ -0,0 +1,15 @@ + .syntax unified + .text + +# Align this to 256-byte boundary for easier address matching. + .align 8 + +# We do not want to run this file. We define _start here to avoid missing +# entry point. + + .global _start + .type _start, %function +_start: + bx r0 + bx r15 + .size _start, .-_start diff --git a/binutils-2.25/gold/testsuite/arm_fix_v4bx.sh b/binutils-2.25/gold/testsuite/arm_fix_v4bx.sh new file mode 100755 index 00000000..a331ff97 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_fix_v4bx.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +# arm_v4bx.sh -- a test case for --fix-v4bx and --fix-v4bx-interworking. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with arm_v4bx.s, an ARM assembly source file constructed to +# have test the handling of R_ARM_V4BX relocation. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected instruction in $1:" + echo " $2" + echo "" + echo "Actual instructions below:" + cat "$1" + exit 1 + fi +} + +# Test --fix-v4bx +check arm_fix_v4bx.stdout ".*00: .* mov pc, r0" +check arm_fix_v4bx.stdout ".*04: .* mov pc, pc" + +# Test --fix-v4bx-interworking +check arm_fix_v4bx_interworking.stdout ".*00: .* b .*00 <.*>" +check arm_fix_v4bx_interworking.stdout ".*04: .* mov pc, pc" +check arm_fix_v4bx_interworking.stdout ".*00: .* tst r0, #1" +check arm_fix_v4bx_interworking.stdout ".*04: .* moveq pc, r0" +check arm_fix_v4bx_interworking.stdout ".*08: .* bx r0" + +# Test no fix. +check arm_no_fix_v4bx.stdout ".*00: .* bx r0" +check arm_no_fix_v4bx.stdout ".*04: .* bx pc" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/arm_thm_jump11.s b/binutils-2.25/gold/testsuite/arm_thm_jump11.s new file mode 100644 index 00000000..41f1ce7f --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_thm_jump11.s @@ -0,0 +1,57 @@ +# arm_thm_jump11.s +# Test R_ARM_THM_JUMP11 relocations just within the branch range limits. + .syntax unified + .arch armv5te + + .section .text.pre,"x" + +# Add padding so that target is just in branch range. + .space 8 + + .global _backward_target + .code 16 + .thumb_func + .type _backword_target, %function +_backward_target: + bx lr + .size _backward_target, .-_backward_target + + .text + +# Define _start so that linker does not complain. + .global _start + .code 32 + .align 2 + .type _start, %function +_start: + bx lr + .size _start, .-_start + + .global _backward_test + .code 16 + .thumb_func + .type _backward_test, %function +_backward_test: + b.n _backward_target + .size _backward_test, .-_backward_test + + .global _forward_test + .code 16 + .thumb_func + .type _forward_test, %function +_forward_test: + b.n _forward_target + .size _forward_test, .-_forward_test + + .section .text.post,"x" + +# Add padding so that target is just in branch range. + .space 8 + + .global _forward_target + .code 16 + .thumb_func + .type _forward_target, %function +_forward_target: + bx lr + .size _forward_target, .-_forward_target diff --git a/binutils-2.25/gold/testsuite/arm_thm_jump11.t b/binutils-2.25/gold/testsuite/arm_thm_jump11.t new file mode 100644 index 00000000..2ec41436 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_thm_jump11.t @@ -0,0 +1,36 @@ +/* arm_thm_jump11.t -- linker script to test R_ARM_THM_JUMP11 relocation. + + Copyright 2011 Free Software Foundation, Inc. + Written by Doug Kwan . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +SECTIONS +{ + . = 0x8000; + + .text.pre : { *(.text.pre) } + . = ALIGN(0x800); + .text : { *(.text) } + . = ALIGN(0x800); + .text.post : { *(.text.post) } + . += 0x1000; + .data : { *(.data) } + .bss : { *(.bss) } + .ARM.attributes : { *(.ARM.attributes) } +} diff --git a/binutils-2.25/gold/testsuite/arm_thm_jump8.s b/binutils-2.25/gold/testsuite/arm_thm_jump8.s new file mode 100644 index 00000000..540a243f --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_thm_jump8.s @@ -0,0 +1,57 @@ +# arm_thm_jump8.s +# Test R_ARM_THM_JUMP8 relocations just within the branch range limits. + .syntax unified + .arch armv5te + + .section .text.pre,"x" + +# Add padding so that target is just in branch range. + .space 8 + + .global _backward_target + .code 16 + .thumb_func + .type _backword_target, %function +_backward_target: + bx lr + .size _backward_target, .-_backward_target + + .text + +# Define _start so that linker does not complain. + .global _start + .code 32 + .align 2 + .type _start, %function +_start: + bx lr + .size _start, .-_start + + .global _backward_test + .code 16 + .thumb_func + .type _backward_test, %function +_backward_test: + beq.n _backward_target + .size _backward_test, .-_backward_test + + .global _forward_test + .code 16 + .thumb_func + .type _forward_test, %function +_forward_test: + beq.n _forward_target + .size _forward_test, .-_forward_test + + .section .text.post,"x" + +# Add padding so that target is just in branch range. + .space 8 + + .global _forward_target + .code 16 + .thumb_func + .type _forward_target, %function +_forward_target: + bx lr + .size _forward_target, .-_forward_target diff --git a/binutils-2.25/gold/testsuite/arm_thm_jump8.t b/binutils-2.25/gold/testsuite/arm_thm_jump8.t new file mode 100644 index 00000000..fa674b44 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_thm_jump8.t @@ -0,0 +1,36 @@ +/* arm_thm_jump8.t -- linker script to test R_ARM_THM_JUMP8 relocation. + + Copyright 2011 Free Software Foundation, Inc. + Written by Doug Kwan . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +SECTIONS +{ + . = 0x8000; + + .text.pre : { *(.text.pre) } + . = ALIGN(0x100); + .text : { *(.text) } + . = ALIGN(0x100); + .text.post : { *(.text.post) } + . += 0x1000; + .data : { *(.data) } + .bss : { *(.bss) } + .ARM.attributes : { *(.ARM.attributes) } +} diff --git a/binutils-2.25/gold/testsuite/arm_unaligned_reloc.s b/binutils-2.25/gold/testsuite/arm_unaligned_reloc.s new file mode 100644 index 00000000..7677bff3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_unaligned_reloc.s @@ -0,0 +1,44 @@ + .syntax unified + + .global _start + .type _start, %function + .text +_start: + bx lr + .size _start,.-_start + + .section .data.0,"aw",%progbits + .align 12 + .type x, %object + .size x, 4 +x: + .word 1 + + .section .data.1,"aw",%progbits + .align 2 + +# This causes following relocations to be unaligned. + .global padding + .type padding, %object + .size padding, 1 +padding: + .byte 0 + + .global abs32 + .type abs32, %object + .size abs32, 4 +abs32: + .word x + + .global rel32 + .type rel32, %object + .size rel32, 4 +rel32: + .word x - . + + .global abs16 + .type abs16, %object + .size abs16, 2 +abs16: + .short x + .short 0 diff --git a/binutils-2.25/gold/testsuite/arm_unaligned_reloc.sh b/binutils-2.25/gold/testsuite/arm_unaligned_reloc.sh new file mode 100755 index 00000000..39a5a110 --- /dev/null +++ b/binutils-2.25/gold/testsuite/arm_unaligned_reloc.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +# arm_unaligned_reloc.sh -- test ARM unaligned static data relocations. + +# Copyright 2011 Free Software Foundation, Inc. +# Written by Doug Kwan + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with the assembler source file arm_unaligned_reloc.s, +# that is assembled and linked as a dummy executable. We want to check +# it is okay to do unaligned static data relocations. + +check() +{ + if ! grep -q -e "$2" "$1" + then + echo "Did not find pattern \"$2\" in $1:" + echo " $2" + echo "" + echo "Actual disassembly below:" + cat "$1" + exit 1 + fi +} + +check arm_unaligned_reloc.stdout "^00009000 :$" +check arm_unaligned_reloc.stdout "^0000a001 :$" +check arm_unaligned_reloc.stdout "^ a001: 00009000 .*$" +check arm_unaligned_reloc.stdout "^0000a005 :" +check arm_unaligned_reloc.stdout "^ a005: ffffeffb .*$" +check arm_unaligned_reloc.stdout "^0000a009 :" +check arm_unaligned_reloc.stdout "^ a009: 00009000 .*$" + +check arm_unaligned_reloc_r.stdout "^ 1: 00000000 .*$" +check arm_unaligned_reloc_r.stdout "^[ ]*1: R_ARM_ABS32 .data.0$" +check arm_unaligned_reloc_r.stdout "^ 5: 00000000 .*$" +check arm_unaligned_reloc_r.stdout "^[ ]*5: R_ARM_REL32 .data.0$" +check arm_unaligned_reloc_r.stdout "^ 9: 00000000 .*$" +check arm_unaligned_reloc_r.stdout "^[ ]*9: R_ARM_ABS16 .data.0$" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/basic_test.cc b/binutils-2.25/gold/testsuite/basic_test.cc new file mode 100644 index 00000000..94910be8 --- /dev/null +++ b/binutils-2.25/gold/testsuite/basic_test.cc @@ -0,0 +1,318 @@ +// basic_test.cc -- a test case for gold + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to produce as many different types of +// relocations as we can in a stand-alone program that does not use +// TLS. This program is compiled without optimization. + +// 1 Code reference to global data. +// 2 Code reference to static data. +// 3 Code reference to BSS data. +// 4 Code reference to offset within global data. +// 5 Code reference to offset within static data. +// 6 Code reference to offset within BSS data. +// 7 Switch statement with a table of destinations. +// 8 Taking the address of a label (a gcc extension). +// 9 Taking the address of a nested function (a gcc extension). +// 10 Data reference to global data. +// 11 Data reference to static data. +// 12 Data reference to BSS data. +// 13 Data reference to offset within global data. +// 14 Data reference to offset within static data. +// 15 Data reference to offset within BSS data. +// 16 Virtual table. +// 17 Inline function. +// 18 Call through pointer to method. +// 19 Initialize variable to pointer to method. +// 20 Global constructor and destructor. + +// 1 Code reference to global data. +int t1 = 11; + +// 2 Code reference to static data. +static int t2 = 22; + +// 3 Code reference to BSS data (initialized after program starts, to +// 33). +int t3; + +// 4 Code reference to offset within global data. +char t4[] = "Hello, world"; + +// 5 Code reference to offset within static data. +static char t5[] = "Hello, world"; + +// 6 Code reference to offset within BSS data (initialized after +// program starts, to contents of t4). +char t6[13]; + +// Test cases 1 through 6. + +bool +t1_6() +{ + return (t1 == 11 + && t2 == 22 + && t3 == 33 + && t4[5] == ',' + && t5[7] == 'w' + && t6[9] == 'r'); +} + +// 7 Switch statement with a table of destinations. + +int +t7(int i) +{ + switch (i) + { + case 0: + return 12; + case 1: + return 34; + case 2: + return 56; + case 3: + return 78; + case 4: + return 90; + case 5: + return 13; + case 6: + return 0; + case 7: + return 57; + case 8: + return 79; + case 9: + return 81; + default: + return 144; + } +} + +// 8 Taking the address of a label (a gcc extension). + +int +t8(int i) +{ + for (int j = 0; j < 10; ++j) + { + void* p; + if (i + j > 6) + p = &&lab1; + else + p = &&lab2; + if (j == 7) + goto *p; + } + return 15; + lab1: + return 0; + lab2: + return 12; +} + +// 9 Taking the address of a nested function (a gcc extension). +// Disabled because this is only supported in C, not C++. + +int +t9a(int (*pfn)(int)) +{ + return (*pfn)(10) - 10; +} + +int +t9(int i) +{ +#if 0 + int + t9c(int j) + { + return i + j; + } + return t9a(&t9c); +#else + return i; +#endif +} + +// 10 Data reference to global data. +int* t10 = &t1; + +// 11 Data reference to static data. +int* t11 = &t2; + +// 12 Data reference to BSS data. +int* t12 = &t3; + +// 13 Data reference to offset within global data. +char* t13 = &t4[6]; + +// 14 Data reference to offset within static data. +char* t14 = &t5[8]; + +// 15 Data reference to offset within BSS data. +char* t15 = &t6[10]; + +// Test cases 10 through 15. + +bool +t10_15() +{ + return (*t10 == 11 + && *t11 == 22 + && *t12 == 33 + && *t13 == ' ' + && *t14 == 'o' + && *t15 == 'l'); +} + +// 16 Virtual table. + +class t16a +{ + public: + virtual + ~t16a() + { } + virtual int + t() + { return 83; } +}; + +class t16b : public t16a +{ + public: + virtual int + t() + { return 92; } +}; + +t16b t16v; + +bool +t16() +{ + return t16v.t() == 92; +} + +// 17 Inline function. + +inline int +t17a() +{ + return 74; +} + +bool +t17() +{ + return t17a() == 74; +} + +// 18 Call through pointer to method. + +class t18a +{ + public: + int + ta() + { return 65; } + + int + tb() + { return 90; } +}; + +t18a t18v; + +int +t18f(int (t18a::* p)()) +{ + return (t18v.*p)(); +} + +bool +t18() +{ + return t18f(&t18a::ta) == 65; +} + +// 19 Initialize variable to pointer to method. + +int (t18a::* t19v)() = &t18a::tb; + +bool +t19() +{ + return (t18v.*t19v)() == 90; +} + +// 20 Global constructor and destructor. + +class t20a +{ + public: + t20a() + : i(96) + { } + ~t20a() + { } + int + get() const + { return this->i; } + private: + int i; +}; + +t20a t20v; + +bool +t20() +{ + return t20v.get() == 96; +} + +// Main function. Initialize variables and call test functions. + +int +main() +{ + t3 = 33; + for (int i = 0; i < 13; ++i) + t6[i] = t4[i]; + + if (t1_6() + && t7(6) == 0 + && t8(0) == 0 + && t9(5) == 5 + && t10_15() + && t16() + && t17() + && t18() + && t19() + && t20()) + return 0; + else + return 1; +} diff --git a/binutils-2.25/gold/testsuite/binary.in b/binutils-2.25/gold/testsuite/binary.in new file mode 100644 index 00000000..cf5d6319 --- /dev/null +++ b/binutils-2.25/gold/testsuite/binary.in @@ -0,0 +1 @@ +This file is used for the binary test. diff --git a/binutils-2.25/gold/testsuite/binary_test.cc b/binutils-2.25/gold/testsuite/binary_test.cc new file mode 100644 index 00000000..d645536f --- /dev/null +++ b/binutils-2.25/gold/testsuite/binary_test.cc @@ -0,0 +1,46 @@ +// binary_test.cc -- test --format binary for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This program is linked with a small text file named binary.txt +// using --formatbinary. + +#include +#include +#include +#include + +extern char _binary_binary_txt_start[]; +extern char _binary_binary_txt_end[]; +extern char _binary_binary_txt_size[]; + +int +main(int, char**) +{ + int size = reinterpret_cast(_binary_binary_txt_size); + assert(size == _binary_binary_txt_end - _binary_binary_txt_start); + + const char* const txt = "This file is used for the binary test.\n"; + assert(strncmp(txt, _binary_binary_txt_start, size) == 0); + assert(static_cast(size) == strlen(txt)); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/binary_unittest.cc b/binutils-2.25/gold/testsuite/binary_unittest.cc new file mode 100644 index 00000000..fe109226 --- /dev/null +++ b/binutils-2.25/gold/testsuite/binary_unittest.cc @@ -0,0 +1,184 @@ +// binary_unittest.cc -- test Binary_to_elf + +// Copyright 2008, 2012 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "gold.h" + +#include +#include +#include +#include + +#include "elfcpp.h" +#include "parameters.h" +#include "errors.h" +#include "options.h" +#include "binary.h" +#include "object.h" +#include "descriptors.h" + +#include "test.h" +#include "testfile.h" + +namespace +{ + +ssize_t +read_all (int fd, unsigned char* buf, ssize_t size) +{ + ssize_t total_read = 0; + while (size > 0) + { + ssize_t nread = ::read(fd, buf, size); + if (nread < 0) + return nread; + if (nread == 0) + break; + buf += nread; + size -= nread; + total_read += nread; + } + return total_read; +} + +} // End anonymous namespace. + +namespace gold_testsuite +{ + +using namespace gold; + +template +bool +Sized_binary_test() +{ + parameters_clear_target(); + // We need a pretend Task. + const Task* task = reinterpret_cast(-1); + + // Use the executable itself as the binary data. + struct stat st; + CHECK(::stat(gold::program_name, &st) == 0); + int o = open_descriptor(-1, gold::program_name, O_RDONLY); + CHECK(o >= 0); + unsigned char* filedata = new unsigned char[st.st_size]; + CHECK(read_all(o, filedata, st.st_size) == static_cast(st.st_size)); + CHECK(::close(o) == 0); + + Binary_to_elf binary(static_cast(0xffff), size, big_endian, + gold::program_name); + + CHECK(binary.convert(task)); + + Input_file input_file(task, "test.o", binary.converted_data(), + binary.converted_size()); + Object* object = make_elf_object("test.o", &input_file, 0, + binary.converted_data(), + binary.converted_size(), NULL); + CHECK(object != NULL); + if (object == NULL) + return false; + + CHECK(!object->is_dynamic()); + CHECK(object->shnum() == 5); + CHECK(object->section_name(1) == ".data"); + CHECK(object->section_flags(1) == (elfcpp::SHF_ALLOC | elfcpp::SHF_WRITE)); + section_size_type len; + const unsigned char* contents = object->section_contents(1, &len, false); + CHECK(len == convert_to_section_size_type(st.st_size)); + CHECK(memcmp(filedata, contents, len) == 0); + + // Force the symbols to be read internally, so that + // symbol_section_and_value will work. + Read_symbols_data sd; + object->read_symbols(&sd); + delete sd.section_headers; + sd.section_headers = NULL; + delete sd.section_names; + sd.section_names = NULL; + delete sd.symbols; + sd.symbols = NULL; + delete sd.symbol_names; + sd.symbol_names = NULL; + + Sized_relobj_file* relobj = + static_cast*>(object); + typename Sized_relobj_file::Address value; + bool is_ordinary; + CHECK(relobj->symbol_section_and_value(0, &value, &is_ordinary) == 0); + CHECK(is_ordinary); + CHECK(value == 0); + CHECK(relobj->symbol_section_and_value(1, &value, &is_ordinary) == 1); + CHECK(is_ordinary); + CHECK(value == 0); + CHECK(relobj->symbol_section_and_value(2, &value, &is_ordinary) == 1); + CHECK(is_ordinary); + CHECK(static_cast(value) == st.st_size); + CHECK(relobj->symbol_section_and_value(3, &value, &is_ordinary) + == elfcpp::SHN_ABS); + CHECK(!is_ordinary); + CHECK(static_cast(value) == st.st_size); + + object->unlock(task); + return true; +} + +bool +Binary_test(Test_report*) +{ + Errors errors(gold::program_name); + set_parameters_errors(&errors); + + General_options options; + set_parameters_options(&options); + + int fail = 0; + +#ifdef HAVE_TARGET_32_LITTLE + if (!Sized_binary_test<32, false>()) + ++fail; + CHECK(¶meters->target() == target_test_pointer_32_little); +#endif + +#ifdef HAVE_TARGET_32_BIG + if (!Sized_binary_test<32, true>()) + ++fail; + CHECK(¶meters->target() == target_test_pointer_32_big); +#endif + +#ifdef HAVE_TARGET_64_LITTLE + if (!Sized_binary_test<64, false>()) + ++fail; + CHECK(¶meters->target() == target_test_pointer_64_little); +#endif + +#ifdef HAVE_TARGET_64_BIG + if (!Sized_binary_test<64, true>()) + ++fail; + CHECK(¶meters->target() == target_test_pointer_64_big); +#endif + + return fail == 0; +} + +Register_test binary_register("Binary", Binary_test); + +} // End namespace gold_testsuite. diff --git a/binutils-2.25/gold/testsuite/common_test_1.c b/binutils-2.25/gold/testsuite/common_test_1.c new file mode 100644 index 00000000..f5a28f4d --- /dev/null +++ b/binutils-2.25/gold/testsuite/common_test_1.c @@ -0,0 +1,75 @@ +/* common_test_1.c -- test common symbol sorting + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of a common symbol in the main program and a + versioned symbol in a shared library. The common symbol in the + main program should override the shared library symbol. */ + +#include + +/* Common symbols should be sorted by size, largest first, and then by + alignment, largest first. We mix up the names, because gas seems + to sort common symbols roughly by name. */ + +int c9[90]; +int c8[80]; +int c7[70]; +int c6[60]; +int c5[10]; +int c4[20]; +int c3[30]; +int c2[40]; +int c1[50]; + +int a1 __attribute__ ((aligned (1 << 9))); +int a2 __attribute__ ((aligned (1 << 8))); +int a3 __attribute__ ((aligned (1 << 7))); +int a4 __attribute__ ((aligned (1 << 6))); +int a5 __attribute__ ((aligned (1 << 1))); +int a6 __attribute__ ((aligned (1 << 2))); +int a7 __attribute__ ((aligned (1 << 3))); +int a8 __attribute__ ((aligned (1 << 4))); +int a9 __attribute__ ((aligned (1 << 5))); + +int +main (int argc __attribute__ ((unused)), char** argv __attribute__ ((unused))) +{ + assert (c5 > c4); + assert (c4 > c3); + assert (c3 > c2); + assert (c2 > c1); + assert (c1 > c6); + assert (c6 > c7); + assert (c7 > c8); + assert (c8 > c9); + + assert (&a1 < &a2); + assert (&a2 < &a3); + assert (&a3 < &a4); + assert (&a4 < &a9); + assert (&a9 < &a8); + assert (&a8 < &a7); + assert (&a7 < &a6); + assert (&a6 < &a5); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/common_test_1_v1.c b/binutils-2.25/gold/testsuite/common_test_1_v1.c new file mode 100644 index 00000000..86abc402 --- /dev/null +++ b/binutils-2.25/gold/testsuite/common_test_1_v1.c @@ -0,0 +1,79 @@ +/* common_test_1_v1.c -- test common symbol sorting + + Copyright 2008, 2011 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of a common symbol in the main program and a + versioned symbol in a shared library. The common symbol in the + main program should override the shared library symbol. + + This file is a modified version of the real test case, to be used + while testing the --incremental option. */ + +#include + +/* Common symbols should be sorted by size, largest first, and then by + alignment, largest first. We mix up the names, because gas seems + to sort common symbols roughly by name. */ + +int c9[90]; +int c8[80]; +int c7[70]; +int c6[60]; +int c5[10]; +int c4[20]; +int c3[30]; +int c2[40]; +int c1[50]; + +int a1 __attribute__ ((aligned (1 << 9))); +int a2 __attribute__ ((aligned (1 << 8))); +int a3 __attribute__ ((aligned (1 << 7))); +int a4 __attribute__ ((aligned (1 << 6))); +int a5 __attribute__ ((aligned (1 << 1))); +int a6 __attribute__ ((aligned (1 << 2))); +int a7 __attribute__ ((aligned (1 << 3))); +int a8 __attribute__ ((aligned (1 << 4))); +int a9 __attribute__ ((aligned (1 << 5))); + +int +main (int argc __attribute__ ((unused)), char** argv __attribute__ ((unused))) +{ + /* These tests are deliberately incorrect. */ + assert (c5 < c4); + assert (c4 < c3); + assert (c3 < c2); + assert (c2 < c1); + assert (c1 < c6); + assert (c6 < c7); + assert (c7 < c8); + assert (c8 < c9); + + assert (&a1 > &a2); + assert (&a2 > &a3); + assert (&a3 > &a4); + assert (&a4 > &a9); + assert (&a9 > &a8); + assert (&a8 > &a7); + assert (&a7 > &a6); + assert (&a6 > &a5); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/common_test_1_v2.c b/binutils-2.25/gold/testsuite/common_test_1_v2.c new file mode 100644 index 00000000..c66a647b --- /dev/null +++ b/binutils-2.25/gold/testsuite/common_test_1_v2.c @@ -0,0 +1,77 @@ +/* common_test_1_v2.c -- test common symbol sorting + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of a common symbol in the main program and a + versioned symbol in a shared library. The common symbol in the + main program should override the shared library symbol. */ + +#include + +/* Common symbols should be sorted by size, largest first, and then by + alignment, largest first. We mix up the names, because gas seems + to sort common symbols roughly by name. */ + +int c9[90]; +int c8[80]; +int c7[70]; +int c6[60]; +int c5[10]; +int c4[20]; +int c3[30]; +int c2[40]; +int c1[50]; + +int a1 __attribute__ ((aligned (1 << 9))); +int a2 __attribute__ ((aligned (1 << 8))); +int a3 __attribute__ ((aligned (1 << 7))); +int a4 __attribute__ ((aligned (1 << 6))); +int a5 __attribute__ ((aligned (1 << 1))); +int a6 __attribute__ ((aligned (1 << 2))); +int a7 __attribute__ ((aligned (1 << 3))); +int a8 __attribute__ ((aligned (1 << 4))); +int a9 __attribute__ ((aligned (1 << 5))); + +int +main (int argc __attribute__ ((unused)), char** argv __attribute__ ((unused))) +{ + // After an incremental update, all guarantees about ordering + // are null. + assert (c5 != c4); + assert (c4 != c3); + assert (c3 != c2); + assert (c2 != c1); + assert (c1 != c6); + assert (c6 != c7); + assert (c7 != c8); + assert (c8 != c9); + + assert (&a1 != &a2); + assert (&a2 != &a3); + assert (&a3 != &a4); + assert (&a4 != &a9); + assert (&a9 != &a8); + assert (&a8 != &a7); + assert (&a7 != &a6); + assert (&a6 != &a5); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/common_test_2.c b/binutils-2.25/gold/testsuite/common_test_2.c new file mode 100644 index 00000000..ef6d83dd --- /dev/null +++ b/binutils-2.25/gold/testsuite/common_test_2.c @@ -0,0 +1,33 @@ +/* common_test_2.c -- test common symbol name conflicts + + Copyright 2009 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* Call a function. The function will come from a shared library. */ + +extern void c1 (void); + +void fn (void); + +void +fn (void) +{ + c1 (); +} diff --git a/binutils-2.25/gold/testsuite/common_test_3.c b/binutils-2.25/gold/testsuite/common_test_3.c new file mode 100644 index 00000000..ba8960cd --- /dev/null +++ b/binutils-2.25/gold/testsuite/common_test_3.c @@ -0,0 +1,32 @@ +/* common_test_3.c -- test common symbol name conflicts + + Copyright 2009 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* Define a function with a default version whose name is the same as + a common symbol. This file will wind up in a shared library. */ + +void c1_v1 (void); + +void +c1_v1 (void) +{ +} +__asm__ (".symver c1_v1,c1@@VER1"); diff --git a/binutils-2.25/gold/testsuite/constructor_test.cc b/binutils-2.25/gold/testsuite/constructor_test.cc new file mode 100644 index 00000000..8889a835 --- /dev/null +++ b/binutils-2.25/gold/testsuite/constructor_test.cc @@ -0,0 +1,90 @@ +// constructor_test.cc -- a test case for gold global constructors + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This file just runs some global constructors and destructors. The +// last global destructor verifies that the state is as expected, and +// we assume that it runs correctly itself. + +#include +#include + +// These counters let us verify the state. + +int c1_count; +int c2_count; +int atexit_count; + +// This class verifies that there are no objects left when it is +// destroyed. Therefore, we can only have one instance of this +// object. + +class c1 +{ + public: + static int count; + + c1() + { ++c1_count; } + + ~c1() + { + --c1_count; + assert(c1_count == 0 && c2_count == 0 && atexit_count == 0); + } +}; + +c1 c1v; + +// A function called at atexit time. + +void +atexit_function() +{ + --atexit_count; + assert(atexit_count == c2_count); +} + +// A class which counts itself and also calls atexit. + +class c2 +{ + public: + c2() + { + assert(atexit_count == c2_count); + ++c2_count; + atexit(atexit_function); + ++atexit_count; + } + + ~c2() + { --c2_count; } +}; + +c2 c2v1; +c2 c2v2; + +int +main() +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/copy_test.cc b/binutils-2.25/gold/testsuite/copy_test.cc new file mode 100644 index 00000000..715529d6 --- /dev/null +++ b/binutils-2.25/gold/testsuite/copy_test.cc @@ -0,0 +1,43 @@ +// copy_test.cc -- test copy relocs for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include +#include + +// Misalign the BSS section. +static char c; + +// From copy_test_1.cc. +extern char b; + +// From copy_test_2.cc. +extern long long l; + +int +main() +{ + assert(c == 0); + assert(b == 1); + assert(l == 2); + assert((reinterpret_cast(&l) & 0x7) == 0); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/copy_test_1.cc b/binutils-2.25/gold/testsuite/copy_test_1.cc new file mode 100644 index 00000000..1471bb59 --- /dev/null +++ b/binutils-2.25/gold/testsuite/copy_test_1.cc @@ -0,0 +1,23 @@ +// copy_test_1.cc -- test copy relocs for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +char b = 1; diff --git a/binutils-2.25/gold/testsuite/copy_test_2.cc b/binutils-2.25/gold/testsuite/copy_test_2.cc new file mode 100644 index 00000000..01051509 --- /dev/null +++ b/binutils-2.25/gold/testsuite/copy_test_2.cc @@ -0,0 +1,23 @@ +// copy_test_2.cc -- test copy relocs variables for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +long long l = 2; diff --git a/binutils-2.25/gold/testsuite/copy_test_v1.cc b/binutils-2.25/gold/testsuite/copy_test_v1.cc new file mode 100644 index 00000000..63f7dfd5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/copy_test_v1.cc @@ -0,0 +1,47 @@ +// copy_test_v1.cc -- test copy relocs for gold + +// Copyright 2008, 2011 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This source file is used for testing the --incremental option. +// The object built from this source will be incrementally updated +// with the correct object built from copy_test.cc. + +#include +#include + +// Misalign the BSS section. +static char c; + +// From copy_test_1.cc. +extern char b; + +// From copy_test_2.cc. +extern long long l; + +int +main() +{ + assert(c == 0); + assert(b == 1); + assert(l == 3); // Deliberately incorrect. + assert((reinterpret_cast(&l) & 0x7) == 0); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/debug_msg.cc b/binutils-2.25/gold/testsuite/debug_msg.cc new file mode 100644 index 00000000..09120020 --- /dev/null +++ b/binutils-2.25/gold/testsuite/debug_msg.cc @@ -0,0 +1,96 @@ +// debug_msg.cc -- a test case for printing debug info for missing symbols. + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This file is constructed to have undefined references. In +// debug_msg.sh, we will try to link this file, and analyze the +// error messages that are produced. + +extern int undef_int; +extern float undef_float; +extern void undef_fn1(); +extern void undef_fn2(); + +int* badref1 = &undef_int; +static float* badref2 = &undef_float; +void (*fn_array[])() = +{ + undef_fn1, + undef_fn2 +}; + +template +int testfn(Foo x) +{ + undef_fn1(); + undef_fn2(); + return undef_int; +} + +class Base +{ + virtual void virtfn() { undef_fn1(); } +}; + +class Derived : public Base +{ + virtual void virtfn() { undef_fn2(); } +}; + +// This tests One Definition Rule (ODR) violations. +void SortAscending(int array[], int size); // in odr_violation1.cc +void SortDescending(int array[], int size); // in odr_violation2.cc +// This tests One Definition Rule (ODR) non-violations. +#include "odr_header2.h" +OdrBase* CreateOdrDerived1(); // in odr_violation1.cc +OdrBase* CreateOdrDerived2(); // in odr_violation2.cc + +extern "C" int OverriddenCFunction(int i); // in odr_violation*.cc + +inline int SometimesInlineFunction(int i) { // strong in odr_violation2.cc. + return i; +} + + +int main() +{ + testfn(5); + testfn(4.0); + + Base b; + Derived d; + + int kInput1[] = {1, 6, 9, 7, 3, 4, 2, 10, 5, 8}; + int kSize1 = sizeof(kInput1) / sizeof(int); + SortAscending(kInput1, kSize1); + + int kInput2[] = {1, 6, 9, 7, 3, 4, 2, 10, 5, 8}; + int kSize2 = sizeof(kInput2) / sizeof(int); + SortDescending(kInput2, kSize2); + + OverriddenCFunction(3); + SometimesInlineFunction(3); + + delete CreateOdrDerived1(); + delete CreateOdrDerived2(); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/debug_msg.sh b/binutils-2.25/gold/testsuite/debug_msg.sh new file mode 100755 index 00000000..1227f3f0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/debug_msg.sh @@ -0,0 +1,145 @@ +#!/bin/sh + +# debug_msg.sh -- a test case for printing debug info for missing symbols. + +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2013 +# Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with debug_msg.cc, a C++ source file constructed to +# have undefined references. We compile that file with debug +# information and then try to link it, and make sure the proper errors +# are displayed. The errors will be found in debug_msg.err. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +check_missing() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +# We don't know how the compiler might order these variables, so we +# can't test for the actual offset from .data, hence the regexp. +check debug_msg.err "debug_msg.o:debug_msg.cc:fn_array: error: undefined reference to 'undef_fn1()'" +check debug_msg.err "debug_msg.o:debug_msg.cc:fn_array: error: undefined reference to 'undef_fn2()'" +check debug_msg.err "debug_msg.o:debug_msg.cc:badref1: error: undefined reference to 'undef_int'" + +# These tests check only for the source file's file name (not the complete +# path) because use of -fdebug-prefix-map may change the path to the source +# file recorded in the objects. +check debug_msg.err ".*/debug_msg.cc:50: error: undefined reference to 'undef_fn1()'" +check debug_msg.err ".*/debug_msg.cc:55: error: undefined reference to 'undef_fn2()'" +check debug_msg.err ".*/debug_msg.cc:43: error: undefined reference to 'undef_fn1()'" +check debug_msg.err ".*/debug_msg.cc:44: error: undefined reference to 'undef_fn2()'" +if test "$DEFAULT_TARGET" != "powerpc" +then + check debug_msg.err ".*/debug_msg.cc:.*: error: undefined reference to 'undef_int'" +fi + +# Check we detected the ODR (One Definition Rule) violation. +check debug_msg.err ": symbol 'Ordering::operator()(int, int)' defined in multiple places (possible ODR violation):" +check debug_msg.err "odr_violation1.cc:6" +check debug_msg.err "odr_violation2.cc:12" + +# Check we don't have ODR false positives: +check_missing debug_msg.err "OdrDerived::~OdrDerived()" +check_missing debug_msg.err "__adjust_heap" +# We block ODR detection for combinations of C weak and strong +# symbols, to allow people to use the linker to override things. We +# still flag it for C++ symbols since those are more likely to be +# unintentional. +check_missing debug_msg.err ": symbol 'OverriddenCFunction' defined in multiple places (possible ODR violation):" +check_missing debug_msg.err "odr_violation1.cc:16" +check_missing debug_msg.err "odr_violation2.cc:23" +check debug_msg.err ": symbol 'SometimesInlineFunction(int)' defined in multiple places (possible ODR violation):" +check debug_msg.err "debug_msg.cc:68" +check debug_msg.err "odr_violation2.cc:27" + +# Check for the same error messages when using --compressed-debug-sections. +if test -r debug_msg_cdebug.err +then + check debug_msg_cdebug.err "debug_msg_cdebug.o:debug_msg.cc:fn_array: error: undefined reference to 'undef_fn1()'" + check debug_msg_cdebug.err "debug_msg_cdebug.o:debug_msg.cc:fn_array: error: undefined reference to 'undef_fn2()'" + check debug_msg_cdebug.err "debug_msg_cdebug.o:debug_msg.cc:badref1: error: undefined reference to 'undef_int'" + check debug_msg_cdebug.err ".*/debug_msg.cc:50: error: undefined reference to 'undef_fn1()'" + check debug_msg_cdebug.err ".*/debug_msg.cc:55: error: undefined reference to 'undef_fn2()'" + check debug_msg_cdebug.err ".*/debug_msg.cc:43: error: undefined reference to 'undef_fn1()'" + check debug_msg_cdebug.err ".*/debug_msg.cc:44: error: undefined reference to 'undef_fn2()'" + if test "$DEFAULT_TARGET" != "powerpc" + then + check debug_msg_cdebug.err ".*/debug_msg.cc:.*: error: undefined reference to 'undef_int'" + fi + check debug_msg_cdebug.err ": symbol 'Ordering::operator()(int, int)' defined in multiple places (possible ODR violation):" + check debug_msg_cdebug.err "odr_violation1.cc:6" + check debug_msg_cdebug.err "odr_violation2.cc:12" + check_missing debug_msg_cdebug.err "OdrDerived::~OdrDerived()" + check_missing debug_msg_cdebug.err "__adjust_heap" + check_missing debug_msg_cdebug.err ": symbol 'OverriddenCFunction' defined in multiple places (possible ODR violation):" + check_missing debug_msg_cdebug.err "odr_violation1.cc:16" + check_missing debug_msg_cdebug.err "odr_violation2.cc:23" + check debug_msg_cdebug.err ": symbol 'SometimesInlineFunction(int)' defined in multiple places (possible ODR violation):" + check debug_msg_cdebug.err "debug_msg.cc:68" + check debug_msg_cdebug.err "odr_violation2.cc:27" +fi + +# When linking together .so's, we don't catch the line numbers, but we +# still find all the undefined variables, and the ODR violation. +check debug_msg_so.err "debug_msg.so: error: undefined reference to 'undef_fn1()'" +check debug_msg_so.err "debug_msg.so: error: undefined reference to 'undef_fn2()'" +check debug_msg_so.err "debug_msg.so: error: undefined reference to 'undef_int'" +check debug_msg_so.err ": symbol 'Ordering::operator()(int, int)' defined in multiple places (possible ODR violation):" +check debug_msg_so.err "odr_violation1.cc:6" +check debug_msg_so.err "odr_violation2.cc:12" +check_missing debug_msg_so.err "OdrDerived::~OdrDerived()" +check_missing debug_msg_so.err "__adjust_heap" +check_missing debug_msg_so.err ": symbol 'OverriddenCFunction' defined in multiple places (possible ODR violation):" +check_missing debug_msg_so.err "odr_violation1.cc:16" +check_missing debug_msg_so.err "odr_violation2.cc:23" +check debug_msg_so.err ": symbol 'SometimesInlineFunction(int)' defined in multiple places (possible ODR violation):" +check debug_msg_so.err "debug_msg.cc:68" +check debug_msg_so.err "odr_violation2.cc:27" + +# These messages shouldn't need any debug info to detect: +check debug_msg_ndebug.err "debug_msg_ndebug.so: error: undefined reference to 'undef_fn1()'" +check debug_msg_ndebug.err "debug_msg_ndebug.so: error: undefined reference to 'undef_fn2()'" +check debug_msg_ndebug.err "debug_msg_ndebug.so: error: undefined reference to 'undef_int'" +# However, we shouldn't detect or declare any ODR violation +check_missing debug_msg_ndebug.err "(possible ODR violation)" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/discard_locals_relocatable_test.c b/binutils-2.25/gold/testsuite/discard_locals_relocatable_test.c new file mode 100644 index 00000000..f7f8b279 --- /dev/null +++ b/binutils-2.25/gold/testsuite/discard_locals_relocatable_test.c @@ -0,0 +1,52 @@ +/* discard_locals_relocatable_test.c -- test --discard-locals/--discard-all -r + + Copyright 2010 Free Software Foundation, Inc. + Viktor Kutuzov . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of a common symbol in the main program and a + versioned symbol in a shared library. The common symbol in the + main program should override the shared library symbol. */ + +/* Note: use GCC -fPIC option to compile this test. */ + +/* Local symbol format for generic ELF target. + Use GCC -Wa,-L option to preserve this local symbol + in the output object file. */ +asm (".Lshould_be_discarded:"); + +#ifdef __powerpc__ +/* Test wants to keep one local. Satisfy it. */ +#ifdef __powerpc64__ +asm (".reloc 0,R_PPC64_NONE,.LC0"); +#else +asm (".reloc 0,R_PPC_NONE,.LC0"); +#endif +#endif + +extern void print_func (const char* s); + +extern int func (void); + +int +func (void) +{ + print_func ("local string"); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/discard_locals_test.c b/binutils-2.25/gold/testsuite/discard_locals_test.c new file mode 100644 index 00000000..b7224471 --- /dev/null +++ b/binutils-2.25/gold/testsuite/discard_locals_test.c @@ -0,0 +1,40 @@ +/* discard_locals_test.c -- test --discard-locals option. + + Copyright 2009 Free Software Foundation, Inc. + Doug Kwan . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of a common symbol in the main program and a + versioned symbol in a shared library. The common symbol in the + main program should override the shared library symbol. */ + +/* Local symbol format for generic ELF target. */ +asm (".Lshould_be_discarded:"); + +#ifdef __i386__ +/* Additional local symbol format for the i386 target. */ +asm (".Xshould_be_discarded:"); +#endif + +int +main (void) +{ + return 0; +} + diff --git a/binutils-2.25/gold/testsuite/discard_locals_test.sh b/binutils-2.25/gold/testsuite/discard_locals_test.sh new file mode 100755 index 00000000..3fc679a4 --- /dev/null +++ b/binutils-2.25/gold/testsuite/discard_locals_test.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +# discard_locals_test.sh -- test that local symbols are discarded. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Doug Kwan + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with exclude_libs_test.c, a C source file +# linked with option -Wl,--exclude-libs. We run readelf on +# the resulting executable and check that symbols from two test library +# archives are correctly hidden or left unmodified. + +check_discarded() +{ + file=$1 + sym=$2 + + found=`egrep $sym $file` + if test -n "$found"; then + echo "These local symbols are not discarded in $file:" + echo "$found" + exit 1 + fi +} + +check_non_discarded() +{ + file=$1 + sym=$2 + + found=`egrep $sym $file` + if test -z "$found"; then + echo "This local symbol is discarded in $file:" + echo "$2" + exit 1 + fi +} + +check_discarded "discard_locals_test.syms" "should_be_discarded" + +check_non_discarded "discard_locals_relocatable_test1.syms" ".LC0" +check_discarded "discard_locals_relocatable_test1.syms" "should_be_discarded" +check_non_discarded "discard_locals_relocatable_test2.syms" ".LC0" +check_discarded "discard_locals_relocatable_test2.syms" "should_be_discarded" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/dwp_test.h b/binutils-2.25/gold/testsuite/dwp_test.h new file mode 100644 index 00000000..37256d34 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test.h @@ -0,0 +1,87 @@ +// dwp_test.h -- a test case for dwp, header file -*- C++ -*- + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Adapted from two_file_test.h. + +class C1 +{ + public: + bool testcase1(); + bool t1a(); + int t1_2(); + bool testcase2(); + bool testcase3(); + bool testcase4(); + int member1; +}; + +class C2 +{ + public: + bool testcase1(); + bool testcase2(); + bool testcase3(); + bool testcase4(); + int member1; +}; + +class C3 +{ + public: + bool testcase1(); + bool testcase2(); + bool testcase3(); + bool (*f4())(); + int member1; +}; + +extern C3 c3; + +extern int v2; +extern int v3; +extern char v4[]; +extern char v5[]; + +extern int f10(); +extern int f11a(); +extern int f11b(int (*)()); +extern bool t12(); + +extern bool t13(); +inline void f13i() { } +extern void (*f13())(); + +#define TEST_STRING_CONSTANT "test string constant" +extern const char* f14(); + +#define TEST_WIDE_STRING_CONSTANT L"test wide string constant" +extern const wchar_t* f15(); + +extern bool t16(); +extern bool t16a(); + +extern bool t17(); +extern const char* t17data[]; +#define T17_COUNT 5 + +extern bool t18(); +extern const char* f18(int); diff --git a/binutils-2.25/gold/testsuite/dwp_test_1.cc b/binutils-2.25/gold/testsuite/dwp_test_1.cc new file mode 100644 index 00000000..71fbc5b3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_1.cc @@ -0,0 +1,210 @@ +// dwp_test_1.cc -- a test case for dwp + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Adapted from two_file_test_1.cc. + +#include "dwp_test.h" + +// 1 Code in file 1 calls code in file 2. + +bool +C1::testcase1() +{ + return t1_2() == 123; +} + +// 2 Code in file 1 refers to global data in file 2. + +bool +C1::testcase2() +{ + return v2 == 456; +} + +// 3 Code in file 1 referes to common symbol in file 2. + +bool +C1::testcase3() +{ + return v3 == 789; +} + +// 4 Code in file 1 refers to offset within global data in file 2. + +bool +C1::testcase4() +{ + return v4[5] == ','; +} + +// 5 Code in file 1 refers to offset within common symbol in file 2. + +bool +C2::testcase1() +{ + return v5[7] == 'w'; +} + +// 6 Data in file 1 refers to global data in file 2. + +int* p6 = &v2; + +bool +C2::testcase2() +{ + return *p6 == 456; +} + +// 7 Data in file 1 refers to common symbol in file 2. + +int* p7 = &v3; + +bool +C2::testcase3() +{ + return *p7 == 789; +} + +// 8 Data in file 1 refers to offset within global data in file 2. + +char* p8 = &v4[6]; + +bool +C2::testcase4() +{ + return *p8 == ' '; +} + +// 9 Data in file 1 refers to offset within common symbol in file 2. + +char* p9 = &v5[8]; + +bool +C3::testcase1() +{ + return *p9 == 'o'; +} + +// 10 Data in file 1 refers to function in file 2. + +int (*pfn)() = &f10; + +bool +C3::testcase2() +{ + return (*pfn)() == 135; +} + +// 11 Pass function pointer from file 1 to file 2. + +int +f11a() +{ + return 246; +} + +bool +C3::testcase3() +{ + return f11b(&f11a) == 246; +} + +// 12 Compare address of function for equality in both files. + +bool +t12() +{ + return &t12 == c3.f4(); +} + +// 13 Compare address of inline function for equality in both files. + +bool +t13() +{ + return &f13i == f13(); +} + +// 14 Compare string constants in file 1 and file 2. + +bool +t14() +{ + const char* s1 = TEST_STRING_CONSTANT; + const char* s2 = f14(); + while (*s1 != '\0') + if (*s1++ != *s2++) + return false; + return *s2 == '\0'; +} + +// 15 Compare wide string constants in file 1 and file 2. + +bool +t15() +{ + const wchar_t* s1 = TEST_WIDE_STRING_CONSTANT; + const wchar_t* s2 = f15(); + while (*s1 != '\0') + if (*s1++ != *s2++) + return false; + return *s2 == '\0'; +} + +// 16 Call a function directly after its address has been taken. + +bool +t16() +{ + return f10() == 135; +} + +// 17 File 1 checks array of string constants defined in file 2. + +bool +t17() +{ + char c = 'a'; + for (int i = 0; i < T17_COUNT; ++i) + { + if (t17data[i][0] != c || t17data[i][1] != '\0') + return false; + ++c; + } + return true; +} + +// 18 File 1 checks string constants referenced in code in file 2. + +bool +t18() +{ + char c = 'a'; + for (int i = 0; i < T17_COUNT; ++i) + { + const char* s = f18(i); + if (s[0] != c || s[1] != '\0') + return false; + ++c; + } + return true; +} diff --git a/binutils-2.25/gold/testsuite/dwp_test_1.s b/binutils-2.25/gold/testsuite/dwp_test_1.s new file mode 100644 index 00000000..d3a898dc --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_1.s @@ -0,0 +1,2660 @@ + .file "dwp_test_1.cc" + .text +.Ltext0: + .section .text._Z4f13iv,"axG",@progbits,_Z4f13iv,comdat + .weak _Z4f13iv + .type _Z4f13iv, @function +_Z4f13iv: +.LFB0: + .file 1 "dwp_test.h" + .loc 1 70 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 1 70 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE0: + .size _Z4f13iv, .-_Z4f13iv + .text + .align 2 + .globl _ZN2C19testcase1Ev + .type _ZN2C19testcase1Ev, @function +_ZN2C19testcase1Ev: +.LFB1: + .file 2 "dwp_test_1.cc" + .loc 2 31 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp + movq %rdi, -8(%rbp) + .loc 2 32 0 + movq -8(%rbp), %rax + movq %rax, %rdi + call _ZN2C14t1_2Ev + cmpl $123, %eax + sete %al + .loc 2 33 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE1: + .size _ZN2C19testcase1Ev, .-_ZN2C19testcase1Ev + .align 2 + .globl _ZN2C19testcase2Ev + .type _ZN2C19testcase2Ev, @function +_ZN2C19testcase2Ev: +.LFB2: + .loc 2 39 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 40 0 + movl v2(%rip), %eax + cmpl $456, %eax + sete %al + .loc 2 41 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE2: + .size _ZN2C19testcase2Ev, .-_ZN2C19testcase2Ev + .align 2 + .globl _ZN2C19testcase3Ev + .type _ZN2C19testcase3Ev, @function +_ZN2C19testcase3Ev: +.LFB3: + .loc 2 47 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 48 0 + movl v3(%rip), %eax + cmpl $789, %eax + sete %al + .loc 2 49 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE3: + .size _ZN2C19testcase3Ev, .-_ZN2C19testcase3Ev + .align 2 + .globl _ZN2C19testcase4Ev + .type _ZN2C19testcase4Ev, @function +_ZN2C19testcase4Ev: +.LFB4: + .loc 2 55 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 56 0 + movzbl v4+5(%rip), %eax + cmpb $44, %al + sete %al + .loc 2 57 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE4: + .size _ZN2C19testcase4Ev, .-_ZN2C19testcase4Ev + .align 2 + .globl _ZN2C29testcase1Ev + .type _ZN2C29testcase1Ev, @function +_ZN2C29testcase1Ev: +.LFB5: + .loc 2 63 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 64 0 + movzbl v5+7(%rip), %eax + cmpb $119, %al + sete %al + .loc 2 65 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE5: + .size _ZN2C29testcase1Ev, .-_ZN2C29testcase1Ev + .globl p6 + .data + .align 8 + .type p6, @object + .size p6, 8 +p6: + .quad v2 + .text + .align 2 + .globl _ZN2C29testcase2Ev + .type _ZN2C29testcase2Ev, @function +_ZN2C29testcase2Ev: +.LFB6: + .loc 2 73 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 74 0 + movq p6(%rip), %rax + movl (%rax), %eax + cmpl $456, %eax + sete %al + .loc 2 75 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE6: + .size _ZN2C29testcase2Ev, .-_ZN2C29testcase2Ev + .globl p7 + .data + .align 8 + .type p7, @object + .size p7, 8 +p7: + .quad v3 + .text + .align 2 + .globl _ZN2C29testcase3Ev + .type _ZN2C29testcase3Ev, @function +_ZN2C29testcase3Ev: +.LFB7: + .loc 2 83 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 84 0 + movq p7(%rip), %rax + movl (%rax), %eax + cmpl $789, %eax + sete %al + .loc 2 85 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE7: + .size _ZN2C29testcase3Ev, .-_ZN2C29testcase3Ev + .globl p8 + .data + .align 8 + .type p8, @object + .size p8, 8 +p8: + .quad v4+6 + .text + .align 2 + .globl _ZN2C29testcase4Ev + .type _ZN2C29testcase4Ev, @function +_ZN2C29testcase4Ev: +.LFB8: + .loc 2 93 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 94 0 + movq p8(%rip), %rax + movzbl (%rax), %eax + cmpb $32, %al + sete %al + .loc 2 95 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE8: + .size _ZN2C29testcase4Ev, .-_ZN2C29testcase4Ev + .globl p9 + .data + .align 8 + .type p9, @object + .size p9, 8 +p9: + .quad v5+8 + .text + .align 2 + .globl _ZN2C39testcase1Ev + .type _ZN2C39testcase1Ev, @function +_ZN2C39testcase1Ev: +.LFB9: + .loc 2 103 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 104 0 + movq p9(%rip), %rax + movzbl (%rax), %eax + cmpb $111, %al + sete %al + .loc 2 105 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE9: + .size _ZN2C39testcase1Ev, .-_ZN2C39testcase1Ev + .globl pfn + .data + .align 8 + .type pfn, @object + .size pfn, 8 +pfn: + .quad _Z3f10v + .text + .align 2 + .globl _ZN2C39testcase2Ev + .type _ZN2C39testcase2Ev, @function +_ZN2C39testcase2Ev: +.LFB10: + .loc 2 113 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp + movq %rdi, -8(%rbp) + .loc 2 114 0 + movq pfn(%rip), %rax + call *%rax + cmpl $135, %eax + sete %al + .loc 2 115 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE10: + .size _ZN2C39testcase2Ev, .-_ZN2C39testcase2Ev + .globl _Z4f11av + .type _Z4f11av, @function +_Z4f11av: +.LFB11: + .loc 2 121 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 2 122 0 + movl $246, %eax + .loc 2 123 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE11: + .size _Z4f11av, .-_Z4f11av + .align 2 + .globl _ZN2C39testcase3Ev + .type _ZN2C39testcase3Ev, @function +_ZN2C39testcase3Ev: +.LFB12: + .loc 2 127 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp + movq %rdi, -8(%rbp) + .loc 2 128 0 + movl $_Z4f11av, %edi + call _Z4f11bPFivE + cmpl $246, %eax + sete %al + .loc 2 129 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE12: + .size _ZN2C39testcase3Ev, .-_ZN2C39testcase3Ev + .globl _Z3t12v + .type _Z3t12v, @function +_Z3t12v: +.LFB13: + .loc 2 135 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 2 136 0 + movl $c3, %edi + call _ZN2C32f4Ev + cmpq $_Z3t12v, %rax + sete %al + .loc 2 137 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE13: + .size _Z3t12v, .-_Z3t12v + .globl _Z3t13v + .type _Z3t13v, @function +_Z3t13v: +.LFB14: + .loc 2 143 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 2 144 0 + call _Z3f13v + cmpq $_Z4f13iv, %rax + sete %al + .loc 2 145 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE14: + .size _Z3t13v, .-_Z3t13v + .section .rodata +.LC0: + .string "test string constant" + .text + .globl _Z3t14v + .type _Z3t14v, @function +_Z3t14v: +.LFB15: + .loc 2 151 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp +.LBB2: + .loc 2 152 0 + movq $.LC0, -8(%rbp) + .loc 2 153 0 + call _Z3f14v + movq %rax, -16(%rbp) + .loc 2 154 0 + jmp .L31 +.L33: + .loc 2 155 0 + movq -8(%rbp), %rax + movzbl (%rax), %edx + movq -16(%rbp), %rax + movzbl (%rax), %eax + cmpb %al, %dl + setne %al + addq $1, -8(%rbp) + addq $1, -16(%rbp) + testb %al, %al + je .L31 + .loc 2 156 0 + movl $0, %eax + jmp .L32 +.L31: + .loc 2 154 0 discriminator 1 + movq -8(%rbp), %rax + movzbl (%rax), %eax + testb %al, %al + setne %al + testb %al, %al + jne .L33 + .loc 2 157 0 + movq -16(%rbp), %rax + movzbl (%rax), %eax + testb %al, %al + sete %al +.L32: +.LBE2: + .loc 2 158 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE15: + .size _Z3t14v, .-_Z3t14v + .section .rodata + .align 8 +.LC1: + .string "t" + .string "" + .string "" + .string "e" + .string "" + .string "" + .string "s" + .string "" + .string "" + .string "t" + .string "" + .string "" + .string " " + .string "" + .string "" + .string "w" + .string "" + .string "" + .string "i" + .string "" + .string "" + .string "d" + .string "" + .string "" + .string "e" + .string "" + .string "" + .string " " + .string "" + .string "" + .string "s" + .string "" + .string "" + .string "t" + .string "" + .string "" + .string "r" + .string "" + .string "" + .string "i" + .string "" + .string "" + .string "n" + .string "" + .string "" + .string "g" + .string "" + .string "" + .string " " + .string "" + .string "" + .string "c" + .string "" + .string "" + .string "o" + .string "" + .string "" + .string "n" + .string "" + .string "" + .string "s" + .string "" + .string "" + .string "t" + .string "" + .string "" + .string "a" + .string "" + .string "" + .string "n" + .string "" + .string "" + .string "t" + .string "" + .string "" + .string "" + .string "" + .string "" + .string "" + .text + .globl _Z3t15v + .type _Z3t15v, @function +_Z3t15v: +.LFB16: + .loc 2 164 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp +.LBB3: + .loc 2 165 0 + movq $.LC1, -8(%rbp) + .loc 2 166 0 + call _Z3f15v + movq %rax, -16(%rbp) + .loc 2 167 0 + jmp .L35 +.L37: + .loc 2 168 0 + movq -8(%rbp), %rax + movl (%rax), %edx + movq -16(%rbp), %rax + movl (%rax), %eax + cmpl %eax, %edx + setne %al + addq $4, -8(%rbp) + addq $4, -16(%rbp) + testb %al, %al + je .L35 + .loc 2 169 0 + movl $0, %eax + jmp .L36 +.L35: + .loc 2 167 0 discriminator 1 + movq -8(%rbp), %rax + movl (%rax), %eax + testl %eax, %eax + setne %al + testb %al, %al + jne .L37 + .loc 2 170 0 + movq -16(%rbp), %rax + movl (%rax), %eax + testl %eax, %eax + sete %al +.L36: +.LBE3: + .loc 2 171 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE16: + .size _Z3t15v, .-_Z3t15v + .globl _Z3t16v + .type _Z3t16v, @function +_Z3t16v: +.LFB17: + .loc 2 177 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 2 178 0 + call _Z3f10v + cmpl $135, %eax + sete %al + .loc 2 179 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE17: + .size _Z3t16v, .-_Z3t16v + .globl _Z3t17v + .type _Z3t17v, @function +_Z3t17v: +.LFB18: + .loc 2 185 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 +.LBB4: + .loc 2 186 0 + movb $97, -1(%rbp) +.LBB5: + .loc 2 187 0 + movl $0, -8(%rbp) + jmp .L41 +.L45: + .loc 2 189 0 + movl -8(%rbp), %eax + cltq + movq t17data(,%rax,8), %rax + movzbl (%rax), %eax + cmpb -1(%rbp), %al + jne .L42 + .loc 2 189 0 is_stmt 0 discriminator 1 + movl -8(%rbp), %eax + cltq + movq t17data(,%rax,8), %rax + addq $1, %rax + movzbl (%rax), %eax + testb %al, %al + je .L43 +.L42: + .loc 2 190 0 is_stmt 1 + movl $0, %eax + jmp .L44 +.L43: + .loc 2 191 0 + addb $1, -1(%rbp) + .loc 2 187 0 + addl $1, -8(%rbp) +.L41: + .loc 2 187 0 is_stmt 0 discriminator 1 + cmpl $4, -8(%rbp) + setle %al + testb %al, %al + jne .L45 +.LBE5: + .loc 2 193 0 is_stmt 1 + movl $1, %eax +.L44: +.LBE4: + .loc 2 194 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE18: + .size _Z3t17v, .-_Z3t17v + .globl _Z3t18v + .type _Z3t18v, @function +_Z3t18v: +.LFB19: + .loc 2 200 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp +.LBB6: + .loc 2 201 0 + movb $97, -1(%rbp) +.LBB7: + .loc 2 202 0 + movl $0, -8(%rbp) + jmp .L47 +.L51: +.LBB8: + .loc 2 204 0 + movl -8(%rbp), %eax + movl %eax, %edi + call _Z3f18i + movq %rax, -16(%rbp) + .loc 2 205 0 + movq -16(%rbp), %rax + movzbl (%rax), %eax + cmpb -1(%rbp), %al + jne .L48 + .loc 2 205 0 is_stmt 0 discriminator 1 + movq -16(%rbp), %rax + addq $1, %rax + movzbl (%rax), %eax + testb %al, %al + je .L49 +.L48: + .loc 2 206 0 is_stmt 1 + movl $0, %eax + jmp .L50 +.L49: + .loc 2 207 0 + addb $1, -1(%rbp) +.LBE8: + .loc 2 202 0 + addl $1, -8(%rbp) +.L47: + .loc 2 202 0 is_stmt 0 discriminator 1 + cmpl $4, -8(%rbp) + setle %al + testb %al, %al + jne .L51 +.LBE7: + .loc 2 209 0 is_stmt 1 + movl $1, %eax +.L50: +.LBE6: + .loc 2 210 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE19: + .size _Z3t18v, .-_Z3t18v +.Letext0: + .section .debug_types.dwo,"G",@progbits,wt.bb2916f0c1bd34b5,comdat + .long 0xc1 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0x8a + .byte 0xda + .byte 0x59 + .byte 0x6e + .byte 0x4d + .byte 0x5c + .byte 0xa + .byte 0x88 + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C3" + .byte 0x4 + .byte 0x1 + .byte 0x2f + .long 0xa4 + .uleb128 0x3 + .uleb128 0x6 + .byte 0x1 + .byte 0x36 + .long 0xa4 + .byte 0 + .byte 0x1 + .uleb128 0x4 + .uleb128 0 + .byte 0x1 + .byte 0x32 + .uleb128 0x2 + .long 0xab + .byte 0x1 + .long 0x4c + .long 0x52 + .uleb128 0x5 + .long 0xb3 + .byte 0 + .uleb128 0x4 + .uleb128 0x1 + .byte 0x1 + .byte 0x33 + .uleb128 0x3 + .long 0xab + .byte 0x1 + .long 0x64 + .long 0x6a + .uleb128 0x5 + .long 0xb3 + .byte 0 + .uleb128 0x4 + .uleb128 0x4 + .byte 0x1 + .byte 0x34 + .uleb128 0x5 + .long 0xab + .byte 0x1 + .long 0x7c + .long 0x82 + .uleb128 0x5 + .long 0xb3 + .byte 0 + .uleb128 0x6 + .string "f4" + .byte 0x1 + .byte 0x35 + .string "_ZN2C32f4Ev" + .long 0xb9 + .byte 0x1 + .long 0x9d + .uleb128 0x5 + .long 0xb3 + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .uleb128 0x8 + .byte 0x8 + .long 0xbf + .uleb128 0x9 + .long 0xab + .byte 0 + .section .debug_types,"G",@progbits,wt.bb2916f0c1bd34b5,comdat + .long 0x6e + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_1.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_types.dwo,"G",@progbits,wt.66526f88bcc798ab,comdat + .long 0xa9 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0x66 + .byte 0x52 + .byte 0x6f + .byte 0x88 + .byte 0xbc + .byte 0xc7 + .byte 0x98 + .byte 0xab + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0x4b + .byte 0xf9 + .byte 0xce + .byte 0xbf + .byte 0xd8 + .byte 0xf0 + .byte 0x4a + .byte 0xae + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C2" + .byte 0x4 + .byte 0x1 + .byte 0x25 + .long 0x97 + .uleb128 0x3 + .uleb128 0x6 + .byte 0x1 + .byte 0x2c + .long 0x97 + .byte 0 + .byte 0x1 + .uleb128 0x4 + .uleb128 0 + .byte 0x1 + .byte 0x28 + .uleb128 0x7 + .long 0x9e + .byte 0x1 + .long 0x4c + .long 0x52 + .uleb128 0x5 + .long 0xa6 + .byte 0 + .uleb128 0x4 + .uleb128 0x1 + .byte 0x1 + .byte 0x29 + .uleb128 0x8 + .long 0x9e + .byte 0x1 + .long 0x64 + .long 0x6a + .uleb128 0x5 + .long 0xa6 + .byte 0 + .uleb128 0x4 + .uleb128 0x4 + .byte 0x1 + .byte 0x2a + .uleb128 0x9 + .long 0x9e + .byte 0x1 + .long 0x7c + .long 0x82 + .uleb128 0x5 + .long 0xa6 + .byte 0 + .uleb128 0xa + .uleb128 0xa + .byte 0x1 + .byte 0x2b + .uleb128 0xb + .long 0x9e + .byte 0x1 + .long 0x90 + .uleb128 0x5 + .long 0xa6 + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .byte 0 + .section .debug_types,"G",@progbits,wt.66526f88bcc798ab,comdat + .long 0x6e + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0x66 + .byte 0x52 + .byte 0x6f + .byte 0x88 + .byte 0xbc + .byte 0xc7 + .byte 0x98 + .byte 0xab + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_1.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_types.dwo,"G",@progbits,wt.c419a9b7a4a2fab5,comdat + .long 0xf9 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0xe3 + .byte 0xad + .byte 0x5 + .byte 0x3b + .byte 0x75 + .byte 0xeb + .byte 0xfb + .byte 0xc7 + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C1" + .byte 0x4 + .byte 0x1 + .byte 0x19 + .long 0xe7 + .uleb128 0x3 + .uleb128 0x6 + .byte 0x1 + .byte 0x22 + .long 0xe7 + .byte 0 + .byte 0x1 + .uleb128 0x4 + .uleb128 0 + .byte 0x1 + .byte 0x1c + .uleb128 0xc + .long 0xee + .byte 0x1 + .long 0x4c + .long 0x52 + .uleb128 0x5 + .long 0xf6 + .byte 0 + .uleb128 0xb + .string "t1a" + .byte 0x1 + .byte 0x1d + .string "_ZN2C13t1aEv" + .long 0xee + .byte 0x1 + .long 0x73 + .long 0x79 + .uleb128 0x5 + .long 0xf6 + .byte 0 + .uleb128 0xb + .string "t1_2" + .byte 0x1 + .byte 0x1e + .string "_ZN2C14t1_2Ev" + .long 0xe7 + .byte 0x1 + .long 0x9c + .long 0xa2 + .uleb128 0x5 + .long 0xf6 + .byte 0 + .uleb128 0x4 + .uleb128 0x1 + .byte 0x1 + .byte 0x1f + .uleb128 0xd + .long 0xee + .byte 0x1 + .long 0xb4 + .long 0xba + .uleb128 0x5 + .long 0xf6 + .byte 0 + .uleb128 0x4 + .uleb128 0x4 + .byte 0x1 + .byte 0x20 + .uleb128 0xe + .long 0xee + .byte 0x1 + .long 0xcc + .long 0xd2 + .uleb128 0x5 + .long 0xf6 + .byte 0 + .uleb128 0xa + .uleb128 0xa + .byte 0x1 + .byte 0x21 + .uleb128 0xf + .long 0xee + .byte 0x1 + .long 0xe0 + .uleb128 0x5 + .long 0xf6 + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .byte 0 + .section .debug_types,"G",@progbits,wt.c419a9b7a4a2fab5,comdat + .long 0x6e + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_1.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_info.dwo,"e",@progbits +.Ldebug_info0: + .long 0x5af + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .uleb128 0xc + .string "GNU C++ 4.7.x-google 20120720 (prerelease)" + .byte 0x4 + .string "dwp_test_1.cc" + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .byte 0x27 + .byte 0x37 + .byte 0xdc + .byte 0x2f + .byte 0x9 + .byte 0xc6 + .byte 0xf9 + .byte 0x52 + .uleb128 0xd + .string "C1" + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .long 0xc6 + .uleb128 0xe + .uleb128 0 + .byte 0x1 + .byte 0x1c + .uleb128 0xc + .long 0xcd + .byte 0x1 + .uleb128 0xe + .uleb128 0x1 + .byte 0x1 + .byte 0x1f + .uleb128 0xd + .long 0xcd + .byte 0x1 + .uleb128 0xe + .uleb128 0x4 + .byte 0x1 + .byte 0x20 + .uleb128 0xe + .long 0xcd + .byte 0x1 + .uleb128 0xe + .uleb128 0xa + .byte 0x1 + .byte 0x21 + .uleb128 0xf + .long 0xcd + .byte 0x1 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0xf + .byte 0x8 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .uleb128 0xd + .string "C2" + .byte 0x66 + .byte 0x52 + .byte 0x6f + .byte 0x88 + .byte 0xbc + .byte 0xc7 + .byte 0x98 + .byte 0xab + .long 0x118 + .uleb128 0xe + .uleb128 0 + .byte 0x1 + .byte 0x28 + .uleb128 0x7 + .long 0xcd + .byte 0x1 + .uleb128 0xe + .uleb128 0x1 + .byte 0x1 + .byte 0x29 + .uleb128 0x8 + .long 0xcd + .byte 0x1 + .uleb128 0xe + .uleb128 0x4 + .byte 0x1 + .byte 0x2a + .uleb128 0x9 + .long 0xcd + .byte 0x1 + .uleb128 0xe + .uleb128 0xa + .byte 0x1 + .byte 0x2b + .uleb128 0xb + .long 0xcd + .byte 0x1 + .byte 0 + .uleb128 0xf + .byte 0x8 + .byte 0x66 + .byte 0x52 + .byte 0x6f + .byte 0x88 + .byte 0xbc + .byte 0xc7 + .byte 0x98 + .byte 0xab + .uleb128 0xd + .string "C3" + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0x151 + .uleb128 0xe + .uleb128 0 + .byte 0x1 + .byte 0x32 + .uleb128 0x2 + .long 0xcd + .byte 0x1 + .uleb128 0xe + .uleb128 0x1 + .byte 0x1 + .byte 0x33 + .uleb128 0x3 + .long 0xcd + .byte 0x1 + .uleb128 0xe + .uleb128 0x4 + .byte 0x1 + .byte 0x34 + .uleb128 0x5 + .long 0xcd + .byte 0x1 + .byte 0 + .uleb128 0xf + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .uleb128 0x10 + .string "f13i" + .byte 0x1 + .byte 0x46 + .string "_Z4f13iv" + .uleb128 0 + .quad .LFE0-.LFB0 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x11 + .long 0x9d + .byte 0x2 + .byte 0x1e + .uleb128 0x1 + .quad .LFE1-.LFB1 + .uleb128 0x1 + .byte 0x9c + .long 0x191 + .long 0x19b + .uleb128 0x12 + .uleb128 0x10 + .long 0x19b + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x13 + .long 0xd5 + .uleb128 0x14 + .long 0xa7 + .byte 0x2 + .byte 0x26 + .uleb128 0x2 + .quad .LFE2-.LFB2 + .uleb128 0x1 + .byte 0x9c + .long 0x1ba + .long 0x1c4 + .uleb128 0x12 + .uleb128 0x10 + .long 0x19b + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x14 + .long 0xb1 + .byte 0x2 + .byte 0x2e + .uleb128 0x3 + .quad .LFE3-.LFB3 + .uleb128 0x1 + .byte 0x9c + .long 0x1de + .long 0x1e8 + .uleb128 0x12 + .uleb128 0x10 + .long 0x19b + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x14 + .long 0xbb + .byte 0x2 + .byte 0x36 + .uleb128 0x4 + .quad .LFE4-.LFB4 + .uleb128 0x1 + .byte 0x9c + .long 0x202 + .long 0x20c + .uleb128 0x12 + .uleb128 0x10 + .long 0x19b + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x14 + .long 0xef + .byte 0x2 + .byte 0x3e + .uleb128 0x5 + .quad .LFE5-.LFB5 + .uleb128 0x1 + .byte 0x9c + .long 0x226 + .long 0x230 + .uleb128 0x12 + .uleb128 0x10 + .long 0x230 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x13 + .long 0x118 + .uleb128 0x14 + .long 0xf9 + .byte 0x2 + .byte 0x48 + .uleb128 0x6 + .quad .LFE6-.LFB6 + .uleb128 0x1 + .byte 0x9c + .long 0x24f + .long 0x259 + .uleb128 0x12 + .uleb128 0x10 + .long 0x230 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x14 + .long 0x103 + .byte 0x2 + .byte 0x52 + .uleb128 0x7 + .quad .LFE7-.LFB7 + .uleb128 0x1 + .byte 0x9c + .long 0x273 + .long 0x27d + .uleb128 0x12 + .uleb128 0x10 + .long 0x230 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x14 + .long 0x10d + .byte 0x2 + .byte 0x5c + .uleb128 0x8 + .quad .LFE8-.LFB8 + .uleb128 0x1 + .byte 0x9c + .long 0x297 + .long 0x2a1 + .uleb128 0x12 + .uleb128 0x10 + .long 0x230 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x14 + .long 0x132 + .byte 0x2 + .byte 0x66 + .uleb128 0x9 + .quad .LFE9-.LFB9 + .uleb128 0x1 + .byte 0x9c + .long 0x2bb + .long 0x2c5 + .uleb128 0x12 + .uleb128 0x10 + .long 0x2c5 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x13 + .long 0x151 + .uleb128 0x11 + .long 0x13c + .byte 0x2 + .byte 0x70 + .uleb128 0xa + .quad .LFE10-.LFB10 + .uleb128 0x1 + .byte 0x9c + .long 0x2e4 + .long 0x2ee + .uleb128 0x12 + .uleb128 0x10 + .long 0x2c5 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x15 + .string "f11a" + .byte 0x2 + .byte 0x78 + .string "_Z4f11av" + .long 0xc6 + .uleb128 0xb + .quad .LFE11-.LFB11 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x11 + .long 0x146 + .byte 0x2 + .byte 0x7e + .uleb128 0xc + .quad .LFE12-.LFB12 + .uleb128 0x1 + .byte 0x9c + .long 0x328 + .long 0x332 + .uleb128 0x12 + .uleb128 0x10 + .long 0x2c5 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x16 + .string "t12" + .byte 0x2 + .byte 0x86 + .string "_Z3t12v" + .long 0xcd + .uleb128 0xd + .quad .LFE13-.LFB13 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x16 + .string "t13" + .byte 0x2 + .byte 0x8e + .string "_Z3t13v" + .long 0xcd + .uleb128 0xe + .quad .LFE14-.LFB14 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x17 + .string "t14" + .byte 0x2 + .byte 0x96 + .string "_Z3t14v" + .long 0xcd + .uleb128 0xf + .quad .LFE15-.LFB15 + .uleb128 0x1 + .byte 0x9c + .long 0x3b6 + .uleb128 0x18 + .uleb128 0x10 + .quad .LBE2-.LBB2 + .uleb128 0x19 + .string "s1" + .byte 0x2 + .byte 0x98 + .long 0x3b6 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .uleb128 0x19 + .string "s2" + .byte 0x2 + .byte 0x99 + .long 0x3b6 + .uleb128 0x2 + .byte 0x91 + .sleb128 -32 + .byte 0 + .byte 0 + .uleb128 0x8 + .byte 0x8 + .long 0x3bc + .uleb128 0x13 + .long 0x3c1 + .uleb128 0x7 + .byte 0x1 + .byte 0x6 + .string "char" + .uleb128 0x17 + .string "t15" + .byte 0x2 + .byte 0xa3 + .string "_Z3t15v" + .long 0xcd + .uleb128 0x11 + .quad .LFE16-.LFB16 + .uleb128 0x1 + .byte 0x9c + .long 0x411 + .uleb128 0x18 + .uleb128 0x12 + .quad .LBE3-.LBB3 + .uleb128 0x19 + .string "s1" + .byte 0x2 + .byte 0xa5 + .long 0x411 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .uleb128 0x19 + .string "s2" + .byte 0x2 + .byte 0xa6 + .long 0x411 + .uleb128 0x2 + .byte 0x91 + .sleb128 -32 + .byte 0 + .byte 0 + .uleb128 0x8 + .byte 0x8 + .long 0x417 + .uleb128 0x13 + .long 0x41c + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "wchar_t" + .uleb128 0x16 + .string "t16" + .byte 0x2 + .byte 0xb0 + .string "_Z3t16v" + .long 0xcd + .uleb128 0x13 + .quad .LFE17-.LFB17 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x1a + .string "t17" + .byte 0x2 + .byte 0xb8 + .string "_Z3t17v" + .long 0xcd + .uleb128 0x14 + .quad .LFE18-.LFB18 + .uleb128 0x1 + .byte 0x9c + .long 0x496 + .uleb128 0x18 + .uleb128 0x15 + .quad .LBE4-.LBB4 + .uleb128 0x19 + .string "c" + .byte 0x2 + .byte 0xba + .long 0x3c1 + .uleb128 0x2 + .byte 0x91 + .sleb128 -17 + .uleb128 0x18 + .uleb128 0x16 + .quad .LBE5-.LBB5 + .uleb128 0x19 + .string "i" + .byte 0x2 + .byte 0xbb + .long 0xc6 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .byte 0 + .byte 0 + .uleb128 0x17 + .string "t18" + .byte 0x2 + .byte 0xc7 + .string "_Z3t18v" + .long 0xcd + .uleb128 0x17 + .quad .LFE19-.LFB19 + .uleb128 0x1 + .byte 0x9c + .long 0x4fe + .uleb128 0x18 + .uleb128 0x18 + .quad .LBE6-.LBB6 + .uleb128 0x19 + .string "c" + .byte 0x2 + .byte 0xc9 + .long 0x3c1 + .uleb128 0x2 + .byte 0x91 + .sleb128 -17 + .uleb128 0x18 + .uleb128 0x19 + .quad .LBE7-.LBB7 + .uleb128 0x19 + .string "i" + .byte 0x2 + .byte 0xca + .long 0xc6 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .uleb128 0x18 + .uleb128 0x1a + .quad .LBE8-.LBB8 + .uleb128 0x19 + .string "s" + .byte 0x2 + .byte 0xcc + .long 0x3b6 + .uleb128 0x2 + .byte 0x91 + .sleb128 -32 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .uleb128 0x1b + .string "c3" + .byte 0x1 + .byte 0x39 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .uleb128 0x1c + .string "v2" + .byte 0x1 + .byte 0x3b + .long 0xc6 + .uleb128 0x1c + .string "v3" + .byte 0x1 + .byte 0x3c + .long 0xc6 + .uleb128 0x1d + .long 0x3c1 + .long 0x52b + .uleb128 0x1e + .byte 0 + .uleb128 0x1c + .string "v4" + .byte 0x1 + .byte 0x3d + .long 0x520 + .uleb128 0x1c + .string "v5" + .byte 0x1 + .byte 0x3e + .long 0x520 + .uleb128 0x1d + .long 0x3b6 + .long 0x54a + .uleb128 0x1e + .byte 0 + .uleb128 0x1c + .string "t17data" + .byte 0x1 + .byte 0x53 + .long 0x53f + .uleb128 0x1f + .string "p6" + .byte 0x2 + .byte 0x45 + .long 0x566 + .uleb128 0x2 + .byte 0xfb + .uleb128 0x1b + .uleb128 0x8 + .byte 0x8 + .long 0xc6 + .uleb128 0x1f + .string "p7" + .byte 0x2 + .byte 0x4f + .long 0x566 + .uleb128 0x2 + .byte 0xfb + .uleb128 0x1c + .uleb128 0x1f + .string "p8" + .byte 0x2 + .byte 0x59 + .long 0x586 + .uleb128 0x2 + .byte 0xfb + .uleb128 0x1d + .uleb128 0x8 + .byte 0x8 + .long 0x3c1 + .uleb128 0x1f + .string "p9" + .byte 0x2 + .byte 0x63 + .long 0x586 + .uleb128 0x2 + .byte 0xfb + .uleb128 0x1e + .uleb128 0x9 + .long 0xc6 + .uleb128 0x1f + .string "pfn" + .byte 0x2 + .byte 0x6d + .long 0x5ac + .uleb128 0x2 + .byte 0xfb + .uleb128 0x1f + .uleb128 0x8 + .byte 0x8 + .long 0x599 + .byte 0 + .section .debug_info,"",@progbits +.Lskeleton_debug_info0: + .long 0x7e + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .uleb128 0x1 + .long .Ldebug_ranges0+0 + .quad 0 + .long .Ldebug_line0 + .byte 0x27 + .byte 0x37 + .byte 0xdc + .byte 0x2f + .byte 0x9 + .byte 0xc6 + .byte 0xf9 + .byte 0x52 + .long .Ldebug_ranges0 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_1.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_abbrev,"",@progbits +.Lskeleton_debug_abbrev0: + .uleb128 0x1 + .uleb128 0x11 + .byte 0 + .uleb128 0x55 + .uleb128 0x17 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x10 + .uleb128 0x17 + .uleb128 0x2131 + .uleb128 0x7 + .uleb128 0x2132 + .uleb128 0x17 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2130 + .uleb128 0x8 + .uleb128 0x2134 + .uleb128 0x17 + .uleb128 0x2135 + .uleb128 0x17 + .uleb128 0x2133 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x41 + .byte 0 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2130 + .uleb128 0x8 + .uleb128 0x2134 + .uleb128 0x17 + .uleb128 0x2135 + .uleb128 0x17 + .uleb128 0x2133 + .uleb128 0x17 + .byte 0 + .byte 0 + .byte 0 + .section .debug_abbrev.dwo,"e",@progbits +.Ldebug_abbrev0: + .uleb128 0x1 + .uleb128 0x41 + .byte 0x1 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x210f + .uleb128 0x7 + .uleb128 0x10 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x2 + .byte 0x1 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x3 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .uleb128 0x32 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x4 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x1f02 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x5 + .uleb128 0x5 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x34 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x6 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x7 + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 + .uleb128 0x15 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xa + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x1f02 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xb + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xc + .uleb128 0x11 + .byte 0x1 + .uleb128 0x25 + .uleb128 0x8 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2131 + .uleb128 0x7 + .byte 0 + .byte 0 + .uleb128 0xd + .uleb128 0x2 + .byte 0x1 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x69 + .uleb128 0x20 + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xe + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x1f02 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0xf + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x20 + .byte 0 + .byte 0 + .uleb128 0x10 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2117 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x11 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x47 + .uleb128 0x13 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x2116 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x12 + .uleb128 0x5 + .byte 0 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x34 + .uleb128 0x19 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x13 + .uleb128 0x26 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x14 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x47 + .uleb128 0x13 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x2117 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x15 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2117 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x16 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2116 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x17 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2116 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x18 + .uleb128 0xb + .byte 0x1 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .byte 0 + .byte 0 + .uleb128 0x19 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x1a + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2117 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x1b + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x20 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x1c + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x1d + .uleb128 0x1 + .byte 0x1 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x1e + .uleb128 0x21 + .byte 0 + .byte 0 + .byte 0 + .uleb128 0x1f + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .byte 0 + .section .debug_gnu_pubnames,"",@progbits +.Ldebug_pubnames0: + .long 0x15b + .value 0x2 + .long .Lskeleton_debug_info0 + .long 0x5b3 + .long 0x15b + .byte 0x30 + .string "f13i" + .long 0x177 + .byte 0x30 + .string "C1::testcase1" + .long 0x1a0 + .byte 0x30 + .string "C1::testcase2" + .long 0x1c4 + .byte 0x30 + .string "C1::testcase3" + .long 0x1e8 + .byte 0x30 + .string "C1::testcase4" + .long 0x20c + .byte 0x30 + .string "C2::testcase1" + .long 0x235 + .byte 0x30 + .string "C2::testcase2" + .long 0x259 + .byte 0x30 + .string "C2::testcase3" + .long 0x27d + .byte 0x30 + .string "C2::testcase4" + .long 0x2a1 + .byte 0x30 + .string "C3::testcase1" + .long 0x2ca + .byte 0x30 + .string "C3::testcase2" + .long 0x2ee + .byte 0x30 + .string "f11a" + .long 0x30e + .byte 0x30 + .string "C3::testcase3" + .long 0x332 + .byte 0x30 + .string "t12" + .long 0x350 + .byte 0x30 + .string "t13" + .long 0x36e + .byte 0x30 + .string "t14" + .long 0x3c9 + .byte 0x30 + .string "t15" + .long 0x427 + .byte 0x30 + .string "t16" + .long 0x445 + .byte 0x30 + .string "t17" + .long 0x496 + .byte 0x30 + .string "t18" + .long 0x559 + .byte 0x20 + .string "p6" + .long 0x56c + .byte 0x20 + .string "p7" + .long 0x579 + .byte 0x20 + .string "p8" + .long 0x58c + .byte 0x20 + .string "p9" + .long 0x59e + .byte 0x20 + .string "pfn" + .long 0 + .section .debug_gnu_pubtypes,"",@progbits +.Ldebug_pubtypes0: + .long 0x50 + .value 0x2 + .long .Lskeleton_debug_info0 + .long 0x5b3 + .long 0xc6 + .byte 0x90 + .string "int" + .long 0xcd + .byte 0x90 + .string "bool" + .long 0x8d + .byte 0x10 + .string "C1" + .long 0xdf + .byte 0x10 + .string "C2" + .long 0x122 + .byte 0x10 + .string "C3" + .long 0x3c1 + .byte 0x90 + .string "char" + .long 0x41c + .byte 0x90 + .string "wchar_t" + .long 0 + .section .debug_aranges,"",@progbits + .long 0x3c + .value 0x2 + .long .Lskeleton_debug_info0 + .byte 0x8 + .byte 0 + .value 0 + .value 0 + .quad .Ltext0 + .quad .Letext0-.Ltext0 + .quad .LFB0 + .quad .LFE0-.LFB0 + .quad 0 + .quad 0 + .section .debug_ranges,"",@progbits +.Ldebug_ranges0: + .quad .Ltext0 + .quad .Letext0 + .quad .LFB0 + .quad .LFE0 + .quad 0 + .quad 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_line.dwo,"e",@progbits +.Lskeleton_debug_line0: + .long .LELT0-.LSLT0 +.LSLT0: + .value 0x4 + .long .LELTP0-.LASLTP0 +.LASLTP0: + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0xf6 + .byte 0xf2 + .byte 0xd + .byte 0 + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0 + .byte 0 + .byte 0 + .byte 0x1 + .byte 0 + .byte 0 + .byte 0x1 + .byte 0 + .string "dwp_test.h" + .uleb128 0 + .uleb128 0 + .uleb128 0 + .string "dwp_test_1.cc" + .uleb128 0 + .uleb128 0 + .uleb128 0 + .byte 0 +.LELTP0: +.LELT0: + .section .debug_str_offsets.dwo,"e",@progbits + .long 0 + .long 0xa + .long 0x14 + .long 0x27 + .long 0x3a + .long 0x44 + .long 0x57 + .long 0x5f + .long 0x72 + .long 0x85 + .long 0x98 + .long 0xa2 + .long 0xb5 + .long 0xc8 + .long 0xdb + .long 0xee + .long 0x101 + .section .debug_str.dwo,"e",@progbits +.LASF0: + .string "testcase1" +.LASF1: + .string "testcase2" +.LASF2: + .string "_ZN2C39testcase1Ev" +.LASF3: + .string "_ZN2C39testcase2Ev" +.LASF4: + .string "testcase3" +.LASF5: + .string "_ZN2C39testcase3Ev" +.LASF6: + .string "member1" +.LASF7: + .string "_ZN2C29testcase1Ev" +.LASF8: + .string "_ZN2C29testcase2Ev" +.LASF9: + .string "_ZN2C29testcase3Ev" +.LASF10: + .string "testcase4" +.LASF11: + .string "_ZN2C29testcase4Ev" +.LASF12: + .string "_ZN2C19testcase1Ev" +.LASF13: + .string "_ZN2C19testcase2Ev" +.LASF14: + .string "_ZN2C19testcase3Ev" +.LASF15: + .string "_ZN2C19testcase4Ev" +.LASF16: + .string "this" + .section .debug_addr,"",@progbits +.Ldebug_addr0: + .quad .LFB0 + .quad .LFB1 + .quad .LFB2 + .quad .LFB3 + .quad .LFB4 + .quad .LFB5 + .quad .LFB6 + .quad .LFB7 + .quad .LFB8 + .quad .LFB9 + .quad .LFB10 + .quad .LFB11 + .quad .LFB12 + .quad .LFB13 + .quad .LFB14 + .quad .LFB15 + .quad .LBB2 + .quad .LFB16 + .quad .LBB3 + .quad .LFB17 + .quad .LFB18 + .quad .LBB4 + .quad .LBB5 + .quad .LFB19 + .quad .LBB6 + .quad .LBB7 + .quad .LBB8 + .quad p6 + .quad p7 + .quad p8 + .quad p9 + .quad pfn + .ident "GCC: (Google_crosstoolv16-gcc-4.7.x-grtev3) 4.7.x-google 20120720 (prerelease)" + .section .note.GNU-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/dwp_test_1.sh b/binutils-2.25/gold/testsuite/dwp_test_1.sh new file mode 100755 index 00000000..7831a499 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_1.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +# dwp_test_1.sh -- Test the dwp tool. + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +check_num() +{ + n=$(grep -c "$2" "$1") + if test "$n" -ne "$3" + then + echo "Found $n occurrences (should find $3):" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +STDOUT="dwp_test_1.stdout" + +check $STDOUT "^Contents of the .debug_info.dwo section" +check_num $STDOUT "DW_TAG_compile_unit" 4 +check_num $STDOUT "DW_TAG_type_unit" 3 +check_num $STDOUT "DW_AT_name.*: C1" 3 +check_num $STDOUT "DW_AT_name.*: C2" 2 +check_num $STDOUT "DW_AT_name.*: C3" 3 +check_num $STDOUT "DW_AT_name.*: testcase1" 6 +check_num $STDOUT "DW_AT_name.*: testcase2" 6 +check_num $STDOUT "DW_AT_name.*: testcase3" 6 +check_num $STDOUT "DW_AT_name.*: testcase4" 4 diff --git a/binutils-2.25/gold/testsuite/dwp_test_1b.cc b/binutils-2.25/gold/testsuite/dwp_test_1b.cc new file mode 100644 index 00000000..c75376b5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_1b.cc @@ -0,0 +1,35 @@ +// dwp_test_1b.cc -- a test case for dwp + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Adapted from two_file_test_1b.cc. + +#include "dwp_test.h" + +// 16 Call a function directly after its address has been taken. + +C3 c3; + +bool +t16a() +{ + return f10() == 135; +} diff --git a/binutils-2.25/gold/testsuite/dwp_test_1b.s b/binutils-2.25/gold/testsuite/dwp_test_1b.s new file mode 100644 index 00000000..9c9891d7 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_1b.s @@ -0,0 +1,549 @@ + .file "dwp_test_1b.cc" + .text +.Ltext0: + .globl c3 + .bss + .align 4 + .type c3, @object + .size c3, 4 +c3: + .zero 4 + .text + .globl _Z4t16av + .type _Z4t16av, @function +_Z4t16av: +.LFB1: + .file 1 "dwp_test_1b.cc" + .loc 1 33 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 1 34 0 + call _Z3f10v + cmpl $135, %eax + sete %al + .loc 1 35 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE1: + .size _Z4t16av, .-_Z4t16av +.Letext0: + .file 2 "dwp_test.h" + .section .debug_types.dwo,"G",@progbits,wt.bb2916f0c1bd34b5,comdat + .long 0x119 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0x8a + .byte 0xda + .byte 0x59 + .byte 0x6e + .byte 0x4d + .byte 0x5c + .byte 0xa + .byte 0x88 + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C3" + .byte 0x4 + .byte 0x2 + .byte 0x2f + .long 0xfc + .uleb128 0x3 + .string "member1" + .byte 0x2 + .byte 0x36 + .long 0xfc + .byte 0 + .byte 0x1 + .uleb128 0x4 + .string "testcase1" + .byte 0x2 + .byte 0x32 + .string "_ZN2C39testcase1Ev" + .long 0x103 + .byte 0x1 + .long 0x6e + .long 0x74 + .uleb128 0x5 + .long 0x10b + .byte 0 + .uleb128 0x4 + .string "testcase2" + .byte 0x2 + .byte 0x33 + .string "_ZN2C39testcase2Ev" + .long 0x103 + .byte 0x1 + .long 0xa1 + .long 0xa7 + .uleb128 0x5 + .long 0x10b + .byte 0 + .uleb128 0x4 + .string "testcase3" + .byte 0x2 + .byte 0x34 + .string "_ZN2C39testcase3Ev" + .long 0x103 + .byte 0x1 + .long 0xd4 + .long 0xda + .uleb128 0x5 + .long 0x10b + .byte 0 + .uleb128 0x6 + .string "f4" + .byte 0x2 + .byte 0x35 + .string "_ZN2C32f4Ev" + .long 0x111 + .byte 0x1 + .long 0xf5 + .uleb128 0x5 + .long 0x10b + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .uleb128 0x8 + .byte 0x8 + .long 0x117 + .uleb128 0x9 + .long 0x103 + .byte 0 + .section .debug_types,"G",@progbits,wt.bb2916f0c1bd34b5,comdat + .long 0x6f + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_1b.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_info.dwo,"e",@progbits +.Ldebug_info0: + .long 0xcb + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .uleb128 0xa + .string "GNU C++ 4.7.x-google 20120720 (prerelease)" + .byte 0x4 + .string "dwp_test_1b.cc" + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .byte 0xf6 + .byte 0xef + .byte 0x47 + .byte 0xa2 + .byte 0x3e + .byte 0xc1 + .byte 0x6e + .byte 0xbd + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0xb + .string "t16a" + .byte 0x1 + .byte 0x20 + .string "_Z4t16av" + .long 0x95 + .uleb128 0 + .quad .LFE1-.LFB1 + .uleb128 0x1 + .byte 0x9c + .uleb128 0xc + .string "c3" + .byte 0x1 + .byte 0x1d + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .uleb128 0x2 + .byte 0xfb + .uleb128 0x1 + .byte 0 + .section .debug_info,"",@progbits +.Lskeleton_debug_info0: + .long 0x7f + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .uleb128 0x1 + .quad .Ltext0 + .quad .Letext0-.Ltext0 + .long .Ldebug_line0 + .byte 0xf6 + .byte 0xef + .byte 0x47 + .byte 0xa2 + .byte 0x3e + .byte 0xc1 + .byte 0x6e + .byte 0xbd + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_1b.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_abbrev,"",@progbits +.Lskeleton_debug_abbrev0: + .uleb128 0x1 + .uleb128 0x11 + .byte 0 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x10 + .uleb128 0x17 + .uleb128 0x2131 + .uleb128 0x7 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2130 + .uleb128 0x8 + .uleb128 0x2134 + .uleb128 0x17 + .uleb128 0x2135 + .uleb128 0x17 + .uleb128 0x2133 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x41 + .byte 0 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2130 + .uleb128 0x8 + .uleb128 0x2134 + .uleb128 0x17 + .uleb128 0x2135 + .uleb128 0x17 + .uleb128 0x2133 + .uleb128 0x17 + .byte 0 + .byte 0 + .byte 0 + .section .debug_abbrev.dwo,"e",@progbits +.Ldebug_abbrev0: + .uleb128 0x1 + .uleb128 0x41 + .byte 0x1 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x210f + .uleb128 0x7 + .uleb128 0x10 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x2 + .byte 0x1 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x3 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .uleb128 0x32 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x4 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x5 + .uleb128 0x5 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x34 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x6 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x7 + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 + .uleb128 0x15 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xa + .uleb128 0x11 + .byte 0x1 + .uleb128 0x25 + .uleb128 0x8 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2131 + .uleb128 0x7 + .byte 0 + .byte 0 + .uleb128 0xb + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2116 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0xc + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x20 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .byte 0 + .section .debug_gnu_pubnames,"",@progbits +.Ldebug_pubnames0: + .long 0x20 + .value 0x2 + .long .Lskeleton_debug_info0 + .long 0xcf + .long 0x9d + .byte 0x30 + .string "t16a" + .long 0xbd + .byte 0x20 + .string "c3" + .long 0 + .section .debug_gnu_pubtypes,"",@progbits +.Ldebug_pubtypes0: + .long 0x29 + .value 0x2 + .long .Lskeleton_debug_info0 + .long 0xcf + .long 0x8e + .byte 0x90 + .string "int" + .long 0x95 + .byte 0x90 + .string "bool" + .long 0 + .byte 0x10 + .string "C3" + .long 0 + .section .debug_aranges,"",@progbits + .long 0x2c + .value 0x2 + .long .Lskeleton_debug_info0 + .byte 0x8 + .byte 0 + .value 0 + .value 0 + .quad .Ltext0 + .quad .Letext0-.Ltext0 + .quad 0 + .quad 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_line.dwo,"e",@progbits +.Lskeleton_debug_line0: + .long .LELT0-.LSLT0 +.LSLT0: + .value 0x4 + .long .LELTP0-.LASLTP0 +.LASLTP0: + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0xf6 + .byte 0xf2 + .byte 0xd + .byte 0 + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0 + .byte 0 + .byte 0 + .byte 0x1 + .byte 0 + .byte 0 + .byte 0x1 + .byte 0 + .string "dwp_test_1b.cc" + .uleb128 0 + .uleb128 0 + .uleb128 0 + .string "dwp_test.h" + .uleb128 0 + .uleb128 0 + .uleb128 0 + .byte 0 +.LELTP0: +.LELT0: + .section .debug_addr,"",@progbits +.Ldebug_addr0: + .quad .LFB1 + .quad c3 + .ident "GCC: (Google_crosstoolv16-gcc-4.7.x-grtev3) 4.7.x-google 20120720 (prerelease)" + .section .note.GNU-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/dwp_test_2.cc b/binutils-2.25/gold/testsuite/dwp_test_2.cc new file mode 100644 index 00000000..a1172b31 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_2.cc @@ -0,0 +1,144 @@ +// dwp_test_2.cc -- a test case for dwp + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Adapted from two_file_test_2.cc. + +#include "dwp_test.h" + +// 1 Code in file 1 calls code in file 2. + +int +C1::t1_2() +{ + return 123; +} + +bool +C1::t1a() +{ + return t1_2() == 123; +} + +// 2 Code in file 1 refers to global data in file 2. + +int v2 = 456; + +// 3 Code in file 1 referes to common symbol in file 2. This is +// initialized at runtime to 789. + +int v3; + +// 4 Code in file 1 refers to offset within global data in file 2. + +char v4[] = "Hello, world"; + +// 5 Code in file 1 refers to offset within common symbol in file 2. +// This is initialized at runtime to a copy of v4. + +char v5[13]; + +// 6 Data in file 1 refers to global data in file 2. This reuses v2. + +// 7 Data in file 1 refers to common symbol in file 2. This reuses v3. + +// 8 Data in file 1 refers to offset within global data in file 2. +// This reuses v4. + +// 9 Data in file 1 refers to offset within common symbol in file 2. +// This reuses v5. + +// 10 Data in file 1 refers to function in file 2. + +int +f10() +{ + return 135; +} + +// 11 Pass function pointer from file 1 to file 2. + +int +f11b(int (*pfn)()) +{ + return (*pfn)(); +} + +// 12 Compare address of function for equality in both files. + +bool +(*C3::f4())() +{ + return &t12; +} + +// 13 Compare address of inline function for equality in both files. + +void +(*f13())() +{ + return &f13i; +} + +// 14 Compare string constants in file 1 and file 2. + +const char* +f14() +{ + return TEST_STRING_CONSTANT; +} + +// 15 Compare wide string constants in file 1 and file 2. + +const wchar_t* +f15() +{ + return TEST_WIDE_STRING_CONSTANT; +} + +// 17 File 1 checks array of string constants defined in file 2. + +const char* t17data[T17_COUNT] = +{ + "a", "b", "c", "d", "e" +}; + +// 18 File 1 checks string constants referenced directly in file 2. + +const char* +f18(int i) +{ + switch (i) + { + case 0: + return "a"; + case 1: + return "b"; + case 2: + return "c"; + case 3: + return "d"; + case 4: + return "e"; + default: + return 0; + } +} diff --git a/binutils-2.25/gold/testsuite/dwp_test_2.s b/binutils-2.25/gold/testsuite/dwp_test_2.s new file mode 100644 index 00000000..fa807714 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_2.s @@ -0,0 +1,1714 @@ + .file "dwp_test_2.cc" + .text +.Ltext0: + .section .text._Z4f13iv,"axG",@progbits,_Z4f13iv,comdat + .weak _Z4f13iv + .type _Z4f13iv, @function +_Z4f13iv: +.LFB0: + .file 1 "dwp_test.h" + .loc 1 70 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 1 70 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE0: + .size _Z4f13iv, .-_Z4f13iv + .text + .align 2 + .globl _ZN2C14t1_2Ev + .type _ZN2C14t1_2Ev, @function +_ZN2C14t1_2Ev: +.LFB1: + .file 2 "dwp_test_2.cc" + .loc 2 31 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 32 0 + movl $123, %eax + .loc 2 33 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE1: + .size _ZN2C14t1_2Ev, .-_ZN2C14t1_2Ev + .align 2 + .globl _ZN2C13t1aEv + .type _ZN2C13t1aEv, @function +_ZN2C13t1aEv: +.LFB2: + .loc 2 37 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $8, %rsp + movq %rdi, -8(%rbp) + .loc 2 38 0 + movq -8(%rbp), %rax + movq %rax, %rdi + call _ZN2C14t1_2Ev + cmpl $123, %eax + sete %al + .loc 2 39 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE2: + .size _ZN2C13t1aEv, .-_ZN2C13t1aEv + .globl v2 + .data + .align 4 + .type v2, @object + .size v2, 4 +v2: + .long 456 + .globl v3 + .bss + .align 4 + .type v3, @object + .size v3, 4 +v3: + .zero 4 + .globl v4 + .data + .type v4, @object + .size v4, 13 +v4: + .string "Hello, world" + .globl v5 + .bss + .type v5, @object + .size v5, 13 +v5: + .zero 13 + .text + .globl _Z3f10v + .type _Z3f10v, @function +_Z3f10v: +.LFB3: + .loc 2 73 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 2 74 0 + movl $135, %eax + .loc 2 75 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE3: + .size _Z3f10v, .-_Z3f10v + .globl _Z4f11bPFivE + .type _Z4f11bPFivE, @function +_Z4f11bPFivE: +.LFB4: + .loc 2 81 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp + movq %rdi, -8(%rbp) + .loc 2 82 0 + movq -8(%rbp), %rax + call *%rax + .loc 2 83 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE4: + .size _Z4f11bPFivE, .-_Z4f11bPFivE + .align 2 + .globl _ZN2C32f4Ev + .type _ZN2C32f4Ev, @function +_ZN2C32f4Ev: +.LFB5: + .loc 2 89 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + .loc 2 90 0 + movl $_Z3t12v, %eax + .loc 2 91 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE5: + .size _ZN2C32f4Ev, .-_ZN2C32f4Ev + .globl _Z3f13v + .type _Z3f13v, @function +_Z3f13v: +.LFB6: + .loc 2 97 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 2 98 0 + movl $_Z4f13iv, %eax + .loc 2 99 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE6: + .size _Z3f13v, .-_Z3f13v + .section .rodata +.LC0: + .string "test string constant" + .text + .globl _Z3f14v + .type _Z3f14v, @function +_Z3f14v: +.LFB7: + .loc 2 105 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 2 106 0 + movl $.LC0, %eax + .loc 2 107 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE7: + .size _Z3f14v, .-_Z3f14v + .section .rodata + .align 8 +.LC1: + .string "t" + .string "" + .string "" + .string "e" + .string "" + .string "" + .string "s" + .string "" + .string "" + .string "t" + .string "" + .string "" + .string " " + .string "" + .string "" + .string "w" + .string "" + .string "" + .string "i" + .string "" + .string "" + .string "d" + .string "" + .string "" + .string "e" + .string "" + .string "" + .string " " + .string "" + .string "" + .string "s" + .string "" + .string "" + .string "t" + .string "" + .string "" + .string "r" + .string "" + .string "" + .string "i" + .string "" + .string "" + .string "n" + .string "" + .string "" + .string "g" + .string "" + .string "" + .string " " + .string "" + .string "" + .string "c" + .string "" + .string "" + .string "o" + .string "" + .string "" + .string "n" + .string "" + .string "" + .string "s" + .string "" + .string "" + .string "t" + .string "" + .string "" + .string "a" + .string "" + .string "" + .string "n" + .string "" + .string "" + .string "t" + .string "" + .string "" + .string "" + .string "" + .string "" + .string "" + .text + .globl _Z3f15v + .type _Z3f15v, @function +_Z3f15v: +.LFB8: + .loc 2 113 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + .loc 2 114 0 + movl $.LC1, %eax + .loc 2 115 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE8: + .size _Z3f15v, .-_Z3f15v + .globl t17data + .section .rodata +.LC2: + .string "a" +.LC3: + .string "b" +.LC4: + .string "c" +.LC5: + .string "d" +.LC6: + .string "e" + .data + .align 32 + .type t17data, @object + .size t17data, 40 +t17data: + .quad .LC2 + .quad .LC3 + .quad .LC4 + .quad .LC5 + .quad .LC6 + .text + .globl _Z3f18i + .type _Z3f18i, @function +_Z3f18i: +.LFB9: + .loc 2 128 0 + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movl %edi, -4(%rbp) + .loc 2 129 0 + cmpl $4, -4(%rbp) + ja .L19 + movl -4(%rbp), %eax + movq .L25(,%rax,8), %rax + jmp *%rax + .section .rodata + .align 8 + .align 4 +.L25: + .quad .L20 + .quad .L21 + .quad .L22 + .quad .L23 + .quad .L24 + .text +.L20: + .loc 2 132 0 + movl $.LC2, %eax + jmp .L26 +.L21: + .loc 2 134 0 + movl $.LC3, %eax + jmp .L26 +.L22: + .loc 2 136 0 + movl $.LC4, %eax + jmp .L26 +.L23: + .loc 2 138 0 + movl $.LC5, %eax + jmp .L26 +.L24: + .loc 2 140 0 + movl $.LC6, %eax + jmp .L26 +.L19: + .loc 2 142 0 + movl $0, %eax +.L26: + .loc 2 144 0 + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE9: + .size _Z3f18i, .-_Z3f18i +.Letext0: + .section .debug_types.dwo,"G",@progbits,wt.bb2916f0c1bd34b5,comdat + .long 0xf3 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0x8a + .byte 0xda + .byte 0x59 + .byte 0x6e + .byte 0x4d + .byte 0x5c + .byte 0xa + .byte 0x88 + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C3" + .byte 0x4 + .byte 0x1 + .byte 0x2f + .long 0xd6 + .uleb128 0x3 + .string "member1" + .byte 0x1 + .byte 0x36 + .long 0xd6 + .byte 0 + .byte 0x1 + .uleb128 0x4 + .uleb128 0 + .byte 0x1 + .byte 0x32 + .string "_ZN2C39testcase1Ev" + .long 0xdd + .byte 0x1 + .long 0x65 + .long 0x6b + .uleb128 0x5 + .long 0xe5 + .byte 0 + .uleb128 0x4 + .uleb128 0x1 + .byte 0x1 + .byte 0x33 + .string "_ZN2C39testcase2Ev" + .long 0xdd + .byte 0x1 + .long 0x8f + .long 0x95 + .uleb128 0x5 + .long 0xe5 + .byte 0 + .uleb128 0x4 + .uleb128 0x2 + .byte 0x1 + .byte 0x34 + .string "_ZN2C39testcase3Ev" + .long 0xdd + .byte 0x1 + .long 0xb9 + .long 0xbf + .uleb128 0x5 + .long 0xe5 + .byte 0 + .uleb128 0x6 + .string "f4" + .byte 0x1 + .byte 0x35 + .uleb128 0x3 + .long 0xeb + .byte 0x1 + .long 0xcf + .uleb128 0x5 + .long 0xe5 + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .uleb128 0x8 + .byte 0x8 + .long 0xf1 + .uleb128 0x9 + .long 0xdd + .byte 0 + .section .debug_types,"G",@progbits,wt.bb2916f0c1bd34b5,comdat + .long 0x6e + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_2.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_types.dwo,"G",@progbits,wt.c419a9b7a4a2fab5,comdat + .long 0x138 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0xe3 + .byte 0xad + .byte 0x5 + .byte 0x3b + .byte 0x75 + .byte 0xeb + .byte 0xfb + .byte 0xc7 + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C1" + .byte 0x4 + .byte 0x1 + .byte 0x19 + .long 0x126 + .uleb128 0x3 + .string "member1" + .byte 0x1 + .byte 0x22 + .long 0x126 + .byte 0 + .byte 0x1 + .uleb128 0x4 + .uleb128 0 + .byte 0x1 + .byte 0x1c + .string "_ZN2C19testcase1Ev" + .long 0x12d + .byte 0x1 + .long 0x65 + .long 0x6b + .uleb128 0x5 + .long 0x135 + .byte 0 + .uleb128 0xa + .string "t1a" + .byte 0x1 + .byte 0x1d + .uleb128 0x4 + .long 0x12d + .byte 0x1 + .long 0x80 + .long 0x86 + .uleb128 0x5 + .long 0x135 + .byte 0 + .uleb128 0xa + .string "t1_2" + .byte 0x1 + .byte 0x1e + .uleb128 0x5 + .long 0x126 + .byte 0x1 + .long 0x9c + .long 0xa2 + .uleb128 0x5 + .long 0x135 + .byte 0 + .uleb128 0x4 + .uleb128 0x1 + .byte 0x1 + .byte 0x1f + .string "_ZN2C19testcase2Ev" + .long 0x12d + .byte 0x1 + .long 0xc6 + .long 0xcc + .uleb128 0x5 + .long 0x135 + .byte 0 + .uleb128 0x4 + .uleb128 0x2 + .byte 0x1 + .byte 0x20 + .string "_ZN2C19testcase3Ev" + .long 0x12d + .byte 0x1 + .long 0xf0 + .long 0xf6 + .uleb128 0x5 + .long 0x135 + .byte 0 + .uleb128 0xb + .string "testcase4" + .byte 0x1 + .byte 0x21 + .string "_ZN2C19testcase4Ev" + .long 0x12d + .byte 0x1 + .long 0x11f + .uleb128 0x5 + .long 0x135 + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .byte 0 + .section .debug_types,"G",@progbits,wt.c419a9b7a4a2fab5,comdat + .long 0x6e + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_2.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_info.dwo,"e",@progbits +.Ldebug_info0: + .long 0x329 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .uleb128 0xc + .string "GNU C++ 4.7.x-google 20120720 (prerelease)" + .byte 0x4 + .string "dwp_test_2.cc" + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .byte 0xb9 + .byte 0xf8 + .byte 0xe0 + .byte 0x8c + .byte 0x71 + .byte 0xab + .byte 0xc + .byte 0xcf + .uleb128 0xd + .string "C1" + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .long 0xb9 + .uleb128 0xe + .string "t1a" + .byte 0x1 + .byte 0x1d + .uleb128 0x4 + .long 0xc0 + .byte 0x1 + .uleb128 0xe + .string "t1_2" + .byte 0x1 + .byte 0x1e + .uleb128 0x5 + .long 0xb9 + .byte 0x1 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0xf + .byte 0x8 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .uleb128 0xd + .string "C3" + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0xef + .uleb128 0xe + .string "f4" + .byte 0x1 + .byte 0x35 + .uleb128 0x3 + .long 0xfe + .byte 0x1 + .byte 0 + .uleb128 0xf + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .uleb128 0x9 + .long 0xc0 + .uleb128 0x8 + .byte 0x8 + .long 0xf9 + .uleb128 0x10 + .string "f13i" + .byte 0x1 + .byte 0x46 + .string "_Z4f13iv" + .uleb128 0 + .quad .LFE0-.LFB0 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x11 + .long 0xaa + .byte 0x2 + .uleb128 0x1 + .quad .LFE1-.LFB1 + .uleb128 0x1 + .byte 0x9c + .long 0x139 + .long 0x147 + .uleb128 0x12 + .string "this" + .long 0x147 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x13 + .long 0xc8 + .uleb128 0x14 + .long 0x9d + .byte 0x2 + .byte 0x24 + .uleb128 0x2 + .quad .LFE2-.LFB2 + .uleb128 0x1 + .byte 0x9c + .long 0x166 + .long 0x174 + .uleb128 0x12 + .string "this" + .long 0x147 + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x15 + .string "f10" + .byte 0x2 + .byte 0x48 + .string "_Z3f10v" + .long 0xb9 + .uleb128 0x3 + .quad .LFE3-.LFB3 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x16 + .string "f11b" + .byte 0x2 + .byte 0x50 + .string "_Z4f11bPFivE" + .long 0xb9 + .uleb128 0x4 + .quad .LFE4-.LFB4 + .uleb128 0x1 + .byte 0x9c + .long 0x1c9 + .uleb128 0x17 + .string "pfn" + .byte 0x2 + .byte 0x50 + .long 0x1ce + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x9 + .long 0xb9 + .uleb128 0x8 + .byte 0x8 + .long 0x1c9 + .uleb128 0x18 + .long 0xe2 + .byte 0x2 + .byte 0x58 + .uleb128 0x5 + .quad .LFE5-.LFB5 + .uleb128 0x1 + .byte 0x9c + .long 0x1ee + .long 0x1fc + .uleb128 0x12 + .string "this" + .long 0x1fc + .uleb128 0x2 + .byte 0x91 + .sleb128 -24 + .byte 0 + .uleb128 0x13 + .long 0xef + .uleb128 0x19 + .uleb128 0x15 + .string "f13" + .byte 0x2 + .byte 0x60 + .string "_Z3f13v" + .long 0x220 + .uleb128 0x6 + .quad .LFE6-.LFB6 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x8 + .byte 0x8 + .long 0x201 + .uleb128 0x15 + .string "f14" + .byte 0x2 + .byte 0x68 + .string "_Z3f14v" + .long 0x244 + .uleb128 0x7 + .quad .LFE7-.LFB7 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x8 + .byte 0x8 + .long 0x24a + .uleb128 0x13 + .long 0x24f + .uleb128 0x7 + .byte 0x1 + .byte 0x6 + .string "char" + .uleb128 0x15 + .string "f15" + .byte 0x2 + .byte 0x70 + .string "_Z3f15v" + .long 0x275 + .uleb128 0x8 + .quad .LFE8-.LFB8 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x8 + .byte 0x8 + .long 0x27b + .uleb128 0x13 + .long 0x280 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "wchar_t" + .uleb128 0x1a + .string "f18" + .byte 0x2 + .byte 0x7f + .string "_Z3f18i" + .long 0x244 + .uleb128 0x9 + .quad .LFE9-.LFB9 + .uleb128 0x1 + .byte 0x9c + .long 0x2ba + .uleb128 0x17 + .string "i" + .byte 0x2 + .byte 0x7f + .long 0xb9 + .uleb128 0x2 + .byte 0x91 + .sleb128 -20 + .byte 0 + .uleb128 0x1b + .string "v2" + .byte 0x2 + .byte 0x2b + .long 0xb9 + .uleb128 0x2 + .byte 0xfb + .uleb128 0xa + .uleb128 0x1b + .string "v3" + .byte 0x2 + .byte 0x30 + .long 0xb9 + .uleb128 0x2 + .byte 0xfb + .uleb128 0xb + .uleb128 0x1c + .long 0x24f + .long 0x2e4 + .uleb128 0x1d + .long 0x2e4 + .byte 0xc + .byte 0 + .uleb128 0x7 + .byte 0x8 + .byte 0x7 + .string "sizetype" + .uleb128 0x1b + .string "v4" + .byte 0x2 + .byte 0x34 + .long 0x2d4 + .uleb128 0x2 + .byte 0xfb + .uleb128 0xc + .uleb128 0x1b + .string "v5" + .byte 0x2 + .byte 0x39 + .long 0x2d4 + .uleb128 0x2 + .byte 0xfb + .uleb128 0xd + .uleb128 0x1c + .long 0x244 + .long 0x31a + .uleb128 0x1d + .long 0x2e4 + .byte 0x4 + .byte 0 + .uleb128 0x1b + .string "t17data" + .byte 0x2 + .byte 0x77 + .long 0x30a + .uleb128 0x2 + .byte 0xfb + .uleb128 0xe + .byte 0 + .section .debug_info,"",@progbits +.Lskeleton_debug_info0: + .long 0x7e + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .uleb128 0x1 + .long .Ldebug_ranges0+0 + .quad 0 + .long .Ldebug_line0 + .byte 0xb9 + .byte 0xf8 + .byte 0xe0 + .byte 0x8c + .byte 0x71 + .byte 0xab + .byte 0xc + .byte 0xcf + .long .Ldebug_ranges0 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_2.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_abbrev,"",@progbits +.Lskeleton_debug_abbrev0: + .uleb128 0x1 + .uleb128 0x11 + .byte 0 + .uleb128 0x55 + .uleb128 0x17 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x10 + .uleb128 0x17 + .uleb128 0x2131 + .uleb128 0x7 + .uleb128 0x2132 + .uleb128 0x17 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2130 + .uleb128 0x8 + .uleb128 0x2134 + .uleb128 0x17 + .uleb128 0x2135 + .uleb128 0x17 + .uleb128 0x2133 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x41 + .byte 0 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2130 + .uleb128 0x8 + .uleb128 0x2134 + .uleb128 0x17 + .uleb128 0x2135 + .uleb128 0x17 + .uleb128 0x2133 + .uleb128 0x17 + .byte 0 + .byte 0 + .byte 0 + .section .debug_abbrev.dwo,"e",@progbits +.Ldebug_abbrev0: + .uleb128 0x1 + .uleb128 0x41 + .byte 0x1 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x210f + .uleb128 0x7 + .uleb128 0x10 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x2 + .byte 0x1 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x3 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .uleb128 0x32 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x4 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x5 + .uleb128 0x5 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x34 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x6 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x1f02 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x7 + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 + .uleb128 0x15 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xa + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x1f02 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xb + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xc + .uleb128 0x11 + .byte 0x1 + .uleb128 0x25 + .uleb128 0x8 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2131 + .uleb128 0x7 + .byte 0 + .byte 0 + .uleb128 0xd + .uleb128 0x2 + .byte 0x1 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x69 + .uleb128 0x20 + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xe + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x1f02 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0xf + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x20 + .byte 0 + .byte 0 + .uleb128 0x10 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2117 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x11 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x47 + .uleb128 0x13 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x2117 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x12 + .uleb128 0x5 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x34 + .uleb128 0x19 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x13 + .uleb128 0x26 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x14 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x47 + .uleb128 0x13 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x2116 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x15 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2117 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x16 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2116 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x17 + .uleb128 0x5 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x18 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x47 + .uleb128 0x13 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x2117 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x19 + .uleb128 0x15 + .byte 0 + .byte 0 + .byte 0 + .uleb128 0x1a + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2117 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x1b + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x1c + .uleb128 0x1 + .byte 0x1 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x1d + .uleb128 0x21 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2f + .uleb128 0xb + .byte 0 + .byte 0 + .byte 0 + .section .debug_gnu_pubnames,"",@progbits +.Ldebug_pubnames0: + .long 0xa3 + .value 0x2 + .long .Lskeleton_debug_info0 + .long 0x32d + .long 0x104 + .byte 0x30 + .string "f13i" + .long 0x120 + .byte 0x30 + .string "C1::t1_2" + .long 0x14c + .byte 0x30 + .string "C1::t1a" + .long 0x174 + .byte 0x30 + .string "f10" + .long 0x192 + .byte 0x30 + .string "f11b" + .long 0x1d4 + .byte 0x30 + .string "C3::f4" + .long 0x202 + .byte 0x30 + .string "f13" + .long 0x226 + .byte 0x30 + .string "f14" + .long 0x257 + .byte 0x30 + .string "f15" + .long 0x28b + .byte 0x30 + .string "f18" + .long 0x2ba + .byte 0x20 + .string "v2" + .long 0x2c7 + .byte 0x20 + .string "v3" + .long 0x2f0 + .byte 0x20 + .string "v4" + .long 0x2fd + .byte 0x20 + .string "v5" + .long 0x31a + .byte 0x20 + .string "t17data" + .long 0 + .section .debug_gnu_pubtypes,"",@progbits +.Ldebug_pubtypes0: + .long 0x56 + .value 0x2 + .long .Lskeleton_debug_info0 + .long 0x32d + .long 0xb9 + .byte 0x90 + .string "int" + .long 0xc0 + .byte 0x90 + .string "bool" + .long 0x8d + .byte 0x10 + .string "C1" + .long 0xd2 + .byte 0x10 + .string "C3" + .long 0x24f + .byte 0x90 + .string "char" + .long 0x280 + .byte 0x90 + .string "wchar_t" + .long 0x2e4 + .byte 0x90 + .string "sizetype" + .long 0 + .section .debug_aranges,"",@progbits + .long 0x3c + .value 0x2 + .long .Lskeleton_debug_info0 + .byte 0x8 + .byte 0 + .value 0 + .value 0 + .quad .Ltext0 + .quad .Letext0-.Ltext0 + .quad .LFB0 + .quad .LFE0-.LFB0 + .quad 0 + .quad 0 + .section .debug_ranges,"",@progbits +.Ldebug_ranges0: + .quad .Ltext0 + .quad .Letext0 + .quad .LFB0 + .quad .LFE0 + .quad 0 + .quad 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_line.dwo,"e",@progbits +.Lskeleton_debug_line0: + .long .LELT0-.LSLT0 +.LSLT0: + .value 0x4 + .long .LELTP0-.LASLTP0 +.LASLTP0: + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0xf6 + .byte 0xf2 + .byte 0xd + .byte 0 + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0 + .byte 0 + .byte 0 + .byte 0x1 + .byte 0 + .byte 0 + .byte 0x1 + .byte 0 + .string "dwp_test.h" + .uleb128 0 + .uleb128 0 + .uleb128 0 + .string "dwp_test_2.cc" + .uleb128 0 + .uleb128 0 + .uleb128 0 + .byte 0 +.LELTP0: +.LELT0: + .section .debug_str_offsets.dwo,"e",@progbits + .long 0 + .long 0xa + .long 0x14 + .long 0x1e + .long 0x2a + .long 0x37 + .section .debug_str.dwo,"e",@progbits +.LASF0: + .string "testcase1" +.LASF1: + .string "testcase2" +.LASF2: + .string "testcase3" +.LASF3: + .string "_ZN2C32f4Ev" +.LASF4: + .string "_ZN2C13t1aEv" +.LASF5: + .string "_ZN2C14t1_2Ev" + .section .debug_addr,"",@progbits +.Ldebug_addr0: + .quad .LFB0 + .quad .LFB1 + .quad .LFB2 + .quad .LFB3 + .quad .LFB4 + .quad .LFB5 + .quad .LFB6 + .quad .LFB7 + .quad .LFB8 + .quad .LFB9 + .quad v2 + .quad v3 + .quad v4 + .quad v5 + .quad t17data + .ident "GCC: (Google_crosstoolv16-gcc-4.7.x-grtev3) 4.7.x-google 20120720 (prerelease)" + .section .note.GNU-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/dwp_test_2.sh b/binutils-2.25/gold/testsuite/dwp_test_2.sh new file mode 100755 index 00000000..619d73b9 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_2.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +# dwp_test_2.sh -- Test the dwp tool. + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +check_num() +{ + n=$(grep -c "$2" "$1") + if test "$n" -ne "$3" + then + echo "Found $n occurrences (should find $3):" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +STDOUT="dwp_test_2.stdout" + +check $STDOUT "^Contents of the .debug_info.dwo section" +check_num $STDOUT "DW_TAG_compile_unit" 4 +check_num $STDOUT "DW_TAG_type_unit" 3 +check_num $STDOUT "DW_AT_name.*: C1" 3 +check_num $STDOUT "DW_AT_name.*: C2" 2 +check_num $STDOUT "DW_AT_name.*: C3" 3 +check_num $STDOUT "DW_AT_name.*: testcase1" 6 +check_num $STDOUT "DW_AT_name.*: testcase2" 6 +check_num $STDOUT "DW_AT_name.*: testcase3" 6 +check_num $STDOUT "DW_AT_name.*: testcase4" 4 diff --git a/binutils-2.25/gold/testsuite/dwp_test_main.cc b/binutils-2.25/gold/testsuite/dwp_test_main.cc new file mode 100644 index 00000000..abddc0fa --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_main.cc @@ -0,0 +1,59 @@ +// dwp_test_main.cc -- a test case for dwp + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Adapted from two_file_test_main.cc. + +#include + +#include "dwp_test.h" + +int +main() +{ + C1 c1; + C2 c2; + + // Initialize common data. + v3 = 789; + for (int i = 0; i < 13; ++i) + v5[i] = v4[i]; + + assert(c1.testcase1()); + assert(c1.t1a()); + assert(c1.testcase2()); + assert(c1.testcase3()); + assert(c1.testcase4()); + assert(c2.testcase1()); + assert(c2.testcase2()); + assert(c2.testcase3()); + assert(c2.testcase4()); + assert(c3.testcase1()); + assert(c3.testcase2()); + assert(c3.testcase3()); + assert(t12()); + assert(t13()); + assert(t16()); + assert(t16a()); + assert(t17()); + assert(t18()); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/dwp_test_main.s b/binutils-2.25/gold/testsuite/dwp_test_main.s new file mode 100644 index 00000000..f8643658 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dwp_test_main.s @@ -0,0 +1,1399 @@ + .file "dwp_test_main.cc" + .text +.Ltext0: + .section .rodata +.LC0: + .string "dwp_test_main.cc" +.LC1: + .string "c1.testcase1()" +.LC2: + .string "c1.t1a()" +.LC3: + .string "c1.testcase2()" +.LC4: + .string "c1.testcase3()" +.LC5: + .string "c1.testcase4()" +.LC6: + .string "c2.testcase1()" +.LC7: + .string "c2.testcase2()" +.LC8: + .string "c2.testcase3()" +.LC9: + .string "c2.testcase4()" +.LC10: + .string "c3.testcase1()" +.LC11: + .string "c3.testcase2()" +.LC12: + .string "c3.testcase3()" +.LC13: + .string "t12()" +.LC14: + .string "t13()" +.LC15: + .string "t16()" +.LC16: + .string "t16a()" +.LC17: + .string "t17()" +.LC18: + .string "t18()" + .text + .globl main + .type main, @function +main: +.LFB1: + .file 1 "dwp_test_main.cc" + .loc 1 31 0 + .cfi_startproc + .cfi_personality 0x3,__gxx_personality_v0 + .cfi_lsda 0x3,.LLSDA1 + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $32, %rsp +.LBB2: + .loc 1 36 0 + movl $789, v3(%rip) +.LBB3: + .loc 1 37 0 + movl $0, -4(%rbp) + jmp .L2 +.L3: + .loc 1 38 0 + movl -4(%rbp), %eax + cltq + movzbl v4(%rax), %edx + movl -4(%rbp), %eax + cltq + movb %dl, v5(%rax) + .loc 1 37 0 discriminator 2 + addl $1, -4(%rbp) +.L2: + .loc 1 37 0 is_stmt 0 discriminator 1 + cmpl $12, -4(%rbp) + setle %al + testb %al, %al + jne .L3 +.LBE3: + .loc 1 40 0 is_stmt 1 + leaq -16(%rbp), %rax + movq %rax, %rdi +.LEHB0: + call _ZN2C19testcase1Ev + .loc 1 40 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L4 + .loc 1 40 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $40, %edx + movl $.LC0, %esi + movl $.LC1, %edi + call __assert_fail +.L4: + .loc 1 41 0 is_stmt 1 + leaq -16(%rbp), %rax + movq %rax, %rdi + call _ZN2C13t1aEv + .loc 1 41 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L5 + .loc 1 41 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $41, %edx + movl $.LC0, %esi + movl $.LC2, %edi + call __assert_fail +.L5: + .loc 1 42 0 is_stmt 1 + leaq -16(%rbp), %rax + movq %rax, %rdi + call _ZN2C19testcase2Ev + .loc 1 42 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L6 + .loc 1 42 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $42, %edx + movl $.LC0, %esi + movl $.LC3, %edi + call __assert_fail +.L6: + .loc 1 43 0 is_stmt 1 + leaq -16(%rbp), %rax + movq %rax, %rdi + call _ZN2C19testcase3Ev + .loc 1 43 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L7 + .loc 1 43 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $43, %edx + movl $.LC0, %esi + movl $.LC4, %edi + call __assert_fail +.L7: + .loc 1 44 0 is_stmt 1 + leaq -16(%rbp), %rax + movq %rax, %rdi + call _ZN2C19testcase4Ev + .loc 1 44 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L8 + .loc 1 44 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $44, %edx + movl $.LC0, %esi + movl $.LC5, %edi + call __assert_fail +.L8: + .loc 1 45 0 is_stmt 1 + leaq -32(%rbp), %rax + movq %rax, %rdi + call _ZN2C29testcase1Ev + .loc 1 45 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L9 + .loc 1 45 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $45, %edx + movl $.LC0, %esi + movl $.LC6, %edi + call __assert_fail +.L9: + .loc 1 46 0 is_stmt 1 + leaq -32(%rbp), %rax + movq %rax, %rdi + call _ZN2C29testcase2Ev + .loc 1 46 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L10 + .loc 1 46 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $46, %edx + movl $.LC0, %esi + movl $.LC7, %edi + call __assert_fail +.L10: + .loc 1 47 0 is_stmt 1 + leaq -32(%rbp), %rax + movq %rax, %rdi + call _ZN2C29testcase3Ev + .loc 1 47 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L11 + .loc 1 47 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $47, %edx + movl $.LC0, %esi + movl $.LC8, %edi + call __assert_fail +.L11: + .loc 1 48 0 is_stmt 1 + leaq -32(%rbp), %rax + movq %rax, %rdi + call _ZN2C29testcase4Ev + .loc 1 48 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L12 + .loc 1 48 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $48, %edx + movl $.LC0, %esi + movl $.LC9, %edi + call __assert_fail +.L12: + .loc 1 49 0 is_stmt 1 + movl $c3, %edi + call _ZN2C39testcase1Ev + .loc 1 49 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L13 + .loc 1 49 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $49, %edx + movl $.LC0, %esi + movl $.LC10, %edi + call __assert_fail +.L13: + .loc 1 50 0 is_stmt 1 + movl $c3, %edi + call _ZN2C39testcase2Ev + .loc 1 50 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L14 + .loc 1 50 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $50, %edx + movl $.LC0, %esi + movl $.LC11, %edi + call __assert_fail +.L14: + .loc 1 51 0 is_stmt 1 + movl $c3, %edi + call _ZN2C39testcase3Ev + .loc 1 51 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L15 + .loc 1 51 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $51, %edx + movl $.LC0, %esi + movl $.LC12, %edi + call __assert_fail +.L15: + .loc 1 52 0 is_stmt 1 + call _Z3t12v + .loc 1 52 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L16 + .loc 1 52 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $52, %edx + movl $.LC0, %esi + movl $.LC13, %edi + call __assert_fail +.L16: + .loc 1 53 0 is_stmt 1 + call _Z3t13v + .loc 1 53 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L17 + .loc 1 53 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $53, %edx + movl $.LC0, %esi + movl $.LC14, %edi + call __assert_fail +.L17: + .loc 1 54 0 is_stmt 1 + call _Z3t16v + .loc 1 54 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L18 + .loc 1 54 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $54, %edx + movl $.LC0, %esi + movl $.LC15, %edi + call __assert_fail +.L18: + .loc 1 55 0 is_stmt 1 + call _Z4t16av + .loc 1 55 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L19 + .loc 1 55 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $55, %edx + movl $.LC0, %esi + movl $.LC16, %edi + call __assert_fail +.L19: + .loc 1 56 0 is_stmt 1 + call _Z3t17v + .loc 1 56 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L20 + .loc 1 56 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $56, %edx + movl $.LC0, %esi + movl $.LC17, %edi + call __assert_fail +.L20: + .loc 1 57 0 is_stmt 1 + call _Z3t18v +.LEHE0: + .loc 1 57 0 is_stmt 0 discriminator 1 + testb %al, %al + jne .L21 + .loc 1 57 0 discriminator 2 + movl $_ZZ4mainE19__PRETTY_FUNCTION__, %ecx + movl $57, %edx + movl $.LC0, %esi + movl $.LC18, %edi + call __assert_fail +.L21: + .loc 1 58 0 is_stmt 1 + movl $0, %eax + jmp .L25 +.L24: + movq %rax, %rdi +.LEHB1: + call _Unwind_Resume +.LEHE1: +.L25: +.LBE2: + .loc 1 59 0 + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE1: + .globl __gxx_personality_v0 + .section .gcc_except_table,"a",@progbits +.LLSDA1: + .byte 0xff + .byte 0xff + .byte 0x1 + .uleb128 .LLSDACSE1-.LLSDACSB1 +.LLSDACSB1: + .uleb128 .LEHB0-.LFB1 + .uleb128 .LEHE0-.LEHB0 + .uleb128 .L24-.LFB1 + .uleb128 0 + .uleb128 .LEHB1-.LFB1 + .uleb128 .LEHE1-.LEHB1 + .uleb128 0 + .uleb128 0 +.LLSDACSE1: + .text + .size main, .-main + .section .rodata + .type _ZZ4mainE19__PRETTY_FUNCTION__, @object + .size _ZZ4mainE19__PRETTY_FUNCTION__, 11 +_ZZ4mainE19__PRETTY_FUNCTION__: + .string "int main()" + .text +.Letext0: + .file 2 "dwp_test.h" + .section .debug_types.dwo,"G",@progbits,wt.bb2916f0c1bd34b5,comdat + .long 0xf7 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0x8a + .byte 0xda + .byte 0x59 + .byte 0x6e + .byte 0x4d + .byte 0x5c + .byte 0xa + .byte 0x88 + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C3" + .byte 0x4 + .byte 0x2 + .byte 0x2f + .long 0xda + .uleb128 0x3 + .uleb128 0x3 + .byte 0x2 + .byte 0x36 + .long 0xda + .byte 0 + .byte 0x1 + .uleb128 0x4 + .uleb128 0 + .byte 0x2 + .byte 0x32 + .string "_ZN2C39testcase1Ev" + .long 0xe1 + .byte 0x1 + .long 0x5e + .long 0x64 + .uleb128 0x5 + .long 0xe9 + .byte 0 + .uleb128 0x4 + .uleb128 0x1 + .byte 0x2 + .byte 0x33 + .string "_ZN2C39testcase2Ev" + .long 0xe1 + .byte 0x1 + .long 0x88 + .long 0x8e + .uleb128 0x5 + .long 0xe9 + .byte 0 + .uleb128 0x4 + .uleb128 0x2 + .byte 0x2 + .byte 0x34 + .string "_ZN2C39testcase3Ev" + .long 0xe1 + .byte 0x1 + .long 0xb2 + .long 0xb8 + .uleb128 0x5 + .long 0xe9 + .byte 0 + .uleb128 0x6 + .string "f4" + .byte 0x2 + .byte 0x35 + .string "_ZN2C32f4Ev" + .long 0xef + .byte 0x1 + .long 0xd3 + .uleb128 0x5 + .long 0xe9 + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .uleb128 0x8 + .byte 0x8 + .long 0xf5 + .uleb128 0x9 + .long 0xe1 + .byte 0 + .section .debug_types,"G",@progbits,wt.bb2916f0c1bd34b5,comdat + .long 0x71 + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_main.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_types.dwo,"G",@progbits,wt.66526f88bcc798ab,comdat + .long 0xf1 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0x66 + .byte 0x52 + .byte 0x6f + .byte 0x88 + .byte 0xbc + .byte 0xc7 + .byte 0x98 + .byte 0xab + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0x4b + .byte 0xf9 + .byte 0xce + .byte 0xbf + .byte 0xd8 + .byte 0xf0 + .byte 0x4a + .byte 0xae + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C2" + .byte 0x4 + .byte 0x2 + .byte 0x25 + .long 0xdf + .uleb128 0x3 + .uleb128 0x3 + .byte 0x2 + .byte 0x2c + .long 0xdf + .byte 0 + .byte 0x1 + .uleb128 0x4 + .uleb128 0 + .byte 0x2 + .byte 0x28 + .string "_ZN2C29testcase1Ev" + .long 0xe6 + .byte 0x1 + .long 0x5e + .long 0x64 + .uleb128 0x5 + .long 0xee + .byte 0 + .uleb128 0x4 + .uleb128 0x1 + .byte 0x2 + .byte 0x29 + .string "_ZN2C29testcase2Ev" + .long 0xe6 + .byte 0x1 + .long 0x88 + .long 0x8e + .uleb128 0x5 + .long 0xee + .byte 0 + .uleb128 0x4 + .uleb128 0x2 + .byte 0x2 + .byte 0x2a + .string "_ZN2C29testcase3Ev" + .long 0xe6 + .byte 0x1 + .long 0xb2 + .long 0xb8 + .uleb128 0x5 + .long 0xee + .byte 0 + .uleb128 0xa + .uleb128 0x4 + .byte 0x2 + .byte 0x2b + .string "_ZN2C29testcase4Ev" + .long 0xe6 + .byte 0x1 + .long 0xd8 + .uleb128 0x5 + .long 0xee + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .byte 0 + .section .debug_types,"G",@progbits,wt.66526f88bcc798ab,comdat + .long 0x71 + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0x66 + .byte 0x52 + .byte 0x6f + .byte 0x88 + .byte 0xbc + .byte 0xc7 + .byte 0x98 + .byte 0xab + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_main.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_types.dwo,"G",@progbits,wt.c419a9b7a4a2fab5,comdat + .long 0x141 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .long 0x25 + .uleb128 0x1 + .byte 0x4 + .byte 0xe3 + .byte 0xad + .byte 0x5 + .byte 0x3b + .byte 0x75 + .byte 0xeb + .byte 0xfb + .byte 0xc7 + .long .Lskeleton_debug_line0 + .uleb128 0x2 + .string "C1" + .byte 0x4 + .byte 0x2 + .byte 0x19 + .long 0x12f + .uleb128 0x3 + .uleb128 0x3 + .byte 0x2 + .byte 0x22 + .long 0x12f + .byte 0 + .byte 0x1 + .uleb128 0x4 + .uleb128 0 + .byte 0x2 + .byte 0x1c + .string "_ZN2C19testcase1Ev" + .long 0x136 + .byte 0x1 + .long 0x5e + .long 0x64 + .uleb128 0x5 + .long 0x13e + .byte 0 + .uleb128 0xb + .string "t1a" + .byte 0x2 + .byte 0x1d + .string "_ZN2C13t1aEv" + .long 0x136 + .byte 0x1 + .long 0x85 + .long 0x8b + .uleb128 0x5 + .long 0x13e + .byte 0 + .uleb128 0xb + .string "t1_2" + .byte 0x2 + .byte 0x1e + .string "_ZN2C14t1_2Ev" + .long 0x12f + .byte 0x1 + .long 0xae + .long 0xb4 + .uleb128 0x5 + .long 0x13e + .byte 0 + .uleb128 0x4 + .uleb128 0x1 + .byte 0x2 + .byte 0x1f + .string "_ZN2C19testcase2Ev" + .long 0x136 + .byte 0x1 + .long 0xd8 + .long 0xde + .uleb128 0x5 + .long 0x13e + .byte 0 + .uleb128 0x4 + .uleb128 0x2 + .byte 0x2 + .byte 0x20 + .string "_ZN2C19testcase3Ev" + .long 0x136 + .byte 0x1 + .long 0x102 + .long 0x108 + .uleb128 0x5 + .long 0x13e + .byte 0 + .uleb128 0xa + .uleb128 0x4 + .byte 0x2 + .byte 0x21 + .string "_ZN2C19testcase4Ev" + .long 0x136 + .byte 0x1 + .long 0x128 + .uleb128 0x5 + .long 0x13e + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0x8 + .byte 0x8 + .long 0x25 + .byte 0 + .section .debug_types,"G",@progbits,wt.c419a9b7a4a2fab5,comdat + .long 0x71 + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .long 0 + .uleb128 0x2 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_main.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_info.dwo,"e",@progbits +.Ldebug_info0: + .long 0x178 + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .uleb128 0xc + .string "GNU C++ 4.7.x-google 20120720 (prerelease)" + .byte 0x4 + .string "dwp_test_main.cc" + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .byte 0xc8 + .byte 0xeb + .byte 0x9a + .byte 0x5c + .byte 0xd9 + .byte 0x51 + .byte 0xba + .byte 0xe5 + .uleb128 0x7 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x7 + .byte 0x1 + .byte 0x2 + .string "bool" + .uleb128 0xd + .string "main" + .byte 0x1 + .byte 0x1e + .long 0x90 + .uleb128 0 + .quad .LFE1-.LFB1 + .uleb128 0x1 + .byte 0x9c + .long 0x11b + .uleb128 0xe + .uleb128 0x1 + .quad .LBE2-.LBB2 + .uleb128 0xf + .string "c1" + .byte 0x1 + .byte 0x20 + .byte 0xc4 + .byte 0x19 + .byte 0xa9 + .byte 0xb7 + .byte 0xa4 + .byte 0xa2 + .byte 0xfa + .byte 0xb5 + .uleb128 0x2 + .byte 0x91 + .sleb128 -32 + .uleb128 0xf + .string "c2" + .byte 0x1 + .byte 0x21 + .byte 0x66 + .byte 0x52 + .byte 0x6f + .byte 0x88 + .byte 0xbc + .byte 0xc7 + .byte 0x98 + .byte 0xab + .uleb128 0x2 + .byte 0x91 + .sleb128 -48 + .uleb128 0x10 + .string "__PRETTY_FUNCTION__" + .long 0x13f + .uleb128 0x2 + .byte 0xfb + .uleb128 0x2 + .uleb128 0xe + .uleb128 0x3 + .quad .LBE3-.LBB3 + .uleb128 0x11 + .string "i" + .byte 0x1 + .byte 0x25 + .long 0x90 + .uleb128 0x2 + .byte 0x91 + .sleb128 -20 + .byte 0 + .byte 0 + .byte 0 + .uleb128 0x12 + .long 0x137 + .long 0x12b + .uleb128 0x13 + .long 0x12b + .byte 0xa + .byte 0 + .uleb128 0x7 + .byte 0x8 + .byte 0x7 + .string "sizetype" + .uleb128 0x7 + .byte 0x1 + .byte 0x6 + .string "char" + .uleb128 0x14 + .long 0x11b + .uleb128 0x15 + .string "c3" + .byte 0x2 + .byte 0x39 + .byte 0xbb + .byte 0x29 + .byte 0x16 + .byte 0xf0 + .byte 0xc1 + .byte 0xbd + .byte 0x34 + .byte 0xb5 + .uleb128 0x16 + .string "v3" + .byte 0x2 + .byte 0x3c + .long 0x90 + .uleb128 0x12 + .long 0x137 + .long 0x167 + .uleb128 0x17 + .byte 0 + .uleb128 0x16 + .string "v4" + .byte 0x2 + .byte 0x3d + .long 0x15c + .uleb128 0x16 + .string "v5" + .byte 0x2 + .byte 0x3e + .long 0x15c + .byte 0 + .section .debug_info,"",@progbits +.Lskeleton_debug_info0: + .long 0x81 + .value 0x4 + .long .Lskeleton_debug_abbrev0 + .byte 0x8 + .uleb128 0x1 + .quad .Ltext0 + .quad .Letext0-.Ltext0 + .long .Ldebug_line0 + .byte 0xc8 + .byte 0xeb + .byte 0x9a + .byte 0x5c + .byte 0xd9 + .byte 0x51 + .byte 0xba + .byte 0xe5 + .string "/home/ccoutant/opensource/binutils-git/binutils/gold/testsuite" + .string "dwp_test_main.dwo" + .long .Ldebug_pubnames0 + .long .Ldebug_pubtypes0 + .long .Ldebug_addr0 + .section .debug_abbrev,"",@progbits +.Lskeleton_debug_abbrev0: + .uleb128 0x1 + .uleb128 0x11 + .byte 0 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x10 + .uleb128 0x17 + .uleb128 0x2131 + .uleb128 0x7 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2130 + .uleb128 0x8 + .uleb128 0x2134 + .uleb128 0x17 + .uleb128 0x2135 + .uleb128 0x17 + .uleb128 0x2133 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x41 + .byte 0 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2130 + .uleb128 0x8 + .uleb128 0x2134 + .uleb128 0x17 + .uleb128 0x2135 + .uleb128 0x17 + .uleb128 0x2133 + .uleb128 0x17 + .byte 0 + .byte 0 + .byte 0 + .section .debug_abbrev.dwo,"e",@progbits +.Ldebug_abbrev0: + .uleb128 0x1 + .uleb128 0x41 + .byte 0x1 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x210f + .uleb128 0x7 + .uleb128 0x10 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x2 + .byte 0x1 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x3 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .uleb128 0x32 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x4 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x5 + .uleb128 0x5 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x34 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x6 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x7 + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 + .uleb128 0x15 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xa + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x1f02 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xb + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x32 + .uleb128 0xb + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x64 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xc + .uleb128 0x11 + .byte 0x1 + .uleb128 0x25 + .uleb128 0x8 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x1b + .uleb128 0x8 + .uleb128 0x2131 + .uleb128 0x7 + .byte 0 + .byte 0 + .uleb128 0xd + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2116 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xe + .uleb128 0xb + .byte 0x1 + .uleb128 0x11 + .uleb128 0x1f01 + .uleb128 0x12 + .uleb128 0x7 + .byte 0 + .byte 0 + .uleb128 0xf + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x20 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x10 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x34 + .uleb128 0x19 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x11 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x12 + .uleb128 0x1 + .byte 0x1 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x13 + .uleb128 0x21 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2f + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x14 + .uleb128 0x26 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x15 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x20 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x16 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x17 + .uleb128 0x21 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .section .debug_gnu_pubnames,"",@progbits +.Ldebug_pubnames0: + .long 0x18 + .value 0x2 + .long .Lskeleton_debug_info0 + .long 0x17c + .long 0x9f + .byte 0x30 + .string "main" + .long 0 + .section .debug_gnu_pubtypes,"",@progbits +.Ldebug_pubtypes0: + .long 0x51 + .value 0x2 + .long .Lskeleton_debug_info0 + .long 0x17c + .long 0x90 + .byte 0x90 + .string "int" + .long 0x97 + .byte 0x90 + .string "bool" + .long 0 + .byte 0x10 + .string "C1" + .long 0 + .byte 0x10 + .string "C2" + .long 0 + .byte 0x10 + .string "C3" + .long 0x12b + .byte 0x90 + .string "sizetype" + .long 0x137 + .byte 0x90 + .string "char" + .long 0 + .section .debug_aranges,"",@progbits + .long 0x2c + .value 0x2 + .long .Lskeleton_debug_info0 + .byte 0x8 + .byte 0 + .value 0 + .value 0 + .quad .Ltext0 + .quad .Letext0-.Ltext0 + .quad 0 + .quad 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_line.dwo,"e",@progbits +.Lskeleton_debug_line0: + .long .LELT0-.LSLT0 +.LSLT0: + .value 0x4 + .long .LELTP0-.LASLTP0 +.LASLTP0: + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0xf6 + .byte 0xf2 + .byte 0xd + .byte 0 + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0x1 + .byte 0 + .byte 0 + .byte 0 + .byte 0x1 + .byte 0 + .byte 0 + .byte 0x1 + .byte 0 + .string "dwp_test_main.cc" + .uleb128 0 + .uleb128 0 + .uleb128 0 + .string "dwp_test.h" + .uleb128 0 + .uleb128 0 + .uleb128 0 + .byte 0 +.LELTP0: +.LELT0: + .section .debug_str_offsets.dwo,"e",@progbits + .long 0 + .long 0xa + .long 0x14 + .long 0x1e + .long 0x26 + .section .debug_str.dwo,"e",@progbits +.LASF0: + .string "testcase1" +.LASF1: + .string "testcase2" +.LASF2: + .string "testcase3" +.LASF3: + .string "member1" +.LASF4: + .string "testcase4" + .section .debug_addr,"",@progbits +.Ldebug_addr0: + .quad .LFB1 + .quad .LBB2 + .quad _ZZ4mainE19__PRETTY_FUNCTION__ + .quad .LBB3 + .ident "GCC: (Google_crosstoolv16-gcc-4.7.x-grtev3) 4.7.x-google 20120720 (prerelease)" + .section .note.GNU-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/dyn_weak_ref.sh b/binutils-2.25/gold/testsuite/dyn_weak_ref.sh new file mode 100755 index 00000000..b52efaca --- /dev/null +++ b/binutils-2.25/gold/testsuite/dyn_weak_ref.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# dyn_weak_ref.sh -- test weak reference remains weak in output even if +# gold sees a dynamic weak reference before a static one. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This checks that the reference to 'weak_ref' have WEAK binding. + +check() +{ + file=$1 + pattern=$2 + found=`grep "$pattern" $file` + if test -z "$found"; then + echo "pattern \"$pattern\" not found in file $file." + echo $found + exit 1 + fi +} + +check dyn_weak_ref.stdout ".* WEAK .* UND.* weak_ref" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/dyn_weak_ref_1.c b/binutils-2.25/gold/testsuite/dyn_weak_ref_1.c new file mode 100644 index 00000000..fdd78dd4 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dyn_weak_ref_1.c @@ -0,0 +1,39 @@ +// dyn_weak_ref_1.c -- test that a weak ref remains weak in output when +// there is a DSO with the same weak ref. + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Doug Kwan . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// We test that we correctly deal with a weak reference to from both +// a DSO and a weak reference to the same symbol in an executable. The +// symbol should remains weak. + +// This source is used to build an DSO that references the same weak +// symbol as in a dependent DSO. + +extern void weak_ref (void) __attribute__((weak)); + +void* ptr1 = weak_ref; + +int +main (void) +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/dyn_weak_ref_2.c b/binutils-2.25/gold/testsuite/dyn_weak_ref_2.c new file mode 100644 index 00000000..8a087a15 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dyn_weak_ref_2.c @@ -0,0 +1,32 @@ +// dyn_weak_ref_1.c -- test that a weak ref remains weak in output when +// there is a DSO with the same weak ref. + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Doug Kwan . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// We test that we correctly deal with a weak reference to from both +// a DSO and a weak reference to the same symbol in an executable. The +// symbol should remains weak. + +// This source is used to build a DSO that contains a weak reference. + +extern void weak_ref (void) __attribute__((weak)); + +void* ptr2 = weak_ref; diff --git a/binutils-2.25/gold/testsuite/dynamic_list.sh b/binutils-2.25/gold/testsuite/dynamic_list.sh new file mode 100755 index 00000000..dfd9f0fe --- /dev/null +++ b/binutils-2.25/gold/testsuite/dynamic_list.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +# dynamic_list.sh -- test --dynamic-list and --dynamic-list-* + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with dynamic_list.t, which is a dynamic-list script. + +check() +{ + if ! grep -qw "$2" "$1" + then + echo "Did not find expected text in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check dynamic_list.stdout "main" # comes via --dynamic-list +check dynamic_list.stdout "_ZdlPv" # "operator delete(void*)" +check dynamic_list.stdout "_Z4t1_6v" # t1_6() +check dynamic_list.stdout "_ZN4t16aC2Ev" # t16a:t16a() +check dynamic_list.stdout "_ZN4t16aD1Ev" # t16a:~t16a() +check dynamic_list.stdout "_ZN4t16a1tEv" # t16a:t() +check dynamic_list.stdout "_ZTI4t16a" # typeinfo for t16a +check dynamic_list.stdout "_ZTI4t16b" # typeinfo for t16b +check dynamic_list.stdout "_ZTS4t16a" # typeinfo name for t16a +check dynamic_list.stdout "_ZTS4t16b" # typeinfo name for t16b +check dynamic_list.stdout "t20v" # comes via --dynamic-list-data diff --git a/binutils-2.25/gold/testsuite/dynamic_list.t b/binutils-2.25/gold/testsuite/dynamic_list.t new file mode 100644 index 00000000..64571737 --- /dev/null +++ b/binutils-2.25/gold/testsuite/dynamic_list.t @@ -0,0 +1,11 @@ +{ + main; + not_a_symbol; + global; + extern "C++" { t1_6* }; +}; +{ + extern "C++" { t16a* }; + local; + extern; +}; diff --git a/binutils-2.25/gold/testsuite/exception_test.h b/binutils-2.25/gold/testsuite/exception_test.h new file mode 100644 index 00000000..0dcd8f2c --- /dev/null +++ b/binutils-2.25/gold/testsuite/exception_test.h @@ -0,0 +1,27 @@ +// exception_test.h -- exception test case for gold, header file -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files. This is the shared header +// file. See exception_test_1.cc for details. + +extern bool t1(); +extern void f1(); diff --git a/binutils-2.25/gold/testsuite/exception_test_1.cc b/binutils-2.25/gold/testsuite/exception_test_1.cc new file mode 100644 index 00000000..56ae1434 --- /dev/null +++ b/binutils-2.25/gold/testsuite/exception_test_1.cc @@ -0,0 +1,52 @@ +// exception_test_1.cc -- test exception handling for gold, file 1 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests throwing an exception across various boundaries. This +// is a general test of the exception frame handling, and the +// interaction with the compiler support libraries. This is file 1, +// which catches the exception. We test in several different ways: + +// Files 1 and 2 linked together in executable. +// File 1 in executable, file 2 in shared library. +// File 1 in shared library, file 2 in executable. +// Files 1 and 2 linked together in shared library. +// Files 1 and 2 in different shared libraries. + +#include "exception_test.h" + +bool +t1() +{ + int i; + try + { + i = 0; + f1(); + i = 1; + } + catch (...) + { + return i == 0; + } + + return false; +} diff --git a/binutils-2.25/gold/testsuite/exception_test_2.cc b/binutils-2.25/gold/testsuite/exception_test_2.cc new file mode 100644 index 00000000..1098bd18 --- /dev/null +++ b/binutils-2.25/gold/testsuite/exception_test_2.cc @@ -0,0 +1,31 @@ +// exception_test_1.cc -- test exception handling for gold, file 1 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Second part of exception test. See exception_test_1.cc for details. + +#include "exception_test.h" + +void +f1() +{ + throw 0; +} diff --git a/binutils-2.25/gold/testsuite/exception_test_main.cc b/binutils-2.25/gold/testsuite/exception_test_main.cc new file mode 100644 index 00000000..09a018d1 --- /dev/null +++ b/binutils-2.25/gold/testsuite/exception_test_main.cc @@ -0,0 +1,35 @@ +// exception_test_main.cc -- an exception test case for gold, main function + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files. This is the main file. See +// two_file_test_1.cc for details. + +#include + +#include "exception_test.h" + +int +main() +{ + assert(t1()); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/exclude_libs_test.c b/binutils-2.25/gold/testsuite/exclude_libs_test.c new file mode 100644 index 00000000..85441a0c --- /dev/null +++ b/binutils-2.25/gold/testsuite/exclude_libs_test.c @@ -0,0 +1,14 @@ +extern void lib1_default (void); +extern void lib2_default (void); +extern void lib3_default (void); + +int +main (int argc __attribute__ ((unused)), + char** argv __attribute__ ((unused))) +{ + lib1_default (); + lib2_default (); + lib3_default (); + return 0; +} + diff --git a/binutils-2.25/gold/testsuite/exclude_libs_test.sh b/binutils-2.25/gold/testsuite/exclude_libs_test.sh new file mode 100755 index 00000000..65ce03b2 --- /dev/null +++ b/binutils-2.25/gold/testsuite/exclude_libs_test.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +# exclude_libs_test.sh -- test that library symbols are not exported. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Doug Kwan + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with exclude_libs_test.c, a C source file +# linked with option -Wl,--exclude-libs. We run readelf on +# the resulting executable and check that symbols from two test library +# archives are correctly hidden or left unmodified. + +check() +{ + file=$1 + sym=$2 + vis=$3 + + found=`grep " $sym\$" $file` + if test -z "$found"; then + echo "Symbol $sym not found." + exit 1 + fi + + match_vis=`grep " $sym\$" $file | grep " $vis "` + if test -z "$match_vis"; then + echo "Expected symbol $sym to have visibility $vis but found" + echo "$found" + exit 1 + fi +} + +check "exclude_libs_test.syms" "lib1_default" "HIDDEN" +check "exclude_libs_test.syms" "lib1_protected" "HIDDEN" +check "exclude_libs_test.syms" "lib1_internal" "INTERNAL" +check "exclude_libs_test.syms" "lib1_hidden" "HIDDEN" +check "exclude_libs_test.syms" "lib2_default" "DEFAULT" +check "exclude_libs_test.syms" "lib2_protected" "PROTECTED" +check "exclude_libs_test.syms" "lib2_internal" "INTERNAL" +check "exclude_libs_test.syms" "lib2_hidden" "HIDDEN" +check "exclude_libs_test.syms" "lib3_default" "HIDDEN" +check "exclude_libs_test.syms" "lib3_protected" "HIDDEN" +check "exclude_libs_test.syms" "lib3_internal" "INTERNAL" +check "exclude_libs_test.syms" "lib3_hidden" "HIDDEN" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/exclude_libs_test_1.c b/binutils-2.25/gold/testsuite/exclude_libs_test_1.c new file mode 100644 index 00000000..48b617b0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/exclude_libs_test_1.c @@ -0,0 +1,32 @@ +void lib1_default (void); +void lib1_hidden (void); +void lib1_internal (void); +void lib1_protected (void); +void lib1_ref (void); +extern void lib2_default (void); + +void __attribute__((visibility ("default"))) +lib1_default (void) +{ +} + +void __attribute__((visibility ("hidden"))) +lib1_hidden (void) +{ +} + +void __attribute__((visibility ("internal"))) +lib1_internal (void) +{ +} + +void __attribute__((visibility ("protected"))) +lib1_protected (void) +{ +} + +void +lib1_ref (void) +{ + lib2_default (); +} diff --git a/binutils-2.25/gold/testsuite/exclude_libs_test_2.c b/binutils-2.25/gold/testsuite/exclude_libs_test_2.c new file mode 100644 index 00000000..a8952e7a --- /dev/null +++ b/binutils-2.25/gold/testsuite/exclude_libs_test_2.c @@ -0,0 +1,24 @@ +void lib2_default (void); +void lib2_hidden (void); +void lib2_internal (void); +void lib2_protected (void); + +void __attribute__((visibility ("default"))) +lib2_default (void) +{ +} + +void __attribute__((visibility ("hidden"))) +lib2_hidden (void) +{ +} + +void __attribute__((visibility ("internal"))) +lib2_internal (void) +{ +} + +void __attribute__((visibility ("protected"))) +lib2_protected (void) +{ +} diff --git a/binutils-2.25/gold/testsuite/exclude_libs_test_3.c b/binutils-2.25/gold/testsuite/exclude_libs_test_3.c new file mode 100644 index 00000000..b4e26353 --- /dev/null +++ b/binutils-2.25/gold/testsuite/exclude_libs_test_3.c @@ -0,0 +1,24 @@ +void lib3_default (void); +void lib3_hidden (void); +void lib3_internal (void); +void lib3_protected (void); + +void __attribute__((visibility ("default"))) +lib3_default (void) +{ +} + +void __attribute__((visibility ("hidden"))) +lib3_hidden (void) +{ +} + +void __attribute__((visibility ("internal"))) +lib3_internal (void) +{ +} + +void __attribute__((visibility ("protected"))) +lib3_protected (void) +{ +} diff --git a/binutils-2.25/gold/testsuite/final_layout.cc b/binutils-2.25/gold/testsuite/final_layout.cc new file mode 100644 index 00000000..f5338859 --- /dev/null +++ b/binutils-2.25/gold/testsuite/final_layout.cc @@ -0,0 +1,48 @@ +// final_layout.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if --section-ordering-file orders +// the .text and .data sections correctly as specified. + +int global_vara; +int global_varb; +int global_varc; + +int foo() +{ + return 1; +} + +int bar() +{ + return 1; +} + +int baz() +{ + return 1; +} + +int main() +{ + return 1; +} diff --git a/binutils-2.25/gold/testsuite/final_layout.sh b/binutils-2.25/gold/testsuite/final_layout.sh new file mode 100755 index 00000000..d9d86ee3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/final_layout.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +# final_layout.sh -- test --final-layout + +# Copyright 2010, 2011 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if --section-ordering-file works as +# intended. File final_layout.cc is in this test. + +set -e + +check() +{ + awk " +BEGIN { saw1 = 0; saw2 = 0; err = 0; } +/.*$2\$/ { saw1 = 1; } +/.*$3\$/ { + saw2 = 1; + if (!saw1) + { + printf \"layout of $2 and $3 is not right\\n\"; + err = 1; + exit 1; + } + } +END { + if (!saw1 && !err) + { + printf \"did not see $2\\n\"; + exit 1; + } + if (!saw2 && !err) + { + printf \"did not see $3\\n\"; + exit 1; + } + }" $1 +} + +check final_layout.stdout "_Z3barv" "_Z3bazv" +check final_layout.stdout "_Z3bazv" "_Z3foov" +check final_layout.stdout "global_varb" "global_vara" +check final_layout.stdout "global_vara" "global_varc" diff --git a/binutils-2.25/gold/testsuite/gc_comdat_test.sh b/binutils-2.25/gold/testsuite/gc_comdat_test.sh new file mode 100755 index 00000000..baff98d0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gc_comdat_test.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# gc_comdat_test.sh -- test --gc-sections + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if comdat's and garbage +# collection work together. Files gc_comdat_test_1.cc and +# gc_comdat_test_2.cc are used in this test. This program checks +# if the kept comdat section is garbage collected. + +check() +{ + if grep -q "$2" "$1" + then + echo "Garbage collection failed to collect :" + echo " $2" + exit 1 + fi +} + +check gc_comdat_test.stdout "foo()" +check gc_comdat_test.stdout "bar()" +check gc_comdat_test.stdout "int GetMax(int, int)" diff --git a/binutils-2.25/gold/testsuite/gc_comdat_test_1.cc b/binutils-2.25/gold/testsuite/gc_comdat_test_1.cc new file mode 100644 index 00000000..0b4b286d --- /dev/null +++ b/binutils-2.25/gold/testsuite/gc_comdat_test_1.cc @@ -0,0 +1,42 @@ +// gc_comdat_test_1.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if comdat's and garbage +// collection work together. This file is compiled with -g. The +// comdat kept function for GetMax is garbage. + +int foo(); +template +T GetMax (T a, T b) +{ + return (a > b)?a:b; +} + +int bar () +{ + return GetMax (4,5); +} + +int main() +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/gc_comdat_test_2.cc b/binutils-2.25/gold/testsuite/gc_comdat_test_2.cc new file mode 100644 index 00000000..5841bdf0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gc_comdat_test_2.cc @@ -0,0 +1,35 @@ +// gc_comdat_test_2.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if comdat's and garbage +// collection work together. This file is compiled with -g. + +template +T GetMax (T a, T b) +{ + return (a > b)?a:b; +} + +int foo () +{ + return GetMax (10,11); +} diff --git a/binutils-2.25/gold/testsuite/gc_orphan_section_test.cc b/binutils-2.25/gold/testsuite/gc_orphan_section_test.cc new file mode 100644 index 00000000..3443f8d2 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gc_orphan_section_test.cc @@ -0,0 +1,36 @@ +// gc_orphan_section_test.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if garbage collection does not +// discard orphan sections when references to them through __start_XXX +// and __stop_XXX are present. Here section _foo must not be gc'ed but +// _boo should be gc'ed. + +extern const int *__start__foo; +int foo __attribute__((__section__("_foo"))) = 1; +int boo __attribute__((__section__("_boo"))) = 1; + +int main() +{ + return *__start__foo; +} + diff --git a/binutils-2.25/gold/testsuite/gc_orphan_section_test.sh b/binutils-2.25/gold/testsuite/gc_orphan_section_test.sh new file mode 100755 index 00000000..6ce524da --- /dev/null +++ b/binutils-2.25/gold/testsuite/gc_orphan_section_test.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +# gc_orphan_section_test.sh -- test --gc-sections + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if gc-sections works as expected +# with orphan sections. +# File gc_orphan_sections_test.cc is in this test. This program checks if +# the orphan sections are retained when they are referenced through +# __start_XXX and __stop_XXX symbols. + +check() +{ + if grep -q " boo" "$1" + then + echo "Garbage collection failed to collect boo" + exit 1 + fi + grep_foo=`grep -q " foo" $1` + if [ $? != 0 ]; + then + echo "Garbage collection should not discard foo" + exit 1 + fi +} + +check gc_orphan_section_test.stdout diff --git a/binutils-2.25/gold/testsuite/gc_tls_test.cc b/binutils-2.25/gold/testsuite/gc_tls_test.cc new file mode 100644 index 00000000..1b10d987 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gc_tls_test.cc @@ -0,0 +1,32 @@ +// gc_tls_test.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if tls sections are garbage +// collected with --gc-sections. + +__thread int number; + +int main() +{ + return 0; +} + diff --git a/binutils-2.25/gold/testsuite/gc_tls_test.sh b/binutils-2.25/gold/testsuite/gc_tls_test.sh new file mode 100755 index 00000000..c4635c99 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gc_tls_test.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# gc_tls_test.sh -- test -- gc + tls + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if tls sections are garbage +# collected with --gc-sections. File gc_tls_test.cc is in this test. + +check() +{ + if grep -q "$2" "$1" + then + echo "Garbage collection failed to collect tls variable:" + echo " $2" + exit 1 + fi + +} + +check gc_tls_test.stdout "number" diff --git a/binutils-2.25/gold/testsuite/gdb_index_test.cc b/binutils-2.25/gold/testsuite/gdb_index_test.cc new file mode 100644 index 00000000..d5ac2f19 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gdb_index_test.cc @@ -0,0 +1,149 @@ +// gdb_index_test.cc -- a test case for the --gdb-index option. + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This source file defines a number of symbols of different forms +// to exercise the DWARF scanner in gold. + +namespace +{ +int c1_count; +int c2_count; +}; + +namespace one +{ + +enum G +{ + G_A, + G_B, + G_C +}; + +class c1 +{ + public: + static int count; + + c1() + { ++c1_count; } + + ~c1() + { + --c1_count; + } + + enum E + { + E_A, + E_B, + E_C, + }; + + int + val() + { return E_A; } +}; + +c1 c1v; +}; + +namespace two +{ +const int ci = 3; + +template +class c2 +{ + public: + c2(T t) + : t_(t) + { + ++c2_count; + } + + ~c2() + { --c2_count; } + + T + val() + { return this->t_; } + + T t_; +}; + +c2 c2v1(1); +c2 c2v2(2.0); +c2 c2v3(&ci); +}; + +enum F +{ + F_A, + F_B, + F_C +}; + +template +bool +check(C* c) +{ return c->val() == 0; } + +bool +check_enum(int i) +{ return i > 0; } + +struct anonymous_union_container { + union { + struct astruct { + int a; + }; + int b; + } u; +}; + +anonymous_union_container anonymous_union_var; + +#ifdef __GNUC__ +#define ALWAYS_INLINE __attribute__((always_inline)) +#else +#define ALWAYS_INLINE +#endif + +static inline ALWAYS_INLINE int +inline_func_1(int i) +{ return i * 17; } + +int +main() +{ + F f = F_A; + one::G g = one::G_A; + check_enum(f); + check_enum(g); + check(&one::c1v); + check(&two::c2v1); + check(&two::c2v2); + check(&two::c2v3); + anonymous_union_var.u.b = inline_func_1(3) - 51; + return anonymous_union_var.u.b; +} diff --git a/binutils-2.25/gold/testsuite/gdb_index_test_1.sh b/binutils-2.25/gold/testsuite/gdb_index_test_1.sh new file mode 100755 index 00000000..f04c8a77 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gdb_index_test_1.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +# gdb_index_test_1.sh -- a test case for the --gdb-index option. + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +exec ${srcdir}/gdb_index_test_comm.sh gdb_index_test_1.stdout diff --git a/binutils-2.25/gold/testsuite/gdb_index_test_2.sh b/binutils-2.25/gold/testsuite/gdb_index_test_2.sh new file mode 100755 index 00000000..e31aa422 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gdb_index_test_2.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +# gdb_index_test_2.sh -- a test case for the --gdb-index option. + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +exec ${srcdir}/gdb_index_test_comm.sh gdb_index_test_2.stdout diff --git a/binutils-2.25/gold/testsuite/gdb_index_test_3.c b/binutils-2.25/gold/testsuite/gdb_index_test_3.c new file mode 100644 index 00000000..df492613 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gdb_index_test_3.c @@ -0,0 +1,39 @@ +// gdb_index_test.c -- a test case for the --gdb-index option. + +// Copyright 2012 Free Software Foundation, Inc. + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This source file is just a simple C source file that is mainly to +// test the CU DW_AT_high_pc FORM encoding is handled correctly by the +// DWARF scanner in gold. + +int check_int (int); +int main (void); + +int j = 0; + +int +check_int (int i) +{ return i > 0; } + +int +main() +{ + return check_int (0); +} diff --git a/binutils-2.25/gold/testsuite/gdb_index_test_3.sh b/binutils-2.25/gold/testsuite/gdb_index_test_3.sh new file mode 100755 index 00000000..bd1500b8 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gdb_index_test_3.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +# gdb_index_test_3.sh -- a test case for the --gdb-index option. + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +STDOUT=gdb_index_test_3.stdout + +check $STDOUT "^Version [45]" + +# Look for the symbols we know should be in the symbol table. + +check $STDOUT "^\[ *[0-9]*\] main:" +check $STDOUT "^\[ *[0-9]*\] check_int:" +check $STDOUT "^\[ *[0-9]*\] j:" +check $STDOUT "^\[ *[0-9]*\] int:" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/gdb_index_test_4.sh b/binutils-2.25/gold/testsuite/gdb_index_test_4.sh new file mode 100755 index 00000000..44c8a9a1 --- /dev/null +++ b/binutils-2.25/gold/testsuite/gdb_index_test_4.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +# gdb_index_test_4.sh -- a test case for the --gdb-index option. + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +exec ${srcdir}/gdb_index_test_comm.sh gdb_index_test_4.stdout diff --git a/binutils-2.25/gold/testsuite/gdb_index_test_comm.sh b/binutils-2.25/gold/testsuite/gdb_index_test_comm.sh new file mode 100755 index 00000000..4ab07b3c --- /dev/null +++ b/binutils-2.25/gold/testsuite/gdb_index_test_comm.sh @@ -0,0 +1,85 @@ +#!/bin/sh + +# gdb_index_test_comm.sh -- common code for --gdb-index tests. + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +STDOUT="$1" + +check $STDOUT "^Version [45]" + +# Look for the symbols we know should be in the symbol table. + +check $STDOUT "^\[ *[0-9]*\] (anonymous namespace):" +check $STDOUT "^\[ *[0-9]*\] (anonymous namespace)::c1_count:" +check $STDOUT "^\[ *[0-9]*\] (anonymous namespace)::c2_count:" +check $STDOUT "^\[ *[0-9]*\] bool:" +check $STDOUT "^\[ *[0-9]*\] check:" +check $STDOUT "^\[ *[0-9]*\] check >:" +check $STDOUT "^\[ *[0-9]*\] check >:" +# check $STDOUT "^\[ *[0-9]*\] check >:" +check $STDOUT "^\[ *[0-9]*\] double:" +check $STDOUT "^\[ *[0-9]*\] F_A:" +check $STDOUT "^\[ *[0-9]*\] F_B:" +check $STDOUT "^\[ *[0-9]*\] F_C:" +check $STDOUT "^\[ *[0-9]*\] int:" +check $STDOUT "^\[ *[0-9]*\] main:" +check $STDOUT "^\[ *[0-9]*\] one:" +check $STDOUT "^\[ *[0-9]*\] one::c1:" +check $STDOUT "^\[ *[0-9]*\] one::c1::~c1:" +check $STDOUT "^\[ *[0-9]*\] one::c1::c1:" +check $STDOUT "^\[ *[0-9]*\] one::c1::val:" +check $STDOUT "^\[ *[0-9]*\] one::c1v:" +check $STDOUT "^\[ *[0-9]*\] one::G_A:" +check $STDOUT "^\[ *[0-9]*\] one::G_B:" +check $STDOUT "^\[ *[0-9]*\] one::G_B:" +check $STDOUT "^\[ *[0-9]*\] two:" +check $STDOUT "^\[ *[0-9]*\] two::c2::~c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2::c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2::val:" +check $STDOUT "^\[ *[0-9]*\] two::c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2::~c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2::c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2::val:" +check $STDOUT "^\[ *[0-9]*\] two::c2::~c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2::c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2::val:" +check $STDOUT "^\[ *[0-9]*\] two::c2:" +check $STDOUT "^\[ *[0-9]*\] two::c2v1:" +check $STDOUT "^\[ *[0-9]*\] two::c2v2:" +check $STDOUT "^\[ *[0-9]*\] anonymous_union_var:" +check $STDOUT "^\[ *[0-9]*\] inline_func_1:" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/hidden_test.sh b/binutils-2.25/gold/testsuite/hidden_test.sh new file mode 100755 index 00000000..df51b376 --- /dev/null +++ b/binutils-2.25/gold/testsuite/hidden_test.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +# hidden_test.sh -- a test case for hidden and internal symbols. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with hidden_test_main.c and hidden_test_1.c. +# The main program defines several symbols with each of the ELF +# visibilities, and the shared library attempts to reference the +# symbols. We try to link the program and check that the expected +# error messages are issued for the references to internal and +# hidden symbols. The errors will be found in hidden_test.err. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +check_missing() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +# We should see errors for hidden and internal symbols. +check hidden_test.err "hidden symbol 'main_hidden' in hidden_test_main.o is referenced by DSO libhidden.so" +check hidden_test.err "internal symbol 'main_internal' in hidden_test_main.o is referenced by DSO libhidden.so" + +# We shouldn't see errors for the default and protected symbols. +check_missing hidden_test.err "main_default" +check_missing hidden_test.err "main_protected" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/hidden_test_1.c b/binutils-2.25/gold/testsuite/hidden_test_1.c new file mode 100644 index 00000000..f685cabf --- /dev/null +++ b/binutils-2.25/gold/testsuite/hidden_test_1.c @@ -0,0 +1,41 @@ +/* hidden_test_1.c -- test hidden and internal symbols + + Copyright 2009 Free Software Foundation, Inc. + Written by Cary Coutant + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of symbols of various visibilities in the main program + and attempts to reference those symbols from a shared library. + The linker should issue an error message for references to hidden + and internal symbols. */ + +extern void main_default (void); +extern void main_hidden (void); +extern void main_internal (void); +extern void main_protected (void); + +int +lib1 (void) +{ + main_default (); + main_hidden (); + main_internal (); + main_protected (); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/hidden_test_main.c b/binutils-2.25/gold/testsuite/hidden_test_main.c new file mode 100644 index 00000000..c54864dc --- /dev/null +++ b/binutils-2.25/gold/testsuite/hidden_test_main.c @@ -0,0 +1,61 @@ +/* hidden_test_main.c -- test hidden and internal symbols + + Copyright 2009 Free Software Foundation, Inc. + Written by Cary Coutant + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of symbols of various visibilities in the main program + and attempts to reference those symbols from a shared library. + The linker should issue an error message for references to hidden + and internal symbols. */ + +extern void lib1 (void); + +void main_default (void); +void main_hidden (void); +void main_internal (void); +void main_protected (void); + +void __attribute__((visibility ("default"))) +main_default (void) +{ +} + +void __attribute__((visibility ("hidden"))) +main_hidden (void) +{ +} + +void __attribute__((visibility ("internal"))) +main_internal (void) +{ +} + +void __attribute__((visibility ("protected"))) +main_protected (void) +{ +} + +int +main (int argc __attribute__ ((unused)), + char** argv __attribute__ ((unused))) +{ + lib1 (); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/icf_keep_unique_test.cc b/binutils-2.25/gold/testsuite/icf_keep_unique_test.cc new file mode 100644 index 00000000..37f6437a --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_keep_unique_test.cc @@ -0,0 +1,39 @@ +// icf_keep_unique_test.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if --keep-unique works +// as intended when used with --icf. + +int kept_func() +{ + return 0; +} + +int unique_func() +{ + return 0; +} + +int main() +{ + return 1; +} diff --git a/binutils-2.25/gold/testsuite/icf_keep_unique_test.sh b/binutils-2.25/gold/testsuite/icf_keep_unique_test.sh new file mode 100755 index 00000000..c2673737 --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_keep_unique_test.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# icf_keep_unique_test.sh -- test --icf --keep-unique + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if --keep-unique works +# as intended when used with --icf. + +check() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 = $func_addr_2 ] + then + echo "Identical Code Folding with keep-unique failed to unfold" $2 + exit 1 + fi +} + +check icf_keep_unique_test.stdout "kept_func" "unique_func" diff --git a/binutils-2.25/gold/testsuite/icf_preemptible_functions_test.cc b/binutils-2.25/gold/testsuite/icf_preemptible_functions_test.cc new file mode 100644 index 00000000..35a96bc5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_preemptible_functions_test.cc @@ -0,0 +1,47 @@ +// icf_preemptible_functions_test.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify that preemptible functions are +// correctly handled by ICF. In this program, foo and bar should not +// be folded although they are identical as zap or zip could be preempted. + +int zap() +{ + return 0; +} + +int zip() +{ + return 0; +} + +int foo() +{ + zap(); + return 0; +} + +int bar() +{ + zip(); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/icf_preemptible_functions_test.sh b/binutils-2.25/gold/testsuite/icf_preemptible_functions_test.sh new file mode 100755 index 00000000..dd90d7fd --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_preemptible_functions_test.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# icf_preemptible_functions_test.sh -- test --icf=all + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + + +check() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 = $func_addr_2 ] + then + echo "Identical Code Folding should not fold" $2 "and" $3 + exit 1 + fi +} + +check icf_preemptible_functions_test.stdout "_Z3foov" "_Z3barv" diff --git a/binutils-2.25/gold/testsuite/icf_safe_so_test.cc b/binutils-2.25/gold/testsuite/icf_safe_so_test.cc new file mode 100644 index 00000000..0f50ad61 --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_safe_so_test.cc @@ -0,0 +1,74 @@ +// icf_safe_so_test.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if identical code folding +// in safe mode correctly folds functions in a shared object. The +// foo_* functions below should not be folded. For x86-64, +// foo_glob and bar_glob should be folded as their function pointers +// are addresses of PLT entries in shared objects. For 32-bit X86, +// the hidden protected and internal symbols can be folded. + +int __attribute__ ((visibility ("protected"))) +foo_prot() +{ + return 1; +} + +int __attribute__ ((visibility ("hidden"))) +foo_hidden() +{ + return 1; +} + +int __attribute__ ((visibility ("internal"))) +foo_internal() +{ + return 1; +} + +static int +foo_static() +{ + return 1; +} + +int foo_glob() +{ + return 2; +} + +int bar_glob() +{ + return 2; +} + +int main() +{ + int (*p)() = foo_glob; + (void)p; + foo_static(); + foo_prot(); + foo_hidden(); + foo_internal(); + return 0; +} + diff --git a/binutils-2.25/gold/testsuite/icf_safe_so_test.sh b/binutils-2.25/gold/testsuite/icf_safe_so_test.sh new file mode 100755 index 00000000..813248e5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_safe_so_test.sh @@ -0,0 +1,102 @@ +#!/bin/sh + +# icf_safe_so_test.sh -- test --icf=safe + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if --icf=safe works as expected. +# File icf_safe_so_test.cc is in this test. The goal of this script is +# to verify if identical code folding in safe mode correctly folds +# functions in a shared object. + +error_if_symbol_absent() +{ + if ! is_symbol_present $1 $2; + then + echo "Symbol" $2 "not present, possibly folded." + exit 1 + fi +} + +is_symbol_present() +{ + grep $2 $1 > /dev/null 2>&1 + return $? +} + +check_nofold() +{ + error_if_symbol_absent $1 $2 + error_if_symbol_absent $1 $3 + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 = $func_addr_2 ]; + then + echo "Safe Identical Code Folding folded" $2 "and" $3 + exit 1 + fi +} + +check_fold() +{ + if ! is_symbol_present $1 $2 + then + return 0 + fi + + if ! is_symbol_present $1 $3 + then + return 0 + fi + + awk " +BEGIN { discard = 0; } +/^Discarded input/ { discard = 1; } +/^Memory map/ { discard = 0; } +/.*\\.text\\..*($2|$3).*/ { act[discard] = act[discard] \" \" \$0; } +END { + # printf \"kept\" act[0] \"\\nfolded\" act[1] \"\\n\"; + if (length(act[0]) == 0 || length(act[1]) == 0) + { + printf \"Safe Identical Code Folding did not fold $2 and $3\\n\" + exit 1; + } + }" $4 +} + +arch_specific_safe_fold() +{ + grep -e "Intel 80386" -e "ARM" -e "PowerPC" $1 > /dev/null 2>&1 + if [ $? -eq 0 ]; + then + check_fold $2 $4 $5 $3 + else + check_nofold $2 $4 $5 + fi +} + +arch_specific_safe_fold icf_safe_so_test_2.stdout icf_safe_so_test_1.stdout icf_safe_so_test.map "foo_prot" "foo_hidden" +arch_specific_safe_fold icf_safe_so_test_2.stdout icf_safe_so_test_1.stdout icf_safe_so_test.map "foo_prot" "foo_internal" +arch_specific_safe_fold icf_safe_so_test_2.stdout icf_safe_so_test_1.stdout icf_safe_so_test.map "foo_prot" "foo_static" +arch_specific_safe_fold icf_safe_so_test_2.stdout icf_safe_so_test_1.stdout icf_safe_so_test.map "foo_hidden" "foo_internal" +arch_specific_safe_fold icf_safe_so_test_2.stdout icf_safe_so_test_1.stdout icf_safe_so_test.map "foo_hidden" "foo_static" +arch_specific_safe_fold icf_safe_so_test_2.stdout icf_safe_so_test_1.stdout icf_safe_so_test.map "foo_internal" "foo_static" +check_nofold icf_safe_so_test_1.stdout "foo_glob" "bar_glob" diff --git a/binutils-2.25/gold/testsuite/icf_safe_test.cc b/binutils-2.25/gold/testsuite/icf_safe_test.cc new file mode 100644 index 00000000..87294dcc --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_safe_test.cc @@ -0,0 +1,63 @@ +// icf_safe_test.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if identical code folding +// in safe mode correctly folds only ctors and dtors. kept_func_1 must +// not be folded into kept_func_2 other than for X86 (32 and 64 bit) +// which can use relocation types to determine if function pointers are +// taken. kept_func_3 should never be folded as its pointer is taken. +// The ctor and dtor of class A must be folded. + +class A +{ + public: + A() + { + } + ~A() + { + } +}; + +A a; + +int kept_func_1() +{ + return 1; +} + +int kept_func_2() +{ + return 1; +} + +int kept_func_3() +{ + return 1; +} + +int main() +{ + int (*p)() = kept_func_3; + p(); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/icf_safe_test.sh b/binutils-2.25/gold/testsuite/icf_safe_test.sh new file mode 100755 index 00000000..fe224f69 --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_safe_test.sh @@ -0,0 +1,73 @@ +#!/bin/sh + +# icf_safe_test.sh -- test --icf=safe + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if --icf=safe works as expected. +# File icf_safe_test.cc is in this test. This program checks if only +# ctors and dtors are folded, except for x86 (32 and 64 bit), which +# uses relocation types to detect if function pointers are taken. + +check_nofold() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 = $func_addr_2 ] + then + echo "Safe Identical Code Folding folded" $2 "and" $3 + exit 1 + fi +} + +check_fold() +{ + awk " +BEGIN { discard = 0; } +/^Discarded input/ { discard = 1; } +/^Memory map/ { discard = 0; } +/.*\\.text\\..*($2|$3).*/ { act[discard] = act[discard] \" \" \$0; } +END { + # printf \"kept\" act[0] \"\\nfolded\" act[1] \"\\n\"; + if (length(act[0]) == 0 || length(act[1]) == 0) + { + printf \"Safe Identical Code Folding did not fold $2 and $3\\n\" + exit 1; + } + }" $1 +} + +arch_specific_safe_fold() +{ + grep_x86=`grep -q -e "Advanced Micro Devices X86-64" -e "Intel 80386" -e "ARM" -e "TILE" -e "PowerPC" $2` + if [ $? -eq 0 ]; + then + check_fold $3 $4 $5 + else + check_nofold $1 $4 $5 + fi +} + +arch_specific_safe_fold icf_safe_test_1.stdout icf_safe_test_2.stdout \ + icf_safe_test.map "kept_func_1" "kept_func_2" +check_fold icf_safe_test.map "_ZN1AD2Ev" "_ZN1AC2Ev" +check_nofold icf_safe_test_1.stdout "kept_func_3" "kept_func_1" +check_nofold icf_safe_test_1.stdout "kept_func_3" "kept_func_2" diff --git a/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test.sh b/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test.sh new file mode 100755 index 00000000..9077e25e --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# icf_sht_rel_addend_test.sh -- test --icf=all + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + + +check() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 = $func_addr_2 ] + then + echo "Identical Code Folding should not fold" $2 "and" $3 + exit 1 + fi +} + +check icf_sht_rel_addend_test.stdout "name1" "name2" diff --git a/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_1.cc b/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_1.cc new file mode 100644 index 00000000..ecc2a1b0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_1.cc @@ -0,0 +1,44 @@ +// icf_sht_rel_addend_test_1.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify is strings are handled correctly +// by ICF when the relocation types are SHT_REL. ICF inlines strings that +// can be merged. To do this, it must get the addend of the relocation +// pointing to the string. For SHT_REL relocations, the addend is encoded +// in the text section at the offset of the relocation. If ICF fails to +// get the addend correctly, function name1 will be incorrectly folded with +// function name2 in icf_sht_rel_addend_test_2.cc. + + +const char* bar() +{ + return "AAAAAA"; +} +const char* name1() +{ + return "Name1"; +} + +int main() +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_2.cc b/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_2.cc new file mode 100644 index 00000000..d85e3b4d --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_sht_rel_addend_test_2.cc @@ -0,0 +1,39 @@ +// icf_sht_rel_addend_test_2.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify is strings are handled correctly +// by ICF when the relocation types are SHT_REL. ICF inlines strings that +// can be merged. To do this, it must get the addend of the relocation +// pointing to the string. For SHT_REL relocations, the addend is encoded +// in the text section at the offset of the relocation. If ICF fails to +// get the addend correctly, function name1 in icf_sht_rel_addend_test_1.cc +// will be incorrectly folded with name2. + + +const char* foo() +{ + return "AAAAAA"; +} +const char* name2() +{ + return "Name2"; +} diff --git a/binutils-2.25/gold/testsuite/icf_string_merge_test.cc b/binutils-2.25/gold/testsuite/icf_string_merge_test.cc new file mode 100644 index 00000000..b1e11910 --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_string_merge_test.cc @@ -0,0 +1,50 @@ +// icf_string_merge_test.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify is strings are handled correctly +// by ICF. ICF inlines strings that can be merged. In some cases, the +// addend of the relocation pointing to a string merge section must be +// ignored. This program has no pair of identical functions that can be +// folded. However, if the addend is not ignored then get2 and get3 will +// become identical. + +const char* const str1 = "aaaaaaaaaastr1"; +const char* const str2 = "bbbbaaaaaastr1"; +const char* const str3 = "cccccaaaaastr1"; + +const char* get1() +{ + return str1; +} +const char* get2() +{ + return str2; +} + +const char* get3() +{ + return str3; +} +int main() +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/icf_string_merge_test.sh b/binutils-2.25/gold/testsuite/icf_string_merge_test.sh new file mode 100755 index 00000000..e8d70de2 --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_string_merge_test.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# icf_string_merge_test.sh -- test --icf=all + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + + +check() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 = $func_addr_2 ] + then + echo "Identical Code Folding should not fold" $2 "and" $3 + exit 1 + fi +} + +check icf_string_merge_test.stdout "get1" "get2" +check icf_string_merge_test.stdout "get1" "get3" +check icf_string_merge_test.stdout "get2" "get3" diff --git a/binutils-2.25/gold/testsuite/icf_test.cc b/binutils-2.25/gold/testsuite/icf_test.cc new file mode 100644 index 00000000..c7a5ea9d --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_test.cc @@ -0,0 +1,51 @@ +// icf_test.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if identical code folding +// correctly identifies and folds functions. folded_func must be +// folded into kept_func. + +int common() +{ + return 1; +} + +int kept_func() +{ + common(); + // Recursive call. + kept_func(); + return 1; +} + +int folded_func() +{ + common(); + // Recursive call. + folded_func(); + return 1; +} + +int main() +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/icf_test.sh b/binutils-2.25/gold/testsuite/icf_test.sh new file mode 100755 index 00000000..50abd90e --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_test.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +# icf_test.sh -- test --icf + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if icf works as expected. +# File icf_test.cc is in this test. This program checks if the +# identical sections are correctly folded. + +check() +{ + awk " +BEGIN { discard = 0; } +/^Discarded input/ { discard = 1; } +/^Memory map/ { discard = 0; } +/.*\\.text\\..*($2|$3).*/ { act[discard] = act[discard] \" \" \$0; } +END { + # printf \"kept\" act[0] \"\\nfolded\" act[1] \"\\n\"; + if (length(act[0]) == 0 || length(act[1]) == 0) + { + printf \"Identical Code Folding did not fold $2 and $3\\n\" + exit 1; + } + }" $1 +} + +check icf_test.map "folded_func" "kept_func" diff --git a/binutils-2.25/gold/testsuite/icf_virtual_function_folding_test.cc b/binutils-2.25/gold/testsuite/icf_virtual_function_folding_test.cc new file mode 100644 index 00000000..ba063c8a --- /dev/null +++ b/binutils-2.25/gold/testsuite/icf_virtual_function_folding_test.cc @@ -0,0 +1,71 @@ +// icf_virtual_function_folding_test.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Foo::fn1 is folded into fn2 with ICF. Since this file is linked as a +// position independent executable, a dynamic reloc is needed +// for the virtual call fn1 entry in the vtable. This test makes sure +// the call to Foo::fn1 works correctly after the folding. + +int fn2(void *) +{ + return 0xA; +} + +namespace +{ + +class Bar +{ + public: + virtual ~Bar() { } + virtual int fn1(); +}; + +int Bar::fn1() +{ + return 123; +} + +class Foo : public Bar +{ + virtual int fn1(); +}; + +int Foo::fn1() +{ + return 0xA; +} + +Bar* get() +{ + Bar *f = new Foo(); + return f; +} + +} // end of anonymous namespace. + +int main() +{ + Bar *f = get(); + f->fn1(); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ifunc-sel.h b/binutils-2.25/gold/testsuite/ifunc-sel.h new file mode 100644 index 00000000..94396592 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifunc-sel.h @@ -0,0 +1,92 @@ +/* Used by the elf ifunc tests. */ +#ifndef ELF_IFUNC_SEL_H +#define ELF_IFUNC_SEL_H 1 + +extern int global; + +static inline __attribute__ ((always_inline)) void * +ifunc_sel (int (*f1) (void), int (*f2) (void), int (*f3) (void)) +{ +#ifdef __powerpc__ + /* When generating PIC, powerpc gcc loads the address of "global" + from the GOT, but the GOT may not have been relocated. + Similarly, "f1", "f2" and "f3" may be loaded from non-relocated + GOT entries. + + There is NO WAY to make this ill conceived IFUNC misfeature + reliably work on targets that use a GOT for function or variable + addresses, short of implementing two passes over relocations in + ld.so, with ifunc relocations being applied after all other + relocations, globally. + + Cheat. Don't use the GOT. Rely on this function being inlined + and calculate all variable and function addresses relative to pc. + Using the 'X' constraint is risky, but that's the only way to + make the asm here see the function names for %4, %5 and %6. + Sadly, powerpc64 gcc doesn't accept use of %3 here with 'X' for + some reason, so we expand it ourselves. */ + register void *ret __asm__ ("r3"); + void *temp1, *temp2; + __asm__ ("mflr %1\n\t" + "bcl 20,31,1f\n" + "1:\tmflr %2\n\t" + "mtlr %1\n\t" + "addis %1,%2,global-1b@ha\n\t" + "lwz %1,global-1b@l(%1)\n\t" + "addis %0,%2,%4-1b@ha\n\t" + "addi %0,%0,%4-1b@l\n\t" + "cmpwi %1,1\n\t" + "beqlr\n\t" + "addis %0,%2,%5-1b@ha\n\t" + "addi %0,%0,%5-1b@l\n\t" + "cmpwi %1,-1\n\t" + "beqlr\n\t" + "addis %0,%2,%6-1b@ha\n\t" + "addi %0,%0,%6-1b@l" + : "=&b" (ret), "=&b" (temp1), "=&b" (temp2) + : "X" (&global), "X" (f1), "X" (f2), "X" (f3)); + return ret; +#else + switch (global) + { + case 1: + return f1; + case -1: + return f2; + default: + return f3; + } +#endif +} + +static inline __attribute__ ((always_inline)) void * +ifunc_one (int (*f1) (void)) +{ +#ifdef __powerpc__ + /* As above, PIC may use an unrelocated GOT entry for f1. + + Case study: ifuncmain6pie's shared library, ifuncmod6.so, wants + the address of "foo" in function get_foo(). So there is a GOT + entry for "foo" in ifuncmod6.so. ld.so relocates ifuncmod6.so + *before* ifuncmain6pie, and on finding "foo" to be STT_GNU_IFUNC, + calls this function with f1 set to "one". But the address of + "one" is loaded from ifuncmain6pie's GOT, which hasn't been + relocated yet. + + Cheat as for ifunc-sel. */ + register void *ret __asm__ ("r3"); + void *temp; + __asm__ ("mflr %1\n\t" + "bcl 20,31,1f\n" + "1:\tmflr %0\n\t" + "mtlr %1\n\t" + "addis %0,%0,%2-1b@ha\n\t" + "addi %0,%0,%2-1b@l" + : "=&b" (ret), "=&r" (temp) + : "X" (f1)); + return ret; +#else + return f1; +#endif +} +#endif diff --git a/binutils-2.25/gold/testsuite/ifuncdep2.c b/binutils-2.25/gold/testsuite/ifuncdep2.c new file mode 100644 index 00000000..758bae19 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncdep2.c @@ -0,0 +1,50 @@ +/* Test 3 STT_GNU_IFUNC symbols. */ + +#include "ifunc-sel.h" + +int global __attribute__ ((visibility ("protected"))) = -1; + +static int +one (void) +{ + return 1; +} + +static int +minus_one (void) +{ + return -1; +} + +static int +zero (void) +{ + return 0; +} + +void * foo1_ifunc (void) __asm__ ("foo1"); +__asm__(".type foo1, %gnu_indirect_function"); + +void * +foo1_ifunc (void) +{ + return ifunc_sel (one, minus_one, zero); +} + +void * foo2_ifunc (void) __asm__ ("foo2"); +__asm__(".type foo2, %gnu_indirect_function"); + +void * +foo2_ifunc (void) +{ + return ifunc_sel (minus_one, one, zero); +} + +void * foo3_ifunc (void) __asm__ ("foo3"); +__asm__(".type foo3, %gnu_indirect_function"); + +void * +foo3_ifunc (void) +{ + return ifunc_sel (one, zero, minus_one); +} diff --git a/binutils-2.25/gold/testsuite/ifuncmain1.c b/binutils-2.25/gold/testsuite/ifuncmain1.c new file mode 100644 index 00000000..cc1e5ec5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmain1.c @@ -0,0 +1,64 @@ +/* Test STT_GNU_IFUNC symbols: + + 1. Direct function call. + 2. Function pointer. + 3. Visibility without override. + */ + +#include + +int ret_foo; +int ret_foo_hidden; +int ret_foo_protected; + +extern int foo (void); +extern int foo_protected (void); + +#ifndef FOO_P +typedef int (*foo_p) (void); +#endif + +foo_p foo_ptr = foo; +foo_p foo_procted_ptr = foo_protected; + +extern foo_p get_foo_p (void); +extern foo_p get_foo_hidden_p (void); +extern foo_p get_foo_protected_p (void); + +int +main (void) +{ + foo_p p; + + if (foo_ptr != foo) + abort (); + if (foo () != -1) + abort (); + if ((*foo_ptr) () != -1) + abort (); + + if (foo_procted_ptr != foo_protected) + abort (); + if (foo_protected () != 0) + abort (); + if ((*foo_procted_ptr) () != 0) + abort (); + + p = get_foo_p (); + if (p != foo) + abort (); + if (ret_foo != -1 || (*p) () != ret_foo) + abort (); + + p = get_foo_hidden_p (); + if (ret_foo_hidden != 1 || (*p) () != ret_foo_hidden) + abort (); + + p = get_foo_protected_p (); + if (p != foo_protected) + abort (); + if (ret_foo_protected != 0 || (*p) () != ret_foo_protected) + abort (); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ifuncmain1vis.c b/binutils-2.25/gold/testsuite/ifuncmain1vis.c new file mode 100644 index 00000000..c16af63a --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmain1vis.c @@ -0,0 +1,89 @@ +/* Test STT_GNU_IFUNC symbols: + + 1. Direct function call. + 2. Function pointer. + 3. Visibility with override. + */ + +#include + +int __attribute__ ((noinline)) foo_hidden (void); + +int ret_foo; +int ret_foo_hidden; +int ret_foo_protected; + +extern int foo (void); +extern int foo_protected (void); + +#ifndef FOO_P +typedef int (*foo_p) (void); +#endif + +foo_p foo_ptr = foo; +foo_p foo_procted_ptr = foo_protected; + +extern foo_p get_foo_p (void); +extern foo_p get_foo_hidden_p (void); +extern foo_p get_foo_protected_p (void); + +int +__attribute__ ((noinline)) +foo (void) +{ + return -30; +} + +int +__attribute__ ((noinline)) +foo_hidden (void) +{ + return -20; +} + +int +__attribute__ ((noinline)) +foo_protected (void) +{ + return -40; +} + +int +main (void) +{ + foo_p p; + + if (foo_ptr != foo) + abort (); + if ((*foo_ptr) () != -30) + abort (); + + if (foo_procted_ptr != foo_protected) + abort (); + if ((*foo_procted_ptr) () != -40) + abort (); + + p = get_foo_p (); + if (p != foo) + abort (); + if (foo () != -30) + abort (); + if (ret_foo != -30 || (*p) () != ret_foo) + abort (); + + p = get_foo_hidden_p (); + if (foo_hidden () != -20) + abort (); + if (ret_foo_hidden != 1 || (*p) () != ret_foo_hidden) + abort (); + + p = get_foo_protected_p (); + if (p == foo_protected) + abort (); + if (foo_protected () != -40) + abort (); + if (ret_foo_protected != 0 || (*p) () != ret_foo_protected) + abort (); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ifuncmain2.c b/binutils-2.25/gold/testsuite/ifuncmain2.c new file mode 100644 index 00000000..db3ba56a --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmain2.c @@ -0,0 +1,14 @@ +/* Test calling one STT_GNU_IFUNC function with 3 different + STT_GNU_IFUNC definitions. */ + +#include + +extern int foo1 (void); + +int +main (void) +{ + if (foo1 () != -1) + abort (); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ifuncmain3.c b/binutils-2.25/gold/testsuite/ifuncmain3.c new file mode 100644 index 00000000..8e543e59 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmain3.c @@ -0,0 +1,133 @@ +/* Test STT_GNU_IFUNC symbols with dlopen: + + 1. Direct function call. + 2. Function pointer. + 3. Visibility with override. + */ + +#include +#include +#include + +extern int __attribute__ ((noinline)) foo (void); +extern int __attribute__ ((noinline)) foo_hidden (void); +extern int __attribute__ ((noinline)) foo_protected (void); + +typedef int (*foo_p) (void); + +int +__attribute__ ((noinline)) +foo (void) +{ + return -30; +} + +int +__attribute__ ((noinline)) +foo_hidden (void) +{ + return -20; +} + +int +__attribute__ ((noinline)) +foo_protected (void) +{ + return -40; +} + +int +main (void) +{ + foo_p p; + foo_p (*f) (void); + int *ret; + + void *h = dlopen ("ifuncmod3.so", RTLD_LAZY); + if (h == NULL) + { + printf ("cannot load: %s\n", dlerror ()); + return 1; + } + + p = dlsym (h, "foo"); + if (p == NULL) + { + printf ("symbol not found: %s\n", dlerror ()); + return 1; + } + if ((*p) () != -1) + abort (); + + f = dlsym (h, "get_foo_p"); + if (f == NULL) + { + printf ("symbol not found: %s\n", dlerror ()); + return 1; + } + + ret = dlsym (h, "ret_foo"); + if (ret == NULL) + { + printf ("symbol not found: %s\n", dlerror ()); + return 1; + } + + p = (*f) (); + if (p != foo) + abort (); + if (foo () != -30) + abort (); + if (*ret != -30 || (*p) () != *ret) + abort (); + + f = dlsym (h, "get_foo_hidden_p"); + if (f == NULL) + { + printf ("symbol not found: %s\n", dlerror ()); + return 1; + } + + ret = dlsym (h, "ret_foo_hidden"); + if (ret == NULL) + { + printf ("symbol not found: %s\n", dlerror ()); + return 1; + } + + p = (*f) (); + if (foo_hidden () != -20) + abort (); + if (*ret != 1 || (*p) () != *ret) + abort (); + + f = dlsym (h, "get_foo_protected_p"); + if (f == NULL) + { + printf ("symbol not found: %s\n", dlerror ()); + return 1; + } + + ret = dlsym (h, "ret_foo_protected"); + if (ret == NULL) + { + printf ("symbol not found: %s\n", dlerror ()); + return 1; + } + + p = (*f) (); + if (p == foo_protected) + abort (); + if (foo_protected () != -40) + abort (); + if (*ret != 0 || (*p) () != *ret) + abort (); + + if (dlclose (h) != 0) + { + printf ("cannot close: %s\n", dlerror ()); + return 1; + } + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ifuncmain4.c b/binutils-2.25/gold/testsuite/ifuncmain4.c new file mode 100644 index 00000000..e55fee2e --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmain4.c @@ -0,0 +1,4 @@ +/* Test STT_GNU_IFUNC symbols in a single source file. */ + +#include "ifuncmod1.c" +#include "ifuncmain1.c" diff --git a/binutils-2.25/gold/testsuite/ifuncmain5.c b/binutils-2.25/gold/testsuite/ifuncmain5.c new file mode 100644 index 00000000..9e6c2c16 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmain5.c @@ -0,0 +1,41 @@ +/* Test STT_GNU_IFUNC symbols with dynamic function pointer only. */ + +#include + +extern int foo (void); +extern int foo_protected (void); + +typedef int (*foo_p) (void); + +extern foo_p __attribute__ ((noinline)) get_foo (void); +extern foo_p __attribute__ ((noinline)) get_foo_protected (void); + +foo_p +__attribute__ ((noinline)) +get_foo (void) +{ + return foo; +} + +foo_p +__attribute__ ((noinline)) +get_foo_protected (void) +{ + return foo_protected; +} + +int +main (void) +{ + foo_p p; + + p = get_foo (); + if ((*p) () != -1) + abort (); + + p = get_foo_protected (); + if ((*p) () != 0) + abort (); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ifuncmain6pie.c b/binutils-2.25/gold/testsuite/ifuncmain6pie.c new file mode 100644 index 00000000..8478d4c4 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmain6pie.c @@ -0,0 +1,64 @@ +/* Test STT_GNU_IFUNC symbols in PIE: + + 1. Direct function call. + 2. Function pointer. + 3. Reference from a shared library. + */ + +#include +#include "ifunc-sel.h" + +typedef int (*foo_p) (void); +extern foo_p foo_ptr; + +static int +one (void) +{ + return -30; +} + +void * foo_ifunc (void) __asm__ ("foo"); +__asm__(".type foo, %gnu_indirect_function"); + +void * +foo_ifunc (void) +{ + return ifunc_one (one); +} + +extern int foo (void); +extern foo_p get_foo (void); +extern foo_p get_foo_p (void); + +foo_p my_foo_ptr = foo; + +int +main (void) +{ + foo_p p; + + p = get_foo (); + if (p != foo) + abort (); + if ((*p) () != -30) + abort (); + + p = get_foo_p (); + if (p != foo) + abort (); + if ((*p) () != -30) + abort (); + + if (foo_ptr != foo) + abort (); + if (my_foo_ptr != foo) + abort (); + if ((*foo_ptr) () != -30) + abort (); + if ((*my_foo_ptr) () != -30) + abort (); + if (foo () != -30) + abort (); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ifuncmain7.c b/binutils-2.25/gold/testsuite/ifuncmain7.c new file mode 100644 index 00000000..c2524aa5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmain7.c @@ -0,0 +1,74 @@ +/* Test local STT_GNU_IFUNC symbols: + + 1. Direct function call. + 2. Function pointer. + */ + +#include +#include "ifunc-sel.h" + +extern int foo (void); + +static int +one (void) +{ + return -30; +} + +static void * __attribute__ ((used)) foo_ifunc (void) __asm__ ("foo"); +__asm__(".type foo, %gnu_indirect_function"); + +static void * +__attribute__ ((used)) +foo_ifunc (void) +{ + return ifunc_one (one); +} + +typedef int (*foo_p) (void); + +extern foo_p __attribute__ ((noinline)) get_foo_p (void); +extern foo_p __attribute__ ((noinline)) get_foo (void); + +foo_p foo_ptr = foo; + +foo_p +__attribute__ ((noinline)) +get_foo_p (void) +{ + return foo_ptr; +} + +foo_p +__attribute__ ((noinline)) +get_foo (void) +{ + return foo; +} + +int +main (void) +{ + foo_p p; + + p = get_foo (); + if (p != foo) + abort (); + if ((*p) () != -30) + abort (); + + p = get_foo_p (); + if (p != foo) + abort (); + if ((*p) () != -30) + abort (); + + if (foo_ptr != foo) + abort (); + if ((*foo_ptr) () != -30) + abort (); + if (foo () != -30) + abort (); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ifuncmod1.c b/binutils-2.25/gold/testsuite/ifuncmod1.c new file mode 100644 index 00000000..e3b37cb5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmod1.c @@ -0,0 +1,95 @@ +/* Test STT_GNU_IFUNC symbols: + + 1. Direct function call. + 2. Function pointer. + 3. Visibility. + */ +#include "ifunc-sel.h" + +int global __attribute__ ((visibility ("protected"))) = -1; + +static int +one (void) +{ + return 1; +} + +static int +minus_one (void) +{ + return -1; +} + +static int +zero (void) +{ + return 0; +} + +void * foo_ifunc (void) __asm__ ("foo"); +__asm__(".type foo, %gnu_indirect_function"); + +void * +foo_ifunc (void) +{ + return ifunc_sel (one, minus_one, zero); +} + +void * foo_hidden_ifunc (void) __asm__ ("foo_hidden"); +__asm__(".type foo_hidden, %gnu_indirect_function"); + +void * +foo_hidden_ifunc (void) +{ + return ifunc_sel (minus_one, one, zero); +} + +void * foo_protected_ifunc (void) __asm__ ("foo_protected"); +__asm__(".type foo_protected, %gnu_indirect_function"); + +void * +foo_protected_ifunc (void) +{ + return ifunc_sel (one, zero, minus_one); +} + +/* Test hidden indirect function. */ +__asm__(".hidden foo_hidden"); + +/* Test protected indirect function. */ +__asm__(".protected foo_protected"); + +extern int foo (void); +extern int foo_hidden (void); +extern int foo_protected (void); +extern int ret_foo; +extern int ret_foo_hidden; +extern int ret_foo_protected; + +#define FOO_P +typedef int (*foo_p) (void); + +extern foo_p get_foo_p (void); +extern foo_p get_foo_hidden_p (void); +extern foo_p get_foo_protected_p (void); + +foo_p +get_foo_p (void) +{ + ret_foo = foo (); + return foo; +} + +foo_p +get_foo_hidden_p (void) +{ + ret_foo_hidden = foo_hidden (); + return foo_hidden; +} + +foo_p +get_foo_protected_p (void) +{ + ret_foo_protected = foo_protected (); + return foo_protected; +} diff --git a/binutils-2.25/gold/testsuite/ifuncmod3.c b/binutils-2.25/gold/testsuite/ifuncmod3.c new file mode 100644 index 00000000..ca2d9626 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmod3.c @@ -0,0 +1,7 @@ +/* Test STT_GNU_IFUNC symbols with dlopen. */ + +#include "ifuncmod1.c" + +int ret_foo; +int ret_foo_hidden; +int ret_foo_protected; diff --git a/binutils-2.25/gold/testsuite/ifuncmod5.c b/binutils-2.25/gold/testsuite/ifuncmod5.c new file mode 100644 index 00000000..9a08e8cf --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmod5.c @@ -0,0 +1,55 @@ +/* Test STT_GNU_IFUNC symbols without direct function call. */ +#include "ifunc-sel.h" + +int global __attribute__ ((visibility ("protected"))) = -1; + +static int +one (void) +{ + return 1; +} + +static int +minus_one (void) +{ + return -1; +} + +static int +zero (void) +{ + return 0; +} + +void * foo_ifunc (void) __asm__ ("foo"); +__asm__(".type foo, %gnu_indirect_function"); + +void * +foo_ifunc (void) +{ + return ifunc_sel (one, minus_one, zero); +} + +void * foo_hidden_ifunc (void) __asm__ ("foo_hidden"); +__asm__(".type foo_hidden, %gnu_indirect_function"); + +void * +foo_hidden_ifunc (void) +{ + return ifunc_sel (minus_one, one, zero); +} + +void * foo_protected_ifunc (void) __asm__ ("foo_protected"); +__asm__(".type foo_protected, %gnu_indirect_function"); + +void * +foo_protected_ifunc (void) +{ + return ifunc_sel (one, zero, minus_one); +} + +/* Test hidden indirect function. */ +__asm__(".hidden foo_hidden"); + +/* Test protected indirect function. */ +__asm__(".protected foo_protected"); diff --git a/binutils-2.25/gold/testsuite/ifuncmod6.c b/binutils-2.25/gold/testsuite/ifuncmod6.c new file mode 100644 index 00000000..89a50f93 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncmod6.c @@ -0,0 +1,22 @@ +/* Test STT_GNU_IFUNC symbol reference in a shared library. */ + +extern int foo (void); + +typedef int (*foo_p) (void); + +extern foo_p get_foo_p (void); +extern foo_p get_foo (void); + +foo_p foo_ptr = foo; + +foo_p +get_foo_p (void) +{ + return foo_ptr; +} + +foo_p +get_foo (void) +{ + return foo; +} diff --git a/binutils-2.25/gold/testsuite/ifuncvar1.c b/binutils-2.25/gold/testsuite/ifuncvar1.c new file mode 100644 index 00000000..75af2a6a --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncvar1.c @@ -0,0 +1,20 @@ +/* Test global variable initialized to hidden STT_GNU_IFUNC symbol. */ + +int didit; + +extern void doit (void); + +void +doit (void) +{ + didit = 1; +} + +void (*get_foo (void)) (void) __asm__ ("foo"); +__asm__ (".type foo, %gnu_indirect_function"); +__asm__ (".hidden foo"); + +void (*get_foo (void)) (void) +{ + return &doit; +} diff --git a/binutils-2.25/gold/testsuite/ifuncvar2.c b/binutils-2.25/gold/testsuite/ifuncvar2.c new file mode 100644 index 00000000..f09de0e1 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncvar2.c @@ -0,0 +1,12 @@ +/* Test global variable initialized to hidden STT_GNU_IFUNC symbol. */ + +extern void foo (void); +void (*f) (void) = &foo; + +extern void bar (void); + +void +bar (void) +{ + f (); +} diff --git a/binutils-2.25/gold/testsuite/ifuncvar3.c b/binutils-2.25/gold/testsuite/ifuncvar3.c new file mode 100644 index 00000000..e078b567 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ifuncvar3.c @@ -0,0 +1,14 @@ +/* Test global variable initialized to hidden STT_GNU_IFUNC symbol. */ + +#include + +extern void bar (void); +extern int didit; + +int +main (void) +{ + bar (); + assert (didit == 1); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/incr_comdat_test_1.cc b/binutils-2.25/gold/testsuite/incr_comdat_test_1.cc new file mode 100644 index 00000000..7a232c24 --- /dev/null +++ b/binutils-2.25/gold/testsuite/incr_comdat_test_1.cc @@ -0,0 +1,68 @@ +// incr_comdat_test_1.cc -- test incremental update with comdat sections + +// Copyright 2011 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include + +template +T GetMax(T a, T b) +{ + return a > b ? a : b; +} + +extern int foo(); + +int bar() +{ + return GetMax(4, 5); +} + +class A +{ + public: + int sum(int k) + { + static int total = 0; + total += k; + return total; + } +}; + +#define CHECK_EQ(var, expected) \ + do \ + { \ + if ((var) != (expected)) \ + { \ + printf(#var ": expected %d, found %d\n", expected, var); \ + return 1; \ + } \ + } \ + while (0) + +int main() +{ + A a; + CHECK_EQ(bar(), 5); + CHECK_EQ(foo(), 11); + CHECK_EQ(a.sum(55), 11 + 55); + CHECK_EQ(a.sum(66), 11 + 55 + 66); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/incr_comdat_test_2_v1.cc b/binutils-2.25/gold/testsuite/incr_comdat_test_2_v1.cc new file mode 100644 index 00000000..f7d6a8cc --- /dev/null +++ b/binutils-2.25/gold/testsuite/incr_comdat_test_2_v1.cc @@ -0,0 +1,44 @@ +// incr_comdat_test_2.cc -- test incremental update with comdat sections + +// Copyright 2011 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +template +T GetMax(T a, T b) +{ + return a > b ? a : b; +} + +class A +{ + public: + int sum(int k) + { + static int total = 0; + total += k; + return total; + } +}; + +int foo() +{ + A a; + return GetMax(10, a.sum(8)); +} diff --git a/binutils-2.25/gold/testsuite/incr_comdat_test_2_v2.cc b/binutils-2.25/gold/testsuite/incr_comdat_test_2_v2.cc new file mode 100644 index 00000000..fca7fda9 --- /dev/null +++ b/binutils-2.25/gold/testsuite/incr_comdat_test_2_v2.cc @@ -0,0 +1,44 @@ +// incr_comdat_test_2.cc -- test incremental update with comdat sections + +// Copyright 2011 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +template +T GetMax(T a, T b) +{ + return a > b ? a : b; +} + +class A +{ + public: + int sum(int k) + { + static int total = 0; + total += k; + return total; + } +}; + +int foo() +{ + A a; + return GetMax(10, a.sum(9)); +} diff --git a/binutils-2.25/gold/testsuite/incr_comdat_test_2_v3.cc b/binutils-2.25/gold/testsuite/incr_comdat_test_2_v3.cc new file mode 100644 index 00000000..cbb83c1a --- /dev/null +++ b/binutils-2.25/gold/testsuite/incr_comdat_test_2_v3.cc @@ -0,0 +1,44 @@ +// incr_comdat_test_2.cc -- test incremental update with comdat sections + +// Copyright 2011 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +template +T GetMax(T a, T b) +{ + return a > b ? a : b; +} + +class A +{ + public: + int sum(int k) + { + static int total = 0; + total += k; + return total; + } +}; + +int foo() +{ + A a; + return GetMax(10, a.sum(11)); +} diff --git a/binutils-2.25/gold/testsuite/incremental_test.sh b/binutils-2.25/gold/testsuite/incremental_test.sh new file mode 100755 index 00000000..930d7d14 --- /dev/null +++ b/binutils-2.25/gold/testsuite/incremental_test.sh @@ -0,0 +1,89 @@ +#!/bin/sh + +# incremental_test.sh -- test that incremental linking information is correct. + +# Copyright 2009, 2010 Free Software Foundation, Inc. +# Written by Rafael Avila de Espindola +# and Cary Coutant + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check_cmp() +{ + if ! cmp -s "$1" "$2" + then + echo "Actual output differs from expected:" + echo "diff $1 $2" + diff $1 $2 + exit 1 + fi +} + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +# Extract actual command line from linker's -v output. +cat incremental_test.cmdline | + grep "gcctestdir/ld " | + sed "s/--incremental[-a-z]* //g" | + cut -d ' ' -f 2- > actual + +# Extract recorded command line from dump of the output file. +cat incremental_test.stdout | + grep "Link command line" | + cut -d : -f 2- | + cut -d ' ' -f 3- | + sed "s/'//g" > recorded + +# Verify that the command line was recorded correctly. +check_cmp actual recorded + +rm -f actual recorded + +# Filter the incremental-dump output into a format that can be grepped +# more easily. + +awk ' + /^[A-Za-z][A-Za-z ]+:$/ { section = $0; } + /^[[]/ { subsection = $0; } + /^ / { print section, subsection, $0; } +' < incremental_test.stdout > incremental_test.dump + +check incremental_test.dump "Input sections: .* incremental_test_1.o *1 " +check incremental_test.dump "Input sections: .* incremental_test_2.o *1 " +check incremental_test.dump "Global symbol table: .* main .* relocation type " +check incremental_test.dump "Global symbol table: .* a *incremental_test_1.o " +check incremental_test.dump "Global symbol table: .* a .* relocation type " +check incremental_test.dump "Global symbol table: .* b *incremental_test_2.o " +check incremental_test.dump "Global symbol table: .* b .* relocation type " +check incremental_test.dump "Global symbol table: .* t1 *incremental_test_2.o " +check incremental_test.dump "Global symbol table: .* t1 .* relocation type " + +rm -f incremental_test.dump + +exit 0 diff --git a/binutils-2.25/gold/testsuite/incremental_test_1.c b/binutils-2.25/gold/testsuite/incremental_test_1.c new file mode 100644 index 00000000..291caa06 --- /dev/null +++ b/binutils-2.25/gold/testsuite/incremental_test_1.c @@ -0,0 +1,28 @@ +// Copyright 2009, 2010 Free Software Foundation, Inc. +// Written by Rafael Avila de Espindola + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +int a = -1; + +extern int t1(int); + +int t1(int b) +{ + return a + b; +} diff --git a/binutils-2.25/gold/testsuite/incremental_test_2.c b/binutils-2.25/gold/testsuite/incremental_test_2.c new file mode 100644 index 00000000..7fcecc42 --- /dev/null +++ b/binutils-2.25/gold/testsuite/incremental_test_2.c @@ -0,0 +1,29 @@ +// Copyright 2009 Free Software Foundation, Inc. +// Written by Rafael Avila de Espindola + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +int b = 1; + +extern int t1(int); + +int main(void) { + if (t1(b) != 0) + return 1; + return 0; +} diff --git a/binutils-2.25/gold/testsuite/initpri1.c b/binutils-2.25/gold/testsuite/initpri1.c new file mode 100644 index 00000000..1c5252d8 --- /dev/null +++ b/binutils-2.25/gold/testsuite/initpri1.c @@ -0,0 +1,105 @@ +/* initpri1.c -- test constructor priorities. + + Copyright 2007, 2008, 2009 Free Software Foundation, Inc. + Copied from the gcc testsuite, where the test was contributed by + Mark Mitchell . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* This tests that the linker handles constructor and destructor + priorities correctly. */ + +#include + +/* Constructor priorities in attributes were added in gcc 4.3. */ +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) + +int i; +int j; + +void c1(void) __attribute__((constructor (500))); +void c2(void) __attribute__((constructor (700))); +void c3(void) __attribute__((constructor (600))); + +void c1() { + if (i++ != 0) + abort (); +} + +void c2() { + if (i++ != 2) + abort (); +} + +void c3() { + if (i++ != 1) + abort (); +} + +void d1(void) __attribute__((destructor (500))); +void d2(void) __attribute__((destructor (700))); +void d3(void) __attribute__((destructor (600))); + +void d1() { + if (--i != 0) + abort (); +} + +void d2() { + if (--i != 2) + abort (); +} + +void d3() { + if (j != 4) + abort (); + if (--i != 1) + abort (); +} + +void cd4(void) __attribute__((constructor (800), destructor (800))); + +void cd4() { + if (i != 3) + abort (); + ++j; +} + +void cd5(void) __attribute__((constructor, destructor)); + +void cd5() { + if (i != 3) + abort(); + ++j; +} + +int main (void) { + if (i != 3) + return 1; + if (j != 2) + abort (); + return 0; +} + +#else /* !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) */ + +int main (void) { + exit (0); +} + +#endif /* !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) */ diff --git a/binutils-2.25/gold/testsuite/initpri2.c b/binutils-2.25/gold/testsuite/initpri2.c new file mode 100644 index 00000000..525661f5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/initpri2.c @@ -0,0 +1,118 @@ +/* initpri2.c -- test mixing init_array and ctor priorities. + + Copyright 2011 Free Software Foundation, Inc. + Copied from the gcc configury, where the test was contributed by + H.J. Lu . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* This tests that the linker correctly combines .ctor and .init_array + sections when both have priorities. */ + +#include + +static int count; + +static void +init1005 (void) +{ + if (count != 0) + abort (); + count = 1005; +} +void (*const init_array1005[]) (void) + __attribute__ ((section (".init_array.01005"), aligned (sizeof (void *)))) + = { init1005 }; +static void +fini1005 (void) +{ + if (count != 1005) + abort (); +} +void (*const fini_array1005[]) (void) + __attribute__ ((section (".fini_array.01005"), aligned (sizeof (void *)))) + = { fini1005 }; + +static void +ctor1007 (void) +{ + if (count != 1005) + abort (); + count = 1007; +} +void (*const ctors1007[]) (void) + __attribute__ ((section (".ctors.64528"), aligned (sizeof (void *)))) + = { ctor1007 }; +static void +dtor1007 (void) +{ + if (count != 1007) + abort (); + count = 1005; +} +void (*const dtors1007[]) (void) + __attribute__ ((section (".dtors.64528"), aligned (sizeof (void *)))) + = { dtor1007 }; + +static void +init65530 (void) +{ + if (count != 1007) + abort (); + count = 65530; +} +void (*const init_array65530[]) (void) + __attribute__ ((section (".init_array.65530"), aligned (sizeof (void *)))) + = { init65530 }; +static void +fini65530 (void) +{ + if (count != 65530) + abort (); + count = 1007; +} +void (*const fini_array65530[]) (void) + __attribute__ ((section (".fini_array.65530"), aligned (sizeof (void *)))) + = { fini65530 }; + +static void +ctor65535 (void) +{ + if (count != 65530) + abort (); + count = 65535; +} +void (*const ctors65535[]) (void) + __attribute__ ((section (".ctors"), aligned (sizeof (void *)))) + = { ctor65535 }; +static void +dtor65535 (void) +{ + if (count != 65535) + abort (); + count = 65530; +} +void (*const dtors65535[]) (void) + __attribute__ ((section (".dtors"), aligned (sizeof (void *)))) + = { dtor65535 }; + +int +main (void) +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/initpri3.c b/binutils-2.25/gold/testsuite/initpri3.c new file mode 100644 index 00000000..01e233d1 --- /dev/null +++ b/binutils-2.25/gold/testsuite/initpri3.c @@ -0,0 +1,80 @@ +/* initpri3.c -- test ctor odering when using init_array. + + Copyright 2011 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* This tests that the linker correctly orders .ctor entries when + putting them into .init_array, as is the default. */ + +#include + +int i = 1; + +static void +ctor1 (void) +{ + assert (i == 1); + i = 2; +} + +static void +ctor2 (void) +{ + assert (i == 2); + i = 3; +} + +static void +dtor1 (void) +{ + assert (i == 3); + i = 2; +} + +static void +dtor2 (void) +{ + assert (i == 2); + i = 1; +} + +/* The .ctors section is run in reverse order, the .dtors section in + run in forward order. We give these arrays the "aligned" attribute + because the x86_64 ABI would otherwise give them a 16-byte + alignment, which may leave a hole in the section. */ + +void (*ctors[]) (void) + __attribute__ ((aligned (4), section (".ctors"))) = { + ctor2, + ctor1 +}; + +void (*dtors[]) (void) + __attribute__ ((aligned (4), section (".dtors"))) = { + dtor1, + dtor2 +}; + +int +main (void) +{ + assert (i == 3); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/justsyms.t b/binutils-2.25/gold/testsuite/justsyms.t new file mode 100644 index 00000000..45418be8 --- /dev/null +++ b/binutils-2.25/gold/testsuite/justsyms.t @@ -0,0 +1,31 @@ +/* justsyms.t -- test --just-symbols for gold. + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +SECTIONS +{ + /* This script is only used for a .o file. */ + . = 0x100; + .gold_test : { *(.gold_test) } + .text : { *(.text) } + .data : { *(.data) } + .bss : { *(.bss) } +} diff --git a/binutils-2.25/gold/testsuite/justsyms_1.cc b/binutils-2.25/gold/testsuite/justsyms_1.cc new file mode 100644 index 00000000..50716b06 --- /dev/null +++ b/binutils-2.25/gold/testsuite/justsyms_1.cc @@ -0,0 +1,54 @@ +// justsyms_1.cc -- test --just-symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The Linux kernel builds an object file using a linker script, and +// then links against that object file using the -R option. This is a +// test for that usage. + +#include +#include +#include +#include +#include + +extern char justsyms_string[]; + +// We expect to get a SIGSEGV. +static void +handle_sigsegv(int) +{ + exit(0); +} + +int +main(int, char**) +{ + // The linker script should arrange for this symbol to be exactly at + // address 0x10000. + assert(reinterpret_cast(justsyms_string) == 0x100); + + // However, since the file was linked with --just-symbols, we should + // not be able to actually access the symbol. + signal(SIGSEGV, handle_sigsegv); + char c = justsyms_string[0]; + exit(c == '\0' ? 1 : c); +} diff --git a/binutils-2.25/gold/testsuite/justsyms_2.cc b/binutils-2.25/gold/testsuite/justsyms_2.cc new file mode 100644 index 00000000..dbbf4b54 --- /dev/null +++ b/binutils-2.25/gold/testsuite/justsyms_2.cc @@ -0,0 +1,27 @@ +// justsyms_2.cc -- test --just-symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This test goes with justsyms_1.cc. We compile this file, then +// apply a linker script with -r to set the section addresses. + +char justsyms_string[] __attribute__ ((section(".gold_test"))) = + "justsyms string"; diff --git a/binutils-2.25/gold/testsuite/justsyms_exec.c b/binutils-2.25/gold/testsuite/justsyms_exec.c new file mode 100644 index 00000000..66702863 --- /dev/null +++ b/binutils-2.25/gold/testsuite/justsyms_exec.c @@ -0,0 +1,56 @@ +// justsyms_exec.c -- test --just-symbols for gold + +// Copyright 2011 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The Linux kernel builds an executable file using a linker script, and +// then links against that object file using the -R option. This is a +// test for that usage. + +#include + +extern int exported_func(void); + +extern int exported_data; + +static int errs = 0; + +void check(void *sym, long v, const char *name); + +void +check(void *sym, long v, const char *name) +{ + if (sym != (void *)v) + { + fprintf(stderr, "&%s is %8p, expected %08lx\n", name, sym, v); + errs++; + } +} + +int +main(void) +{ +#ifndef __powerpc64__ + /* PowerPC64 uses function descriptors. */ + check(exported_func, 0x1000200, "exported_func"); +#endif + check(&exported_data, 0x2000000, "exported_data"); + return errs; +} diff --git a/binutils-2.25/gold/testsuite/justsyms_lib.c b/binutils-2.25/gold/testsuite/justsyms_lib.c new file mode 100644 index 00000000..9666fb78 --- /dev/null +++ b/binutils-2.25/gold/testsuite/justsyms_lib.c @@ -0,0 +1,35 @@ +// justsyms_lib.cc -- test --just-symbols for gold + +// Copyright 2011 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This test goes with justsyms_exec.cc. We compile this file, then +// link it into an executable image with -Ttext and -Tdata to set +// the starting addresses for each segment. + +int exported_func(void); + +int exported_data = 0x1000; + +int +exported_func(void) +{ + return 1; +} diff --git a/binutils-2.25/gold/testsuite/large.c b/binutils-2.25/gold/testsuite/large.c new file mode 100644 index 00000000..796242a1 --- /dev/null +++ b/binutils-2.25/gold/testsuite/large.c @@ -0,0 +1,59 @@ +/* large.c -- a test case for gold + + Copyright 2009 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include + +/* Test large sections in gold. */ + +int v1; +int v2 = 1; +int v3[0x10000]; +int v4[0x10000] = { 1 }; +const int v5[0x10000] = { 2 }; +int v6; +int v7 = 1; + +int +main (int argc __attribute__ ((unused)), char** argv __attribute ((unused))) +{ + assert (v1 == 0); + assert (v2 == 1); + assert (v3[0] == 0 && v3[0xffff] == 0); + assert (v4[0] == 1 && v4[0xffff] == 0); + assert (v5[0] == 2 && v5[0xffff] == 0); + assert (v6 == 0); + assert (v7 == 1); + + /* The large symbols must follow the small ones. */ + assert (&v1 < v3 && &v1 < v4 && &v1 < v5); + assert (&v2 < v3 && &v2 < v4 && &v2 < v5); + assert (&v6 < v3 && &v6 < v4 && &v6 < v5); + assert (&v7 < v3 && &v7 < v4 && &v7 < v5); + + /* Large symbols should be BSS followed by read-only followed by + read-write. */ + assert (v3 < v4); + assert (v3 < v5); + assert (v5 < v4); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/large_symbol_alignment.cc b/binutils-2.25/gold/testsuite/large_symbol_alignment.cc new file mode 100644 index 00000000..1b4a63d4 --- /dev/null +++ b/binutils-2.25/gold/testsuite/large_symbol_alignment.cc @@ -0,0 +1,49 @@ +// large_symbol_alignment.cc -- a test case for gold + +// Copyright 2013 Free Software Foundation, Inc. +// Written by Alexander Ivchenko . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify that Gold correctly aligns +// the symbol with a large alignemnt (often larger than the page size). + +#include + +__attribute__ ((aligned(8192))) int aligned_8k_var; +__attribute__ ((aligned(4096))) int aligned_4k_var; +__attribute__ ((aligned(16384))) int aligned_16k_var; + +bool +is_aligned(const int& var, int align) __attribute__((noinline)); + +bool +is_aligned(const int& var, int align) +{ + return (reinterpret_cast(&var) & (align - 1)) == 0; +} + +int +main() +{ + if (!is_aligned(aligned_16k_var, 16384) + || !is_aligned(aligned_8k_var, 8192) + || !is_aligned(aligned_4k_var, 4096)) + return 1; + return 0; +} diff --git a/binutils-2.25/gold/testsuite/leb128_unittest.cc b/binutils-2.25/gold/testsuite/leb128_unittest.cc new file mode 100644 index 00000000..05c70937 --- /dev/null +++ b/binutils-2.25/gold/testsuite/leb128_unittest.cc @@ -0,0 +1,88 @@ +// leb_unittest.cc -- test read_signed_LEB_128 and read_unsigned_LEB_128 + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "gold.h" + +#include + +#include "int_encoding.h" + +#include "test.h" + +namespace gold_testsuite +{ + +using namespace gold; + +bool +Leb128_test(Test_report*) +{ + size_t len; + + // Unsigned tests. + static unsigned char u1[] = { 0 }; // 0 + static unsigned char u2[] = { 1 }; // 1 + static unsigned char u3[] = { 126 }; // 126 + static unsigned char u4[] = { 127 }; // 127 + static unsigned char u5[] = { 0x80+0, 1 }; // 128 + static unsigned char u6[] = { 0x80+1, 1 }; // 129 + static unsigned char u7[] = { 0x80+57, 100 }; // 12857 + static unsigned char u8[] = { 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, + 0x80, 1}; // 1ULL << 63 + + // Signed tests. + static unsigned char s1[] = { 0 }; // 0 + static unsigned char s2[] = { 1 }; // 1 + static unsigned char s3[] = { 0x7e }; // -2 + static unsigned char s4[] = { 0x80+127, 0 }; // 127 + static unsigned char s5[] = { 0x80+1, 0x7f }; // -127 + static unsigned char s6[] = { 0x80+0, 1 }; // 128 + static unsigned char s7[] = { 0x80+0, 0x7f }; // -128 + static unsigned char s8[] = { 0x80+1, 1 }; // 129 + static unsigned char s9[] = { 0xff, 0x7e }; // -129 + + CHECK(read_unsigned_LEB_128(u1, &len) == 0 && len == sizeof(u1)); + CHECK(read_unsigned_LEB_128(u2, &len) == 1 && len == sizeof(u2)); + CHECK(read_unsigned_LEB_128(u3, &len) == 126 && len == sizeof(u3)); + CHECK(read_unsigned_LEB_128(u4, &len) == 127 && len == sizeof(u4)); + CHECK(read_unsigned_LEB_128(u5, &len) == 128 && len == sizeof(u5)); + CHECK(read_unsigned_LEB_128(u6, &len) == 129 && len == sizeof(u6)); + CHECK(read_unsigned_LEB_128(u7, &len) == 12857 && len == sizeof(u7)); + CHECK(read_unsigned_LEB_128(u8, &len) == (1ULL << 63) && len == sizeof(u8)); + + CHECK(read_signed_LEB_128(s1, &len) == 0 && len == sizeof(s1)); + CHECK(read_signed_LEB_128(s2, &len) == 1 && len == sizeof(s2)); + CHECK(read_signed_LEB_128(s3, &len) == -2 && len == sizeof(s3)); + CHECK(read_signed_LEB_128(s4, &len) == 127 && len == sizeof(s4)); + CHECK(read_signed_LEB_128(s5, &len) == -127 && len == sizeof(s5)); + CHECK(read_signed_LEB_128(s6, &len) == 128 && len == sizeof(s6)); + CHECK(read_signed_LEB_128(s7, &len) == -128 && len == sizeof(s7)); + CHECK(read_signed_LEB_128(s8, &len) == 129 && len == sizeof(s8)); + CHECK(read_signed_LEB_128(s9, &len) == -129 && len == sizeof(s9)); + + return true; +} + +Register_test leb128_register("LEB128", Leb128_test); + +} // End namespace gold_testsuite. diff --git a/binutils-2.25/gold/testsuite/many_sections_test.cc b/binutils-2.25/gold/testsuite/many_sections_test.cc new file mode 100644 index 00000000..e4b74c34 --- /dev/null +++ b/binutils-2.25/gold/testsuite/many_sections_test.cc @@ -0,0 +1,51 @@ +// many_sections_test.cc -- test lots of sections for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This program tests having many sections. It uses a generated .h +// files to define 70,000 variables, each in a different section. It +// uses another generated .h file to verify that they all have the +// right value. + +#include + +#include "many_sections_define.h" + +// This tests a section group. +template +class C +{ + public: + static T val() { return C::val_; } + private: + static T val_; +}; + +template +T C::val_; + +int +main(int, char**) +{ +#include "many_sections_check.h" + assert(C::val() == 0); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/memory_test.s b/binutils-2.25/gold/testsuite/memory_test.s new file mode 100644 index 00000000..ce8576c1 --- /dev/null +++ b/binutils-2.25/gold/testsuite/memory_test.s @@ -0,0 +1,14 @@ + .section .sec0, "a" + .long 0 + + .section .sec1, "a" + .long 0x11 + + .section .sec2, "a" + .long 0x22 + + .section .sec3, "a" + .long 0x33 + + .section .sec4, "a" + .long 0x44 diff --git a/binutils-2.25/gold/testsuite/memory_test.sh b/binutils-2.25/gold/testsuite/memory_test.sh new file mode 100755 index 00000000..db3917a7 --- /dev/null +++ b/binutils-2.25/gold/testsuite/memory_test.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +# memory_test.sh -- test MEMORY regions. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Nick Clifton + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + + +# NOTE: The linker script used in this test (memory_test.t) +# should be the same as the one used in the rgn-at5 linker +# test (ld/testsuite/ld-scripts/rgn-at5.t). +# +# Modulo some section ordering the output from GOLD in this +# test should be the same as the output from GNU LD in the +# rgn-at5 test. + +check() +{ + file=$1 + pattern=$2 + found=`grep "$pattern" $file` + if test -z "$found"; then + echo "pattern \"$pattern\" not found in file $file." + echo $found + exit 1 + fi +} + +check memory_test.stdout \ + " LOAD 0x001000 0x0*02000 0x0*02000 0x0*04 0x0*04 R 0x1000" +check memory_test.stdout \ + " LOAD 0x001004 0x0*01000 0x0*02004 0x0*04 0x0*04 R 0x1000" +check memory_test.stdout \ + " LOAD 0x001008 0x0*02008 0x0*02008 0x0*08 0x0*08 R 0x1000" +check memory_test.stdout \ + " LOAD 0x002000 0x0*05000 0x0*05000 0x0*04 0x0*04 R 0x1000" +check memory_test.stdout \ + " LOAD 0x00203c 0x0*04000 0x0*0603c 0x0*04 0x0*04 R 0x1000" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/memory_test.t b/binutils-2.25/gold/testsuite/memory_test.t new file mode 100644 index 00000000..3a35994c --- /dev/null +++ b/binutils-2.25/gold/testsuite/memory_test.t @@ -0,0 +1,26 @@ +MEMORY +{ + region1 : ORIGIN = 0x1000, LENGTH = 0x1000 , + region2 (r) : org = 0x2000, len = 300 + region3 (wx) : o = 0x4000, l = 4 + region4 (!r) : o = 0x6000 + 60, len = 0x30 * 0x6 +} + +SECTIONS +{ + .sec0 : { *(*.sec0) } + + .sec1 ORIGIN (region1) : { *(*.sec1) } AT> region2 + + fred = ORIGIN (region1) + LENGTH (region1); + + .sec2 : { *(*.sec2) } > region3 AT> region4 + + .sec3 0x5000 : { *(*.sec3) } + + .sec4 : { *(*.sec4) } AT> region2 + + .sec5 : { LONG(0x5555) } > region2 + + /DISCARD/ : { *(*) } +} diff --git a/binutils-2.25/gold/testsuite/merge_string_literals.sh b/binutils-2.25/gold/testsuite/merge_string_literals.sh new file mode 100755 index 00000000..486a8959 --- /dev/null +++ b/binutils-2.25/gold/testsuite/merge_string_literals.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# merge_string_literals.sh -- test + +# Copyright 2013 Free Software Foundation, Inc. +# Written by Alexander Ivchenko . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to check whether string literals from different +# object files are merged together + +set -e + +check() +{ + number_of_occurrence=`grep $2 ./$1 -o| wc -l` + if [ $number_of_occurrence != $3 ] + then + echo "String literals were not merged" + exit 1 + fi +} + +# If string literals were merged, then "abcd" appears two times +check merge_string_literals.stdout "abcd" 2 diff --git a/binutils-2.25/gold/testsuite/merge_string_literals_1.cc b/binutils-2.25/gold/testsuite/merge_string_literals_1.cc new file mode 100644 index 00000000..fc0487c3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/merge_string_literals_1.cc @@ -0,0 +1,31 @@ +// merge_string_literals_1.c -- a test case for gold + +// Copyright 2013 Free Software Foundation, Inc. +// Written by Alexander Ivchenko + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to check whether string literals from different +// object files are merged together + +const char* bar1() { + return "abcdefghijklmnopqrstuvwxyz0123456789"; +} +const char* bar1_short() { + return "abcdef"; +} diff --git a/binutils-2.25/gold/testsuite/merge_string_literals_2.cc b/binutils-2.25/gold/testsuite/merge_string_literals_2.cc new file mode 100644 index 00000000..d1185cde --- /dev/null +++ b/binutils-2.25/gold/testsuite/merge_string_literals_2.cc @@ -0,0 +1,31 @@ +// merge_string_literals_2.c -- a test case for gold + +// Copyright 2013 Free Software Foundation, Inc. +// Written by Alexander Ivchenko + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to check whether string literals from different +// object files are merged together + +const char* bar2() { + return "abcdefghijklmnopqrstuvwxyz0123456789"; +} +const char* bar2_short() { + return "abcdef"; +} diff --git a/binutils-2.25/gold/testsuite/missing_key_func.cc b/binutils-2.25/gold/testsuite/missing_key_func.cc new file mode 100644 index 00000000..5a5b7d95 --- /dev/null +++ b/binutils-2.25/gold/testsuite/missing_key_func.cc @@ -0,0 +1,46 @@ +// basic_test.cc -- a test case for gold + +// Copyright 2013 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Define a class, but leave its key function undefined. + +class C +{ + public: + C() : c(1) { } + virtual void set(); + virtual void clear(); + int c; +}; + +void +C::clear() +{ + c = 0; +} + +int +main() +{ + C c; + c.clear(); + return c.c; +} diff --git a/binutils-2.25/gold/testsuite/missing_key_func.sh b/binutils-2.25/gold/testsuite/missing_key_func.sh new file mode 100755 index 00000000..54c7b57b --- /dev/null +++ b/binutils-2.25/gold/testsuite/missing_key_func.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +# missing_key_func.sh -- a test case for printing error messages when +# a class is missing its key function. + +# Copyright 2013 Free Software Foundation, Inc. +# Written by Cary Coutant + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with debug_msg.cc, a C++ source file constructed to +# have undefined references. We compile that file with debug +# information and then try to link it, and make sure the proper errors +# are displayed. The errors will be found in debug_msg.err. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +check_missing() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +check missing_key_func.err "error: undefined reference to 'vtable for C'" +check missing_key_func.err "class is missing its key function" diff --git a/binutils-2.25/gold/testsuite/no_version_test.c b/binutils-2.25/gold/testsuite/no_version_test.c new file mode 100644 index 00000000..e42d04f0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/no_version_test.c @@ -0,0 +1,32 @@ +// ver_no_default.c -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Doug Kwan . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// We should not create any .gnu.version sections if symbol versioning +// is not used. + +extern int the_answer(void); + +int +the_answer(void) +{ + return 42; +} diff --git a/binutils-2.25/gold/testsuite/no_version_test.sh b/binutils-2.25/gold/testsuite/no_version_test.sh new file mode 100755 index 00000000..f4ca9b10 --- /dev/null +++ b/binutils-2.25/gold/testsuite/no_version_test.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# no_version_test.sh -- test that .gnu.version* sections are not created +# in a shared object when symbol versioning is not used. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Doug Kwan + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with no_version_test.c, a C source file +# linked with option -shared -nostdlib. We run objdump on +# the resulting executable and check that .gnu.version* sections +# are not created. + +check() +{ + file=$1 + + found=`egrep "\.gnu\.version.*" $file` + if test -n "$found"; then + echo "These section should not be in $file:" + echo "$found" + exit 1 + fi +} + +check "no_version_test.stdout" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/object_unittest.cc b/binutils-2.25/gold/testsuite/object_unittest.cc new file mode 100644 index 00000000..7dedeaef --- /dev/null +++ b/binutils-2.25/gold/testsuite/object_unittest.cc @@ -0,0 +1,105 @@ +// object_unittest.cc -- test Object, Relobj, etc. + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "gold.h" + +#include "object.h" +#include "options.h" +#include "parameters.h" + +#include "test.h" +#include "testfile.h" + +namespace gold_testsuite +{ + +using namespace gold; + +// Test basic Object functionality. + +template +bool +Sized_object_test(const unsigned char* test_file, unsigned int test_file_size) +{ + parameters_clear_target(); + // We need a pretend Task. + const Task* task = reinterpret_cast(-1); + Input_file input_file(task, "test.o", test_file, test_file_size); + Object* object = make_elf_object("test.o", &input_file, 0, + test_file, test_file_size, NULL); + CHECK(object->name() == "test.o"); + CHECK(!object->is_dynamic()); + CHECK(object->is_locked()); + object->unlock(task); + CHECK(!object->is_locked()); + object->lock(task); + CHECK(object->shnum() == 5); + CHECK(object->section_name(0).empty()); + CHECK(object->section_name(1) == ".test"); + CHECK(object->section_flags(0) == 0); + CHECK(object->section_flags(1) == elfcpp::SHF_ALLOC); + object->unlock(task); + return true; +} + +bool +Object_test(Test_report*) +{ + General_options options; + int fail = 0; + + set_parameters_options(&options); + +#ifdef HAVE_TARGET_32_LITTLE + if (!Sized_object_test<32, false>(test_file_1_32_little, + test_file_1_size_32_little)) + ++fail; + CHECK(¶meters->target() == target_test_pointer_32_little); +#endif + +#ifdef HAVE_TARGET_32_BIG + if (!Sized_object_test<32, true>(test_file_1_32_big, + test_file_1_size_32_big)) + ++fail; + CHECK(¶meters->target() == target_test_pointer_32_big); +#endif + +#ifdef HAVE_TARGET_64_LITTLE + if (!Sized_object_test<64, false>(test_file_1_64_little, + test_file_1_size_64_little)) + ++fail; + CHECK(¶meters->target() == target_test_pointer_64_little); +#endif + +#ifdef HAVE_TARGET_64_BIG + if (!Sized_object_test<64, true>(test_file_1_64_big, + test_file_1_size_64_big)) + ++fail; + CHECK(¶meters->target() == target_test_pointer_64_big); +#endif + + return fail == 0; +} + +Register_test object_register("Object", Object_test); + +} // End namespace gold_testsuite. diff --git a/binutils-2.25/gold/testsuite/odr_header1.h b/binutils-2.25/gold/testsuite/odr_header1.h new file mode 100644 index 00000000..3d9c4880 --- /dev/null +++ b/binutils-2.25/gold/testsuite/odr_header1.h @@ -0,0 +1,6 @@ +#include "odr_header2.h" + +struct OdrDerived : OdrBase { + ~OdrDerived() { + } +}; diff --git a/binutils-2.25/gold/testsuite/odr_header2.h b/binutils-2.25/gold/testsuite/odr_header2.h new file mode 100644 index 00000000..0fb9449a --- /dev/null +++ b/binutils-2.25/gold/testsuite/odr_header2.h @@ -0,0 +1,4 @@ +struct OdrBase { + virtual ~OdrBase() { + } +}; diff --git a/binutils-2.25/gold/testsuite/odr_violation1.cc b/binutils-2.25/gold/testsuite/odr_violation1.cc new file mode 100644 index 00000000..8b37cea7 --- /dev/null +++ b/binutils-2.25/gold/testsuite/odr_violation1.cc @@ -0,0 +1,23 @@ +#include +#include "odr_header1.h" + +class Ordering { + public: + bool operator()(int a, int b) { + return a < b; + } +}; + +void SortAscending(int array[], int size) { + std::sort(array, array + size, Ordering()); +} + +extern "C" int OverriddenCFunction(int i) __attribute__ ((weak)); +extern "C" int OverriddenCFunction(int i) { + return i; +} + +// Instantiate the Derived vtable, without optimization. +OdrBase* CreateOdrDerived1() { + return new OdrDerived; +} diff --git a/binutils-2.25/gold/testsuite/odr_violation2.cc b/binutils-2.25/gold/testsuite/odr_violation2.cc new file mode 100644 index 00000000..e3d30f39 --- /dev/null +++ b/binutils-2.25/gold/testsuite/odr_violation2.cc @@ -0,0 +1,34 @@ +#include +#include "odr_header1.h" + +class Ordering { + public: + bool operator()(int a, int b) __attribute__((never_inline)); +}; + +// This comment makes the line numbers in Ordering::operator() all have +// two digits, which causes gold's output to be independent of which +// instruction the compiler optimizes into the front of the function. +bool Ordering::operator()(int a, int b) { + // Optimization makes this operator() a different size than the one + // in odr_violation1.cc. + return a + 12345 > b / 67; +} + +void SortDescending(int array[], int size) { + std::sort(array, array + size, Ordering()); +} + +// This is weak in odr_violation1.cc. +extern "C" int OverriddenCFunction(int i) { + return i * i; +} +// This is inline in debug_msg.cc, which makes it a weak symbol too. +int SometimesInlineFunction(int i) { + return i * i; +} + +// Instantiate the Derived vtable, with optimization (see Makefile.am). +OdrBase* CreateOdrDerived2() { + return new OdrDerived; +} diff --git a/binutils-2.25/gold/testsuite/plugin_common_test_1.c b/binutils-2.25/gold/testsuite/plugin_common_test_1.c new file mode 100644 index 00000000..262c2985 --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_common_test_1.c @@ -0,0 +1,48 @@ +/* plugin_common_test_1.c -- test common symbol handling in plugins + + Copyright 2010 Free Software Foundation, Inc. + Written by Cary Coutant + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of common symbols in plugin objects. C1-C5 test + various combinations of tentative definitions, extern declarations, + and definitions. */ + +#include + +int c1; +int c2; +extern int c3; +int c4; +int c5 = 50; + +extern void foo (void); + +int +main (int argc __attribute__ ((unused)), char** argv __attribute__ ((unused))) +{ + foo(); + + assert (c1 == 10); + assert (c2 == 20); + assert (c3 == 30); + assert (c4 == 40); + + return 0; +} diff --git a/binutils-2.25/gold/testsuite/plugin_common_test_2.c b/binutils-2.25/gold/testsuite/plugin_common_test_2.c new file mode 100644 index 00000000..54139ceb --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_common_test_2.c @@ -0,0 +1,45 @@ +/* plugin_common_test_2.c -- test common symbol handling in plugins + + Copyright 2010 Free Software Foundation, Inc. + Written by Cary Coutant + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of common symbols in plugin objects. C1-C5 test + various combinations of tentative definitions, extern declarations, + and definitions. */ + +#include + +int c1; +extern int c2; +int c3; +int c4 = 40; +int c5; + +extern void foo (void); + +void +foo (void) +{ + c1 = 10; + c2 = 20; + c3 = 30; + + assert (c5 == 50); +} diff --git a/binutils-2.25/gold/testsuite/plugin_final_layout.cc b/binutils-2.25/gold/testsuite/plugin_final_layout.cc new file mode 100644 index 00000000..169eeefd --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_final_layout.cc @@ -0,0 +1,47 @@ +// plugin_final_layout.cc -- a test case for gold + +// Copyright 2011 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if section ordering +// via plugins happens correctly. Also, test if plugin based ordering +// overrides default text section ordering where ".text.hot" sections +// are grouped. The plugin does not want foo and baz next to each other. +// Plugin section order is foo() followed by bar() and then baz(). + +__attribute__ ((section(".text._Z3barv"))) +void bar () +{ +} + +__attribute__ ((section(".text.hot._Z3bazv"))) +void baz () +{ +} + +__attribute__ ((section(".text.hot._Z3foov"))) +void foo () +{ +} + +int main () +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/plugin_final_layout.sh b/binutils-2.25/gold/testsuite/plugin_final_layout.sh new file mode 100755 index 00000000..75a40d3c --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_final_layout.sh @@ -0,0 +1,90 @@ +#!/bin/sh + +# plugin_final_layout.sh -- test + +# Copyright 2011 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if --section-ordering-file works as +# intended. File final_layout.cc is in this test. + + +set -e + +check() +{ + awk " +BEGIN { saw1 = 0; saw2 = 0; err = 0; } +/.*$2\$/ { saw1 = 1; } +/.*$3\$/ { + saw2 = 1; + if (!saw1) + { + printf \"layout of $2 and $3 is not right\\n\"; + err = 1; + exit 1; + } + } +END { + if (!saw1 && !err) + { + printf \"did not see $2\\n\"; + exit 1; + } + if (!saw2 && !err) + { + printf \"did not see $3\\n\"; + exit 1; + } + }" $1 +} + +# With readelf -l, an ELF Section to Segment mapping is printed as : +############################################## +# Section to Segment mapping: +# Segment Sections... +# ... +# 0x .text.plugin_created_unique +# ... +############################################## +# Check of .text.plugin_created_unique is the only section in the segment. +check_unique_segment() +{ + awk " +BEGIN { saw_section = 0; saw_unique = 0; } +/$2/ { saw_section = 1; } +/[ ]*0[0-9][ ]*$2[ ]*\$/ { saw_unique = 1; } +END { + if (!saw_section) + { + printf \"Section $2 not seen in output\\n\"; + exit 1; + } + else if (!saw_unique) + { + printf \"Unique segment not seen for: $2\\n\"; + exit 1; + } + }" $1 +} + +check plugin_final_layout.stdout "_Z3foov" "_Z3barv" +check plugin_final_layout.stdout "_Z3barv" "_Z3bazv" +check_unique_segment plugin_final_layout_readelf.stdout ".text.plugin_created_unique" diff --git a/binutils-2.25/gold/testsuite/plugin_section_order.c b/binutils-2.25/gold/testsuite/plugin_section_order.c new file mode 100644 index 00000000..fdc6fe4e --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_section_order.c @@ -0,0 +1,188 @@ +/* plugin_section_reorder.c -- Simple plugin to reorder function sections + + Copyright 2011 Free Software Foundation, Inc. + Written by Sriraman Tallam . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include "plugin-api.h" + +static ld_plugin_get_input_section_count get_input_section_count = NULL; +static ld_plugin_get_input_section_type get_input_section_type = NULL; +static ld_plugin_get_input_section_name get_input_section_name = NULL; +static ld_plugin_get_input_section_contents get_input_section_contents = NULL; +static ld_plugin_update_section_order update_section_order = NULL; +static ld_plugin_allow_section_ordering allow_section_ordering = NULL; +static ld_plugin_allow_unique_segment_for_sections + allow_unique_segment_for_sections = NULL; +static ld_plugin_unique_segment_for_sections unique_segment_for_sections = NULL; + +enum ld_plugin_status onload(struct ld_plugin_tv *tv); +enum ld_plugin_status claim_file_hook(const struct ld_plugin_input_file *file, + int *claimed); +enum ld_plugin_status all_symbols_read_hook(void); + +/* Plugin entry point. */ +enum ld_plugin_status +onload(struct ld_plugin_tv *tv) +{ + struct ld_plugin_tv *entry; + for (entry = tv; entry->tv_tag != LDPT_NULL; ++entry) + { + switch (entry->tv_tag) + { + case LDPT_REGISTER_CLAIM_FILE_HOOK: + assert((*entry->tv_u.tv_register_claim_file) (claim_file_hook) + == LDPS_OK); + break; + case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: + assert((*entry->tv_u.tv_register_all_symbols_read) + (all_symbols_read_hook) + == LDPS_OK); + break; + case LDPT_GET_INPUT_SECTION_COUNT: + get_input_section_count = *entry->tv_u.tv_get_input_section_count; + break; + case LDPT_GET_INPUT_SECTION_TYPE: + get_input_section_type = *entry->tv_u.tv_get_input_section_type; + break; + case LDPT_GET_INPUT_SECTION_NAME: + get_input_section_name = *entry->tv_u.tv_get_input_section_name; + break; + case LDPT_GET_INPUT_SECTION_CONTENTS: + get_input_section_contents + = *entry->tv_u.tv_get_input_section_contents; + break; + case LDPT_UPDATE_SECTION_ORDER: + update_section_order = *entry->tv_u.tv_update_section_order; + break; + case LDPT_ALLOW_SECTION_ORDERING: + allow_section_ordering = *entry->tv_u.tv_allow_section_ordering; + break; + case LDPT_ALLOW_UNIQUE_SEGMENT_FOR_SECTIONS: + allow_unique_segment_for_sections + = *entry->tv_u.tv_allow_unique_segment_for_sections; + case LDPT_UNIQUE_SEGMENT_FOR_SECTIONS: + unique_segment_for_sections + = *entry->tv_u.tv_unique_segment_for_sections; + break; + default: + break; + } + } + + if (get_input_section_count == NULL + || get_input_section_type == NULL + || get_input_section_name == NULL + || get_input_section_contents == NULL + || update_section_order == NULL + || allow_section_ordering == NULL + || allow_unique_segment_for_sections == NULL + || unique_segment_for_sections == NULL) + { + fprintf(stderr, "Some interfaces are missing\n"); + return LDPS_ERR; + } + + return LDPS_OK; +} + +inline static int is_prefix_of(const char *prefix, const char *str) +{ + return strncmp(prefix, str, strlen (prefix)) == 0; +} + +struct ld_plugin_section section_list[3]; +int num_entries = 0; + +/* This function is called by the linker for every new object it encounters. */ +enum ld_plugin_status +claim_file_hook(const struct ld_plugin_input_file *file, int *claimed) +{ + static int is_ordering_specified = 0; + struct ld_plugin_section section; + unsigned int count = 0; + unsigned int shndx; + + *claimed = 0; + if (is_ordering_specified == 0) + { + /* Inform the linker to prepare for section reordering. */ + (*allow_section_ordering)(); + /* Inform the linker to prepare to map some sections to unique + segments. */ + (*allow_unique_segment_for_sections)(); + is_ordering_specified = 1; + } + + (*get_input_section_count)(file->handle, &count); + + for (shndx = 0; shndx < count; ++shndx) + { + char *name = NULL; + int position = 3; + + section.handle = file->handle; + section.shndx = shndx; + (*get_input_section_name)(section, &name); + + /* Order is foo() followed by bar() followed by baz() */ + if (is_prefix_of(".text.", name)) + { + if (strstr(name, "_Z3foov") != NULL) + position = 0; + else if (strstr(name, "_Z3barv") != NULL) + position = 1; + else if (strstr(name, "_Z3bazv") != NULL) + position = 2; + else + position = 3; + } + if (position < 3) + { + section_list[position].handle = file->handle; + section_list[position].shndx = shndx; + num_entries++; + } + } + return LDPS_OK; +} + +/* This function is called by the linker after all the symbols have been read. + At this stage, it is fine to tell the linker the desired function order. */ + +enum ld_plugin_status +all_symbols_read_hook(void) +{ + if (num_entries == 3) + { + update_section_order(section_list, num_entries); + unique_segment_for_sections (".text.plugin_created_unique", 0, 0x1000, + section_list, num_entries); + } + + return LDPS_OK; +} diff --git a/binutils-2.25/gold/testsuite/plugin_test.c b/binutils-2.25/gold/testsuite/plugin_test.c new file mode 100644 index 00000000..47d400a0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test.c @@ -0,0 +1,600 @@ +/* test_plugin.c -- simple linker plugin test + + Copyright 2008, 2009 Free Software Foundation, Inc. + Written by Cary Coutant . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include "plugin-api.h" + +struct claimed_file +{ + const char* name; + void* handle; + int nsyms; + struct ld_plugin_symbol* syms; + struct claimed_file* next; +}; + +struct sym_info +{ + int size; + char* type; + char* bind; + char* vis; + char* sect; + char* name; +}; + +static struct claimed_file* first_claimed_file = NULL; +static struct claimed_file* last_claimed_file = NULL; + +static ld_plugin_register_claim_file register_claim_file_hook = NULL; +static ld_plugin_register_all_symbols_read register_all_symbols_read_hook = NULL; +static ld_plugin_register_cleanup register_cleanup_hook = NULL; +static ld_plugin_add_symbols add_symbols = NULL; +static ld_plugin_get_symbols get_symbols = NULL; +static ld_plugin_get_symbols get_symbols_v2 = NULL; +static ld_plugin_add_input_file add_input_file = NULL; +static ld_plugin_message message = NULL; +static ld_plugin_get_input_file get_input_file = NULL; +static ld_plugin_release_input_file release_input_file = NULL; +static ld_plugin_get_input_section_count get_input_section_count = NULL; +static ld_plugin_get_input_section_type get_input_section_type = NULL; +static ld_plugin_get_input_section_name get_input_section_name = NULL; +static ld_plugin_get_input_section_contents get_input_section_contents = NULL; +static ld_plugin_update_section_order update_section_order = NULL; +static ld_plugin_allow_section_ordering allow_section_ordering = NULL; + +#define MAXOPTS 10 + +static const char *opts[MAXOPTS]; +static int nopts = 0; + +enum ld_plugin_status onload(struct ld_plugin_tv *tv); +enum ld_plugin_status claim_file_hook(const struct ld_plugin_input_file *file, + int *claimed); +enum ld_plugin_status all_symbols_read_hook(void); +enum ld_plugin_status cleanup_hook(void); + +static void parse_readelf_line(char*, struct sym_info*); + +enum ld_plugin_status +onload(struct ld_plugin_tv *tv) +{ + struct ld_plugin_tv *entry; + int api_version = 0; + int gold_version = 0; + int i; + + for (entry = tv; entry->tv_tag != LDPT_NULL; ++entry) + { + switch (entry->tv_tag) + { + case LDPT_API_VERSION: + api_version = entry->tv_u.tv_val; + break; + case LDPT_GOLD_VERSION: + gold_version = entry->tv_u.tv_val; + break; + case LDPT_LINKER_OUTPUT: + break; + case LDPT_OPTION: + if (nopts < MAXOPTS) + opts[nopts++] = entry->tv_u.tv_string; + break; + case LDPT_REGISTER_CLAIM_FILE_HOOK: + register_claim_file_hook = entry->tv_u.tv_register_claim_file; + break; + case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: + register_all_symbols_read_hook = + entry->tv_u.tv_register_all_symbols_read; + break; + case LDPT_REGISTER_CLEANUP_HOOK: + register_cleanup_hook = entry->tv_u.tv_register_cleanup; + break; + case LDPT_ADD_SYMBOLS: + add_symbols = entry->tv_u.tv_add_symbols; + break; + case LDPT_GET_SYMBOLS: + get_symbols = entry->tv_u.tv_get_symbols; + break; + case LDPT_GET_SYMBOLS_V2: + get_symbols_v2 = entry->tv_u.tv_get_symbols; + break; + case LDPT_ADD_INPUT_FILE: + add_input_file = entry->tv_u.tv_add_input_file; + break; + case LDPT_MESSAGE: + message = entry->tv_u.tv_message; + break; + case LDPT_GET_INPUT_FILE: + get_input_file = entry->tv_u.tv_get_input_file; + break; + case LDPT_RELEASE_INPUT_FILE: + release_input_file = entry->tv_u.tv_release_input_file; + break; + case LDPT_GET_INPUT_SECTION_COUNT: + get_input_section_count = *entry->tv_u.tv_get_input_section_count; + break; + case LDPT_GET_INPUT_SECTION_TYPE: + get_input_section_type = *entry->tv_u.tv_get_input_section_type; + break; + case LDPT_GET_INPUT_SECTION_NAME: + get_input_section_name = *entry->tv_u.tv_get_input_section_name; + break; + case LDPT_GET_INPUT_SECTION_CONTENTS: + get_input_section_contents = *entry->tv_u.tv_get_input_section_contents; + break; + case LDPT_UPDATE_SECTION_ORDER: + update_section_order = *entry->tv_u.tv_update_section_order; + break; + case LDPT_ALLOW_SECTION_ORDERING: + allow_section_ordering = *entry->tv_u.tv_allow_section_ordering; + break; + default: + break; + } + } + + if (message == NULL) + { + fprintf(stderr, "tv_message interface missing\n"); + return LDPS_ERR; + } + + if (register_claim_file_hook == NULL) + { + fprintf(stderr, "tv_register_claim_file_hook interface missing\n"); + return LDPS_ERR; + } + + if (register_all_symbols_read_hook == NULL) + { + fprintf(stderr, "tv_register_all_symbols_read_hook interface missing\n"); + return LDPS_ERR; + } + + if (register_cleanup_hook == NULL) + { + fprintf(stderr, "tv_register_cleanup_hook interface missing\n"); + return LDPS_ERR; + } + + (*message)(LDPL_INFO, "API version: %d", api_version); + (*message)(LDPL_INFO, "gold version: %d", gold_version); + + for (i = 0; i < nopts; ++i) + (*message)(LDPL_INFO, "option: %s", opts[i]); + + if ((*register_claim_file_hook)(claim_file_hook) != LDPS_OK) + { + (*message)(LDPL_ERROR, "error registering claim file hook"); + return LDPS_ERR; + } + + if ((*register_all_symbols_read_hook)(all_symbols_read_hook) != LDPS_OK) + { + (*message)(LDPL_ERROR, "error registering all symbols read hook"); + return LDPS_ERR; + } + + if ((*register_cleanup_hook)(cleanup_hook) != LDPS_OK) + { + (*message)(LDPL_ERROR, "error registering cleanup hook"); + return LDPS_ERR; + } + + if (get_input_section_count == NULL) + { + fprintf(stderr, "tv_get_input_section_count interface missing\n"); + return LDPS_ERR; + } + + if (get_input_section_type == NULL) + { + fprintf(stderr, "tv_get_input_section_type interface missing\n"); + return LDPS_ERR; + } + + if (get_input_section_name == NULL) + { + fprintf(stderr, "tv_get_input_section_name interface missing\n"); + return LDPS_ERR; + } + + if (get_input_section_contents == NULL) + { + fprintf(stderr, "tv_get_input_section_contents interface missing\n"); + return LDPS_ERR; + } + + if (update_section_order == NULL) + { + fprintf(stderr, "tv_update_section_order interface missing\n"); + return LDPS_ERR; + } + + if (allow_section_ordering == NULL) + { + fprintf(stderr, "tv_allow_section_ordering interface missing\n"); + return LDPS_ERR; + } + + return LDPS_OK; +} + +enum ld_plugin_status +claim_file_hook (const struct ld_plugin_input_file* file, int* claimed) +{ + int len; + off_t end_offset; + char buf[160]; + struct claimed_file* claimed_file; + struct ld_plugin_symbol* syms; + int nsyms = 0; + int maxsyms = 0; + FILE* irfile; + struct sym_info info; + int weak; + int def; + int vis; + int is_comdat; + int i; + + (*message)(LDPL_INFO, + "%s: claim file hook called (offset = %ld, size = %ld)", + file->name, (long)file->offset, (long)file->filesize); + + /* Look for the beginning of output from readelf -s. */ + irfile = fdopen(file->fd, "r"); + (void)fseek(irfile, file->offset, SEEK_SET); + end_offset = file->offset + file->filesize; + len = fread(buf, 1, 13, irfile); + if (len < 13 || strncmp(buf, "\nSymbol table", 13) != 0) + return LDPS_OK; + + /* Skip the two header lines. */ + (void) fgets(buf, sizeof(buf), irfile); + (void) fgets(buf, sizeof(buf), irfile); + + if (add_symbols == NULL) + { + fprintf(stderr, "tv_add_symbols interface missing\n"); + return LDPS_ERR; + } + + /* Parse the output from readelf. The columns are: + Index Value Size Type Binding Visibility Section Name. */ + syms = (struct ld_plugin_symbol*)malloc(sizeof(struct ld_plugin_symbol) * 8); + if (syms == NULL) + return LDPS_ERR; + maxsyms = 8; + while (ftell(irfile) < end_offset + && fgets(buf, sizeof(buf), irfile) != NULL) + { + parse_readelf_line(buf, &info); + + /* Ignore local symbols. */ + if (strncmp(info.bind, "LOCAL", 5) == 0) + continue; + + weak = strncmp(info.bind, "WEAK", 4) == 0; + if (strncmp(info.sect, "UND", 3) == 0) + def = weak ? LDPK_WEAKUNDEF : LDPK_UNDEF; + else if (strncmp(info.sect, "COM", 3) == 0) + def = LDPK_COMMON; + else + def = weak ? LDPK_WEAKDEF : LDPK_DEF; + + if (strncmp(info.vis, "INTERNAL", 8) == 0) + vis = LDPV_INTERNAL; + else if (strncmp(info.vis, "HIDDEN", 6) == 0) + vis = LDPV_HIDDEN; + else if (strncmp(info.vis, "PROTECTED", 9) == 0) + vis = LDPV_PROTECTED; + else + vis = LDPV_DEFAULT; + + /* If the symbol is listed in the options list, special-case + it as a comdat symbol. */ + is_comdat = 0; + for (i = 0; i < nopts; ++i) + { + if (info.name != NULL && strcmp(info.name, opts[i]) == 0) + { + is_comdat = 1; + break; + } + } + + if (nsyms >= maxsyms) + { + syms = (struct ld_plugin_symbol*) + realloc(syms, sizeof(struct ld_plugin_symbol) * maxsyms * 2); + if (syms == NULL) + return LDPS_ERR; + maxsyms *= 2; + } + + if (info.name == NULL) + syms[nsyms].name = NULL; + else + { + len = strlen(info.name); + syms[nsyms].name = malloc(len + 1); + strncpy(syms[nsyms].name, info.name, len + 1); + } + syms[nsyms].version = NULL; + syms[nsyms].def = def; + syms[nsyms].visibility = vis; + syms[nsyms].size = info.size; + syms[nsyms].comdat_key = is_comdat ? syms[nsyms].name : NULL; + syms[nsyms].resolution = LDPR_UNKNOWN; + ++nsyms; + } + + claimed_file = (struct claimed_file*) malloc(sizeof(struct claimed_file)); + if (claimed_file == NULL) + return LDPS_ERR; + + claimed_file->name = file->name; + claimed_file->handle = file->handle; + claimed_file->nsyms = nsyms; + claimed_file->syms = syms; + claimed_file->next = NULL; + if (last_claimed_file == NULL) + first_claimed_file = claimed_file; + else + last_claimed_file->next = claimed_file; + last_claimed_file = claimed_file; + + (*message)(LDPL_INFO, "%s: claiming file, adding %d symbols", + file->name, nsyms); + + if (nsyms > 0) + (*add_symbols)(file->handle, nsyms, syms); + + *claimed = 1; + return LDPS_OK; +} + +enum ld_plugin_status +all_symbols_read_hook(void) +{ + int i; + const char* res; + struct claimed_file* claimed_file; + struct ld_plugin_input_file file; + FILE* irfile; + off_t end_offset; + struct sym_info info; + int len; + char buf[160]; + char* p; + const char* filename; + + (*message)(LDPL_INFO, "all symbols read hook called"); + + if (get_symbols_v2 == NULL) + { + fprintf(stderr, "tv_get_symbols (v2) interface missing\n"); + return LDPS_ERR; + } + + for (claimed_file = first_claimed_file; + claimed_file != NULL; + claimed_file = claimed_file->next) + { + (*get_symbols_v2)(claimed_file->handle, claimed_file->nsyms, + claimed_file->syms); + + for (i = 0; i < claimed_file->nsyms; ++i) + { + switch (claimed_file->syms[i].resolution) + { + case LDPR_UNKNOWN: + res = "UNKNOWN"; + break; + case LDPR_UNDEF: + res = "UNDEF"; + break; + case LDPR_PREVAILING_DEF: + res = "PREVAILING_DEF_REG"; + break; + case LDPR_PREVAILING_DEF_IRONLY: + res = "PREVAILING_DEF_IRONLY"; + break; + case LDPR_PREVAILING_DEF_IRONLY_EXP: + res = "PREVAILING_DEF_IRONLY_EXP"; + break; + case LDPR_PREEMPTED_REG: + res = "PREEMPTED_REG"; + break; + case LDPR_PREEMPTED_IR: + res = "PREEMPTED_IR"; + break; + case LDPR_RESOLVED_IR: + res = "RESOLVED_IR"; + break; + case LDPR_RESOLVED_EXEC: + res = "RESOLVED_EXEC"; + break; + case LDPR_RESOLVED_DYN: + res = "RESOLVED_DYN"; + break; + default: + res = "?"; + break; + } + (*message)(LDPL_INFO, "%s: %s: %s", claimed_file->name, + claimed_file->syms[i].name, res); + } + } + + if (add_input_file == NULL) + { + fprintf(stderr, "tv_add_input_file interface missing\n"); + return LDPS_ERR; + } + if (get_input_file == NULL) + { + fprintf(stderr, "tv_get_input_file interface missing\n"); + return LDPS_ERR; + } + if (release_input_file == NULL) + { + fprintf(stderr, "tv_release_input_file interface missing\n"); + return LDPS_ERR; + } + + for (claimed_file = first_claimed_file; + claimed_file != NULL; + claimed_file = claimed_file->next) + { + (*get_input_file) (claimed_file->handle, &file); + + /* Look for the beginning of output from readelf -s. */ + irfile = fdopen(file.fd, "r"); + (void)fseek(irfile, file.offset, SEEK_SET); + end_offset = file.offset + file.filesize; + len = fread(buf, 1, 13, irfile); + if (len < 13 || strncmp(buf, "\nSymbol table", 13) != 0) + { + fprintf(stderr, "%s: can't re-read original input file\n", + claimed_file->name); + return LDPS_ERR; + } + + /* Skip the two header lines. */ + (void) fgets(buf, sizeof(buf), irfile); + (void) fgets(buf, sizeof(buf), irfile); + + filename = NULL; + while (ftell(irfile) < end_offset + && fgets(buf, sizeof(buf), irfile) != NULL) + { + parse_readelf_line(buf, &info); + + /* Look for file name. */ + if (strncmp(info.type, "FILE", 4) == 0) + { + len = strlen(info.name); + p = malloc(len + 1); + strncpy(p, info.name, len + 1); + filename = p; + break; + } + } + + (*release_input_file) (claimed_file->handle); + + if (filename == NULL) + filename = claimed_file->name; + + if (claimed_file->nsyms == 0) + continue; + + if (strlen(filename) >= sizeof(buf)) + { + (*message)(LDPL_FATAL, "%s: filename too long", filename); + return LDPS_ERR; + } + strcpy(buf, filename); + p = strrchr(buf, '.'); + if (p == NULL + || (strcmp(p, ".syms") != 0 + && strcmp(p, ".c") != 0 + && strcmp(p, ".cc") != 0)) + { + (*message)(LDPL_FATAL, "%s: filename has unknown suffix", + filename); + return LDPS_ERR; + } + p[1] = 'o'; + p[2] = '\0'; + (*message)(LDPL_INFO, "%s: adding new input file", buf); + (*add_input_file)(buf); + } + + return LDPS_OK; +} + +enum ld_plugin_status +cleanup_hook(void) +{ + (*message)(LDPL_INFO, "cleanup hook called"); + return LDPS_OK; +} + +static void +parse_readelf_line(char* p, struct sym_info* info) +{ + int len; + + p += strspn(p, " "); + + /* Index field. */ + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Value field. */ + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Size field. */ + info->size = atoi(p); + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Type field. */ + info->type = p; + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Binding field. */ + info->bind = p; + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Visibility field. */ + info->vis = p; + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Section field. */ + info->sect = p; + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Name field. */ + /* FIXME: Look for version. */ + len = strlen(p); + if (len == 0) + p = NULL; + else if (p[len-1] == '\n') + p[--len] = '\0'; + info->name = p; +} diff --git a/binutils-2.25/gold/testsuite/plugin_test_1.sh b/binutils-2.25/gold/testsuite/plugin_test_1.sh new file mode 100755 index 00000000..4d3ed417 --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_1.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +# plugin_test_1.sh -- a test case for the plugin API. + +# Copyright 2008, 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with plugin_test_1.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_1.err "API version:" +check plugin_test_1.err "gold version:" +check plugin_test_1.err "option: _Z4f13iv" +check plugin_test_1.err "two_file_test_main.o: claim file hook called" +check plugin_test_1.err "two_file_test_1.syms: claim file hook called" +check plugin_test_1.err "two_file_test_1b.syms: claim file hook called" +check plugin_test_1.err "two_file_test_2.syms: claim file hook called" +check plugin_test_1.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_IRONLY" +check plugin_test_1.err "two_file_test_1.syms: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_1.err "two_file_test_1.syms: v2: RESOLVED_IR" +check plugin_test_1.err "two_file_test_1.syms: t17data: RESOLVED_IR" +check plugin_test_1.err "two_file_test_2.syms: _Z4f13iv: PREEMPTED_IR" +check plugin_test_1.err "two_file_test_1.o: adding new input file" +check plugin_test_1.err "two_file_test_1b.o: adding new input file" +check plugin_test_1.err "two_file_test_2.o: adding new input file" +check plugin_test_1.err "cleanup hook called" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/plugin_test_2.sh b/binutils-2.25/gold/testsuite/plugin_test_2.sh new file mode 100755 index 00000000..293b1f00 --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_2.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +# plugin_test_2.sh -- a test case for the plugin API. + +# Copyright 2008, 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with plugin_test_1.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_2.err "API version:" +check plugin_test_2.err "gold version:" +check plugin_test_2.err "two_file_test_main.o: claim file hook called" +check plugin_test_2.err "two_file_test_1.syms: claim file hook called" +check plugin_test_2.err "two_file_test_1b.syms: claim file hook called" +check plugin_test_2.err "two_file_shared_2.so: claim file hook called" +check plugin_test_2.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_IRONLY_EXP" +check plugin_test_2.err "two_file_test_1.syms: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_2.err "two_file_test_1.syms: v2: RESOLVED_DYN" +check plugin_test_2.err "two_file_test_1.syms: t17data: RESOLVED_DYN" +check plugin_test_2.err "two_file_test_1.o: adding new input file" +check plugin_test_2.err "two_file_test_1b.o: adding new input file" +check plugin_test_2.err "cleanup hook called" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/plugin_test_3.sh b/binutils-2.25/gold/testsuite/plugin_test_3.sh new file mode 100755 index 00000000..39356d13 --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_3.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +# plugin_test_3.sh -- a test case for the plugin API. + +# Copyright 2008, 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with plugin_test.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_3.err "API version:" +check plugin_test_3.err "gold version:" +check plugin_test_3.err "option: _Z4f13iv" +check plugin_test_3.err "two_file_test_main.o: claim file hook called" +check plugin_test_3.err "two_file_test_1.syms: claim file hook called" +check plugin_test_3.err "two_file_test_1b.syms: claim file hook called" +check plugin_test_3.err "two_file_test_2.syms: claim file hook called" +check plugin_test_3.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_IRONLY_EXP" +check plugin_test_3.err "two_file_test_1.syms: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_3.err "two_file_test_1.syms: v2: RESOLVED_IR" +check plugin_test_3.err "two_file_test_1.syms: t17data: RESOLVED_IR" +check plugin_test_3.err "two_file_test_2.syms: _Z4f13iv: PREEMPTED_IR" +check plugin_test_3.err "two_file_test_1.o: adding new input file" +check plugin_test_3.err "two_file_test_1b.o: adding new input file" +check plugin_test_3.err "two_file_test_2.o: adding new input file" +check plugin_test_3.err "cleanup hook called" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/plugin_test_4.sh b/binutils-2.25/gold/testsuite/plugin_test_4.sh new file mode 100755 index 00000000..89df46ca --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_4.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +# plugin_test_4.sh -- a test case for the plugin API. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with plugin_test_4.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_4.err "API version:" +check plugin_test_4.err "gold version:" +check plugin_test_4.err "option: _Z4f13iv" +check plugin_test_4.err "two_file_test_main.o: claim file hook called" +check plugin_test_4.err "plugin_test_4.a: claim file hook called" +check plugin_test_4.err "plugin_test_4.a: claiming file" +check plugin_test_4.err "plugin_test_4.a: _Z4f13iv: PREVAILING_DEF_IRONLY" +check plugin_test_4.err "plugin_test_4.a: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_4.err "plugin_test_4.a: v2: RESOLVED_IR" +check plugin_test_4.err "plugin_test_4.a: t17data: RESOLVED_IR" +check plugin_test_4.err "plugin_test_4.a: _Z4f13iv: PREEMPTED_IR" +check plugin_test_4.err "two_file_test_1.o: adding new input file" +check plugin_test_4.err "two_file_test_1b.o: adding new input file" +check plugin_test_4.err "two_file_test_2.o: adding new input file" +check plugin_test_4.err "cleanup hook called" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/plugin_test_6.sh b/binutils-2.25/gold/testsuite/plugin_test_6.sh new file mode 100755 index 00000000..9b368e78 --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_6.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +# plugin_test_6.sh -- a test case for the plugin API. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with plugin_test_6.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_6.err "API version:" +check plugin_test_6.err "gold version:" +check plugin_test_6.err "plugin_common_test_1.syms: claim file hook called" +check plugin_test_6.err "plugin_common_test_2.syms: claim file hook called" +check plugin_test_6.err "plugin_common_test_1.syms: c1: PREVAILING_DEF_IRONLY" +check plugin_test_6.err "plugin_common_test_1.syms: c2: PREVAILING_DEF_IRONLY" +check plugin_test_6.err "plugin_common_test_1.syms: c3: RESOLVED_IR" +check plugin_test_6.err "plugin_common_test_1.syms: c4: RESOLVED_IR" +check plugin_test_6.err "plugin_common_test_1.syms: c5: PREVAILING_DEF_IRONLY" +check plugin_test_6.err "plugin_common_test_2.syms: c1: RESOLVED_IR" +check plugin_test_6.err "plugin_common_test_2.syms: c2: RESOLVED_IR" +check plugin_test_6.err "plugin_common_test_2.syms: c3: PREVAILING_DEF_IRONLY" +check plugin_test_6.err "plugin_common_test_2.syms: c4: PREVAILING_DEF_IRONLY" +check plugin_test_6.err "plugin_common_test_2.syms: c5: RESOLVED_IR" +check plugin_test_6.err "cleanup hook called" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/plugin_test_7.sh b/binutils-2.25/gold/testsuite/plugin_test_7.sh new file mode 100755 index 00000000..27723f9c --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_7.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +# plugin_test_7.sh -- a test case for the plugin API with GC. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Rafael Avila de Espindola . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_not() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + + +check plugin_test_7.err "set_x: PREVAILING_DEF_IRONLY" +check plugin_test_7.err "fun2: RESOLVED_EXEC" +check plugin_test_7.err "fun1: PREVAILING_DEF_REG" +check plugin_test_7.err "removing unused section from '.text.fun2' in file 'plugin_test_7_2.o'" +check_not plugin_test_7.syms "fun2" diff --git a/binutils-2.25/gold/testsuite/plugin_test_7_1.c b/binutils-2.25/gold/testsuite/plugin_test_7_1.c new file mode 100644 index 00000000..5f4c4f34 --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_7_1.c @@ -0,0 +1,43 @@ +/* plugin_test_7_1.c -- a test case for the plugin API with GC. + + Copyright 2010 Free Software Foundation, Inc. + Written by Rafael Avila de Espindola . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +int fun1(void); +int fun2(void); +void set_x(int y); + +#ifndef LTO +static int x = 0; + +void set_x(int y) +{ + x = y; +} +#endif + +int fun1(void) +{ +#ifndef LTO + if (x) + return fun2(); +#endif + return 0; +} diff --git a/binutils-2.25/gold/testsuite/plugin_test_7_2.c b/binutils-2.25/gold/testsuite/plugin_test_7_2.c new file mode 100644 index 00000000..06b7676b --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_7_2.c @@ -0,0 +1,33 @@ +/* plugin_test_7_1.c -- a test case for the plugin API with GC. + + Copyright 2010 Free Software Foundation, Inc. + Written by Rafael Avila de Espindola . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +int fun1(void); +void fun2(void); + +void fun2(void) +{ +} + +int main(void) +{ + return fun1(); +} diff --git a/binutils-2.25/gold/testsuite/plugin_test_tls.sh b/binutils-2.25/gold/testsuite/plugin_test_tls.sh new file mode 100755 index 00000000..22b5458c --- /dev/null +++ b/binutils-2.25/gold/testsuite/plugin_test_tls.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +# plugin_test_tls.sh -- a test case for the plugin API. + +# Copyright 2013 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with plugin_test.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_tls.err "API version:" +check plugin_test_tls.err "gold version:" +check plugin_test_tls.err "option: _Z4f13iv" +check plugin_test_tls.err "two_file_test_tls.o: claim file hook called" +check plugin_test_tls.err "two_file_test_1.syms: claim file hook called" +check plugin_test_tls.err "two_file_test_1b.syms: claim file hook called" +check plugin_test_tls.err "two_file_test_2_tls.syms: claim file hook called" +check plugin_test_tls.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_IRONLY" +check plugin_test_tls.err "two_file_test_1.syms: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_tls.err "two_file_test_1.syms: v2: RESOLVED_IR" +check plugin_test_tls.err "two_file_test_1.syms: t17data: RESOLVED_IR" +check plugin_test_tls.err "two_file_test_2_tls.syms: _Z4f13iv: PREEMPTED_IR" +check plugin_test_tls.err "two_file_test_2_tls.syms: tls1: PREVAILING_DEF_REG" +check plugin_test_tls.err "two_file_test_1.o: adding new input file" +check plugin_test_tls.err "two_file_test_1b.o: adding new input file" +check plugin_test_tls.err "two_file_test_2_tls.o: adding new input file" +check plugin_test_tls.err "cleanup hook called" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/pr12826.sh b/binutils-2.25/gold/testsuite/pr12826.sh new file mode 100755 index 00000000..a4fa2e3a --- /dev/null +++ b/binutils-2.25/gold/testsuite/pr12826.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# pr12826.sh -- a test case for combining ARM arch attributes. + +# Copyright 2011 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with pr12826_1.s and pr12826_2.s, two ARM assembly source +# files constructed to test handling of arch attributes. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find attribute in $1:" + echo " $2" + echo "" + echo "Actual attribute below:" + cat "$1" + exit 1 + fi +} + +# Check that arch is armv7e-m. +check pr12826.stdout "Tag_CPU_arch: v7E-M" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/pr12826_1.s b/binutils-2.25/gold/testsuite/pr12826_1.s new file mode 100644 index 00000000..b4f68418 --- /dev/null +++ b/binutils-2.25/gold/testsuite/pr12826_1.s @@ -0,0 +1,13 @@ + .syntax unified + .arch armv7e-m + .thumb + .text + .align 2 + .global f1 + .thumb + .thumb_func + .type f1, %function +f1: + movs r0, #0 + bx lr + .size f1, .-f1 diff --git a/binutils-2.25/gold/testsuite/pr12826_2.s b/binutils-2.25/gold/testsuite/pr12826_2.s new file mode 100644 index 00000000..2dd7dc99 --- /dev/null +++ b/binutils-2.25/gold/testsuite/pr12826_2.s @@ -0,0 +1,13 @@ + .syntax unified + .arch armv7e-m + .thumb + .text + .align 2 + .global f2 + .thumb + .thumb_func + .type f2, %function +f2: + movs r0, #0 + bx lr + .size f2, .-f2 diff --git a/binutils-2.25/gold/testsuite/pr14265.c b/binutils-2.25/gold/testsuite/pr14265.c new file mode 100644 index 00000000..6bb8f9aa --- /dev/null +++ b/binutils-2.25/gold/testsuite/pr14265.c @@ -0,0 +1,20 @@ +int foo0 __attribute__((used,section(".foo0.0"))); +int foo1 __attribute__((used,section(".foo1.0"))); +int foo2 __attribute__((used,section(".foo2.0"))); + +extern unsigned long __foo0_start; +extern unsigned long __foo0_end; + +extern unsigned long __foo1_start; +extern unsigned long __foo1_end; + +extern unsigned long __foo2_start; +extern unsigned long __foo2_end; + +int +main (void) +{ + return ((__foo0_end - __foo0_start) - + (__foo1_end - __foo1_start) - + (__foo2_end - __foo2_start)); +} diff --git a/binutils-2.25/gold/testsuite/pr14265.sh b/binutils-2.25/gold/testsuite/pr14265.sh new file mode 100755 index 00000000..4e477b22 --- /dev/null +++ b/binutils-2.25/gold/testsuite/pr14265.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +# pr14265.sh -- test --gc-sections with KEEP + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Nick Clifton + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Garbage collection failed to KEEP :" + echo " $2" + exit 1 + fi +} + +check pr14265.stdout "foo1_start" +check pr14265.stdout "foo1_end" +check pr14265.stdout "foo2_start" +check pr14265.stdout "foo2_end" + diff --git a/binutils-2.25/gold/testsuite/pr14265.t b/binutils-2.25/gold/testsuite/pr14265.t new file mode 100644 index 00000000..e6d163af --- /dev/null +++ b/binutils-2.25/gold/testsuite/pr14265.t @@ -0,0 +1,25 @@ +SECTIONS +{ + .text : { *(.text) } + + __foo0_start = .; + .foo0 : { *(.foo0.*) } + __foo0_end = .; + + __foo1_start = .; + .foo1 : { KEEP(*(.foo1.*)) } + __foo1_end = .; + + .foo2 : { + __foo2_start = .; + KEEP(*(.foo2.*)) + __foo2_end = .; + } + + .got : { *(.got .toc) } +} + + +ASSERT (__foo1_start < __foo1_end, "foo1 not KEPT"); +ASSERT ((__foo1_end - __foo1_start) == (__foo2_end - __foo2_start),"foo2 not KEPT"); + diff --git a/binutils-2.25/gold/testsuite/protected_1.cc b/binutils-2.25/gold/testsuite/protected_1.cc new file mode 100644 index 00000000..049bda74 --- /dev/null +++ b/binutils-2.25/gold/testsuite/protected_1.cc @@ -0,0 +1,58 @@ +// protected_1.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The function f1 is protected, which means that other callers in the +// same shared library will call this version. + +int +f1() __attribute__ ((__visibility__ ("protected"))); + +int +f1() +{ + return 1; +} + +// The function f2 is used to test that the executable can see the +// same function address for a protected function in the executable +// and in the shared library. We can't use the visibility attribute +// here, becaues that may cause gcc to generate a PC relative reloc; +// we need it to get the value from the GOT. I'm not sure this is +// really useful, given that it doesn't work with the visibility +// attribute. This test exists here mainly because the glibc +// testsuite has the same test, and we want to make sure that gold +// passes the glibc testsuite. + +extern "C" int f2(); +asm(".protected f2"); + +extern "C" int +f2() +{ + return 2; +} + +int +(*get_f2_addr())() +{ + return f2; +} diff --git a/binutils-2.25/gold/testsuite/protected_2.cc b/binutils-2.25/gold/testsuite/protected_2.cc new file mode 100644 index 00000000..19d8276e --- /dev/null +++ b/binutils-2.25/gold/testsuite/protected_2.cc @@ -0,0 +1,31 @@ +// protected_2.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This should call the protected version of f1. + +extern int f1(); + +bool +t1() +{ + return f1() == 1; +} diff --git a/binutils-2.25/gold/testsuite/protected_3.cc b/binutils-2.25/gold/testsuite/protected_3.cc new file mode 100644 index 00000000..8a27a2a6 --- /dev/null +++ b/binutils-2.25/gold/testsuite/protected_3.cc @@ -0,0 +1,33 @@ +// protected_2.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This will also call the protected version of f1. In some versions +// of the test this will be overridden by a version in the main +// program. + +extern int f1(); + +bool +t2() +{ + return f1() == 1; +} diff --git a/binutils-2.25/gold/testsuite/protected_4.cc b/binutils-2.25/gold/testsuite/protected_4.cc new file mode 100644 index 00000000..58e3e2b0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/protected_4.cc @@ -0,0 +1,32 @@ +// protected_4.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The function f1 is protected but not defined. + +int +f1() __attribute__ ((__visibility__ ("protected"))); + +int +f2() +{ + return f1(); +} diff --git a/binutils-2.25/gold/testsuite/protected_main_1.cc b/binutils-2.25/gold/testsuite/protected_main_1.cc new file mode 100644 index 00000000..271446f8 --- /dev/null +++ b/binutils-2.25/gold/testsuite/protected_main_1.cc @@ -0,0 +1,40 @@ +// protected_main_1.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include + +// This function in the shared library will call the protected version +// of f1 in the shared library. + +extern bool t1(); +extern bool t2(); + +extern "C" int f2(); +extern int (*get_f2_addr()) (); + +int +main() +{ + assert(t1()); + assert(t2()); + assert(&f2 == get_f2_addr()); +} diff --git a/binutils-2.25/gold/testsuite/protected_main_2.cc b/binutils-2.25/gold/testsuite/protected_main_2.cc new file mode 100644 index 00000000..69603227 --- /dev/null +++ b/binutils-2.25/gold/testsuite/protected_main_2.cc @@ -0,0 +1,29 @@ +// protected_main_2.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This version of f1 will not be called by the shared library code. + +int +f1() +{ + return 2; +} diff --git a/binutils-2.25/gold/testsuite/protected_main_3.cc b/binutils-2.25/gold/testsuite/protected_main_3.cc new file mode 100644 index 00000000..f356f3d2 --- /dev/null +++ b/binutils-2.25/gold/testsuite/protected_main_3.cc @@ -0,0 +1,31 @@ +// protected_main_3.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This should call the unprotected version of f1. + +extern int f1(); + +bool +t2() +{ + return f1() == 2; +} diff --git a/binutils-2.25/gold/testsuite/relro_script_test.t b/binutils-2.25/gold/testsuite/relro_script_test.t new file mode 100644 index 00000000..3a6e3e91 --- /dev/null +++ b/binutils-2.25/gold/testsuite/relro_script_test.t @@ -0,0 +1,54 @@ +/* relro_test.t -- relro script test for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* With luck this will work on all platforms. */ + +using_script = 1; + +SECTIONS +{ + . = SIZEOF_HEADERS; + + .text : { *(.text) } + + .eh_frame : ONLY_IF_RO { KEEP(*(.eh_frame)) } + + . = (ALIGN(CONSTANT(MAXPAGESIZE)) + - ((CONSTANT(MAXPAGESIZE) - .) & (CONSTANT(MAXPAGESIZE) - 1))); + . = DATA_SEGMENT_ALIGN(CONSTANT(MAXPAGESIZE), CONSTANT(COMMONPAGESIZE)); + + .eh_frame : ONLY_IF_RW { KEEP(*(.eh_frame)) } + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) + *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .got : { *(.got) } + + . = DATA_SEGMENT_RELRO_END(0, .); + + .got.plt : { *(.got.plt) } + + .data : { *(.data .data.* .gnu.linkonce.d.*) } + + . = DATA_SEGMENT_END (.); +} diff --git a/binutils-2.25/gold/testsuite/relro_test.cc b/binutils-2.25/gold/testsuite/relro_test.cc new file mode 100644 index 00000000..795ad391 --- /dev/null +++ b/binutils-2.25/gold/testsuite/relro_test.cc @@ -0,0 +1,160 @@ +// relro_test.cc -- test -z relro for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include +#include +#include +#include +#include +#include +#include + +// This tests we were linked with a script. If we were linked with a +// script, relro currently does not work. + +extern char using_script[] __attribute__ ((weak)); + +// This code is put into a shared library linked with -z relro. + +// i1 and i2 are not relro variables. +int i1 = 1; +static int i2 = 2; + +// P1 is a global relro variable. +int* const p1 __attribute__ ((aligned(64))) = &i1; + +// P2 is a local relro variable. +int* const p2 __attribute__ ((aligned(64))) = &i2; + +// Add a TLS variable to make sure -z relro works correctly with TLS. +__thread int i3 = 1; + +// Test symbol addresses. + +bool +t1() +{ + if (using_script) + return true; + + void* i1addr = static_cast(&i1); + void* i2addr = static_cast(&i2); + const void* p1addr = static_cast(&p1); + const void* p2addr = static_cast(&p2); + + // The relro variables should precede the non-relro variables in the + // memory image. + assert(i1addr > p1addr); + assert(i1addr > p2addr); + assert(i2addr > p1addr); + assert(i2addr > p2addr); + + // The relro variables should not be on the same page as the + // non-relro variables. + const size_t page_size = getpagesize(); + uintptr_t i1page = reinterpret_cast(i1addr) & ~ (page_size - 1); + uintptr_t i2page = reinterpret_cast(i2addr) & ~ (page_size - 1); + uintptr_t p1page = reinterpret_cast(p1addr) & ~ (page_size - 1); + uintptr_t p2page = reinterpret_cast(p2addr) & ~ (page_size - 1); + assert(i1page != p1page); + assert(i1page != p2page); + assert(i2page != p1page); + assert(i2page != p2page); + assert(i3 == 1); + + return true; +} + +// Tell terminate handler that we are throwing from a signal handler. + +static bool throwing; + +// A signal handler for SIGSEGV. + +extern "C" +void +sigsegv_handler(int) +{ + throwing = true; + throw 0; +} + +// The original terminate handler. + +std::terminate_handler orig_terminate; + +// Throwing an exception out of a signal handler doesn't always work +// reliably. When that happens the program will call terminate. We +// set a terminate handler to indicate that the test probably passed. + +void +terminate_handler() +{ + if (!throwing) + { + orig_terminate(); + ::exit(EXIT_FAILURE); + } + fprintf(stderr, + "relro_test: terminate called due to failure to throw through signal handler\n"); + fprintf(stderr, "relro_test: assuming test succeeded\n"); + ::exit(EXIT_SUCCESS); +} + +// Use a separate function to throw the exception, so that we don't +// need to use -fnon-call-exceptions. + +void f2() __attribute__ ((noinline)); +void +f2() +{ + int** pp1 = const_cast(&p1); + *pp1 = &i2; + + // We shouldn't get here--the assignment to *pp1 should write to + // memory which the dynamic linker marked as read-only, giving us a + // SIGSEGV, causing sigsegv_handler to be invoked, to throw past us. + assert(0); +} + +// Changing a relro variable should give us a SIGSEGV. + +bool +t2() +{ + if (using_script) + return true; + + signal(SIGSEGV, sigsegv_handler); + orig_terminate = std::set_terminate(terminate_handler); + + try + { + f2(); + return false; + } + catch (int i) + { + assert(i == 0); + return true; + } +} diff --git a/binutils-2.25/gold/testsuite/relro_test.sh b/binutils-2.25/gold/testsuite/relro_test.sh new file mode 100755 index 00000000..47a94910 --- /dev/null +++ b/binutils-2.25/gold/testsuite/relro_test.sh @@ -0,0 +1,74 @@ +#!/bin/sh + +# relro_test.sh -- test -z relro + +# Copyright 2010, 2011 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This test checks that the PT_GNU_RELRO segment is properly +# aligned and is coincident with the beginning of the data segment. + + +# Cleans a hexadecimal number for input to dc. +clean_hex() +{ + echo "$1" | sed -e 's/0x//' -e 'y/abcdef/ABCDEF/' +} + +check() +{ + # Get the address and length of the PT_GNU_RELRO segment. + RELRO_START=`grep GNU_RELRO "$1" | awk '{ print $3; }'` + RELRO_LEN=`grep GNU_RELRO "$1" | awk '{ print $6; }'` + + if test -z "$RELRO_START" + then + echo "Did not find a PT_GNU_RELRO segment." + exit 1 + fi + + # Get the address and alignment of the PT_LOAD segment whose address + # matches the PT_GNU_RELRO segment. + LOAD_ALIGN=`grep LOAD "$1" | awk -v A=$RELRO_START '$3 == A { print $NF; }'` + LOAD_LEN=`grep LOAD "$1" | awk -v A=$RELRO_START '$3 == A { print $6; }'` + + if test -z "$LOAD_LEN" + then + echo "Did not find a PT_LOAD segment matching the PT_GNU_RELRO segment." + exit 1 + fi + + # Compute the address of the end of the PT_GNU_RELRO segment, + # modulo the alignment of the PT_LOAD segment. + RELRO_START=`clean_hex "$RELRO_START"` + RELRO_LEN=`clean_hex "$RELRO_LEN"` + LOAD_ALIGN=`clean_hex "$LOAD_ALIGN"` + RELRO_END=`echo "16o 16i $RELRO_START $RELRO_LEN + p" | dc` + REM=`echo "16i $RELRO_END $LOAD_ALIGN % p" | dc` + + if test "$REM" -eq 0; then + : + else + echo "PT_GNU_RELRO segment does not end at page boundary." + exit 1 + fi +} + +check relro_test.stdout diff --git a/binutils-2.25/gold/testsuite/relro_test_main.cc b/binutils-2.25/gold/testsuite/relro_test_main.cc new file mode 100644 index 00000000..6f5ea2bb --- /dev/null +++ b/binutils-2.25/gold/testsuite/relro_test_main.cc @@ -0,0 +1,33 @@ +// relro_test_main.cc -- test -z relro for gold, main function + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include + +extern bool t1(); +extern bool t2(); + +int +main() +{ + assert(t1()); + assert(t2()); +} diff --git a/binutils-2.25/gold/testsuite/retain_symbols_file_test.sh b/binutils-2.25/gold/testsuite/retain_symbols_file_test.sh new file mode 100755 index 00000000..e0d3ffce --- /dev/null +++ b/binutils-2.25/gold/testsuite/retain_symbols_file_test.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +# retain_symbols_file_test.sh -- a test case for -retain-symbols-file + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Craig Silverstein . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The Makefile tries linking simple_test.o with -retain-symbols-file. +# It then runs nm over the results. We check that the output is right. + +check_present() +{ + if ! grep -q "$1" retain_symbols_file_test.stdout + then + echo "Did not find expected symbol $1 in retain_symbols_file_test.stdout" + exit 1 + fi +} + +check_absent() +{ + if grep -q "$1" retain_symbols_file_test.stdout + then + echo "Found unexpected symbol $1 in retain_symbols_file_test.stdout" + exit 1 + fi +} + +check_present 't1' +check_present 't16b::t16b()' +check_present 't20a::get()' +check_present 't18()' +check_absent 't10' +check_absent 't1()' +check_absent 't16b::t()' + +exit 0 diff --git a/binutils-2.25/gold/testsuite/script_test_1.cc b/binutils-2.25/gold/testsuite/script_test_1.cc new file mode 100644 index 00000000..1bdf770e --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_1.cc @@ -0,0 +1,47 @@ +// script_test_1.cc -- linker script test 1 for gold -*- C++ -*- + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// A test for a linker script which sets symbols to values. + +#include +#include +#include + +extern char a, b, c, d, e, f, g; +int sym = 3; +int common_sym; + +int +main(int, char**) +{ + assert(reinterpret_cast(&a) == 123); + assert(reinterpret_cast(&b) == reinterpret_cast(&a) * 2); + assert(reinterpret_cast(&c) + == reinterpret_cast(&b) + 3 * 6); + assert(reinterpret_cast(&d) + == (reinterpret_cast(&b) + 3) * 6); + assert(reinterpret_cast(&e) == &sym); + assert(reinterpret_cast(&f) + == reinterpret_cast(&sym) + 10); + assert(reinterpret_cast(&g) == &common_sym); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/script_test_1.t b/binutils-2.25/gold/testsuite/script_test_1.t new file mode 100644 index 00000000..af971c66 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_1.t @@ -0,0 +1,29 @@ +/* script_test_1.t -- linker script test 1 for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +a = 123; +b = a * 2; +c = b + 3 * 6; +d = (b + 3) * 6; +e = sym; +f = sym + 10; +g = common_sym; diff --git a/binutils-2.25/gold/testsuite/script_test_10.s b/binutils-2.25/gold/testsuite/script_test_10.s new file mode 100644 index 00000000..5f3e30f9 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_10.s @@ -0,0 +1,14 @@ + .section .sec0, "a" + .word 0 + + .section .sec2, "a" + .word 0x22 + + .section .sec1, "a" + .word 0x11 + + .section .secz, "a" + + .section .sec3, "a" + .word 0x44 + diff --git a/binutils-2.25/gold/testsuite/script_test_10.sh b/binutils-2.25/gold/testsuite/script_test_10.sh new file mode 100755 index 00000000..58446ab5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_10.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +# script_test_10.sh -- test for the section order. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Viktor Kutuzov . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected section in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check script_test_10.stdout ".*\[ 1\] .text" +check script_test_10.stdout ".*\[ 2\] .sec0" +check script_test_10.stdout ".*\[ 3\] .sec1" +check script_test_10.stdout ".*\[ 4\] .sec2" +check script_test_10.stdout ".*\[ 5\] .secz" +check script_test_10.stdout ".*\[ 6\] .sec3" +check script_test_10.stdout ".*\[ 7\] .data" +check script_test_10.stdout ".* .bss" + diff --git a/binutils-2.25/gold/testsuite/script_test_10.t b/binutils-2.25/gold/testsuite/script_test_10.t new file mode 100644 index 00000000..98f2107a --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_10.t @@ -0,0 +1,34 @@ +/* script_test_10.t -- test section order for gold. + + Copyright 2010 Free Software Foundation, Inc. + Written by Viktor Kutuzov . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +SECTIONS +{ + .text : { *(.text) } + .sec0 : { *(.sec0) } + .sec1 : { *(.sec1) } + .sec2 : { *(.sec2) } + .secz : { *(.secz) } + .sec3 : { *(.sec3) } + .data : { *(.data) } + .bss : { *(.bss) } +} + diff --git a/binutils-2.25/gold/testsuite/script_test_11.c b/binutils-2.25/gold/testsuite/script_test_11.c new file mode 100644 index 00000000..d932813c --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_11.c @@ -0,0 +1,16 @@ +static unsigned int buffer1[256] __attribute((used)); +static unsigned int buffer2[256] __attribute((used)) = { 1 }; + +unsigned int foo __attribute__((section(".foo"))); +extern char __foo_start; +extern char __foo_end; + +int +main (void) +{ + if (&__foo_end - &__foo_start != sizeof(foo)) + return 1; + if (&__foo_start != (char *)&foo) + return 2; + return 0; +} diff --git a/binutils-2.25/gold/testsuite/script_test_11.t b/binutils-2.25/gold/testsuite/script_test_11.t new file mode 100644 index 00000000..0ec6bcde --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_11.t @@ -0,0 +1,8 @@ +SECTIONS +{ + .foo : { + __foo_start = .; + KEEP(*(.foo)) + __foo_end = .; + } +} diff --git a/binutils-2.25/gold/testsuite/script_test_2.cc b/binutils-2.25/gold/testsuite/script_test_2.cc new file mode 100644 index 00000000..71045516 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_2.cc @@ -0,0 +1,74 @@ +// script_test_2.cc -- linker script test 2 for gold -*- C++ -*- + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// A test of some uses of the SECTIONS clause. Look at +// script_test_2.t to make sense of this test. + +#include +#include +#include +#include + +extern char start_test_area[]; +extern char start_test_area_1[]; +extern char start_data[]; +extern char end_data[]; +extern char start_fill[]; +extern char end_fill[]; +extern char end_test_area[]; +extern char test_addr[]; +extern char test_addr_alias[]; + +int +main(int, char**) +{ + assert(reinterpret_cast(start_test_area) == 0x20000001); + assert(reinterpret_cast(start_test_area_1) == 0x20000010); + + // We should see the string from script_test_2b.o next. The + // subalign should move it up to 0x20000020. + for (int i = 0; i < 16; ++i) + assert(start_test_area_1[i] == 0); + assert(strcmp(start_test_area_1 + 16, "test bb") == 0); + + // Next the string from script_test_2a.o, after the subalign. + for (int i = 16 + 7; i < 48; ++i) + assert(start_test_area_1[i] == 0); + assert(strcmp(start_test_area_1 + 48, "test aa") == 0); + + // Move four bytes forward to start_data. + assert(reinterpret_cast(start_test_area_1 + 48 + 8 + 4) + == reinterpret_cast(start_data)); + assert(memcmp(start_data, "\1\2\0\4\0\0\0\010\0\0\0\0\0\0\0", 15) == 0 + || memcmp(start_data, "\1\0\2\0\0\0\4\0\0\0\0\0\0\0\010", 15) == 0); + assert(end_data == start_data + 15); + + // Check that FILL works as expected. + assert(start_fill == end_data); + assert(memcmp(start_fill, "\x12\x34\x56\x78\x12\x34\x56\0", 8) == 0); + assert(end_fill == start_fill + 8); + + assert(end_test_area == end_fill); + + assert(test_addr == start_test_area_1); + assert(test_addr_alias == test_addr); +} diff --git a/binutils-2.25/gold/testsuite/script_test_2.t b/binutils-2.25/gold/testsuite/script_test_2.t new file mode 100644 index 00000000..81ed9aad --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_2.t @@ -0,0 +1,69 @@ +/* script_test_2.t -- linker script test 2 for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +test_addr_alias = test_addr; + +SECTIONS +{ + /* With luck this will work everywhere. */ + . = 0x10000000; + + /* With luck this will be enough to get the program working. */ + .text : { *(.text) } + . += 0x100000; + . = ALIGN(0x100); + .data : { *(.data) } + .got : { *(.got .toc) } + .bss : { *(.bss) } + + /* Now the real test. */ + . = 0x20000001; + start_test_area = .; + .gold_test ALIGN(16) : SUBALIGN(32) { + start_test_area_1 = .; + + /* No sections should wind up here, because of the EXCLUDE_FILE. */ + *( EXCLUDE_FILE(script_test*) .gold_test) + + /* This should match only script_test_2b.o. */ + script_test_2b.o(.gold_test) + + /* This should match the remaining sections. */ + *(.gold_test) + + . = 60; + start_data = .; + BYTE(1) + SHORT(2) + LONG(4) + QUAD(8) + end_data = .; + + start_fill = .; + FILL(0x12345678); + . = . + 7; + BYTE(0) + end_fill = .; + } + end_test_area = .; + test_addr = ADDR(.gold_test); +} diff --git a/binutils-2.25/gold/testsuite/script_test_2a.cc b/binutils-2.25/gold/testsuite/script_test_2a.cc new file mode 100644 index 00000000..6c665eb7 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_2a.cc @@ -0,0 +1,24 @@ +// script_test_2a.cc -- linker script test 2, file 1 -*- C++ -*- + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +char script_test_string_a[] __attribute__ ((section(".gold_test"))) = + "test aa"; diff --git a/binutils-2.25/gold/testsuite/script_test_2b.cc b/binutils-2.25/gold/testsuite/script_test_2b.cc new file mode 100644 index 00000000..9b19eb02 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_2b.cc @@ -0,0 +1,24 @@ +// script_test_2a.cc -- linker script test 2, file 2 -*- C++ -*- + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +char script_test_string_b[] __attribute__ ((section(".gold_test"))) = + "test bb"; diff --git a/binutils-2.25/gold/testsuite/script_test_3.sh b/binutils-2.25/gold/testsuite/script_test_3.sh new file mode 100755 index 00000000..d114edd1 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_3.sh @@ -0,0 +1,102 @@ +#!/bin/sh + +# script_test_3.sh -- test PHDRS + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with script_test_3.t, which is a linker script which +# uses a PHDRS clause. We run objdump -p on a program linked with +# that linker script. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected segment in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_count() +{ + if test "`grep -c "$2" "$1"`" != "$3" + then + echo "Did not find expected segment in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_count script_test_3.stdout "^ INTERP" 1 +check_count script_test_3.stdout "^ LOAD" 3 +check_count script_test_3.stdout "^ DYNAMIC" 1 + +# Make sure that the size of the INTERP segment is the same as the +# size of the .interp section. +section=`fgrep .interp script_test_3.stdout | grep PROGBITS` +if test "$section" = ""; then + echo "Did not find .interp section" + echo "" + echo "Actual output below:" + cat script_test_3.stdout + exit 1 +fi +# Remove the brackets around the section number, since they can give +# an unpredictable number of fields. +section=`echo "$section" | sed -e 's/[][]*//g'` +section_size=`echo "$section" | awk '{ print $6; }'` + +segment=`grep '^ INTERP' script_test_3.stdout` +# We already checked above that we have an INTERP segment. +segment_size=`echo "$segment" | awk '{ print $5; }'` + +# Now $section_size looks like 000013 and $segment_size looks like +# 0x00013. Both numbers are in hex. +section_size=`echo "$section_size" | sed -e 's/^0*//'` +segment_size=`echo "$segment_size" | sed -e 's/^0x//' -e 's/^0*//'` + +if test "$section_size" != "$segment_size"; then + echo ".interp size $section_size != PT_INTERP size $segment_size" + exit 1 +fi + +# At least one PT_LOAD segment should have an alignment >= 0x100000. +found=no +for a in `grep LOAD script_test_3.stdout | sed -e 's/^.* 0x/0x/'`; do + script="BEGIN { if ($a >= 0x100000) { print \"true\" } else { print \"false\" } }" + x=`awk "$script" < /dev/null` + if test "$x" = "true"; then + found=yes + fi +done +if test "$found" = "no"; then + echo "no LOAD segment has required alignment" + exit 1 +fi + +exit 0 diff --git a/binutils-2.25/gold/testsuite/script_test_3.t b/binutils-2.25/gold/testsuite/script_test_3.t new file mode 100644 index 00000000..accd0559 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_3.t @@ -0,0 +1,55 @@ +/* script_test_3.t -- linker script test 3 for gold + + Copyright 2008, 2010 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +SECTIONS +{ + /* With luck this will work everywhere. */ + . = 0x10000000; + + /* With luck this will be enough to get the program working. */ + .interp : { *(.interp) } :text :interp + .text : { *(.text) } :text + /* Required by the ARM target. */ + .ARM.extab : { *(.ARM.extab*) } + .ARM.exidx : { *(.ARM.exidx*) } + . += 0x100000; + . = ALIGN(0x100); + .dynamic : { *(.dynamic) } :data :dynamic + .data : { *(.data) } :data + .got : { *(.got .toc) } + .got.plt : { *(.got.plt) } + .tdata : { *(.tdata*) } :data :tls + .tbss : { *(.tbss*) } :data :tls + . += 0x100000; + . = ALIGN(0x100000); + .bss : { *(.bss) } :bss +} + +PHDRS +{ + text PT_LOAD FILEHDR PHDRS FLAGS(5); + interp PT_INTERP; + dynamic PT_DYNAMIC FLAGS(4); + data PT_LOAD; + bss PT_LOAD; + tls PT_TLS; +} diff --git a/binutils-2.25/gold/testsuite/script_test_4.sh b/binutils-2.25/gold/testsuite/script_test_4.sh new file mode 100755 index 00000000..755d1a05 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_4.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# script_test_4.sh -- test load segment + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with script_test_4.t, which is a linker script which +# starts the program at an unaligned address. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected segment in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check script_test_4.stdout "\\.interp[ ]*PROGBITS[ ]*0*10000400" diff --git a/binutils-2.25/gold/testsuite/script_test_4.t b/binutils-2.25/gold/testsuite/script_test_4.t new file mode 100644 index 00000000..3ba5e938 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_4.t @@ -0,0 +1,45 @@ +/* script_test_4.t -- linker script test 4 for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* We won't try to run this program, just ensure that it links + as expected. */ + +SECTIONS +{ + . = 0x10000400; + + /* With luck this will be enough to get the program working. */ + .interp : { *(.interp) } + .text : { *(.text) } + /* Required by the ARM target. */ + .ARM.extab : { *(.ARM.extab*) } + .ARM.exidx : { *(.ARM.exidx*) } + . += 0x100000; + . = ALIGN(0x100); + .dynamic : { *(.dynamic) } + .data : { *(.data) } + .got : { *(.got .toc) } + .got.plt : { *(.got.plt) } + . += 0x100000; + . = ALIGN(0x100); + .bss : { *(.bss) } +} diff --git a/binutils-2.25/gold/testsuite/script_test_5.cc b/binutils-2.25/gold/testsuite/script_test_5.cc new file mode 100644 index 00000000..b5aec291 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_5.cc @@ -0,0 +1,45 @@ +// script_test_5.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This program checks that the default renaming of ".text.xxx" +// sections does not take place in the presence of a linker script +// with a SECTIONS clause. + +bool +t1() __attribute__ ((section (".text.foo"))); + +bool +t1() +{ + return 1; +} + +// Main function. Initialize variables and call test functions. + +int +main() +{ + if (t1()) + return 0; + else + return 1; +} diff --git a/binutils-2.25/gold/testsuite/script_test_5.sh b/binutils-2.25/gold/testsuite/script_test_5.sh new file mode 100755 index 00000000..76e2e317 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_5.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +# script_test_5.sh -- test linker script with uncovered sections + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with script_test_5.t, which is a linker script with +# a SECTIONS clause that does not explicitly mention one of the input +# sections in the test object file. We check to make sure that the +# correct output section is generated. + +check_count() +{ + if test "`grep -c "$2" "$1"`" != "$3" + then + echo "Did not find expected number ($3) of '$2' sections in $1" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_count script_test_5.stdout " .text " 1 +check_count script_test_5.stdout " .text.foo " 1 diff --git a/binutils-2.25/gold/testsuite/script_test_5.t b/binutils-2.25/gold/testsuite/script_test_5.t new file mode 100644 index 00000000..4a7d13f6 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_5.t @@ -0,0 +1,44 @@ +/* script_test_5.t -- linker script test 5 for gold + + Copyright 2009 Free Software Foundation, Inc. + Written by Cary Coutant . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* We won't try to run this program, just ensure that it links + as expected. */ + +SECTIONS +{ + . = 0x10000000; + + /* With luck this will be enough to get the program working. */ + .interp : { *(.interp) } + .text : { *(.text) } + /* Required by the ARM target. */ + .ARM.extab : { *(.ARM.extab*) } + .ARM.exidx : { *(.ARM.exidx*) } + . += 0x100000; + . = ALIGN(0x100); + .dynamic : { *(.dynamic) } + .data : { *(.data) } + .got : { *(.got .toc) } + . += 0x100000; + . = ALIGN(0x100); + .bss : { *(.bss) } +} diff --git a/binutils-2.25/gold/testsuite/script_test_6.sh b/binutils-2.25/gold/testsuite/script_test_6.sh new file mode 100755 index 00000000..bbc96d8d --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_6.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +# script_test_6.sh -- test for -Ttext, -Tdata and -Tbss with a script. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with script_test_4.t, which is a linker script which +# starts the program at an unaligned address. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected section in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check script_test_6.stdout "\\.text[ ]*PROGBITS[ ]*0*10001000" +check script_test_6.stdout "\\.data[ ]*PROGBITS[ ]*0*10200000" +check script_test_6.stdout "\\.bss[ ]*NOBITS[ ]*0*10400000" diff --git a/binutils-2.25/gold/testsuite/script_test_6.t b/binutils-2.25/gold/testsuite/script_test_6.t new file mode 100644 index 00000000..d3127e39 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_6.t @@ -0,0 +1,45 @@ +/* script_test_5.t -- linker script test 5 for gold + + Copyright 2009 Free Software Foundation, Inc. + Written by Cary Coutant . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* We won't try to run this program, just ensure that it links + as expected. */ + +SECTIONS +{ + . = 0x10000000; + + /* With luck this will be enough to get the program working. */ + .interp : { *(.interp) } + .text : { *(.text .text.*) } + .rodata : { *(.rodata .rodata.*) } + /* Required by the ARM target. */ + .ARM.extab : { *(.ARM.extab*) } + .ARM.exidx : { *(.ARM.exidx*) } + . += 0x100000; + . = ALIGN(0x100); + .dynamic : { *(.dynamic) } + .data : { *(.data) } + .got : { *(.got .toc) } + . += 0x100000; + . = ALIGN(0x100); + .bss : { *(.bss) } +} diff --git a/binutils-2.25/gold/testsuite/script_test_7.sh b/binutils-2.25/gold/testsuite/script_test_7.sh new file mode 100755 index 00000000..982a1c1a --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_7.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +# script_test_7.sh -- test for SEGMENT_START expressions. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with script_test_4.t, which is a linker script which +# starts the program at an unaligned address. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected section in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check script_test_7.stdout "\\.interp[ ]*PROGBITS[ ]*0*10000100" +check script_test_7.stdout "\\.data[ ]*PROGBITS[ ]*0*10200000" +check script_test_7.stdout "\\.bss[ ]*NOBITS[ ]*0*10400..." diff --git a/binutils-2.25/gold/testsuite/script_test_7.t b/binutils-2.25/gold/testsuite/script_test_7.t new file mode 100644 index 00000000..ab2bbeea --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_7.t @@ -0,0 +1,45 @@ +/* script_test_5.t -- linker script test 5 for gold + + Copyright 2009 Free Software Foundation, Inc. + Written by Cary Coutant . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* We won't try to run this program, just ensure that it links + as expected. */ + +SECTIONS +{ + . = SEGMENT_START(".text", 0x10000100); + + /* With luck this will be enough to get the program working. */ + .interp : { *(.interp) } + .text : { *(.text .text.*) } + .rodata : { *(.rodata .rodata.*) } + /* Required by the ARM target. */ + .ARM.extab : { *(.ARM.extab*) } + .ARM.exidx : { *(.ARM.exidx*) } + .dynamic : { *(.dynamic) } + + . = SEGMENT_START(".data", 0x10200000); + .data : { *(.data) } + .got : { *(.got .toc) } + + . = SEGMENT_START(".bss", 0x10400000); + .bss : { *(.bss) } +} diff --git a/binutils-2.25/gold/testsuite/script_test_8.sh b/binutils-2.25/gold/testsuite/script_test_8.sh new file mode 100755 index 00000000..83e8e725 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_8.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# script_test_8.sh -- test for SEGMENT_START expressions with +# -Ttext, -Tdata and -Tbss in a script. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with script_test_4.t, which is a linker script which +# starts the program at an unaligned address. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected section in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check script_test_8.stdout "\\.interp[ ]*PROGBITS[ ]*0*20001000" +check script_test_8.stdout "\\.data[ ]*PROGBITS[ ]*0*20200000" +check script_test_8.stdout "\\.bss[ ]*NOBITS[ ]*0*2040...." diff --git a/binutils-2.25/gold/testsuite/script_test_9.cc b/binutils-2.25/gold/testsuite/script_test_9.cc new file mode 100644 index 00000000..84f12f6e --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_9.cc @@ -0,0 +1,29 @@ +// script_test_9.cc -- a test case for gold + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Rafael Avila de Espindola . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This program checks that the default renaming of ".text.xxx" +// sections does not take place in the presence of a linker script +// with a SECTIONS clause. + +int main() { + return 0; +} diff --git a/binutils-2.25/gold/testsuite/script_test_9.sh b/binutils-2.25/gold/testsuite/script_test_9.sh new file mode 100755 index 00000000..9f9aba6f --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_9.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# script_test_9.sh -- Check that the script_test_9.t script has placed +# .init and .text in the same segment. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Rafael Avila de Espindola . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected section in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check script_test_9.stdout "LOAD .*R E " +check script_test_9.stdout "LOAD .*RW " +check script_test_9.stdout "00 .*\.text .init" +check script_test_9.stdout "01 .*\.data " diff --git a/binutils-2.25/gold/testsuite/script_test_9.t b/binutils-2.25/gold/testsuite/script_test_9.t new file mode 100644 index 00000000..e7138b27 --- /dev/null +++ b/binutils-2.25/gold/testsuite/script_test_9.t @@ -0,0 +1,28 @@ +PHDRS +{ + text PT_LOAD FLAGS(5); + data PT_LOAD FLAGS(6); + tls PT_TLS; +} + +SECTIONS +{ + .init : + { + } :text + .text : + { + } + .data : + { + } :data + .got : { *(.got .toc) } + .tdata : + { + *(.tdata*) + } :data :tls + .tbss : + { + *(.tbss*) + } :data :tls +} diff --git a/binutils-2.25/gold/testsuite/searched_file_test.cc b/binutils-2.25/gold/testsuite/searched_file_test.cc new file mode 100644 index 00000000..aa99e242 --- /dev/null +++ b/binutils-2.25/gold/testsuite/searched_file_test.cc @@ -0,0 +1,36 @@ +// searched_file_test.cc -- test -l:foo.a for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Chris Demetriou . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The Linux kernel builds an object file using a linker script, and +// then links against that object file using the -R option. This is a +// test for that usage. + +#include + +extern int zero_from_lib; + +int +main(int, char**) +{ + exit(zero_from_lib); +} + diff --git a/binutils-2.25/gold/testsuite/searched_file_test_lib.cc b/binutils-2.25/gold/testsuite/searched_file_test_lib.cc new file mode 100644 index 00000000..0686e520 --- /dev/null +++ b/binutils-2.25/gold/testsuite/searched_file_test_lib.cc @@ -0,0 +1,27 @@ +// searched_file_test_lib.cc -- test -l:foo.a for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Chris Demetriou . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The Linux kernel builds an object file using a linker script, and +// then links against that object file using the -R option. This is a +// test for that usage. + +int zero_from_lib = 0; diff --git a/binutils-2.25/gold/testsuite/section_sorting_name.cc b/binutils-2.25/gold/testsuite/section_sorting_name.cc new file mode 100644 index 00000000..e89c1ed3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/section_sorting_name.cc @@ -0,0 +1,59 @@ +// section_sorting_name.cc -- a test case for gold + +// Copyright 2013 Free Software Foundation, Inc. +// Written by Alexander Ivchenko . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify that when using --sort-section=name +// option all .text, .data and .bss sections are sorted by name + +extern "C" +__attribute__ ((section(".text.hot0001"))) +int hot_foo_0001() +{ + return 1; +} + +int vdata_0003 __attribute__((section(".data.0003"))) = 3; +int vbss_0003 __attribute__((section(".bss.0003"))) = 0; + +extern "C" +__attribute__ ((section(".text.hot0003"))) +int hot_foo_0003() +{ + return 1; +} + +int vdata_0001 __attribute__((section(".data.0001"))) = 1; +int vbss_0001 __attribute__((section(".bss.0001"))) = 0; + +extern "C" +__attribute__ ((section(".text.hot0002"))) +int hot_foo_0002() +{ + return 1; +} + +int vdata_0002 __attribute__((section(".data.0002"))) = 2; +int vbss_0002 __attribute__((section(".bss.0002"))) = 0; + +int main() +{ + return 1; +} diff --git a/binutils-2.25/gold/testsuite/section_sorting_name.sh b/binutils-2.25/gold/testsuite/section_sorting_name.sh new file mode 100755 index 00000000..00b6994e --- /dev/null +++ b/binutils-2.25/gold/testsuite/section_sorting_name.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +# section_sorting_name.sh -- test + +# Copyright 2013 Free Software Foundation, Inc. +# Written by Alexander Ivchenko . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify that when using --sort-section=name +# option all .text, .data, and .bss sections are sorted by name + +set -e + +check() +{ + awk " +BEGIN { saw1 = 0; saw2 = 0; err = 0; } +/.*$2\$/ { saw1 = 1; } +/.*$3\$/ { + saw2 = 1; + if (!saw1) + { + printf \"layout of $2 and $3 is not right\\n\"; + err = 1; + exit 1; + } + } +END { + if (!saw1 && !err) + { + printf \"did not see $2\\n\"; + exit 1; + } + if (!saw2 && !err) + { + printf \"did not see $3\\n\"; + exit 1; + } + }" $1 +} + +# addr (hot_foo_0001) < addr (hot_foo_0002) < addr (hot_foo_0003) +check section_sorting_name.stdout "hot_foo_0001" "hot_foo_0002" +check section_sorting_name.stdout "hot_foo_0002" "hot_foo_0003" + +check section_sorting_name.stdout "vdata_0001" "vdata_0002" +check section_sorting_name.stdout "vdata_0002" "vdata_0003" + +check section_sorting_name.stdout "vbss_0001" "vbss_0002" +check section_sorting_name.stdout "vbss_0002" "vbss_0003" diff --git a/binutils-2.25/gold/testsuite/split_i386.sh b/binutils-2.25/gold/testsuite/split_i386.sh new file mode 100755 index 00000000..e94fea2b --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_i386.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +# split_i386.sh -- test -fstack-split for i386 + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +match() +{ + if ! egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "could not find '$1' in $2" + exit 1 + fi +} + +nomatch() +{ + if egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "found unexpected '$1' in $2" + exit 1 + fi +} + +match 'cmp.*+%gs:[^,]*,%esp' split_i386_1.stdout +match 'call.*__morestack>?$' split_i386_1.stdout +match 'lea.*-0x200\(%esp\),' split_i386_1.stdout + +match 'stc' split_i386_2.stdout +match 'call.*__morestack_non_split>?$' split_i386_2.stdout +nomatch 'call.*__morestack>?$' split_i386_2.stdout +match 'lea.*-0x4200\(%esp\),' split_i386_2.stdout + +match 'failed to match' split_i386_3.stdout + +match 'call.*__morestack>?$' split_i386_4.stdout + +match 'cannot mix' split_i386_r.stdout diff --git a/binutils-2.25/gold/testsuite/split_i386_1.s b/binutils-2.25/gold/testsuite/split_i386_1.s new file mode 100644 index 00000000..9ac816ea --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_i386_1.s @@ -0,0 +1,33 @@ +# split_i386_1.s: i386 specific test case for -fsplit-stack. + + .text + + .global fn1 + .type fn1,@function +fn1: + cmp %gs:0x30,%esp + jae 1f + call __morestack + ret +1: + call fn2 + ret + + .size fn1,. - fn1 + + .global fn2 + .type fn2,@function +fn2: + lea -0x200(%esp),%ecx + cmp %gs:0x30,%ecx + jae 1f + call __morestack + ret +1: + call fn1 + ret + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_i386_2.s b/binutils-2.25/gold/testsuite/split_i386_2.s new file mode 100644 index 00000000..b4a2f143 --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_i386_2.s @@ -0,0 +1,33 @@ +# split_i386_2.s: i386 specific, -fsplit-stack calling non-split + + .text + + .global fn1 + .type fn1,@function +fn1: + cmp %gs:0x30,%esp + jae 1f + call __morestack + ret +1: + call fn3 + ret + + .size fn1,. - fn1 + + .global fn2 + .type fn2,@function +fn2: + lea -0x200(%esp),%ecx + cmp %gs:0x30,%ecx + jae 1f + call __morestack + ret +1: + call fn3 + ret + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_i386_3.s b/binutils-2.25/gold/testsuite/split_i386_3.s new file mode 100644 index 00000000..fdde7a92 --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_i386_3.s @@ -0,0 +1,22 @@ +# split_i386_3.s: i386 specific, adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + push %ebp + mov %esp,%ebp + cmp %gs:0x30,%esp + jae 1f + call __morestack + ret +1: + call fn3 + leave + ret + + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_i386_4.s b/binutils-2.25/gold/testsuite/split_i386_4.s new file mode 100644 index 00000000..be774ae6 --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_i386_4.s @@ -0,0 +1,23 @@ +# split_i386_4.s: i386 specific, permitted adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + push %ebp + mov %esp,%ebp + cmp %gs:0x30,%esp + jae 1f + call __morestack + ret +1: + call fn3 + leave + ret + + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits + .section .note.GNU-no-split-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_i386_n.s b/binutils-2.25/gold/testsuite/split_i386_n.s new file mode 100644 index 00000000..4d4e6e88 --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_i386_n.s @@ -0,0 +1,12 @@ +# split_i386_n.s: i386 specific, -fsplit-stack calling non-split + + .text + + .global fn3 + .type fn3,@function +fn3: + ret + + .size fn3,. - fn3 + + .section .note.GNU-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_x86_64.sh b/binutils-2.25/gold/testsuite/split_x86_64.sh new file mode 100755 index 00000000..61544b29 --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_x86_64.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +# split_x86_64.sh -- test -fstack-split for x86_64 + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +match() +{ + if ! egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "could not find '$1' in $2" + exit 1 + fi +} + +nomatch() +{ + if egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "found unexpected '$1' in $2" + exit 1 + fi +} + +match 'cmp.*+%fs:[^,]*,%rsp' split_x86_64_1.stdout +match 'callq.*__morestack>?$' split_x86_64_1.stdout +match 'lea.*-0x200\(%rsp\),' split_x86_64_1.stdout + +match 'stc' split_x86_64_2.stdout +match 'callq.*__morestack_non_split>?$' split_x86_64_2.stdout +nomatch 'callq.*__morestack>?$' split_x86_64_2.stdout +match 'lea.*-0x4200\(%rsp\),' split_x86_64_2.stdout + +match 'failed to match' split_x86_64_3.stdout + +match 'callq.*__morestack>?$' split_x86_64_4.stdout + +match 'cannot mix' split_x86_64_r.stdout diff --git a/binutils-2.25/gold/testsuite/split_x86_64_1.s b/binutils-2.25/gold/testsuite/split_x86_64_1.s new file mode 100644 index 00000000..e23ea7fe --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_x86_64_1.s @@ -0,0 +1,33 @@ +# split_x86_64_1.s: x86_64 specific test case for -fsplit-stack. + + .text + + .global fn1 + .type fn1,@function +fn1: + cmp %fs:0x70,%rsp + jae 1f + callq __morestack + retq +1: + callq fn2 + retq + + .size fn1,. - fn1 + + .global fn2 + .type fn2,@function +fn2: + lea -0x200(%rsp),%r10 + cmp %fs:0x70,%r10 + jae 1f + callq __morestack + retq +1: + callq fn1 + retq + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_x86_64_2.s b/binutils-2.25/gold/testsuite/split_x86_64_2.s new file mode 100644 index 00000000..0559bbc0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_x86_64_2.s @@ -0,0 +1,33 @@ +# split_x86_64_2.s: x86_64 specific, -fsplit-stack calling non-split + + .text + + .global fn1 + .type fn1,@function +fn1: + cmp %fs:0x70,%rsp + jae 1f + callq __morestack + retq +1: + callq fn3 + retq + + .size fn1,. - fn1 + + .global fn2 + .type fn2,@function +fn2: + lea -0x200(%rsp),%r10 + cmp %fs:0x70,%r10 + jae 1f + callq __morestack + retq +1: + callq fn3 + retq + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_x86_64_3.s b/binutils-2.25/gold/testsuite/split_x86_64_3.s new file mode 100644 index 00000000..68ae6e35 --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_x86_64_3.s @@ -0,0 +1,22 @@ +# split_x86_64_3.s: x86_64 specific, adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + push %rbp + mov %rsp,%rbp + cmp %fs:0x70,%rsp + jae 1f + callq __morestack + retq +1: + callq fn3 + leaveq + retq + + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_x86_64_4.s b/binutils-2.25/gold/testsuite/split_x86_64_4.s new file mode 100644 index 00000000..653b917b --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_x86_64_4.s @@ -0,0 +1,23 @@ +# split_x86_64_4.s: x86_64 specific, permitted adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + push %rbp + mov %rsp,%rbp + cmp %fs:0x70,%rsp + jae 1f + callq __morestack + retq +1: + callq fn3 + leaveq + retq + + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits + .section .note.GNU-no-split-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/split_x86_64_n.s b/binutils-2.25/gold/testsuite/split_x86_64_n.s new file mode 100644 index 00000000..10436b15 --- /dev/null +++ b/binutils-2.25/gold/testsuite/split_x86_64_n.s @@ -0,0 +1,12 @@ +# split_x86_64_n.s: x86_64 specific, -fsplit-stack calling non-split + + .text + + .global fn3 + .type fn3,@function +fn3: + retq + + .size fn3,. - fn3 + + .section .note.GNU-stack,"",@progbits diff --git a/binutils-2.25/gold/testsuite/start_lib_test_1.c b/binutils-2.25/gold/testsuite/start_lib_test_1.c new file mode 100644 index 00000000..024276a9 --- /dev/null +++ b/binutils-2.25/gold/testsuite/start_lib_test_1.c @@ -0,0 +1,32 @@ +/* start_lib_test_1.c -- test --start-lib/--end-lib. + + Copyright 2010 Free Software Foundation, Inc. + Written by Cary Coutant + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of the --start-lib and --end-lib options. */ + +extern void t1 (void); +extern void t2 (void); + +void +t1 (void) +{ + t2 (); +} diff --git a/binutils-2.25/gold/testsuite/start_lib_test_2.c b/binutils-2.25/gold/testsuite/start_lib_test_2.c new file mode 100644 index 00000000..443a79cf --- /dev/null +++ b/binutils-2.25/gold/testsuite/start_lib_test_2.c @@ -0,0 +1,30 @@ +/* start_lib_test_2.c -- test --start-lib/--end-lib. + + Copyright 2010 Free Software Foundation, Inc. + Written by Cary Coutant + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of the --start-lib and --end-lib options. */ + +extern void t2 (void); + +void +t2 (void) +{ +} diff --git a/binutils-2.25/gold/testsuite/start_lib_test_3.c b/binutils-2.25/gold/testsuite/start_lib_test_3.c new file mode 100644 index 00000000..79b467b7 --- /dev/null +++ b/binutils-2.25/gold/testsuite/start_lib_test_3.c @@ -0,0 +1,25 @@ +/* start_lib_test_3.c -- test --start-lib/--end-lib. + + Copyright 2010 Free Software Foundation, Inc. + Written by Cary Coutant + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of the --start-lib and --end-lib options. */ + +static char t3[] __attribute__ ((used)) = "t3"; diff --git a/binutils-2.25/gold/testsuite/start_lib_test_main.c b/binutils-2.25/gold/testsuite/start_lib_test_main.c new file mode 100644 index 00000000..7809baa5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/start_lib_test_main.c @@ -0,0 +1,33 @@ +/* start_lib_test_main.c -- test --start-lib/--end-lib. + + Copyright 2010 Free Software Foundation, Inc. + Written by Cary Coutant + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of the --start-lib and --end-lib options. */ + +extern void t1 (void); + +int +main (int argc __attribute__ ((unused)), + char** argv __attribute__ ((unused))) +{ + t1 (); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/strong_ref_weak_def.sh b/binutils-2.25/gold/testsuite/strong_ref_weak_def.sh new file mode 100755 index 00000000..17afc5bd --- /dev/null +++ b/binutils-2.25/gold/testsuite/strong_ref_weak_def.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# strong_ref_weak_def.sh -- test non-weak reference to a weak symbol defined +# in a DSO. + +# Copyright 2010 Free Software Foundation, Inc. +# Written by Doug Kwan . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This checks that the reference to 'weak_def' have GLOBAL binding. + +check() +{ + file=$1 + pattern=$2 + found=`grep "$pattern" $file` + if test -z "$found"; then + echo "pattern \"$pattern\" not found in file $file." + echo $found + exit 1 + fi +} + +check strong_ref_weak_def.stdout ".* FUNC.* GLOBAL.* UND.* weak_def" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/strong_ref_weak_def_1.c b/binutils-2.25/gold/testsuite/strong_ref_weak_def_1.c new file mode 100644 index 00000000..bc00e770 --- /dev/null +++ b/binutils-2.25/gold/testsuite/strong_ref_weak_def_1.c @@ -0,0 +1,39 @@ +// strong_ref_weak_def_1.c -- test a strong reference to a weak definition +// in a DSO. + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Doug Kwan . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// We test that we correctly deal with a non-weak reference to +// a weak symbol in an DSO. We need to make sure that reference +// is not turned into a weak one. + +// This source is used to build an executable that references a weak +// symbol in a DSO. + +// Strong reference to a weak symbol. +extern void weak_def (void); + +int +main (void) +{ + weak_def (); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/strong_ref_weak_def_2.c b/binutils-2.25/gold/testsuite/strong_ref_weak_def_2.c new file mode 100644 index 00000000..4801f6d2 --- /dev/null +++ b/binutils-2.25/gold/testsuite/strong_ref_weak_def_2.c @@ -0,0 +1,37 @@ +// strong_ref_weak_def_2.c -- test a strong reference to a weak definition +// in a DSO. + +// Copyright 2010 Free Software Foundation, Inc. +// Written by Doug Kwan . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// We test that we correctly deal with a non-weak reference to +// a weak symbol in an DSO. We need to make sure that reference +// is not turned into a weak one. + +// This source is used to build a shared library that defines a +// weak symbol. + +void weak_def (void); + +void +__attribute__((weak)) +weak_def (void) +{ +} diff --git a/binutils-2.25/gold/testsuite/test.cc b/binutils-2.25/gold/testsuite/test.cc new file mode 100644 index 00000000..b08d6d77 --- /dev/null +++ b/binutils-2.25/gold/testsuite/test.cc @@ -0,0 +1,107 @@ +// test.cc -- simplistic test framework for gold. + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "gold.h" + +#include + +#include "test.h" + +namespace gold_testsuite +{ + +// Test_framework methods. + +// The current test being run. + +Test_report* Test_framework::current_report; + +// Run a test. + +void +Test_framework::run(const char *name, bool (*pfn)(Test_report*)) +{ + this->testname_ = name; + this->current_fail_ = false; + + Test_report tr(this); + Test_framework::current_report = &tr; + + if ((*pfn)(&tr) && !this->current_fail_) + { + printf("PASS: %s\n", name); + ++this->passes_; + } + else + { + printf("FAIL: %s\n", name); + ++this->failures_; + } + + Test_framework::current_report = NULL; + this->testname_ = NULL; +} + +// Report a failure. + +void +Test_framework::fail(const char* filename, int lineno) +{ + printf("FAIL: %s: %s: %d\n", this->testname_, filename, lineno); + this->current_fail_ = true; +} + +// Let a test report an error. + +void +Test_framework::error(const char* message) +{ + printf("ERROR: %s: %s\n", this->testname_, message); + this->current_fail_ = true; +} + +// Register_test methods. + +// Linked list of all registered tests. + +Register_test* Register_test::all_tests; + +// Register a test. + +Register_test::Register_test(const char* name, bool (*pfn)(Test_report*)) + : name_(name), pfn_(pfn), next_(Register_test::all_tests) +{ + Register_test::all_tests = this; +} + +// Run all registered tests. + +void +Register_test::run_tests(Test_framework* tf) +{ + for (Register_test* p = Register_test::all_tests; + p != NULL; + p = p->next_) + tf->run(p->name_, p->pfn_); +} + +} // End namespace gold_testsuite. diff --git a/binutils-2.25/gold/testsuite/test.h b/binutils-2.25/gold/testsuite/test.h new file mode 100644 index 00000000..37060d3a --- /dev/null +++ b/binutils-2.25/gold/testsuite/test.h @@ -0,0 +1,145 @@ +// test.h -- simplistic test framework for gold unittests -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#ifndef GOLD_TESTSUITE_TEST_H +#define GOLD_TESTSUITE_TEST_H + +namespace gold_testsuite +{ + +class Test_report; + +// This class handles basic test framework functionality. + +class Test_framework +{ + public: + Test_framework() + : testname_(NULL), current_fail_(0), passes_(0), failures_(0) + { } + + // Return number of failures. + unsigned int + failures() const + { return this->failures_; } + + // Run a test. + void + run(const char* name, bool (*pfn)(Test_report*)); + + // Get the current Test_report. This is used by the test support + // macros. + static Test_report* + report() + { return Test_framework::current_report; } + + private: + friend class Test_report; + + // Cause the current test to fail. + void + fail(const char* filename, int lineno); + + // Report an error from the current test. + void + error(const char* message); + + // Current Test_report. This is a static variable valid while a + // test is being run. + static Test_report* current_report; + + // Current test being run. + const char* testname_; + // Whether the current test is failing. + bool current_fail_; + // Total number of passeed tests. + unsigned int passes_; + // Total number of failed tests. + unsigned int failures_; +}; + +// An instance of this class is passed to each test function. + +class Test_report +{ +public: + Test_report(Test_framework* tf) + : tf_(tf) + { } + + // Mark the test as failing. + void + fail(const char* filename, int lineno) + { this->tf_->fail(filename, lineno); } + + // Report an error. + void + error(const char* message) + { this->tf_->error(message); } + +private: + Test_framework* tf_; +}; + +// This class registers a test function so that the testsuite runs it. + +class Register_test +{ + public: + Register_test(const char* name, bool (*pfn)(Test_report*)); + + // Run all registered tests. + static void + run_tests(Test_framework*); + + private: + // Linked list of all tests. + static Register_test* all_tests; + + // Test name. + const char* name_; + // Function to call. It should return true if the test passes, + // false if it fails. + bool (*pfn_)(Test_report*); + // Next test in linked list. + Register_test* next_; +}; + +} // End namespace gold_testsuite. + +// These macros are for convenient use in tests. + +// Check that a condition is true. If it is false, report a failure. + +#define CHECK(cond) \ + ((void) \ + ((cond) \ + ? 0 \ + : (::gold_testsuite::Test_framework::report()->fail(__FILE__, \ + __LINE__), \ + 0))) + +// Report an error during a test. + +#define ERROR(msg) (::gold_testsuite::Test_framework::report()->error(msg)) + +#endif // !defined(GOLD_TESTSUITE_TEST_H) diff --git a/binutils-2.25/gold/testsuite/testfile.cc b/binutils-2.25/gold/testsuite/testfile.cc new file mode 100644 index 00000000..f360e3d0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/testfile.cc @@ -0,0 +1,949 @@ +// testfile.cc -- Dummy ELF objects for testing purposes. + +// Copyright 2006, 2007, 2008, 2009, 2011, 2012 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "gold.h" + +#include "target.h" +#include "target-select.h" + +#include "test.h" +#include "testfile.h" + +namespace gold_testsuite +{ + +using namespace gold; + +// A Target used for testing purposes. + +template +class Target_test : public Sized_target +{ + public: + Target_test() + : Sized_target(&test_target_info) + { } + + void + gc_process_relocs(Symbol_table*, Layout*, + Sized_relobj_file*, + unsigned int, unsigned int, const unsigned char*, size_t, + Output_section*, bool, size_t, const unsigned char*) + { ERROR("call to Target_test::gc_process_relocs"); } + + void + scan_relocs(Symbol_table*, Layout*, Sized_relobj_file*, + unsigned int, unsigned int, const unsigned char*, size_t, + Output_section*, bool, size_t, const unsigned char*) + { ERROR("call to Target_test::scan_relocs"); } + + void + relocate_section(const Relocate_info*, unsigned int, + const unsigned char*, size_t, Output_section*, bool, + unsigned char*, typename elfcpp::Elf_types::Elf_Addr, + section_size_type, const Reloc_symbol_changes*) + { ERROR("call to Target_test::relocate_section"); } + + void + scan_relocatable_relocs(Symbol_table*, Layout*, + Sized_relobj_file*, unsigned int, + unsigned int, const unsigned char*, + size_t, Output_section*, bool, size_t, + const unsigned char*, Relocatable_relocs*) + { ERROR("call to Target_test::scan_relocatable_relocs"); } + + void + relocate_relocs(const Relocate_info*, + unsigned int, const unsigned char*, size_t, + Output_section*, typename elfcpp::Elf_types::Elf_Off, + const Relocatable_relocs*, unsigned char*, + typename elfcpp::Elf_types::Elf_Addr, + section_size_type, unsigned char*, + section_size_type) + { ERROR("call to Target_test::relocate_relocs"); } + + static const Target::Target_info test_target_info; +}; + +template +const Target::Target_info Target_test::test_target_info = +{ + size, // size + big_endian, // is_big_endian + static_cast(0xffff), // machine_code + false, // has_make_symbol + false, // has_resolve + false, // has_code_fill + false, // is_default_stack_executable + false, // can_icf_inline_merge_sections + '\0', // wrap_char + "/dummy", // dynamic_linker + 0x08000000, // default_text_segment_address + 0x1000, // abi_pagesize + 0x1000, // common_pagesize + false, // isolate_execinstr + 0, // rosegment_gap + elfcpp::SHN_UNDEF, // small_common_shndx + elfcpp::SHN_UNDEF, // large_common_shndx + 0, // small_common_section_flags + 0, // large_common_section_flags + NULL, // attributes_section + NULL, // attributes_vendor + "_start" // entry_symbol_name +}; + +// The test targets. + +#ifdef HAVE_TARGET_32_LITTLE +Target_test<32, false> target_test_32_little; +#endif + +#ifdef HAVE_TARGET_32_BIG +Target_test<32, true> target_test_32_big; +#endif + +#ifdef HAVE_TARGET_64_LITTLE +Target_test<64, false> target_test_64_little; +#endif + +#ifdef HAVE_TARGET_64_BIG +Target_test<64, true> target_test_64_big; +#endif + +// A pointer to the test targets. This is used in CHECKs. + +#ifdef HAVE_TARGET_32_LITTLE +Target* target_test_pointer_32_little = &target_test_32_little; +#endif + +#ifdef HAVE_TARGET_32_BIG +Target* target_test_pointer_32_big = &target_test_32_big; +#endif + +#ifdef HAVE_TARGET_64_LITTLE +Target* target_test_pointer_64_little = &target_test_64_little; +#endif + +#ifdef HAVE_TARGET_64_BIG +Target* target_test_pointer_64_big = &target_test_64_big; +#endif + +// Select the test targets. + +template +class Target_selector_test : public Target_selector +{ + public: + Target_selector_test() + : Target_selector(0xffff, size, big_endian, NULL, NULL) + { } + + virtual Target* + do_instantiate_target() + { + gold_unreachable(); + return NULL; + } + + virtual Target* + do_recognize(Input_file*, off_t, int, int, int) + { + if (size == 32) + { + if (!big_endian) + { +#ifdef HAVE_TARGET_32_LITTLE + return &target_test_32_little; +#endif + } + else + { +#ifdef HAVE_TARGET_32_BIG + return &target_test_32_big; +#endif + } + } + else + { + if (!big_endian) + { +#ifdef HAVE_TARGET_64_LITTLE + return &target_test_64_little; +#endif + } + else + { +#ifdef HAVE_TARGET_64_BIG + return &target_test_64_big; +#endif + } + } + + return NULL; + } + + virtual Target* + do_recognize_by_name(const char*) + { return NULL; } + + virtual void + do_supported_names(std::vector*) + { } +}; + +// Register the test target selectors. These don't need to be +// conditionally compiled, as they will return NULL if there is no +// support for them. + +Target_selector_test<32, false> target_selector_test_32_little; +Target_selector_test<32, true> target_selector_test_32_big; +Target_selector_test<64, false> target_selector_test_64_little; +Target_selector_test<64, true> target_selector_test_64_big; + +// A simple ELF object with one empty section, named ".test" and one +// globally visible symbol named "test". + +const unsigned char test_file_1_32_little[] = +{ + // Ehdr + // EI_MAG[0-3] + 0x7f, 'E', 'L', 'F', + // EI_CLASS: 32 bit. + 1, + // EI_DATA: little endian + 1, + // EI_VERSION + 1, + // EI_OSABI + 0, + // EI_ABIVERSION + 0, + // EI_PAD + 0, 0, 0, 0, 0, 0, 0, + // e_type: ET_REL + 1, 0, + // e_machine: a magic value used for testing. + 0xff, 0xff, + // e_version + 1, 0, 0, 0, + // e_entry + 0, 0, 0, 0, + // e_phoff + 0, 0, 0, 0, + // e_shoff: starts right after file header + 52, 0, 0, 0, + // e_flags + 0, 0, 0, 0, + // e_ehsize + 52, 0, + // e_phentsize + 32, 0, + // e_phnum + 0, 0, + // e_shentsize + 40, 0, + // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab + 5, 0, + // e_shstrndx + 4, 0, + + // Offset 52 + // Shdr 0: dummy entry + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 92 + // Shdr 1: .test + // sh_name: after initial null + 1, 0, 0, 0, + // sh_type: SHT_PROGBITS + 1, 0, 0, 0, + // sh_flags: SHF_ALLOC + 2, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + 252, 0, 0, 0, + // sh_size + 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, + + // Offset 132 + // Shdr 2: .symtab + // sh_name: 1 null byte + ".test\0" + 7, 0, 0, 0, + // sh_type: SHT_SYMTAB + 2, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + empty section + 252, 0, 0, 0, + // sh_size: two symbols: dummy symbol + test symbol + 32, 0, 0, 0, + // sh_link: to .strtab + 3, 0, 0, 0, + // sh_info: one local symbol, the dummy symbol + 1, 0, 0, 0, + // sh_addralign + 4, 0, 0, 0, + // sh_entsize: size of symbol + 16, 0, 0, 0, + + // Offset 172 + // Shdr 3: .strtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + 15, 0, 0, 0, + // sh_type: SHT_STRTAB + 3, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after .symtab section. 284 == 0x11c + 0x1c, 0x1, 0, 0, + // sh_size: 1 null byte + "test\0" + 6, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, + + // Offset 212 + // Shdr 4: .shstrtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0" + 23, 0, 0, 0, + // sh_type: SHT_STRTAB + 3, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after .strtab section. 290 == 0x122 + 0x22, 0x1, 0, 0, + // sh_size: all section names + 33, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, + + // Offset 252 + // Contents of .symtab section + // Symbol 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 268 + // Symbol 1 + // st_name + 1, 0, 0, 0, + // st_value + 0, 0, 0, 0, + // st_size + 0, 0, 0, 0, + // st_info: STT_NOTYPE, STB_GLOBAL + 0x10, + // st_other + 0, + // st_shndx: In .test + 1, 0, + + // Offset 284 + // Contents of .strtab section + '\0', + 't', 'e', 's', 't', '\0', + + // Offset 290 + // Contents of .shstrtab section + '\0', + '.', 't', 'e', 's', 't', '\0', + '.', 's', 'y', 'm', 't', 'a', 'b', '\0', + '.', 's', 't', 'r', 't', 'a', 'b', '\0', + '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0' +}; + +const unsigned int test_file_1_size_32_little = sizeof test_file_1_32_little; + +// 32-bit big-endian version of test_file_1_32_little. + +const unsigned char test_file_1_32_big[] = +{ + // Ehdr + // EI_MAG[0-3] + 0x7f, 'E', 'L', 'F', + // EI_CLASS: 32 bit. + 1, + // EI_DATA: big endian + 2, + // EI_VERSION + 1, + // EI_OSABI + 0, + // EI_ABIVERSION + 0, + // EI_PAD + 0, 0, 0, 0, 0, 0, 0, + // e_type: ET_REL + 0, 1, + // e_machine: a magic value used for testing. + 0xff, 0xff, + // e_version + 0, 0, 0, 1, + // e_entry + 0, 0, 0, 0, + // e_phoff + 0, 0, 0, 0, + // e_shoff: starts right after file header + 0, 0, 0, 52, + // e_flags + 0, 0, 0, 0, + // e_ehsize + 0, 52, + // e_phentsize + 0, 32, + // e_phnum + 0, 0, + // e_shentsize + 0, 40, + // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab + 0, 5, + // e_shstrndx + 0, 4, + + // Offset 52 + // Shdr 0: dummy entry + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 92 + // Shdr 1: .test + // sh_name: after initial null + 0, 0, 0, 1, + // sh_type: SHT_PROGBITS + 0, 0, 0, 1, + // sh_flags: SHF_ALLOC + 0, 0, 0, 2, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + 0, 0, 0, 252, + // sh_size + 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, + + // Offset 132 + // Shdr 2: .symtab + // sh_name: 1 null byte + ".test\0" + 0, 0, 0, 7, + // sh_type: SHT_SYMTAB + 0, 0, 0, 2, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + empty section + 0, 0, 0, 252, + // sh_size: two symbols: dummy symbol + test symbol + 0, 0, 0, 32, + // sh_link: to .strtab + 0, 0, 0, 3, + // sh_info: one local symbol, the dummy symbol + 0, 0, 0, 1, + // sh_addralign + 0, 0, 0, 4, + // sh_entsize: size of symbol + 0, 0, 0, 16, + + // Offset 172 + // Shdr 3: .strtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + 0, 0, 0, 15, + // sh_type: SHT_STRTAB + 0, 0, 0, 3, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after .symtab section. 284 == 0x11c + 0, 0, 0x1, 0x1c, + // sh_size: 1 null byte + "test\0" + 0, 0, 0, 6, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, + + // Offset 212 + // Shdr 4: .shstrtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0" + 0, 0, 0, 23, + // sh_type: SHT_STRTAB + 0, 0, 0, 3, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after .strtab section. 290 == 0x122 + 0, 0, 0x1, 0x22, + // sh_size: all section names + 0, 0, 0, 33, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, + + // Offset 252 + // Contents of .symtab section + // Symbol 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 268 + // Symbol 1 + // st_name + 0, 0, 0, 1, + // st_value + 0, 0, 0, 0, + // st_size + 0, 0, 0, 0, + // st_info: STT_NOTYPE, STB_GLOBAL + 0x10, + // st_other + 0, + // st_shndx: In .test + 0, 1, + + // Offset 284 + // Contents of .strtab section + '\0', + 't', 'e', 's', 't', '\0', + + // Offset 290 + // Contents of .shstrtab section + '\0', + '.', 't', 'e', 's', 't', '\0', + '.', 's', 'y', 'm', 't', 'a', 'b', '\0', + '.', 's', 't', 'r', 't', 'a', 'b', '\0', + '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0' +}; + +const unsigned int test_file_1_size_32_big = sizeof test_file_1_32_big; + +// 64-bit little-endian version of test_file_1_32_little. + +const unsigned char test_file_1_64_little[] = +{ + // Ehdr + // EI_MAG[0-3] + 0x7f, 'E', 'L', 'F', + // EI_CLASS: 64 bit. + 2, + // EI_DATA: little endian + 1, + // EI_VERSION + 1, + // EI_OSABI + 0, + // EI_ABIVERSION + 0, + // EI_PAD + 0, 0, 0, 0, 0, 0, 0, + // e_type: ET_REL + 1, 0, + // e_machine: a magic value used for testing. + 0xff, 0xff, + // e_version + 1, 0, 0, 0, + // e_entry + 0, 0, 0, 0, 0, 0, 0, 0, + // e_phoff + 0, 0, 0, 0, 0, 0, 0, 0, + // e_shoff: starts right after file header + 64, 0, 0, 0, 0, 0, 0, 0, + // e_flags + 0, 0, 0, 0, + // e_ehsize + 64, 0, + // e_phentsize + 56, 0, + // e_phnum + 0, 0, + // e_shentsize + 64, 0, + // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab + 5, 0, + // e_shstrndx + 4, 0, + + // Offset 64 + // Shdr 0: dummy entry + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 128 + // Shdr 1: .test + // sh_name: after initial null + 1, 0, 0, 0, + // sh_type: SHT_PROGBITS + 1, 0, 0, 0, + // sh_flags: SHF_ALLOC + 2, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers. 384 == 0x180. + 0x80, 0x1, 0, 0, 0, 0, 0, 0, + // sh_size + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, 0, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 192 + // Shdr 2: .symtab + // sh_name: 1 null byte + ".test\0" + 7, 0, 0, 0, + // sh_type: SHT_SYMTAB + 2, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + empty section + // 384 == 0x180. + 0x80, 0x1, 0, 0, 0, 0, 0, 0, + // sh_size: two symbols: dummy symbol + test symbol + 48, 0, 0, 0, 0, 0, 0, 0, + // sh_link: to .strtab + 3, 0, 0, 0, + // sh_info: one local symbol, the dummy symbol + 1, 0, 0, 0, + // sh_addralign + 8, 0, 0, 0, 0, 0, 0, 0, + // sh_entsize: size of symbol + 24, 0, 0, 0, 0, 0, 0, 0, + + // Offset 256 + // Shdr 3: .strtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + 15, 0, 0, 0, + // sh_type: SHT_STRTAB + 3, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after .symtab section. 432 == 0x1b0 + 0xb0, 0x1, 0, 0, 0, 0, 0, 0, + // sh_size: 1 null byte + "test\0" + 6, 0, 0, 0, 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, 0, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 320 + // Shdr 4: .shstrtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0" + 23, 0, 0, 0, + // sh_type: SHT_STRTAB + 3, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after .strtab section. 438 == 0x1b6 + 0xb6, 0x1, 0, 0, 0, 0, 0, 0, + // sh_size: all section names + 33, 0, 0, 0, 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, 0, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 384 + // Contents of .symtab section + // Symbol 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 408 + // Symbol 1 + // st_name + 1, 0, 0, 0, + // st_info: STT_NOTYPE, STB_GLOBAL + 0x10, + // st_other + 0, + // st_shndx: In .test + 1, 0, + // st_value + 0, 0, 0, 0, 0, 0, 0, 0, + // st_size + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 432 + // Contents of .strtab section + '\0', + 't', 'e', 's', 't', '\0', + + // Offset 438 + // Contents of .shstrtab section + '\0', + '.', 't', 'e', 's', 't', '\0', + '.', 's', 'y', 'm', 't', 'a', 'b', '\0', + '.', 's', 't', 'r', 't', 'a', 'b', '\0', + '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0' +}; + +const unsigned int test_file_1_size_64_little = sizeof test_file_1_64_little; + +// 64-bit big-endian version of test_file_1_32_little. + +const unsigned char test_file_1_64_big[] = +{ + // Ehdr + // EI_MAG[0-3] + 0x7f, 'E', 'L', 'F', + // EI_CLASS: 64 bit. + 2, + // EI_DATA: big endian + 2, + // EI_VERSION + 1, + // EI_OSABI + 0, + // EI_ABIVERSION + 0, + // EI_PAD + 0, 0, 0, 0, 0, 0, 0, + // e_type: ET_REL + 0, 1, + // e_machine: a magic value used for testing. + 0xff, 0xff, + // e_version + 0, 0, 0, 1, + // e_entry + 0, 0, 0, 0, 0, 0, 0, 0, + // e_phoff + 0, 0, 0, 0, 0, 0, 0, 0, + // e_shoff: starts right after file header + 0, 0, 0, 0, 0, 0, 0, 64, + // e_flags + 0, 0, 0, 0, + // e_ehsize + 0, 64, + // e_phentsize + 0, 56, + // e_phnum + 0, 0, + // e_shentsize + 0, 64, + // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab + 0, 5, + // e_shstrndx + 0, 4, + + // Offset 64 + // Shdr 0: dummy entry + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 128 + // Shdr 1: .test + // sh_name: after initial null + 0, 0, 0, 1, + // sh_type: SHT_PROGBITS + 0, 0, 0, 1, + // sh_flags: SHF_ALLOC + 0, 0, 0, 0, 0, 0, 0, 2, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers. 384 == 0x180. + 0, 0, 0, 0, 0, 0, 0x1, 0x80, + // sh_size + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 0, 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 192 + // Shdr 2: .symtab + // sh_name: 1 null byte + ".test\0" + 0, 0, 0, 7, + // sh_type: SHT_SYMTAB + 0, 0, 0, 2, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + empty section + // 384 == 0x180. + 0, 0, 0, 0, 0, 0, 0x1, 0x80, + // sh_size: two symbols: dummy symbol + test symbol + 0, 0, 0, 0, 0, 0, 0, 48, + // sh_link: to .strtab + 0, 0, 0, 3, + // sh_info: one local symbol, the dummy symbol + 0, 0, 0, 1, + // sh_addralign + 0, 0, 0, 0, 0, 0, 0, 8, + // sh_entsize: size of symbol + 0, 0, 0, 0, 0, 0, 0, 24, + + // Offset 256 + // Shdr 3: .strtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + 0, 0, 0, 15, + // sh_type: SHT_STRTAB + 0, 0, 0, 3, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after .symtab section. 432 == 0x1b0 + 0, 0, 0, 0, 0, 0, 0x1, 0xb0, + // sh_size: 1 null byte + "test\0" + 0, 0, 0, 0, 0, 0, 0, 6, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 0, 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 320 + // Shdr 4: .shstrtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0" + 0, 0, 0, 23, + // sh_type: SHT_STRTAB + 0, 0, 0, 3, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after .strtab section. 438 == 0x1b6 + 0, 0, 0, 0, 0, 0, 0x1, 0xb6, + // sh_size: all section names + 0, 0, 0, 0, 0, 0, 0, 33, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 0, 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 384 + // Contents of .symtab section + // Symbol 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 408 + // Symbol 1 + // st_name + 0, 0, 0, 1, + // st_info: STT_NOTYPE, STB_GLOBAL + 0x10, + // st_other + 0, + // st_shndx: In .test + 0, 1, + // st_value + 0, 0, 0, 0, 0, 0, 0, 0, + // st_size + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 432 + // Contents of .strtab section + '\0', + 't', 'e', 's', 't', '\0', + + // Offset 438 + // Contents of .shstrtab section + '\0', + '.', 't', 'e', 's', 't', '\0', + '.', 's', 'y', 'm', 't', 'a', 'b', '\0', + '.', 's', 't', 'r', 't', 'a', 'b', '\0', + '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0' +}; + +const unsigned int test_file_1_size_64_big = sizeof test_file_1_64_big; + +} // End namespace gold_testsuite. diff --git a/binutils-2.25/gold/testsuite/testfile.h b/binutils-2.25/gold/testsuite/testfile.h new file mode 100644 index 00000000..91781797 --- /dev/null +++ b/binutils-2.25/gold/testsuite/testfile.h @@ -0,0 +1,49 @@ +// testfile.h -- test input files -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#ifndef GOLD_TESTSUITE_TESTFILE_H +#define GOLD_TESTSUITE_TESTFILE_H + +namespace gold +{ +class Target; +} + +namespace gold_testsuite +{ + +extern gold::Target* target_test_pointer_32_little; +extern gold::Target* target_test_pointer_32_big; +extern gold::Target* target_test_pointer_64_little; +extern gold::Target* target_test_pointer_64_big; +extern const unsigned char test_file_1_32_little[]; +extern const unsigned int test_file_1_size_32_little; +extern const unsigned char test_file_1_32_big[]; +extern const unsigned int test_file_1_size_32_big; +extern const unsigned char test_file_1_64_little[]; +extern const unsigned int test_file_1_size_64_little; +extern const unsigned char test_file_1_64_big[]; +extern const unsigned int test_file_1_size_64_big; + +}; // End namespace gold_testsuite. + +#endif // !defined(GOLD_TESTSUITE_TESTFILE_H) diff --git a/binutils-2.25/gold/testsuite/testmain.cc b/binutils-2.25/gold/testsuite/testmain.cc new file mode 100644 index 00000000..ac99000e --- /dev/null +++ b/binutils-2.25/gold/testsuite/testmain.cc @@ -0,0 +1,40 @@ +// testmain.cc -- main function for simplisitic gold test framework. + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "gold.h" + +#include + +#include "test.h" + +using namespace gold_testsuite; + +int +main(int, char** argv) +{ + gold::program_name = argv[0]; + + Test_framework tf; + Register_test::run_tests(&tf); + + exit(tf.failures()); +} diff --git a/binutils-2.25/gold/testsuite/text_section_grouping.cc b/binutils-2.25/gold/testsuite/text_section_grouping.cc new file mode 100644 index 00000000..5a3a809f --- /dev/null +++ b/binutils-2.25/gold/testsuite/text_section_grouping.cc @@ -0,0 +1,72 @@ +// text_section_grouping.cc -- a test case for gold + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// The goal of this program is to verify if .text sections are grouped +// according to prefix. .text.unlikely, .text.startup and .text.hot should +// be grouped and placed together. + +extern "C" +__attribute__ ((section(".text.hot.foo"))) +int hot_foo() +{ + return 1; +} + +extern "C" +__attribute__ ((section(".text.startup.foo"))) +int startup_foo() +{ + return 1; +} + +extern "C" +__attribute__ ((section(".text.unlikely.foo"))) +int unlikely_foo() +{ + return 1; +} + +extern "C" +__attribute__ ((section(".text.hot.bar"))) +int hot_bar() +{ + return 1; +} + +extern "C" +__attribute__ ((section(".text.startup.bar"))) +int startup_bar() +{ + return 1; +} + +extern "C" +__attribute__ ((section(".text.unlikely.bar"))) +int unlikely_bar() +{ + return 1; +} + +int main() +{ + return 1; +} diff --git a/binutils-2.25/gold/testsuite/text_section_grouping.sh b/binutils-2.25/gold/testsuite/text_section_grouping.sh new file mode 100755 index 00000000..84ebe4c9 --- /dev/null +++ b/binutils-2.25/gold/testsuite/text_section_grouping.sh @@ -0,0 +1,73 @@ +#!/bin/sh + +# text_section_grouping.sh -- test + +# Copyright 2012 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# The goal of this program is to verify if .text sections are grouped +# according to prefix. .text.unlikely, .text.startup and .text.hot should +# be grouped and placed together. + +# Also check if the functions do not get grouped with option --no-text-reorder. + +set -e + +check() +{ + awk " +BEGIN { saw1 = 0; saw2 = 0; err = 0; } +/.*$2\$/ { saw1 = 1; } +/.*$3\$/ { + saw2 = 1; + if (!saw1) + { + printf \"layout of $2 and $3 is not right\\n\"; + err = 1; + exit 1; + } + } +END { + if (!saw1 && !err) + { + printf \"did not see $2\\n\"; + exit 1; + } + if (!saw2 && !err) + { + printf \"did not see $3\\n\"; + exit 1; + } + }" $1 +} + +# addr (unlikely_*) < addr (startup_*) < addr (hot_*) +check text_section_grouping.stdout "unlikely_foo" "startup_foo" +check text_section_grouping.stdout "startup_foo" "hot_foo" +check text_section_grouping.stdout "unlikely_bar" "startup_bar" +check text_section_grouping.stdout "startup_bar" "hot_bar" +check text_section_grouping.stdout "unlikely_foo" "startup_bar" +check text_section_grouping.stdout "startup_foo" "hot_bar" + +check text_section_no_grouping.stdout "hot_foo" "startup_foo" +check text_section_no_grouping.stdout "startup_foo" "unlikely_foo" +check text_section_no_grouping.stdout "unlikely_foo" "hot_bar" +check text_section_no_grouping.stdout "hot_bar" "startup_bar" +check text_section_no_grouping.stdout "startup_bar" "unlikely_bar" diff --git a/binutils-2.25/gold/testsuite/thin_archive_main.cc b/binutils-2.25/gold/testsuite/thin_archive_main.cc new file mode 100644 index 00000000..6c38715c --- /dev/null +++ b/binutils-2.25/gold/testsuite/thin_archive_main.cc @@ -0,0 +1,39 @@ +// thin_archive_main.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This is the main program for the thin archive tests. It calls a single +// routine, t1, defined in libthin1.a or libthin3.a, which then references +// other routines in the same and other libraries, to make sure that all +// archive members are linked properly. + +#include + +extern int t1(); + +// Main function. Call the test function. + +int +main() +{ + assert(t1() == 0x4321); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/thin_archive_test_1.cc b/binutils-2.25/gold/testsuite/thin_archive_test_1.cc new file mode 100644 index 00000000..db239376 --- /dev/null +++ b/binutils-2.25/gold/testsuite/thin_archive_test_1.cc @@ -0,0 +1,37 @@ +// thin_archive_test_1.cc -- part of a test case for thin archives + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files and archives. This is file 1 of 4. +// Each of the first three files contains a reference to the next. +// We test the archives as follows: + +// Files 1 and 2 in libthin1.a, files 3 and 4 in libthin2.a. +// Files 1 and 4 in libthin3.a, files 2 and 3 in libthin4.a, with +// libthin3.a and libthin4.a nested inside libthinall.a. + +extern int t2(); + +int +t1() +{ + return (t2() << 4) | 1; +} diff --git a/binutils-2.25/gold/testsuite/thin_archive_test_2.cc b/binutils-2.25/gold/testsuite/thin_archive_test_2.cc new file mode 100644 index 00000000..2c1ee313 --- /dev/null +++ b/binutils-2.25/gold/testsuite/thin_archive_test_2.cc @@ -0,0 +1,37 @@ +// thin_archive_test_2.cc -- part of a test case for thin archives + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files and archives. This is file 2 of 4. +// Each of the first three files contains a reference to the next. +// We test the archives as follows: + +// Files 1 and 2 in libthin1.a, files 3 and 4 in libthin2.a. +// Files 1 and 4 in libthin3.a, files 2 and 3 in libthin4.a, with +// libthin3.a and libthin4.a nested inside libthinall.a. + +extern int t3(); + +int +t2() +{ + return (t3() << 4) | 2; +} diff --git a/binutils-2.25/gold/testsuite/thin_archive_test_3.cc b/binutils-2.25/gold/testsuite/thin_archive_test_3.cc new file mode 100644 index 00000000..b58c59fa --- /dev/null +++ b/binutils-2.25/gold/testsuite/thin_archive_test_3.cc @@ -0,0 +1,37 @@ +// thin_archive_test_3.cc -- part of a test case for thin archives + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files and archives. This is file 3 of 4. +// Each of the first three files contains a reference to the next. +// We test the archives as follows: + +// Files 1 and 2 in libthin1.a, files 3 and 4 in libthin2.a. +// Files 1 and 4 in libthin3.a, files 2 and 3 in libthin4.a, with +// libthin3.a and libthin4.a nested inside libthinall.a. + +extern int t4(); + +int +t3() +{ + return (t4() << 4) | 3; +} diff --git a/binutils-2.25/gold/testsuite/thin_archive_test_4.cc b/binutils-2.25/gold/testsuite/thin_archive_test_4.cc new file mode 100644 index 00000000..1b67c94a --- /dev/null +++ b/binutils-2.25/gold/testsuite/thin_archive_test_4.cc @@ -0,0 +1,35 @@ +// thin_archive_test_4.cc -- part of a test case for thin archives + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files and archives. This is file 4 of 4. +// Each of the first three files contains a reference to the next. +// We test the archives as follows: + +// Files 1 and 2 in libthin1.a, files 3 and 4 in libthin2.a. +// Files 1 and 4 in libthin3.a, files 2 and 3 in libthin4.a, with +// libthin3.a and libthin4.a nested inside libthinall.a. + +int +t4() +{ + return 4; +} diff --git a/binutils-2.25/gold/testsuite/thumb2_branch_range.t b/binutils-2.25/gold/testsuite/thumb2_branch_range.t new file mode 100644 index 00000000..8fdc7836 --- /dev/null +++ b/binutils-2.25/gold/testsuite/thumb2_branch_range.t @@ -0,0 +1,36 @@ +/* thumb2_banch_range.t -- linker script to test THUMB-2 branch range. + + Copyright 2010 Free Software Foundation, Inc. + Written by Doug Kwan . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +SECTIONS +{ + . = 0x1000000; + + .text.pre : { *(.text.pre) } + . = ALIGN(0x1000000); + .text : { *(.text) } + . = ALIGN(0x1000000); + .text.post : { *(.text.post) } + . += 0x1000; + .data : { *(.data) } + .bss : { *(.bss) } + .ARM.attributes : { *(.ARM.attributes) } +} diff --git a/binutils-2.25/gold/testsuite/thumb_bl_in_range.s b/binutils-2.25/gold/testsuite/thumb_bl_in_range.s new file mode 100644 index 00000000..4a40ae20 --- /dev/null +++ b/binutils-2.25/gold/testsuite/thumb_bl_in_range.s @@ -0,0 +1,56 @@ +# thumb_bl_in_range.s +# Test THUMB/THUMB-2 bl instructions just within the branch range limits. + .syntax unified + + .section .text.pre,"x" + +# Add padding so that target is just in branch range. + .space 8 + + .global _backward_target + .code 16 + .thumb_func + .type _backword_target, %function +_backward_target: + bx lr + .size _backward_target, .-_backward_target + + .text + +# Define _start so that linker does not complain. + .global _start + .code 32 + .align 2 + .type _start, %function +_start: + bx lr + .size _start, .-_start + + .global _backward_test + .code 16 + .thumb_func + .type _backward_test, %function +_backward_test: + bl _backward_target + .size _backward_test, .-_backward_test + + .global _forward_test + .code 16 + .thumb_func + .type _forward_test, %function +_forward_test: + bl _forward_target + .size _forward_test, .-_forward_test + + .section .text.post,"x" + +# Add padding so that target is just in branch range. + .space 10 + + .global _forward_target + .code 16 + .thumb_func + .type _forward_target, %function +_forward_target: + bx lr + .size _forward_target, .-_forward_target diff --git a/binutils-2.25/gold/testsuite/thumb_bl_out_of_range.s b/binutils-2.25/gold/testsuite/thumb_bl_out_of_range.s new file mode 100644 index 00000000..d0906d9d --- /dev/null +++ b/binutils-2.25/gold/testsuite/thumb_bl_out_of_range.s @@ -0,0 +1,62 @@ +# thumb_bl_out_of_range.s +# Test THUMB/THUMB-2 bl instructions just out of the branch range limits. + .syntax unified + + .section .text.pre,"x" + +# Add padding so that target is just output of branch range. + .space 6 + + .global _backward_target + .code 16 + .thumb_func + .type _backword_target, %function +_backward_target: + bx lr + .size _backward_target, .-_backward_target + + .text +# Use 256-byte alignment so that we know where the stubs start. + .align 8 + +# Define _start so that linker does not complain. + .global _start + .code 32 + .align 2 + .type _start, %function +_start: + bx lr + .size _start, .-_start + + .global _backward_test + .code 16 + .thumb_func + .type _backward_test, %function +_backward_test: + bl _backward_target + .size _backward_test, .-_backward_test + + .global _forward_test + .code 16 + .thumb_func + .type _forward_test, %function +_forward_test: + bl _forward_target + .size _forward_test, .-_forward_test + +# switch back to ARM mode so that stubs are disassembled correctly. + .code 32 + nop + + .section .text.post,"x" + +# Add padding so that target is just out of branch range. + .space 12 + + .global _forward_target + .code 16 + .thumb_func + .type _forward_target, %function +_forward_target: + bx lr + .size _forward_target, .-_forward_target diff --git a/binutils-2.25/gold/testsuite/thumb_bl_out_of_range_local.s b/binutils-2.25/gold/testsuite/thumb_bl_out_of_range_local.s new file mode 100644 index 00000000..48de1e14 --- /dev/null +++ b/binutils-2.25/gold/testsuite/thumb_bl_out_of_range_local.s @@ -0,0 +1,61 @@ +# thumb_bl_out_of_range_local.s +# Test THUMB/THUMB-2 bl instructions just out of the branch range limits +# and with local branch targets. + .syntax unified + + .section .text.pre,"x" + +# Add padding so that target is just output of branch range. + .space 6 + + .code 16 + .thumb_func + .type .Lbackward_target, %function +.Lbackward_target: + bx lr + .size .Lbackward_target, .-.Lbackward_target + + .text +# Use 256-byte alignment so that we know where the stubs start. + .align 8 + +# Define _start so that linker does not complain. + .global _start + .code 32 + .align 2 + .type _start, %function +_start: + bx lr + .size _start, .-_start + + .global _backward_test + .code 16 + .thumb_func + .type _backward_test, %function +_backward_test: + bl .Lbackward_target + .size _backward_test, .-_backward_test + + .global _forward_test + .code 16 + .thumb_func + .type _forward_test, %function +_forward_test: + bl .Lforward_target + .size _forward_test, .-_forward_test + +# Switch back to ARM mode so that we can see stubs + .code 32 + nop + + .section .text.post,"x" + +# Add padding so that target is just out of branch range. + .space 12 + + .code 16 + .thumb_func + .type .Lforward_target, %function +.Lforward_target: + bx lr + .size .Lforward_target, .-.Lforward_target diff --git a/binutils-2.25/gold/testsuite/thumb_blx_in_range.s b/binutils-2.25/gold/testsuite/thumb_blx_in_range.s new file mode 100644 index 00000000..bd2d060b --- /dev/null +++ b/binutils-2.25/gold/testsuite/thumb_blx_in_range.s @@ -0,0 +1,64 @@ +# thumb_blx_in_range.s +# +# Test THUMB/THUMB-2 blx instructions just within the branch range limits. +# Because bit 1 of the branch target comes from the branch instruction +# address, the branch range from PC (branch instruction address + 4) is +# acutally -((1<<22) + 2) to ((1<<22) - 4) for THUMB and -((1<<24) + 2) to +# ((1<<24) - 4) from THUMB2. + + .syntax unified + .section .text.pre,"x" + +# Add padding so that target is just in branch range. + .space 8 + + .align 2 + .global _backward_target + .code 32 + .type _backword_target, %function +_backward_target: + bx lr + .size _backward_target, .-_backward_target + + .text + +# Define _start so that linker does not complain. + .global _start + .code 32 + .align 2 + .type _start, %function +_start: + bx lr + .size _start, .-_start + + .global _backward_test + .code 16 + .thumb_func + .type _backward_test, %function +_backward_test: + nop.n + blx _backward_target + .size _backward_test, .-_backward_test + + .align 2 + .global _forward_test + .code 16 + .thumb_func + .type _forward_test, %function +_forward_test: + blx _forward_target + .size _forward_test, .-_forward_test + .code 32 + + .section .text.post,"x" + +# Add padding so that target is just in branch range. + .space 12 + + .align 2 + .global _forward_target + .code 32 + .type _forward_target, %function +_forward_target: + bx lr + .size _forward_target, .-_forward_target diff --git a/binutils-2.25/gold/testsuite/thumb_blx_out_of_range.s b/binutils-2.25/gold/testsuite/thumb_blx_out_of_range.s new file mode 100644 index 00000000..c4f87e0f --- /dev/null +++ b/binutils-2.25/gold/testsuite/thumb_blx_out_of_range.s @@ -0,0 +1,66 @@ +# thumb_blx_out_of_range.s +# Test THUMB/THUMB-2 blx instructions just out of the branch range limits. + .syntax unified + + .section .text.pre,"x" + +# Add padding so that target is just output of branch range. + .space 4 + + .global _forward_target + .global _backward_target + .type _backword_target, %function +_backward_target: + bx lr + .size _backward_target, .-_backward_target + + .text +# Use 256-byte alignment so that we know where the stubs start. + .align 8 + +# Define _start so that linker does not complain. + .align 2 + .global _start + .code 32 + .type _start, %function +_start: + bx lr + .size _start, .-_start + + .global _backward_test + .code 16 + .thumb_func + .type _backward_test, %function +_backward_test: + bl _backward_target + .size _backward_test, .-_backward_test + + .align 2 + .global _forward_test + .code 16 + .thumb_func + .type _forward_test, %function +_forward_test: + # Bit 1 of the BLX target comes from bit 1 of branch base address, + # which is BLX instruction's address + 4. We intentionally put this + # forward BLX at an address n*4 + 2 so that the branch offset is + # bumped up by 2. + nop.n + bl _forward_target + .size _forward_test, .-_forward_test + +# switch back to ARM mode so that stubs are disassembled correctly. + .code 32 + nop + + .section .text.post,"x" + +# Add padding so that target is just out of branch range. + .space 12 + .align 2 + .code 32 + .global _forward_target + .type _forward_target, %function +_forward_target: + bx lr + .size _forward_target, .-_forward_target diff --git a/binutils-2.25/gold/testsuite/thumb_branch_range.t b/binutils-2.25/gold/testsuite/thumb_branch_range.t new file mode 100644 index 00000000..fa858b55 --- /dev/null +++ b/binutils-2.25/gold/testsuite/thumb_branch_range.t @@ -0,0 +1,36 @@ +/* thumb_banch_range.t -- linker script to test ARM branch range. + + Copyright 2010 Free Software Foundation, Inc. + Written by Doug Kwan . + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +SECTIONS +{ + . = 0x400000; + + .text.pre : { *(.text.pre) } + . = ALIGN(0x400000); + .text : { *(.text) } + . = ALIGN(0x400000); + .text.post : { *(.text.post) } + . += 0x1000; + .data : { *(.data) } + .bss : { *(.bss) } + .ARM.attributes : { *(.ARM.attributes) } +} diff --git a/binutils-2.25/gold/testsuite/tls_test.cc b/binutils-2.25/gold/testsuite/tls_test.cc new file mode 100644 index 00000000..c8757529 --- /dev/null +++ b/binutils-2.25/gold/testsuite/tls_test.cc @@ -0,0 +1,224 @@ +// tls_test.cc -- test TLS variables for gold + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This provides a set of test functions for TLS variables. The +// functions are called by a main function in tls_test_main.cc. This +// lets us test TLS access from a shared library. We currently don't +// bother to test TLS access between two different files, on the +// theory that that is no more complicated than ordinary variable +// access between files. + +// We start two threads, and stop the second one. Then we run the +// first thread through the following cases. Then we let the second +// thread continue, and run it through the same set of cases. All the +// actual thread manipulation is in tls_test_main.cc. + +// 1 Access to an uninitialized global thread variable. +// 2 Access to an uninitialized static thread variable. +// 3 Access to an initialized global thread variable. +// 4 Access to an initialized static thread variable. +// 5 Taking the address of a global thread variable. +// 6 Taking the address of a static thread variable. +// 8 Like test 1, but with the thread variable defined in another file. +// 9 Like test 3, but with the thread variable defined in another file. +// 10 Like test 5, but with the thread variable defined in another file. +// last Verify that the above tests left the variables set correctly. + + +#include "config.h" +#include +#include "tls_test.h" + +#define CHECK_EQ_OR_RETURN(var, expected) \ + do \ + { \ + if ((var) != (expected)) \ + { \ + printf(#var ": expected %d, found %d\n", expected, var); \ + return false; \ + } \ + } \ + while (0) + +__thread int v1; +static __thread int v2; + +// We don't use these pointers, but putting them in tests alignment on +// a 64-bit target. +__thread char* p1; +char dummy; +__thread char* p2 = &dummy; + +__thread int v3 = 3; +static __thread int v4 = 4; +__thread int v5; +static __thread int v6; + +struct int128 +{ + long long hi; + long long lo; +}; + +static __thread struct int128 v12 = { 115, 125 }; + +bool +t1() +{ + CHECK_EQ_OR_RETURN(v1, 0); + v1 = 10; + return true; +} + +bool +t2() +{ + CHECK_EQ_OR_RETURN(v2, 0); + v2 = 20; + return true; +} + +bool +t3() +{ + CHECK_EQ_OR_RETURN(v3, 3); + v3 = 30; + return true; +} + +bool +t4() +{ + CHECK_EQ_OR_RETURN(v4, 4); + v4 = 40; + return true; +} + +// For test 5 the main function calls f5b(f5a()), then calls t5(). + +int* +f5a() +{ + return &v5; +} + +void +f5b(int* p) +{ + *p = 50; +} + +bool +t5() +{ + CHECK_EQ_OR_RETURN(v5, 50); + return true; +} + +// For test 6 the main function calls f6b(f6a()), then calls t6(). + +int* +f6a() +{ + return &v6; +} + +void +f6b(int* p) +{ + *p = 60; +} + +bool +t6() +{ + CHECK_EQ_OR_RETURN(v6, 60); + return true; +} + +// The slot for t7() is unused. + +bool +t8() +{ + CHECK_EQ_OR_RETURN(o1, 0); + o1 = -10; + return true; +} + +bool +t9() +{ + CHECK_EQ_OR_RETURN(o2, -2); + o2 = -20; + return true; +} + +// For test 10 the main function calls f10b(f10a()), then calls t10(). + +int* +f10a() +{ + return &o3; +} + +void +f10b(int* p) +{ + *p = -30; +} + +bool +t10() +{ + CHECK_EQ_OR_RETURN(o3, -30); + return true; +} + +bool +t12() +{ + struct int128 newval = { 335, 345 }; + CHECK_EQ_OR_RETURN((int) v12.hi, 115); + CHECK_EQ_OR_RETURN((int) v12.lo, 125); + v12 = newval; + return true; +} + +bool +t_last() +{ + CHECK_EQ_OR_RETURN(v1, 10); + CHECK_EQ_OR_RETURN(v2, 20); + CHECK_EQ_OR_RETURN(v3, 30); + CHECK_EQ_OR_RETURN(v4, 40); + CHECK_EQ_OR_RETURN(v5, 50); + CHECK_EQ_OR_RETURN(v6, 60); + CHECK_EQ_OR_RETURN((int) v12.hi, 335); + CHECK_EQ_OR_RETURN((int) v12.lo, 345); + CHECK_EQ_OR_RETURN(o1, -10); + CHECK_EQ_OR_RETURN(o2, -20); + CHECK_EQ_OR_RETURN(o3, -30); + int check = t11_last(); + CHECK_EQ_OR_RETURN(check, 1); + return true; +} diff --git a/binutils-2.25/gold/testsuite/tls_test.h b/binutils-2.25/gold/testsuite/tls_test.h new file mode 100644 index 00000000..1c98b176 --- /dev/null +++ b/binutils-2.25/gold/testsuite/tls_test.h @@ -0,0 +1,56 @@ +// tls_test.h -- test TLS variables for gold, header file -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This is the header file for the TLS test. See tls_test.cc for more +// information. + +extern bool t1(); +extern bool t2(); +extern bool t3(); +extern bool t4(); + +extern int* f5a(); +extern void f5b(int*); +extern bool t5(); + +extern int* f6a(); +extern void f6b(int*); +extern bool t6(); + +extern bool t8(); +extern bool t9(); + +extern int* f10a(); +extern void f10b(int*); +extern bool t10(); + +extern "C" int t11(); +extern "C" int t11_last(); + +extern bool t12(); + +extern bool t_last(); + +// These variables are defined in tls_test_file2.cc +extern __thread int o1; +extern __thread int o2; +extern __thread int o3; diff --git a/binutils-2.25/gold/testsuite/tls_test_c.c b/binutils-2.25/gold/testsuite/tls_test_c.c new file mode 100644 index 00000000..896191fa --- /dev/null +++ b/binutils-2.25/gold/testsuite/tls_test_c.c @@ -0,0 +1,65 @@ +/* tls_test_c.c -- test TLS common symbol + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* The only way I know to get gcc to generate a TLS common symbol is + to use a C file and an OpenMP directive. */ + +#include "config.h" +#include + +#define CHECK_EQ_OR_RETURN(var, expected) \ + do \ + { \ + if ((var) != (expected)) \ + { \ + printf(#var ": expected %d, found %d\n", expected, var); \ + return 0; \ + } \ + } \ + while (0) + +#ifdef HAVE_OMP_SUPPORT +int v7; +#pragma omp threadprivate (v7) +#endif + +int t11(void); +int t11_last(void); + +int +t11(void) +{ +#ifdef HAVE_OMP_SUPPORT + CHECK_EQ_OR_RETURN(v7, 0); + v7 = 70; +#endif + return 1; +} + +int +t11_last(void) +{ +#ifdef HAVE_OMP_SUPPORT + CHECK_EQ_OR_RETURN(v7, 70); +#endif + return 1; +} diff --git a/binutils-2.25/gold/testsuite/tls_test_file2.cc b/binutils-2.25/gold/testsuite/tls_test_file2.cc new file mode 100644 index 00000000..b02a7bdc --- /dev/null +++ b/binutils-2.25/gold/testsuite/tls_test_file2.cc @@ -0,0 +1,30 @@ +// tls_test.cc -- test TLS variables for gold + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This is the definition of a thread-local variable in another file. +// See tls_test.cc for more information. + +#include "tls_test.h" + +__thread int o1; +__thread int o2 = -2; +__thread int o3; diff --git a/binutils-2.25/gold/testsuite/tls_test_main.cc b/binutils-2.25/gold/testsuite/tls_test_main.cc new file mode 100644 index 00000000..d781a150 --- /dev/null +++ b/binutils-2.25/gold/testsuite/tls_test_main.cc @@ -0,0 +1,173 @@ +// tls_test.cc -- test TLS variables for gold, main function + +// Copyright 2006, 2007, 2008, 2011 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This is the main function for the TLS test. See tls_test.cc for +// more information. + +#include +#include +#include +#include + +#include "tls_test.h" + +// We make these macros so the assert() will give useful line-numbers. +#define safe_lock(semptr) \ + do \ + { \ + int err = sem_wait(semptr); \ + assert(err == 0); \ + } \ + while (0) + +#define safe_unlock(semptr) \ + do \ + { \ + int err = sem_post(semptr); \ + assert(err == 0); \ + } \ + while (0) + +struct Sem_set +{ + sem_t sem1; + sem_t sem2; + sem_t sem3; +}; + +Sem_set sems1; +Sem_set sems2; + +bool failed = false; + +void +check(const char* name, bool val) +{ + if (!val) + { + fprintf(stderr, "Test %s failed\n", name); + failed = true; + } +} + +// The body of the thread function. This acquires the first +// semaphore, runs the tests, and then releases the second semaphore. +// Then it acquires the third semaphore, and the runs the verification +// test again. + +void* +thread_routine(void* arg) +{ + Sem_set* pms = static_cast(arg); + + // Acquire the first semaphore. + if (pms) + safe_lock(&pms->sem1); + + // Run the tests. + check("t1", t1()); + check("t2", t2()); + check("t3", t3()); + check("t4", t4()); + f5b(f5a()); + check("t5", t5()); + f6b(f6a()); + check("t6", t6()); + check("t8", t8()); + check("t9", t9()); + f10b(f10a()); + check("t10", t10()); + check("t11", t11() != 0); + check("t12", t12()); + check("t_last", t_last()); + + // Release the second semaphore. + if (pms) + safe_unlock(&pms->sem2); + + // Acquire the third semaphore. + if (pms) + safe_lock(&pms->sem3); + + check("t_last", t_last()); + + return 0; +} + +// The main function. + +int +main() +{ + // First, as a sanity check, run through the tests in the "main" thread. + thread_routine(0); + + // Set up the semaphores. We want the first thread to start right + // away, tell us when it is done with the first part, and wait for + // us to release it. We want the second thread to wait to start, + // tell us when it is done with the first part, and wait for us to + // release it. + sem_init(&sems1.sem1, 0, 1); + sem_init(&sems1.sem2, 0, 0); + sem_init(&sems1.sem3, 0, 0); + + sem_init(&sems2.sem1, 0, 0); + sem_init(&sems2.sem2, 0, 0); + sem_init(&sems2.sem3, 0, 0); + + pthread_t thread1; + int err = pthread_create(&thread1, NULL, thread_routine, &sems1); + assert(err == 0); + + pthread_t thread2; + err = pthread_create(&thread2, NULL, thread_routine, &sems2); + assert(err == 0); + + // Wait for the first thread to complete the first part. + safe_lock(&sems1.sem2); + + // Tell the second thread to start. + safe_unlock(&sems2.sem1); + + // Wait for the second thread to complete the first part. + safe_lock(&sems2.sem2); + + // Tell the first thread to continue and finish. + safe_unlock(&sems1.sem3); + + // Wait for the first thread to finish. + void* thread_val; + err = pthread_join(thread1, &thread_val); + assert(err == 0); + assert(thread_val == 0); + + // Tell the second thread to continue and finish. + safe_unlock(&sems2.sem3); + + // Wait for the second thread to finish. + err = pthread_join(thread2, &thread_val); + assert(err == 0); + assert(thread_val == 0); + + // All done. + return failed ? 1 : 0; +} diff --git a/binutils-2.25/gold/testsuite/two_file_shared.sh b/binutils-2.25/gold/testsuite/two_file_shared.sh new file mode 100755 index 00000000..62403114 --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_shared.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# two_file_shared.sh -- check that debug info gets symbol addresses + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +addrs=`grep DW_OP_addr two_file_shared.dbg | fgrep '(DW_OP_addr: 0)'` +if test -n "$addrs"; then + echo "Found variables with address zero" + echo $addrs + exit 1 +fi diff --git a/binutils-2.25/gold/testsuite/two_file_test.h b/binutils-2.25/gold/testsuite/two_file_test.h new file mode 100644 index 00000000..d89f050c --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test.h @@ -0,0 +1,78 @@ +// two_file_test.h -- a two file test case for gold, header file -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files. This is the shared header +// file. See two_file_test_1.cc for details. + +extern bool t1(); +extern bool t1a(); +extern int t1_2(); + +extern bool t2(); +extern int v2; + +extern bool t3(); +extern int v3; + +extern bool t4(); +extern char v4[]; + +extern bool t5(); +extern char v5[]; + +extern bool t6(); + +extern bool t7(); + +extern bool t8(); + +extern bool t9(); + +extern bool t10(); +extern int f10(); + +extern bool t11(); +extern int f11a(); +extern int f11b(int (*)()); + +extern bool t12(); +extern bool (*f12())(); + +extern bool t13(); +inline void f13i() { } +extern void (*f13())(); + +#define TEST_STRING_CONSTANT "test string constant" +extern const char* f14(); + +#define TEST_WIDE_STRING_CONSTANT L"test wide string constant" +extern const wchar_t* f15(); + +extern bool t16(); +extern bool t16a(); + +extern bool t17(); +extern const char* t17data[]; +#define T17_COUNT 5 + +extern bool t18(); +extern const char* f18(int); diff --git a/binutils-2.25/gold/testsuite/two_file_test_1.cc b/binutils-2.25/gold/testsuite/two_file_test_1.cc new file mode 100644 index 00000000..8b4c8ad4 --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_1.cc @@ -0,0 +1,238 @@ +// two_file_test_1.cc -- a two file test case for gold, file 1 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files. This is file 1, and +// two_file_test_2.cc is file 2. We test in several different ways: + +// Files 1 and 2 linked together in executable. +// File 1 in executable, file 2 in shared library. +// File 1 in shared library, file 2 in executable. +// Files 1 and 2 linked together in shared library. +// Files 1 and 2 in different shared libraries. + +// We test the following cases. + +// 1 Code in file 1 calls code in file 2. +// 2 Code in file 1 refers to global data in file 2. +// 3 Code in file 1 referes to common symbol in file 2. +// 4 Code in file 1 refers to offset within global data in file 2. +// 5 Code in file 1 refers to offset within common symbol in file 2. +// 6 Data in file 1 refers to global data in file 2. +// 7 Data in file 1 refers to common symbol in file 2. +// 8 Data in file 1 refers to offset within global data in file 2. +// 9 Data in file 1 refers to offset within common symbol in file 2. +// 10 Data in file 1 refers to function in file 2. +// 11 Pass function pointer from file 1 to file 2. +// 12 Compare address of function for equality in both files. +// 13 Compare address of inline function for equality in both files. +// 14 Compare string constants in file 1 and file 2. +// 15 Compare wide string constants in file 1 and file 2. +// 16 Call a function directly after its address has been taken. +// 17 File 1 checks array of string constants defined in file 2. +// 18 File 1 checks string constants referenced in code in file 2. + +#include "two_file_test.h" + +// 1 Code in file 1 calls code in file 2. + +bool +t1() +{ + return t1_2() == 123; +} + +// 2 Code in file 1 refers to global data in file 2. + +bool +t2() +{ + return v2 == 456; +} + +// 3 Code in file 1 referes to common symbol in file 2. + +bool +t3() +{ + return v3 == 789; +} + +// 4 Code in file 1 refers to offset within global data in file 2. + +bool +t4() +{ + return v4[5] == ','; +} + +// 5 Code in file 1 refers to offset within common symbol in file 2. + +bool +t5() +{ + return v5[7] == 'w'; +} + +// 6 Data in file 1 refers to global data in file 2. + +int* p6 = &v2; + +bool +t6() +{ + return *p6 == 456; +} + +// 7 Data in file 1 refers to common symbol in file 2. + +int* p7 = &v3; + +bool +t7() +{ + return *p7 == 789; +} + +// 8 Data in file 1 refers to offset within global data in file 2. + +char* p8 = &v4[6]; + +bool +t8() +{ + return *p8 == ' '; +} + +// 9 Data in file 1 refers to offset within common symbol in file 2. + +char* p9 = &v5[8]; + +bool +t9() +{ + return *p9 == 'o'; +} + +// 10 Data in file 1 refers to function in file 2. + +int (*pfn)() = &f10; + +bool +t10() +{ + return (*pfn)() == 135; +} + +// 11 Pass function pointer from file 1 to file 2. + +int +f11a() +{ + return 246; +} + +bool +t11() +{ + return f11b(&f11a) == 246; +} + +// 12 Compare address of function for equality in both files. + +bool +t12() +{ + return &t12 == f12(); +} + +// 13 Compare address of inline function for equality in both files. + +bool +t13() +{ + return &f13i == f13(); +} + +// 14 Compare string constants in file 1 and file 2. + +bool +t14() +{ + const char* s1 = TEST_STRING_CONSTANT; + const char* s2 = f14(); + while (*s1 != '\0') + if (*s1++ != *s2++) + return false; + return *s2 == '\0'; +} + +// 15 Compare wide string constants in file 1 and file 2. + +bool +t15() +{ + const wchar_t* s1 = TEST_WIDE_STRING_CONSTANT; + const wchar_t* s2 = f15(); + while (*s1 != '\0') + if (*s1++ != *s2++) + return false; + return *s2 == '\0'; +} + +// 16 Call a function directly after its address has been taken. + +bool +t16() +{ + return f10() == 135; +} + +// 17 File 1 checks array of string constants defined in file 2. + +bool +t17() +{ + char c = 'a'; + for (int i = 0; i < T17_COUNT; ++i) + { + if (t17data[i][0] != c || t17data[i][1] != '\0') + return false; + ++c; + } + return true; +} + +// 18 File 1 checks string constants referenced in code in file 2. + +bool +t18() +{ + char c = 'a'; + for (int i = 0; i < T17_COUNT; ++i) + { + const char* s = f18(i); + if (s[0] != c || s[1] != '\0') + return false; + ++c; + } + return true; +} diff --git a/binutils-2.25/gold/testsuite/two_file_test_1_v1.cc b/binutils-2.25/gold/testsuite/two_file_test_1_v1.cc new file mode 100644 index 00000000..2a236540 --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_1_v1.cc @@ -0,0 +1,236 @@ +// two_file_test_1_v1.cc -- a two file test case for gold, file 1 of 2 + +// Copyright 2006, 2007, 2008, 2011 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This is an alternate version of the source file two_file_test_1.cc, +// used to test incremental linking. We build a binary first using this +// source file, then do an incremental link with the primary version of +// the file. + +// This tests references between files. This is file 1, and +// two_file_test_2.cc is file 2. We test in several different ways: + +// Files 1 and 2 linked together in executable. +// File 1 in executable, file 2 in shared library. +// File 1 in shared library, file 2 in executable. +// Files 1 and 2 linked together in shared library. +// Files 1 and 2 in different shared libraries. + +// We test the following cases. + +// 1 Code in file 1 calls code in file 2. +// 2 Code in file 1 refers to global data in file 2. +// 3 Code in file 1 referes to common symbol in file 2. +// 4 Code in file 1 refers to offset within global data in file 2. +// 5 Code in file 1 refers to offset within common symbol in file 2. +// 6 Data in file 1 refers to global data in file 2. +// 7 Data in file 1 refers to common symbol in file 2. +// 8 Data in file 1 refers to offset within global data in file 2. +// 9 Data in file 1 refers to offset within common symbol in file 2. +// 10 Data in file 1 refers to function in file 2. +// 11 Pass function pointer from file 1 to file 2. +// 12 Compare address of function for equality in both files. +// 13 Compare address of inline function for equality in both files. +// 14 Compare string constants in file 1 and file 2. +// 15 Compare wide string constants in file 1 and file 2. +// 16 Call a function directly after its address has been taken. +// 17 File 1 checks array of string constants defined in file 2. +// 18 File 1 checks string constants referenced in code in file 2. + +#include "two_file_test.h" + +// 1 Code in file 1 calls code in file 2. + +bool +t1() +{ + return t1_2() == 0; // Intentionally wrong. +} + +// 2 Code in file 1 refers to global data in file 2. + +bool +t2() +{ + return v2 == 0; // Intentionally wrong. +} + +// 3 Code in file 1 referes to common symbol in file 2. + +bool +t3() +{ + return v3 == 0; // Intentionally wrong. +} + +// 4 Code in file 1 refers to offset within global data in file 2. + +bool +t4() +{ + return v4[5] == ','; +} + +// 5 Code in file 1 refers to offset within common symbol in file 2. + +bool +t5() +{ + return v5[7] == 'w'; +} + +// 6 Data in file 1 refers to global data in file 2. + +int* p6 = &v2; + +bool +t6() +{ + return *p6 == 456; +} + +// 7 Data in file 1 refers to common symbol in file 2. + +int* p7 = &v3; + +bool +t7() +{ + return *p7 == 789; +} + +// 8 Data in file 1 refers to offset within global data in file 2. + +char* p8 = &v4[6]; + +bool +t8() +{ + return *p8 == ' '; +} + +// 9 Data in file 1 refers to offset within common symbol in file 2. + +char* p9 = &v5[8]; + +bool +t9() +{ + return *p9 == 'o'; +} + +// 10 Data in file 1 refers to function in file 2. + +int (*pfn)() = &f10; + +bool +t10() +{ + return (*pfn)() == 135; +} + +// 11 Pass function pointer from file 1 to file 2. + +int +f11a() +{ + return 246; +} + +bool +t11() +{ + return f11b(&f11a) == 246; +} + +// 12 Compare address of function for equality in both files. + +bool +t12() +{ + return &t12 == f12(); +} + +// 13 Compare address of inline function for equality in both files. + +bool +t13() +{ + return &f13i == f13(); +} + +// 14 Compare string constants in file 1 and file 2. + +bool +t14() +{ + const char* s1 = TEST_STRING_CONSTANT; + const char* s2 = f14(); + while (*s1 != '\0') + if (*s1++ != *s2++) + return false; + return *s2 == '\0'; +} + +// 15 Compare wide string constants in file 1 and file 2. + +bool +t15() +{ + const wchar_t* s1 = TEST_WIDE_STRING_CONSTANT; + const wchar_t* s2 = f15(); + while (*s1 != '\0') + if (*s1++ != *s2++) + return false; + return *s2 == '\0'; +} + +// 16 Call a function directly after its address has been taken. + +bool +t16() +{ + return f10() == 135; +} + +// 17 File 1 checks array of string constants defined in file 2. + +bool +t17() +{ + char c = 'a'; + for (int i = 0; i < T17_COUNT; ++i) + { + if (t17data[i][0] != c || t17data[i][1] != '\0') + return false; + ++c; + } + return true; +} + +// 18 File 1 checks string constants referenced in code in file 2. + +bool +t18() +{ + // Stubbed out; full implementation in two_file_test_1.cc. + return true; +} diff --git a/binutils-2.25/gold/testsuite/two_file_test_1b.cc b/binutils-2.25/gold/testsuite/two_file_test_1b.cc new file mode 100644 index 00000000..8f6d4e65 --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_1b.cc @@ -0,0 +1,41 @@ +// two_file_test_1b.cc -- supplementary file for a three-file test case +// for gold. + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This file is used as part of a mixed PIC/non-PIC test. +// Files 1 and 1b are linked together in a shared library. +// File 1 is compiled non-PIC, and file 1a is compiled PIC. +// File 2 is compiled PIC and linked in a second shared library. +// This tests that a non-PIC call does not accidentally get +// bound to a PIC PLT entry. + +// We test the following cases. + +#include "two_file_test.h" + +// 16 Call a function directly after its address has been taken. + +bool +t16a() +{ + return f10() == 135; +} diff --git a/binutils-2.25/gold/testsuite/two_file_test_1b_v1.cc b/binutils-2.25/gold/testsuite/two_file_test_1b_v1.cc new file mode 100644 index 00000000..0adaf845 --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_1b_v1.cc @@ -0,0 +1,46 @@ +// two_file_test_1b_v1.cc -- supplementary file for a three-file test case +// for gold. + +// Copyright 2008, 2011 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This is an alternate version of the source file two_file_test_1b.cc, +// used to test incremental linking. We build a binary first using this +// source file, then do an incremental link with the primary version of +// the file. + +// This file is used as part of a mixed PIC/non-PIC test. +// Files 1 and 1b are linked together in a shared library. +// File 1 is compiled non-PIC, and file 1a is compiled PIC. +// File 2 is compiled PIC and linked in a second shared library. +// This tests that a non-PIC call does not accidentally get +// bound to a PIC PLT entry. + +// We test the following cases. + +#include "two_file_test.h" + +// 16 Call a function directly after its address has been taken. + +bool +t16a() +{ + return f10() == 125; +} diff --git a/binutils-2.25/gold/testsuite/two_file_test_2.cc b/binutils-2.25/gold/testsuite/two_file_test_2.cc new file mode 100644 index 00000000..e1aeaf48 --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_2.cc @@ -0,0 +1,145 @@ +// two_file_test_2.cc -- a two file test case for gold, file 2 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files. This is file 2, and +// two_file_test_1.cc is file 1. See file 1 for details. + +#include "two_file_test.h" + +// 1 Code in file 1 calls code in file 2. + +int +t1_2() +{ + return 123; +} + +bool +t1a() +{ + return t1_2() == 123; +} + +// 2 Code in file 1 refers to global data in file 2. + +int v2 = 456; + +// 3 Code in file 1 referes to common symbol in file 2. This is +// initialized at runtime to 789. + +int v3; + +// 4 Code in file 1 refers to offset within global data in file 2. + +char v4[] = "Hello, world"; + +// 5 Code in file 1 refers to offset within common symbol in file 2. +// This is initialized at runtime to a copy of v4. + +char v5[13]; + +// 6 Data in file 1 refers to global data in file 2. This reuses v2. + +// 7 Data in file 1 refers to common symbol in file 2. This reuses v3. + +// 8 Data in file 1 refers to offset within global data in file 2. +// This reuses v4. + +// 9 Data in file 1 refers to offset within common symbol in file 2. +// This reuses v5. + +// 10 Data in file 1 refers to function in file 2. + +int +f10() +{ + return 135; +} + +// 11 Pass function pointer from file 1 to file 2. + +int +f11b(int (*pfn)()) +{ + return (*pfn)(); +} + +// 12 Compare address of function for equality in both files. + +bool +(*f12())() +{ + return &t12; +} + +// 13 Compare address of inline function for equality in both files. + +void +(*f13())() +{ + return &f13i; +} + +// 14 Compare string constants in file 1 and file 2. + +const char* +f14() +{ + return TEST_STRING_CONSTANT; +} + +// 15 Compare wide string constants in file 1 and file 2. + +const wchar_t* +f15() +{ + return TEST_WIDE_STRING_CONSTANT; +} + +// 17 File 1 checks array of string constants defined in file 2. + +const char* t17data[T17_COUNT] = +{ + "a", "b", "c", "d", "e" +}; + +// 18 File 1 checks string constants referenced directly in file 2. + +const char* +f18(int i) +{ + switch (i) + { + case 0: + return "a"; + case 1: + return "b"; + case 2: + return "c"; + case 3: + return "d"; + case 4: + return "e"; + default: + return 0; + } +} diff --git a/binutils-2.25/gold/testsuite/two_file_test_2_tls.cc b/binutils-2.25/gold/testsuite/two_file_test_2_tls.cc new file mode 100644 index 00000000..6c74c698 --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_2_tls.cc @@ -0,0 +1,147 @@ +// two_file_test_2_tls.cc -- a two file test case for gold, with a TLS symbol + +// Copyright 2006, 2007, 2008, 2013 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files. This is file 2, and +// two_file_test_1.cc is file 1. See file 1 for details. + +#include "two_file_test.h" + +// 1 Code in file 1 calls code in file 2. + +__thread int tls1 = 123; + +int +t1_2() +{ + return tls1; +} + +bool +t1a() +{ + return t1_2() == 123; +} + +// 2 Code in file 1 refers to global data in file 2. + +int v2 = 456; + +// 3 Code in file 1 referes to common symbol in file 2. This is +// initialized at runtime to 789. + +int v3; + +// 4 Code in file 1 refers to offset within global data in file 2. + +char v4[] = "Hello, world"; + +// 5 Code in file 1 refers to offset within common symbol in file 2. +// This is initialized at runtime to a copy of v4. + +char v5[13]; + +// 6 Data in file 1 refers to global data in file 2. This reuses v2. + +// 7 Data in file 1 refers to common symbol in file 2. This reuses v3. + +// 8 Data in file 1 refers to offset within global data in file 2. +// This reuses v4. + +// 9 Data in file 1 refers to offset within common symbol in file 2. +// This reuses v5. + +// 10 Data in file 1 refers to function in file 2. + +int +f10() +{ + return 135; +} + +// 11 Pass function pointer from file 1 to file 2. + +int +f11b(int (*pfn)()) +{ + return (*pfn)(); +} + +// 12 Compare address of function for equality in both files. + +bool +(*f12())() +{ + return &t12; +} + +// 13 Compare address of inline function for equality in both files. + +void +(*f13())() +{ + return &f13i; +} + +// 14 Compare string constants in file 1 and file 2. + +const char* +f14() +{ + return TEST_STRING_CONSTANT; +} + +// 15 Compare wide string constants in file 1 and file 2. + +const wchar_t* +f15() +{ + return TEST_WIDE_STRING_CONSTANT; +} + +// 17 File 1 checks array of string constants defined in file 2. + +const char* t17data[T17_COUNT] = +{ + "a", "b", "c", "d", "e" +}; + +// 18 File 1 checks string constants referenced directly in file 2. + +const char* +f18(int i) +{ + switch (i) + { + case 0: + return "a"; + case 1: + return "b"; + case 2: + return "c"; + case 3: + return "d"; + case 4: + return "e"; + default: + return 0; + } +} diff --git a/binutils-2.25/gold/testsuite/two_file_test_2_v1.cc b/binutils-2.25/gold/testsuite/two_file_test_2_v1.cc new file mode 100644 index 00000000..ea26c66f --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_2_v1.cc @@ -0,0 +1,150 @@ +// two_file_test_2_v1.cc -- a two file test case for gold, file 2 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This is an alternate version of the source file two_file_test_2.cc, +// used to test incremental linking. We build a binary first using this +// source file, then do an incremental link with the primary version of +// the file. + +// This tests references between files. This is file 2, and +// two_file_test_1.cc is file 1. See file 1 for details. + +#include "two_file_test.h" + +// 1 Code in file 1 calls code in file 2. + +int +t1_2() +{ + return 0; +} + +bool +t1a() +{ + return t1_2() == 0; +} + +// 2 Code in file 1 refers to global data in file 2. + +int v2 = 1; + +// 3 Code in file 1 referes to common symbol in file 2. This is +// initialized at runtime to 789. + +int v3; + +// 4 Code in file 1 refers to offset within global data in file 2. + +char v4[] = "World, hello"; + +// 5 Code in file 1 refers to offset within common symbol in file 2. +// This is initialized at runtime to a copy of v4. + +char v5[13]; + +// 6 Data in file 1 refers to global data in file 2. This reuses v2. + +// 7 Data in file 1 refers to common symbol in file 2. This reuses v3. + +// 8 Data in file 1 refers to offset within global data in file 2. +// This reuses v4. + +// 9 Data in file 1 refers to offset within common symbol in file 2. +// This reuses v5. + +// 10 Data in file 1 refers to function in file 2. + +int +f10() +{ + return 0; +} + +// 11 Pass function pointer from file 1 to file 2. + +int +f11b(int (*pfn)()) +{ + return (*pfn)(); +} + +// 12 Compare address of function for equality in both files. + +bool +(*f12())() +{ + return &t12; +} + +// 13 Compare address of inline function for equality in both files. + +void +(*f13())() +{ + return &f13i; +} + +// 14 Compare string constants in file 1 and file 2. + +const char* +f14() +{ + return TEST_STRING_CONSTANT; +} + +// 15 Compare wide string constants in file 1 and file 2. + +const wchar_t* +f15() +{ + return TEST_WIDE_STRING_CONSTANT; +} + +// 17 File 1 checks array of string constants defined in file 2. + +const char* t17data[T17_COUNT] = +{ + "0", "1", "2", "3", "4" +}; + +// 18 File 1 checks string constants referenced directly in file 2. + +const char* +f18(int i) +{ + switch (i) + { + case 0: + return "0"; + case 1: + return "1"; + case 2: + return "2"; + case 3: + return "3"; + case 4: + return "4"; + default: + return 0; + } +} diff --git a/binutils-2.25/gold/testsuite/two_file_test_main.cc b/binutils-2.25/gold/testsuite/two_file_test_main.cc new file mode 100644 index 00000000..b7e38385 --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_main.cc @@ -0,0 +1,57 @@ +// two_file_test_main.cc -- a two file test case for gold, main function + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files. This is the main file. See +// two_file_test_1.cc for details. + +#include + +#include "two_file_test.h" + +int +main() +{ + // Initialize common data. + v3 = 789; + for (int i = 0; i < 13; ++i) + v5[i] = v4[i]; + + assert(t1()); + assert(t1a()); + assert(t2()); + assert(t3()); + assert(t4()); + assert(t5()); + assert(t6()); + assert(t7()); + assert(t8()); + assert(t9()); + assert(t10()); + assert(t11()); + assert(t12()); + assert(t13()); + assert(t16()); + assert(t16a()); + assert(t17()); + assert(t18()); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/two_file_test_tls.cc b/binutils-2.25/gold/testsuite/two_file_test_tls.cc new file mode 100644 index 00000000..d9a1c39d --- /dev/null +++ b/binutils-2.25/gold/testsuite/two_file_test_tls.cc @@ -0,0 +1,60 @@ +// two_file_test_tls.cc -- a two file test case for gold, main function, with TLS + +// Copyright 2006, 2007, 2008, 2013 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This tests references between files. This is the main file. See +// two_file_test_1.cc for details. + +#include + +#include "two_file_test.h" + +extern __thread int tls1; + +int +main() +{ + // Initialize common data. + v3 = 789; + for (int i = 0; i < 13; ++i) + v5[i] = v4[i]; + + assert(tls1 == 123); + assert(t1()); + assert(t1a()); + assert(t2()); + assert(t3()); + assert(t4()); + assert(t5()); + assert(t6()); + assert(t7()); + assert(t8()); + assert(t9()); + assert(t10()); + assert(t11()); + assert(t12()); + assert(t13()); + assert(t16()); + assert(t16a()); + assert(t17()); + assert(t18()); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/undef_symbol.cc b/binutils-2.25/gold/testsuite/undef_symbol.cc new file mode 100644 index 00000000..e35b2b24 --- /dev/null +++ b/binutils-2.25/gold/testsuite/undef_symbol.cc @@ -0,0 +1,40 @@ +// undef_symbol.cc -- a test case for undefined references + +// Copyright 2007, 2008, 2013 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This file is constructed to have an undefined reference to the +// global variable a. We should get an error when we link. + +extern int a; + +class Foo +{ + public: + Foo() + : a_(a) + { } + int get_a() + { return a_; } + private: + int a_; +}; + +static Foo foo; diff --git a/binutils-2.25/gold/testsuite/undef_symbol.sh b/binutils-2.25/gold/testsuite/undef_symbol.sh new file mode 100755 index 00000000..b689edce --- /dev/null +++ b/binutils-2.25/gold/testsuite/undef_symbol.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# undef_symbol.sh -- a test case for undefined symbols in shared libraries + +# Copyright 2007, 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with debug_msg.cc, a C++ source file constructed to +# have undefined references. We compile that file with debug +# information and then try to link it, and make sure the proper errors +# are displayed. The errors will be found in debug_msg.err. + +check() +{ + if ! grep -q "$1" undef_symbol.err + then + echo "Did not find expected error:" + echo " $1" + echo "" + echo "Actual error output below:" + cat undef_symbol.err + exit 1 + fi +} + +check "undef_symbol.so: error: undefined reference to 'a'" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/undef_symbol_main.cc b/binutils-2.25/gold/testsuite/undef_symbol_main.cc new file mode 100644 index 00000000..2c210443 --- /dev/null +++ b/binutils-2.25/gold/testsuite/undef_symbol_main.cc @@ -0,0 +1,29 @@ +// undef_symbol_1.cc -- a test case for undefined references + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Main function for undefined symbol test. + +int +main() +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/ver_matching_def.cc b/binutils-2.25/gold/testsuite/ver_matching_def.cc new file mode 100644 index 00000000..b654dff5 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_matching_def.cc @@ -0,0 +1,73 @@ +// ver_matching_def.cc - test matching rules in version_script.map + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +extern "C" { +void foo() {} // V1 +void foo1() {} // local +}; + +void bar() {} // V1 +void bar1() {} // global + +void baz(int*) {} // V1 +void baz(int*, char) {} // global +void baz(char*, int) {} // global + +extern "C" { +void bar2() {} // V1 +}; + +namespace myns { +void blah() {} // V1 +void bip() {} // V1 + +class Stuff { + public: + Stuff() {} // V1 +}; +} + +class Biz { + public: + Biz() {} // global +}; + +namespace otherns { +Biz biz; // global +myns::Stuff stuff; // V2 +}; + +extern "C" { +void blaza() {} // V1 +void blaza1() {} // V1 + +void original_blaza2() {} // V2 +__asm__(".symver original_blaza2,blaza2@@V2"); // overrides script + +void bla() {} // global +void blaz() {} // V2 +void blazb() {} // V2 + +int globaoeufxstuff = 0; // V1 +int globaoeufostuff = 0; // global +float sizeof_headers = 50.0; // V1 +}; diff --git a/binutils-2.25/gold/testsuite/ver_matching_test.sh b/binutils-2.25/gold/testsuite/ver_matching_test.sh new file mode 100755 index 00000000..4880efab --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_matching_test.sh @@ -0,0 +1,88 @@ +#!/bin/sh + +# ver_matching_test.sh -- a test case for version script matching + +# Copyright 2008, 2010 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with ver_matching_def.cc, a C++ source file +# constructed with several symbols mapped via version_script.map. We +# run readelf on the resulting shared object and check that each +# symbol has the correct version. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_missing() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_matching_test.stdout "V1 *sizeof_headers$" +check ver_matching_test.stdout "Base *globaoeufostuff$" +check ver_matching_test.stdout "V1 *globaoeufxstuff$" +check ver_matching_test.stdout "V2 *otherns::stuff$" +check ver_matching_test.stdout "Base *otherns::biz$" +check ver_matching_test.stdout "V1 *foo$" +check ver_matching_test.stdout "V1 *bar()$" +check ver_matching_test.stdout "Base *bar1()$" +check ver_matching_test.stdout "V1 *bar2$" +check ver_matching_test.stdout "V1 *myns::blah()$" +check ver_matching_test.stdout "V1 *myns::bip()$" +check ver_matching_test.stdout "V1 *myns::Stuff::Stuff()$" +check ver_matching_test.stdout "Base *Biz::Biz()$" +check ver_matching_test.stdout "V2 *blaza1$" +check ver_matching_test.stdout "V2 *blaza2$" +check ver_matching_test.stdout "V2 *blaza$" +check ver_matching_test.stdout "Base *bla$" +check ver_matching_test.stdout "V2 *blaz$" +check ver_matching_test.stdout "V2 *blazb$" + +# Stuff inside quotes is matched literally, so "baz(int*, char)" should +# not match the "baz(int *)" entry in the version table. +check ver_matching_test.stdout "V1 *baz(int\\*)$" +check_missing ver_matching_test.stdout "V1 *baz(int\\*, char)$" +check_missing ver_matching_test.stdout "V1 *baz(char\\*, int)$" + +check_missing ver_matching_test.stdout "foo1" + +# This symbols is injected by the linker itself, but should still +# follow local: +check_missing ver_matching_test.stdout "__bss_start" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/ver_test.h b/binutils-2.25/gold/testsuite/ver_test.h new file mode 100644 index 00000000..0b1aea8d --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test.h @@ -0,0 +1,43 @@ +// ver_test.h -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#ifdef USE_TRACE +#include +#define TRACE printf("In %s, %s()\n", __FILE__, __FUNCTION__); +#else +#define TRACE +#endif + +extern bool t1(); +extern bool t2(); +extern bool t3(); +extern bool t4(); + +extern "C" { + +extern int t1_2(); +extern int t2_2(); +extern int t3_2(); +extern int t4_2(); +extern int t4_2a(); + +} diff --git a/binutils-2.25/gold/testsuite/ver_test_1.cc b/binutils-2.25/gold/testsuite/ver_test_1.cc new file mode 100644 index 00000000..42a18ec9 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_1.cc @@ -0,0 +1,33 @@ +// ver_test_1.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "ver_test.h" + +// Calls an unversioned function in file1 that overrides +// a versioned function in file2. + +bool +t1() +{ + TRACE + return t1_2() == 11; +} diff --git a/binutils-2.25/gold/testsuite/ver_test_1.sh b/binutils-2.25/gold/testsuite/ver_test_1.sh new file mode 100755 index 00000000..edf73518 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_1.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# ver_test_1.sh -- check that protected symbols are local + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +syms=`grep ' HIDDEN ' ver_test_1.syms | grep ' GLOBAL '` +if test -n "$syms"; then + echo "Found GLOBAL HIDDEN symbols" + echo $syms + exit 1 +fi diff --git a/binutils-2.25/gold/testsuite/ver_test_10.script b/binutils-2.25/gold/testsuite/ver_test_10.script new file mode 100644 index 00000000..fa9f1759 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_10.script @@ -0,0 +1,30 @@ +## ver_test_10.script -- a test case for gold + +## Copyright 2008 Free Software Foundation, Inc. +## Written by Ian Lance Taylor . + +## This file is part of gold. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +## MA 02110-1301, USA. + +# Test having a version script with no version. + +{ + global: + t3_2; + local: + *; +}; diff --git a/binutils-2.25/gold/testsuite/ver_test_10.sh b/binutils-2.25/gold/testsuite/ver_test_10.sh new file mode 100755 index 00000000..68138a6d --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_10.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# ver_test_10.sh -- test global/local symbols + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with ver_test_4.script and ver_test_5.script. The +# symbol t2_2 is not defined when ver_test_5.script is used. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_10.syms "GLOBAL.*t3_2" +check ver_test_10.syms "LOCAL.*t4_2" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/ver_test_2.cc b/binutils-2.25/gold/testsuite/ver_test_2.cc new file mode 100644 index 00000000..b81e62e0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_2.cc @@ -0,0 +1,40 @@ +// ver_test_2.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "ver_test.h" + +int +t3_2() +{ + TRACE + return t1_2(); +} + +// Calls a versioned function in ver_test_4.cc which should be +// overridden by an unversioned function in the main program. + +int +t4_2() +{ + TRACE + return t4_2a(); +} diff --git a/binutils-2.25/gold/testsuite/ver_test_2.script b/binutils-2.25/gold/testsuite/ver_test_2.script new file mode 100644 index 00000000..15329d70 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_2.script @@ -0,0 +1,31 @@ +## ver_test_2.script -- a test case for gold + +## Copyright 2007, 2008 Free Software Foundation, Inc. +## Written by Cary Coutant . + +## This file is part of gold. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +## MA 02110-1301, USA. + +VER1 { +}; + +VER2 { + global: + t1_2; + t3_2; + t4_2a; +} VER1; diff --git a/binutils-2.25/gold/testsuite/ver_test_2.sh b/binutils-2.25/gold/testsuite/ver_test_2.sh new file mode 100755 index 00000000..0bd0f903 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_2.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# ver_test_2.sh -- test that symbol has correct version + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with ver_matching_def.cc, a C++ source file +# constructed with several symbols mapped via version_script.map. We +# run readelf on the resulting shared object and check that each +# symbol has the correct version. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_2.syms "t1_2@VER2" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/ver_test_3.cc b/binutils-2.25/gold/testsuite/ver_test_3.cc new file mode 100644 index 00000000..022a888f --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_3.cc @@ -0,0 +1,33 @@ +// ver_test_3.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "ver_test.h" + +int +t1_2() __attribute((visibility("hidden"))); + +int +t1_2() +{ + TRACE + return 11; +} diff --git a/binutils-2.25/gold/testsuite/ver_test_4.cc b/binutils-2.25/gold/testsuite/ver_test_4.cc new file mode 100644 index 00000000..404dfbc3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_4.cc @@ -0,0 +1,64 @@ +// ver_test_4.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "ver_test.h" + +__asm__(".symver t1_2_a,t1_2@@VER2"); + +extern "C" +int +t1_2_a() +{ + TRACE + return 12; +} + +__asm__(".symver t2_2_a,t2_2@VER1"); + +extern "C" +int +t2_2_a() +{ + TRACE + return 21; +} + +__asm__(".symver t2_2_b,t2_2@@VER2"); + +extern "C" +int +t2_2_b() +{ + TRACE + return 22; +} + + +// This function is given a version by the version script, and should +// be overridden by the main program. + +int +t4_2a() +{ + TRACE + return -42; +} diff --git a/binutils-2.25/gold/testsuite/ver_test_4.script b/binutils-2.25/gold/testsuite/ver_test_4.script new file mode 100644 index 00000000..e97c74eb --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_4.script @@ -0,0 +1,35 @@ +## ver_test_4.script -- a test case for gold + +## Copyright 2007, 2008 Free Software Foundation, Inc. +## Written by Cary Coutant . + +## This file is part of gold. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +## MA 02110-1301, USA. + +VER1 { + global: + t2_2; + local: + *; +}; + +VER2 { + global: + t1_2; + t4_2a; +} VER1; + diff --git a/binutils-2.25/gold/testsuite/ver_test_4.sh b/binutils-2.25/gold/testsuite/ver_test_4.sh new file mode 100755 index 00000000..3466a5d4 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_4.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# ver_test_4.sh -- test that version symbol is visible. + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_4.syms "t1_2@@VER2" +check ver_test_4.syms "t2_2@VER1" +check ver_test_4.syms "t2_2@@VER2" +check ver_test_4.syms "GLOBAL.*ABS.*VER1" +check ver_test_4.syms "GLOBAL.*ABS.*VER2" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/ver_test_5.cc b/binutils-2.25/gold/testsuite/ver_test_5.cc new file mode 100644 index 00000000..cffeae64 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_5.cc @@ -0,0 +1,29 @@ +// ver_test_5.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "ver_test.h" + +int +t3_2() +{ + return t2_2(); +} diff --git a/binutils-2.25/gold/testsuite/ver_test_5.script b/binutils-2.25/gold/testsuite/ver_test_5.script new file mode 100644 index 00000000..028cdd62 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_5.script @@ -0,0 +1,31 @@ +## ver_test_5.script -- a test case for gold + +## Copyright 2008 Free Software Foundation, Inc. +## Written by Ian Lance Taylor + +## This file is part of gold. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +## MA 02110-1301, USA. + +# This tests that we don't break when assigning a version to an +# undefined symbol. This is used with ver_test_2.cc, which defines +# t3_2 but only refers to t2_2. + +VER5 { + global: + t2_2; + t3_2; +}; diff --git a/binutils-2.25/gold/testsuite/ver_test_5.sh b/binutils-2.25/gold/testsuite/ver_test_5.sh new file mode 100755 index 00000000..2eacb455 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_5.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# ver_test_5.sh -- test that symbol has correct version + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with ver_test_4.script and ver_test_5.script. The +# symbol t2_2 is not defined when ver_test_5.script is used. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_5.syms "t3_2@@VER5" +check ver_test_5.syms "t2_2@VER2" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/ver_test_6.c b/binutils-2.25/gold/testsuite/ver_test_6.c new file mode 100644 index 00000000..44b483fd --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_6.c @@ -0,0 +1,35 @@ +/* ver_test_6.c -- test common symbol with shared library version + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of a common symbol in the main program and a + versioned symbol in a shared library. The common symbol in the + main program should override the shared library symbol. */ + +int t3_2; + +/* Since we don't use any of the arguments to main, we give it a void + prototype, so as to quiet gcc -Wstrict-prototypes. */ +int +main(void) +{ + return t3_2; +} diff --git a/binutils-2.25/gold/testsuite/ver_test_7.cc b/binutils-2.25/gold/testsuite/ver_test_7.cc new file mode 100644 index 00000000..d602a48f --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_7.cc @@ -0,0 +1,37 @@ +// ver_test_7.cc -- test weak duplicate symbol with version + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "ver_test.h" + +// This tests having a weak symbol which matches an entry in the +// version script following a hidden definition from .symver. There +// was a bug in which the weak symbol would cause the earlier symbol +// to become globally visible when it should have been hidden. + +extern "C" int t2_2() __attribute__ ((weak)); + +extern "C" +int +t2_2() +{ + return 23; +} diff --git a/binutils-2.25/gold/testsuite/ver_test_7.sh b/binutils-2.25/gold/testsuite/ver_test_7.sh new file mode 100755 index 00000000..04d35fc9 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_7.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# ver_test_7.sh -- test that symbol has correct version + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This file goes with ver_test_4.script and ver_test_5.script. The +# symbol t2_2 is not defined when ver_test_5.script is used. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_7.syms "t2_2@@VER2" +check ver_test_7.syms "t2_2@VER1" + +exit 0 diff --git a/binutils-2.25/gold/testsuite/ver_test_8.script b/binutils-2.25/gold/testsuite/ver_test_8.script new file mode 100644 index 00000000..b5bfc3f0 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_8.script @@ -0,0 +1,26 @@ +## ver_test_8.script -- a test case for gold + +## Copyright 2008 Free Software Foundation, Inc. +## Written by Ian Lance Taylor + +## This file is part of gold. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +## MA 02110-1301, USA. + +VER_TEST_8 { + global: + *; +}; diff --git a/binutils-2.25/gold/testsuite/ver_test_9.cc b/binutils-2.25/gold/testsuite/ver_test_9.cc new file mode 100644 index 00000000..5d06d4ec --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_9.cc @@ -0,0 +1,50 @@ +// ver_test_9.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include "ver_test.h" + +bool +t1() +{ + return true; +} + +int +t2_2() +{ + TRACE + return 22; +} + +int +t3_2() +{ + TRACE + return 12; +} + +int +t4_2() +{ + TRACE + return 42; +} diff --git a/binutils-2.25/gold/testsuite/ver_test_main.cc b/binutils-2.25/gold/testsuite/ver_test_main.cc new file mode 100644 index 00000000..f8a7b755 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_main.cc @@ -0,0 +1,74 @@ +// ver_test_main.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include + +#include "ver_test.h" + +int +main() +{ + assert(t1()); + assert(t2()); + assert(t3()); + assert(t4()); + return 0; +} + +// Calls a function in file2 that has two versions and verifies +// that the default version is called. + +bool +t2() +{ + TRACE + return t2_2() == 22; +} + +// Call a function in a shared library that calls explicitly +// the version of t1_2() defined in another shared library. + +bool +t3() +{ + TRACE + return t3_2() == 12; +} + +// Call a function in a shared library that calls a function which is +// defined in the main program and defined with a default version in +// the shared library. The symbol in the main program should override +// even though it doesn't have a version. + +bool +t4() +{ + TRACE + return t4_2() == 42; +} + +int +t4_2a() +{ + TRACE + return 42; +} diff --git a/binutils-2.25/gold/testsuite/ver_test_main_2.cc b/binutils-2.25/gold/testsuite/ver_test_main_2.cc new file mode 100644 index 00000000..1599e0f3 --- /dev/null +++ b/binutils-2.25/gold/testsuite/ver_test_main_2.cc @@ -0,0 +1,32 @@ +// ver_test_main_2.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include + +#include "ver_test.h" + +int +main() +{ + assert(t1_2() == 12); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/version_script.map b/binutils-2.25/gold/testsuite/version_script.map new file mode 100644 index 00000000..d3ba02ef --- /dev/null +++ b/binutils-2.25/gold/testsuite/version_script.map @@ -0,0 +1,34 @@ +V1 { + global: + extern "C++" + { + "bar()"; + "baz(int*)"; + }; + foo; + blaza*; + bar*; + # Make sure we parse "extern" when it's not first thing in the section. + extern "C++" + { + myns::*; + }; + # Would be a keyword in a linker script. + SECTIONS; + sizeof_headers; + # Crazy globbiness + glob*f[^A-Zo]st?ff; + + local: + *foo*; +}; + +V2 { + global: + extern "C++" { + otherns::stuff; + }; + blaz*; + local: + _[^A-Z]*; +} V1; diff --git a/binutils-2.25/gold/testsuite/weak_alias_test.script b/binutils-2.25/gold/testsuite/weak_alias_test.script new file mode 100644 index 00000000..1911631d --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_alias_test.script @@ -0,0 +1,8 @@ +VER1 { + global: + versioned_symbol; +}; +VER2 { + global: + versioned_alias; +}; diff --git a/binutils-2.25/gold/testsuite/weak_alias_test_1.cc b/binutils-2.25/gold/testsuite/weak_alias_test_1.cc new file mode 100644 index 00000000..0ad92657 --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_alias_test_1.cc @@ -0,0 +1,52 @@ +// weak_alias_test_1.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Define a weak symbol. + +extern int weak_symbol __attribute__ ((weak)); +int weak_symbol = 1; + +// Define a strong symbol with a weak alias. + +int strong_aliased = 2; +extern int weak_aliased __attribute__ ((weak, alias ("strong_aliased"))); + +// And another one. + +int strong_aliased_2 = 5; +extern int weak_aliased_2 __attribute__ ((weak, alias ("strong_aliased_2"))); + +// And a third. + +int strong_aliased_3 = 7; +extern int weak_aliased_3 __attribute__ ((weak, alias ("strong_aliased_3"))); + +// And a fourth. + +int strong_aliased_4 = 8; +extern int weak_aliased_4 __attribute__ ((weak, alias ("strong_aliased_4"))); + +// We want a symbol whose name is the same length as "strong_symbol", +// so that weak_symbol here lines up with weak_symbol in +// weak_alias_test_2.so. + +int Strong_Symbol = 101; diff --git a/binutils-2.25/gold/testsuite/weak_alias_test_2.cc b/binutils-2.25/gold/testsuite/weak_alias_test_2.cc new file mode 100644 index 00000000..8294525f --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_alias_test_2.cc @@ -0,0 +1,41 @@ +// weak_alias_test_2.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Define a strong symbol. + +int strong_symbol = 2; + +// Define a weak symbol. This will be overridden by the weak symbol +// in weak_alias_test_1.cc. + +extern int weak_symbol __attribute__ ((weak)); +int weak_symbol = 3; + +// These are overridden by weak_alias_test_1.cc +int strong_aliased = 100; +extern int weak_aliased __attribute__ ((weak, alias ("strong_aliased"))); +int strong_aliased_2 = 102; +extern int weak_aliased_2 __attribute__ ((weak, alias ("strong_aliased_2"))); +int strong_aliased_3 = 104; +extern int weak_aliased_3 __attribute__ ((weak, alias ("strong_aliased_3"))); +int strong_aliased_4 = 106; +extern int weak_aliased_4 __attribute__ ((weak, alias ("strong_aliased_4"))); diff --git a/binutils-2.25/gold/testsuite/weak_alias_test_3.cc b/binutils-2.25/gold/testsuite/weak_alias_test_3.cc new file mode 100644 index 00000000..99152e2d --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_alias_test_3.cc @@ -0,0 +1,26 @@ +// weak_alias_test_3.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This is linked into the main program. + +extern int weak_symbol __attribute__ ((weak)); +int weak_symbol = 4; diff --git a/binutils-2.25/gold/testsuite/weak_alias_test_4.cc b/binutils-2.25/gold/testsuite/weak_alias_test_4.cc new file mode 100644 index 00000000..714c6d63 --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_alias_test_4.cc @@ -0,0 +1,68 @@ +// weak_alias_test_4.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Verify that all the symbols look right from a shared library. + +extern int weak_symbol; +extern int strong_aliased; +extern int weak_aliased; +extern int strong_aliased_2; +extern int weak_aliased_2; +extern int strong_aliased_3; +extern int weak_aliased_3; +extern int strong_aliased_4; +extern int weak_aliased_4; +extern int strong_symbol; + +bool +t1() +{ + // Should come from weak_alias_test_3.cc. + if (weak_symbol != 4) + return false; + + // Should come from weak_alias_test_main.cc. + if (strong_aliased != 3) + return false; + + // weak_aliased need not match strong_aliased, which is overridden + // by weak_test_main.cc. + + // Should come from weak_alias_test_main.cc. + if (weak_aliased_2 != 6) + return false; + + // strong_aliased_2 need not match weak_aliased_2, which is + // overidden by weak_test_main.cc. + + // The others should match. + if (weak_aliased_3 != 7 || strong_aliased_3 != 7) + return false; + if (weak_aliased_4 != 8 || strong_aliased_4 != 8) + return false; + + // Should come from weak_alias_test_2.cc. + if (strong_symbol != 2) + return false; + + return true; +} diff --git a/binutils-2.25/gold/testsuite/weak_alias_test_5.cc b/binutils-2.25/gold/testsuite/weak_alias_test_5.cc new file mode 100644 index 00000000..df48092c --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_alias_test_5.cc @@ -0,0 +1,39 @@ +// weak_alias_test_5.cc -- test versioned weak aliases for gold + +// Copyright 2011 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Define a versioned symbol. +int versioned_symbol = 1; +__asm__(".symver versioned_symbol,versioned_symbol@@VER1"); + +// Define a weak alias for the versioned symbol, with a different version. +extern int versioned_alias __attribute__ ((weak, alias("versioned_symbol"))); +__asm__(".symver versioned_alias,versioned_alias@@VER2"); + +bool +t2() +{ + if (versioned_symbol != 1) + return false; + if (versioned_alias != 1) + return false; + return true; +} diff --git a/binutils-2.25/gold/testsuite/weak_alias_test_main.cc b/binutils-2.25/gold/testsuite/weak_alias_test_main.cc new file mode 100644 index 00000000..e3f86207 --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_alias_test_main.cc @@ -0,0 +1,80 @@ +// weak_alias_test_main.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include + +// Defined in both weak_alias_test_1.cc and weak_alias_test_2.cc, but +// we should get the one in weak_alias_test_1.cc. +extern int weak_symbol; + +// Defined in weak_alias_test_2.cc. +extern int strong_symbol; + +// weak_aliased is an alias for this. +int strong_aliased = 3; + +// Defined as a weak alias in weak_alias_test_1.cc. +int weak_aliased_2 = 6; + +// Defined in weak_alias_test_1.cc +extern int strong_aliased_3; +extern int weak_aliased_4; + +// Defined in weak_alias_test_5.cc +extern int versioned_symbol; +extern int versioned_alias; + +extern bool t1(); +extern bool t2(); + +int +main() +{ + // weak_symbol should come from weak_alias_test_3.cc. + assert(weak_symbol == 4); + + // strong_symbol should come from weak_alias_test_2.cc. + assert(strong_symbol == 2); + + // strong_aliased should come from this file, above. + assert(strong_aliased == 3); + + // weak_aliased_2 should come from this file, above. + assert(weak_aliased_2 == 6); + + // strong_aliased_3 should come from weak_alias_test_1.cc. + assert(strong_aliased_3 == 7); + + // weak_aliased_4 should come from weak_alias_test_1.cc. + assert(weak_aliased_4 == 8); + + // Make sure the symbols look right from a shared library. + assert(t1()); + + // versioned_symbol comes from weak_alias_test_5.cc. + assert(versioned_symbol == 1); + // So does versioned_alias. + assert(versioned_alias == 1); + + // Make sure the versioned symbols look right from a shared library. + assert(t2()); +} diff --git a/binutils-2.25/gold/testsuite/weak_plt.sh b/binutils-2.25/gold/testsuite/weak_plt.sh new file mode 100755 index 00000000..6c419b80 --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_plt.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +# weak_plt.sh -- test calling a weak undefined function. + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +# This tests a call to a weak undefined function. We use LD_PRELOAD +# to force the function to be defined. + +LD_PRELOAD=./weak_plt_shared.so ./weak_plt diff --git a/binutils-2.25/gold/testsuite/weak_plt_main.cc b/binutils-2.25/gold/testsuite/weak_plt_main.cc new file mode 100644 index 00000000..33cb35eb --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_plt_main.cc @@ -0,0 +1,33 @@ +// weak_plt_main.cc -- test call to weak undefined function for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include + +extern int weak_function() __attribute__((weak)); + +int +main() +{ + if (weak_function) + return weak_function(); + return 0; +} diff --git a/binutils-2.25/gold/testsuite/weak_plt_shared.cc b/binutils-2.25/gold/testsuite/weak_plt_shared.cc new file mode 100644 index 00000000..8d82005d --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_plt_shared.cc @@ -0,0 +1,29 @@ +// weak_plt_shared.cc -- test call to weak undefined function for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#include + +int +weak_function() +{ + return 0; +} diff --git a/binutils-2.25/gold/testsuite/weak_test.cc b/binutils-2.25/gold/testsuite/weak_test.cc new file mode 100644 index 00000000..c14a688d --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_test.cc @@ -0,0 +1,47 @@ +// weak_test.cc -- test handling of weak symbols for gold + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// This provides a set of test functions for TLS variables. The +// functions are called by a main function in tls_test_main.cc. This +// lets us test TLS access from a shared library. We currently don't +// bother to test TLS access between two different files, on the +// theory that that is no more complicated than ordinary variable +// access between files. + +// We test that we correctly deal with weak symbols defined in +// other libraries (in this case, libc). We need to make sure we +// copy the associated GLOBAL reloc when we copy a WEAK reloc. + + +#include + +int +main() +{ + extern char** environ; // defined in libc + if (environ == NULL) + { + fprintf(stderr, "FAILED the environ test: environ is NULL\n"); + return 1; + } + return 0; +} diff --git a/binutils-2.25/gold/testsuite/weak_undef.h b/binutils-2.25/gold/testsuite/weak_undef.h new file mode 100644 index 00000000..17d5f02e --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_undef.h @@ -0,0 +1,25 @@ +// weak_undef.h -- test handling of weak undefined symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +extern int t1(); +extern int t2(); +extern int t3(); diff --git a/binutils-2.25/gold/testsuite/weak_undef_file1.cc b/binutils-2.25/gold/testsuite/weak_undef_file1.cc new file mode 100644 index 00000000..fd288704 --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_undef_file1.cc @@ -0,0 +1,75 @@ +// weak_undef_file1.cc -- test handling of weak undefined symbols for gold + +// Copyright 2008, 2010 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// We test that we correctly deal with weak undefined symbols. +// We need to make sure that the symbol is resolved to zero +// by the linker and that no dynamic relocation is generated. + +// This source is used to build a shared library that defines +// an arbitrary symbol other than the weak undefined symbol +// referenced by the main program. The main program will be +// linked with this library so that the symbol remains undefined. +// Through the use of the embedded RPATH, the program will load +// an alternate shared library that does define the symbol, +// so that we can detect whether the symbol was left for runtime +// resolution. + +#include + +#include "weak_undef.h" + +int is_such_symbol_ = 1; + +// We also define a symbol that is not defined by the alternate +// library. The main program contains a weak reference to this +// symbol, and tests that the reference remains weak even after +// the definition was found at link time. + +int link_time_only = 1; + +extern int v2 __attribute__ ((weak)); + +int *v3 = &v2; + +int +t1() +{ + return is_such_symbol_; +} + +// Test that a weak reference from a shared library to a symbol +// defined in the main program does get resolved. + +int +t2() +{ + return (&v2 == NULL) ? -1 : v2; +} + +// Test that a weak reference from a shared library to a symbol +// defined in the main program does get resolved. + +int +t3() +{ + return (v3 == NULL) ? -1 : *v3; +} diff --git a/binutils-2.25/gold/testsuite/weak_undef_file2.cc b/binutils-2.25/gold/testsuite/weak_undef_file2.cc new file mode 100644 index 00000000..33701b2c --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_undef_file2.cc @@ -0,0 +1,70 @@ +// weak_undef_file2.cc -- test handling of weak undefined symbols for gold + +// Copyright 2008, 2010 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// We test that we correctly deal with weak undefined symbols. +// We need to make sure that the symbol is resolved to zero +// by the linker and that no dynamic relocation is generated. + +// This source is used to build a shared library that defines +// the weak undefined symbol referenced by the main program. +// The main program will be linked with a library that does not +// provide this definition, so that the symbol remains undefined. +// Through the use of the embedded RPATH, the program will load +// this alternate shared library that does define the symbol, +// so that we can detect whether the symbol was left for runtime +// resolution. + + +#include + +#include "weak_undef.h" + +int is_such_symbol_ = 1; +int no_such_symbol_ = 2; + +extern int v2 __attribute__ ((weak)); + +int *v3 = &v2; + +int +t1() +{ + return no_such_symbol_; +} + +// Test that a weak reference from a shared library to a symbol +// defined in the main program does get resolved. + +int +t2() +{ + return (&v2 == NULL) ? -1 : v2; +} + +// Test that a weak reference from a shared library to a symbol +// defined in the main program does get resolved. + +int +t3() +{ + return (v3 == NULL) ? -1 : *v3; +} diff --git a/binutils-2.25/gold/testsuite/weak_undef_test.cc b/binutils-2.25/gold/testsuite/weak_undef_test.cc new file mode 100644 index 00000000..880d5cdc --- /dev/null +++ b/binutils-2.25/gold/testsuite/weak_undef_test.cc @@ -0,0 +1,106 @@ +// weak_undef_test.cc -- test handling of weak undefined symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// We test that we correctly deal with weak undefined symbols. +// We need to make sure that a weak undefined symbol in the main +// program is resolved to zero by the linker and that no dynamic +// relocation is generated. We also make sure that a weak undefined +// symbol in a shared library can resolve to a symbol in the main +// program. + +// This file will be linked with a shared library that does not +// define the symbol, so that the symbol remains undefined. +// Through the use of LD_LIBRARY_PATH, the program will load +// an alternate shared library that does define the symbol, +// so that we can detect whether the symbol was left for runtime +// resolution. + +// Similarly, this file will be linked with a shared library that +// does define a different symbol, and loaded with an alternate +// shared library that does not define that symbol. We check that +// the weak reference remains weak, and that it is resolved to +// zero at runtime. + + +#include +#include "weak_undef.h" + +extern int no_such_symbol_ __attribute__ ((weak)); + +extern int link_time_only __attribute__ ((weak)); + +int *p1 = &no_such_symbol_; + +int *p2 = &link_time_only; + +int v2 = 42; + +int +main() +{ + int status = 0; + int v; + + if ((v = t1()) != 2) + { + fprintf(stderr, "FAILED weak undef test 1: %s\n", + "bound to wrong library"); + status = 1; + } + + if ((v = t2()) != 42) + { + fprintf(stderr, "FAILED weak undef test 2: expected %d, got %d\n", + 42, v); + status = 1; + } + + if ((v = t3()) != 42) + { + fprintf(stderr, "FAILED weak undef test 3: expected %d, got %d\n", + 42, v); + status = 1; + } + + if (&no_such_symbol_ != NULL) + { + fprintf(stderr, "FAILED weak undef test 4: %s\n", + "&no_such_symbol_ is not NULL"); + status = 1; + } + + if (p1 != NULL) + { + fprintf(stderr, "FAILED weak undef test 5: %s\n", + "p1 is not NULL"); + status = 1; + } + + if (p2 != NULL) + { + fprintf(stderr, "FAILED weak undef test 6: %s\n", + "p2 is not NULL"); + status = 1; + } + + return status; +} -- cgit v1.2.3