aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gold/ChangeLog10
-rw-r--r--gold/gold.h2
-rw-r--r--gold/object.cc2
-rw-r--r--gold/reduced_debug_output.cc34
-rw-r--r--gold/version.cc1
5 files changed, 29 insertions, 20 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 19a5ad0..579835a 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,13 @@
+2009-01-28 Ian Lance Taylor <iant@google.com>
+
+ * gold.h: Include <cstring> and <stdint.h>.
+ * version.cc: Include <cstdio>.
+ * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
+ warning.
+ * reduced_debug_output.cc (insert_into_vector): Rename from
+ Insert_into_vector; change all callers. Use Swap_unaligned to
+ avoid aliasing issue; remove union since it is unnecessary.
+
2009-01-27 Sriraman Tallam <tmsriram@google.com>
* Makefile.am (CCFILES): Add gc.cc.
diff --git a/gold/gold.h b/gold/gold.h
index 7e38668..964de32 100644
--- a/gold/gold.h
+++ b/gold/gold.h
@@ -27,6 +27,8 @@
#include "ansidecl.h"
#include <cstddef>
+#include <cstring>
+#include <stdint.h>
#include <sys/types.h>
#ifndef ENABLE_NLS
diff --git a/gold/object.cc b/gold/object.cc
index 9030abe..a05dcfc 100644
--- a/gold/object.cc
+++ b/gold/object.cc
@@ -913,7 +913,7 @@ Sized_relobj<size, big_endian>::do_layout(Symbol_table* symtab,
&& symtab->gc()->is_worklist_ready());
if (shnum == 0)
return;
- Symbols_data* gc_sd;
+ Symbols_data* gc_sd = NULL;
if (is_gc_pass_one)
{
// During garbage collection save the symbols data to use it when
diff --git a/gold/reduced_debug_output.cc b/gold/reduced_debug_output.cc
index d195cfd..4834694 100644
--- a/gold/reduced_debug_output.cc
+++ b/gold/reduced_debug_output.cc
@@ -68,19 +68,15 @@ get_length_as_unsigned_LEB_128(uint64_t value)
}
template <int valsize>
-void Insert_into_vector(std::vector<unsigned char>* destination,
+void insert_into_vector(std::vector<unsigned char>* destination,
typename elfcpp::Valtype_base<valsize>::Valtype value)
{
- union
- {
- unsigned char buffer[valsize / 8];
- long long align;
- } u;
+ unsigned char buffer[valsize / 8];
if (parameters->target().is_big_endian())
- elfcpp::Swap<valsize, true>::writeval(u.buffer, value);
+ elfcpp::Swap_unaligned<valsize, true>::writeval(buffer, value);
else
- elfcpp::Swap<valsize, false>::writeval(u.buffer, value);
- destination->insert(destination->end(), u.buffer, u.buffer + valsize / 8);
+ elfcpp::Swap_unaligned<valsize, false>::writeval(buffer, value);
+ destination->insert(destination->end(), buffer, buffer + valsize / 8);
}
template <int valsize>
@@ -356,15 +352,15 @@ void Output_reduced_debug_info_section::set_final_data_size()
return;
}
- Insert_into_vector<32>(&this->data_, 0xFFFFFFFF);
- Insert_into_vector<32>(&this->data_, 0);
- Insert_into_vector<64>(
+ insert_into_vector<32>(&this->data_, 0xFFFFFFFF);
+ insert_into_vector<32>(&this->data_, 0);
+ insert_into_vector<64>(
&this->data_,
(11 + get_length_as_unsigned_LEB_128(abbreviation_number)
+ die_end - debug_info));
- Insert_into_vector<16>(&this->data_, version);
- Insert_into_vector<64>(&this->data_, 0);
- Insert_into_vector<8>(&this->data_, address_size);
+ insert_into_vector<16>(&this->data_, version);
+ insert_into_vector<64>(&this->data_, 0);
+ insert_into_vector<8>(&this->data_, address_size);
write_unsigned_LEB_128(&this->data_, abbreviation_number);
this->data_.insert(this->data_.end(), debug_info, die_end);
}
@@ -398,13 +394,13 @@ void Output_reduced_debug_info_section::set_final_data_size()
return;
}
- Insert_into_vector<32>(
+ insert_into_vector<32>(
&this->data_,
(7 + get_length_as_unsigned_LEB_128(abbreviation_number)
+ die_end - debug_info));
- Insert_into_vector<16>(&this->data_, version);
- Insert_into_vector<32>(&this->data_, 0);
- Insert_into_vector<8>(&this->data_, address_size);
+ insert_into_vector<16>(&this->data_, version);
+ insert_into_vector<32>(&this->data_, 0);
+ insert_into_vector<8>(&this->data_, address_size);
write_unsigned_LEB_128(&this->data_, abbreviation_number);
this->data_.insert(this->data_.end(), debug_info, die_end);
}
diff --git a/gold/version.cc b/gold/version.cc
index 2e4b777..71d163b 100644
--- a/gold/version.cc
+++ b/gold/version.cc
@@ -23,6 +23,7 @@
#include "gold.h"
#include <string>
+#include <cstdio>
#include "../bfd/bfdver.h"