[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