summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2011-06-09 18:18:43 +0000
committerCary Coutant <ccoutant@google.com>2011-06-09 18:18:43 +0000
commit3f7bcfca83a86fb9b4394333822b3ec35c7d0fd6 (patch)
tree7895b6625c557aff0627a9517bf39a2089f113c3
parentea7242b7fbb150f2807df8885d388d6f22f84d5c (diff)
downloadbinutils-redhat-3f7bcfca83a86fb9b4394333822b3ec35c7d0fd6.tar.gz
PR gold/12804
* gold/gold.cc (queue_initial_tasks): Warn if --incremental is used with --compress-debug-sections. * gold/object.cc (Sized_relobj_file::do_layout): Report uncompressed size of compressed input sections.
-rw-r--r--gold/ChangeLog8
-rw-r--r--gold/gold.cc3
-rw-r--r--gold/object.cc9
3 files changed, 18 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 15b0b0b273..5c705bf9b3 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,11 @@
+2011-06-09 Cary Coutant <ccoutant@google.com>
+
+ PR gold/12804
+ * gold/gold.cc (queue_initial_tasks): Warn if --incremental is
+ used with --compress-debug-sections.
+ * gold/object.cc (Sized_relobj_file::do_layout): Report
+ uncompressed size of compressed input sections.
+
2011-06-08 Cary Coutant <ccoutant@google.com>
PR gold/12804
diff --git a/gold/gold.cc b/gold/gold.cc
index 95c226c5dd..f68ba3e71f 100644
--- a/gold/gold.cc
+++ b/gold/gold.cc
@@ -200,6 +200,9 @@ queue_initial_tasks(const General_options& options,
gold_error(_("incremental linking is incompatible with --icf"));
if (options.has_plugins())
gold_error(_("incremental linking is incompatible with --plugin"));
+ if (strcmp(options.compress_debug_sections(), "none") != 0)
+ gold_error(_("incremental linking is incompatible with "
+ "--compress-debug-sections"));
if (parameters->incremental_update())
{
diff --git a/gold/object.cc b/gold/object.cc
index b14c85db87..b51cbfee5d 100644
--- a/gold/object.cc
+++ b/gold/object.cc
@@ -1299,8 +1299,13 @@ Sized_relobj_file<size, big_endian>::do_layout(Symbol_table* symtab,
&& (shdr.get_sh_type() == elfcpp::SHT_PROGBITS
|| shdr.get_sh_type() == elfcpp::SHT_NOBITS
|| shdr.get_sh_type() == elfcpp::SHT_NOTE))
- incremental_inputs->report_input_section(this, i, name,
- shdr.get_sh_size());
+ {
+ off_t sh_size = shdr.get_sh_size();
+ section_size_type uncompressed_size;
+ if (this->section_is_compressed(i, &uncompressed_size))
+ sh_size = uncompressed_size;
+ incremental_inputs->report_input_section(this, i, name, sh_size);
+ }
if (discard)
{