This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] Fix GOLD SIGBUS on 64-bit sparc
- From: David Miller <davem at davemloft dot net>
- To: binutils at sourceware dot org
- Date: Wed, 11 Apr 2012 22:39:29 -0400 (EDT)
- Subject: [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;
}