[PATCH] Fix GOLD SIGBUS on 64-bit sparc

David Miller davem@davemloft.net
Thu Apr 12 07:37:00 GMT 2012


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;
 	}



More information about the Binutils mailing list