aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <respindola@mozilla.com>2009-12-02 16:27:15 +0000
committerRafael Ávila de Espíndola <respindola@mozilla.com>2009-12-02 16:27:15 +0000
commita45500ae379230cefa3b76d4b5c902d7c8e858ca (patch)
tree05181c492e4eb8e531412c1ed1bd5e38d56ffcba /gold
parent325e6408a8d7bc42a5997c34615c91cac1e0a6b0 (diff)
downloadfsf-binutils-gdb-a45500ae379230cefa3b76d4b5c902d7c8e858ca.zip
fsf-binutils-gdb-a45500ae379230cefa3b76d4b5c902d7c8e858ca.tar.gz
fsf-binutils-gdb-a45500ae379230cefa3b76d4b5c902d7c8e858ca.tar.bz2
2009-12-02 Rafael Avila de Espindola <espindola@google.com>
* incremental-dump.cc (main): Check that the offeset of a script is 0. * incremental.cc (Incremental_inputs::sized_create_inputs_section_data): Write 0 for the data_offset of scripts.
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/incremental-dump.cc6
-rw-r--r--gold/incremental.cc16
3 files changed, 28 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 7368334..f727c5f 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,5 +1,11 @@
2009-12-02 Rafael Avila de Espindola <espindola@google.com>
+ * incremental-dump.cc (main): Check that the offeset of a script is 0.
+ * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
+ Write 0 for the data_offset of scripts.
+
+2009-12-02 Rafael Avila de Espindola <espindola@google.com>
+
* testsuite/Makefile.am: Add the incremental_test.sh test.
* testsuite/incremental_test.sh: New.
* testsuite/incremental_test_1.c: New.
diff --git a/gold/incremental-dump.cc b/gold/incremental-dump.cc
index daaee8a..9e750cb 100644
--- a/gold/incremental-dump.cc
+++ b/gold/incremental-dump.cc
@@ -166,6 +166,12 @@ main(int argc, char** argv)
break;
case INCREMENTAL_INPUT_SCRIPT:
printf("Linker script\n");
+ if (input->data_offset != 0)
+ {
+ fprintf(stderr,"%s: %s: %u is a script but offset is not zero",
+ argv[0], filename, i);
+ return 1;
+ }
break;
case INCREMENTAL_INPUT_INVALID:
default:
diff --git a/gold/incremental.cc b/gold/incremental.cc
index 97b3eea..e89372a 100644
--- a/gold/incremental.cc
+++ b/gold/incremental.cc
@@ -650,6 +650,22 @@ Incremental_inputs::sized_create_inputs_section_data()
int filename_offset =
this->strtab_->get_offset_from_key(it->second.filename_key);
entry.put_filename_offset(filename_offset);
+ switch (it->second.type)
+ {
+ case INCREMENTAL_INPUT_SCRIPT:
+ entry.put_data_offset(0);
+ break;
+ case INCREMENTAL_INPUT_ARCHIVE:
+ case INCREMENTAL_INPUT_OBJECT:
+ case INCREMENTAL_INPUT_SHARED_LIBRARY:
+ // TODO: add per input data. Currently we store
+ // an out-of-bounds offset for future version of gold to reject
+ // such an incremental_inputs section.
+ entry.put_data_offset(0xffffffff);
+ break;
+ default:
+ gold_unreachable();
+ }
// TODO: add per input data and timestamp. Currently we store
// an out-of-bounds offset for future version of gold to reject
// such an incremental_inputs section.