diff options
author | Rafael Ávila de Espíndola <respindola@mozilla.com> | 2009-12-02 16:27:15 +0000 |
---|---|---|
committer | Rafael Ávila de Espíndola <respindola@mozilla.com> | 2009-12-02 16:27:15 +0000 |
commit | a45500ae379230cefa3b76d4b5c902d7c8e858ca (patch) | |
tree | 05181c492e4eb8e531412c1ed1bd5e38d56ffcba /gold | |
parent | 325e6408a8d7bc42a5997c34615c91cac1e0a6b0 (diff) | |
download | fsf-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/ChangeLog | 6 | ||||
-rw-r--r-- | gold/incremental-dump.cc | 6 | ||||
-rw-r--r-- | gold/incremental.cc | 16 |
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. |