Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/external/gpl3/binutils.old/dist/gold/sparc.cc,v rcsdiff: /ftp/cvs/cvsroot/src/external/gpl3/binutils.old/dist/gold/sparc.cc,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -p -r1.5 -r1.5.2.1 --- src/external/gpl3/binutils.old/dist/gold/sparc.cc 2018/04/14 15:49:42 1.5 +++ src/external/gpl3/binutils.old/dist/gold/sparc.cc 2020/04/08 14:05:48 1.5.2.1 @@ -1,6 +1,6 @@ // sparc.cc -- sparc target support for gold. -// Copyright (C) 2008-2016 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 Free Software Foundation, Inc. // Written by David S. Miller . // This file is part of gold. @@ -499,6 +499,7 @@ Target::Target_info Target_sparc<32, tru NULL, // attributes_vendor "_start", // entry_symbol_name 32, // hash_entry_size + elfcpp::SHT_PROGBITS, // unwind_section_type }; template<> @@ -527,6 +528,7 @@ Target::Target_info Target_sparc<64, tru NULL, // attributes_vendor "_start", // entry_symbol_name 32, // hash_entry_size + elfcpp::SHT_PROGBITS, // unwind_section_type }; // We have to take care here, even when operating in little-endian @@ -2150,6 +2152,7 @@ Target_sparc::Scan::ch case elfcpp::R_SPARC_RELATIVE: case elfcpp::R_SPARC_IRELATIVE: case elfcpp::R_SPARC_COPY: + case elfcpp::R_SPARC_32: case elfcpp::R_SPARC_64: case elfcpp::R_SPARC_GLOB_DAT: case elfcpp::R_SPARC_JMP_SLOT: @@ -2304,7 +2307,7 @@ Target_sparc::Scan::lo reloc.get_r_addend(), is_ifunc); break; } - /* Fall through. */ + // Fall through. case elfcpp::R_SPARC_HIX22: case elfcpp::R_SPARC_LOX10: @@ -2814,6 +2817,7 @@ Target_sparc::Scan::gl // and code transform the GOT load into an addition. break; } + // Fall through. case elfcpp::R_SPARC_GOT10: case elfcpp::R_SPARC_GOT13: case elfcpp::R_SPARC_GOT22: @@ -3353,6 +3357,7 @@ Target_sparc::Relocate gdop_valid = true; break; } + // Fall through. case elfcpp::R_SPARC_GOT10: case elfcpp::R_SPARC_GOT13: case elfcpp::R_SPARC_GOT22: @@ -3468,6 +3473,13 @@ Target_sparc::Relocate Reloc::lo10(view, object, psymval, addend); break; + case elfcpp::R_SPARC_GOTDATA_OP_LOX10: + if (gdop_valid) + { + Reloc::gdop_lox10(view, got_offset); + break; + } + // Fall through. case elfcpp::R_SPARC_GOT10: Reloc::lo10(view, got_offset, addend); break; @@ -3486,13 +3498,6 @@ Target_sparc::Relocate } break; - case elfcpp::R_SPARC_GOTDATA_OP_LOX10: - if (gdop_valid) - { - Reloc::gdop_lox10(view, got_offset); - break; - } - /* Fall through. */ case elfcpp::R_SPARC_GOT13: Reloc::rela32_13(view, got_offset, addend); break; @@ -3503,7 +3508,7 @@ Target_sparc::Relocate Reloc::gdop_hix22(view, got_offset); break; } - /* Fall through. */ + // Fall through. case elfcpp::R_SPARC_GOT22: Reloc::hi22(view, got_offset, addend); break; @@ -3727,7 +3732,7 @@ Target_sparc::Relocate const bool is_final = (gsym == NULL - ? !parameters->options().output_is_position_independent() + ? !parameters->options().shared() : gsym->final_value_is_known()); const tls::Tls_optimization optimized_type = optimize_tls_reloc(is_final, r_type); @@ -4161,7 +4166,7 @@ Target_sparc::Relocate if (op3 != 0x3d) { // First check RS1 - reg = (delay_insn >> 14) & 0x15; + reg = (delay_insn >> 14) & 0x1f; if (reg == 15) return;