This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix GOLD SIGBUS on 64-bit sparc


The 64-bit fields of these range blobs emitted by the gdb-index code
are not aligned.

gold/

	* gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
	writing out 64-bit part of ranges.

diff --git a/gold/gdb-index.cc b/gold/gdb-index.cc
index 11b732a..3a959e4 100644
--- a/gold/gdb-index.cc
+++ b/gold/gdb-index.cc
@@ -1166,8 +1166,8 @@ Gdb_index::do_write(Output_file* of)
 	      base = (os->address()
 		      + object->output_section_offset(range.shndx));
 	    }
-	  elfcpp::Swap<64, false>::writeval(pov, base + range.start);
-	  elfcpp::Swap<64, false>::writeval(pov + 8, base + range.end);
+	  elfcpp::Swap_unaligned<64, false>::writeval(pov, base + range.start);
+	  elfcpp::Swap_unaligned<64, false>::writeval(pov + 8, base + range.end);
 	  elfcpp::Swap<32, false>::writeval(pov + 16, cu_index);
 	  pov += 20;
 	}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]