aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@redhat.com>2012-04-17 02:10:39 +0000
committerDavid S. Miller <davem@redhat.com>2012-04-17 02:10:39 +0000
commit0bc964fc7982793fd7d54dd6017774db1a19e3c6 (patch)
tree82bdb11a2ee9d0d89950d39ca80ba12ba266d0a5
parent661d7a80a2bcfc452a9355e6b474673ae48c61a8 (diff)
downloadgdb-0bc964fc7982793fd7d54dd6017774db1a19e3c6.zip
gdb-0bc964fc7982793fd7d54dd6017774db1a19e3c6.tar.gz
gdb-0bc964fc7982793fd7d54dd6017774db1a19e3c6.tar.bz2
gold: Fix 64-bit sparc GOLD crash in gdb-index code.
gold/ * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when writing out 64-bit part of ranges.
-rw-r--r--gold/ChangeLog3
-rw-r--r--gold/gdb-index.cc4
2 files changed, 5 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 51779fb..c9bfd79 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,5 +1,8 @@
2012-04-16 David S. Miller <davem@davemloft.net>
+ * gdb-index.cc (Gdb_index::do_write): Use Swap_unaligned when
+ writing out 64-bit part of ranges.
+
* Makefile.am: Build IFUNC tests with -fPIC and -fPIE instead of
-fpic and -fpie respectively.
* Makefile.in: Regenerate.
diff --git a/gold/gdb-index.cc b/gold/gdb-index.cc
index 16e3871..07ba2ab 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;
}