diff options
author | espindola <espindola> | 2009-12-02 16:27:14 +0000 |
---|---|---|
committer | espindola <espindola> | 2009-12-02 16:27:14 +0000 |
commit | 1ae70b6a96480314becbac78595be4d6cf11b110 (patch) | |
tree | f14beb41e4a4f4310ca2617efbf735e8eb0f0f4c | |
parent | d5873f2ec6c72b1d69987c6d187a49c5a7174120 (diff) | |
download | binutils-redhat-1ae70b6a96480314becbac78595be4d6cf11b110.tar.gz |
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.
-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 7368334d35..f727c5f0c7 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 daaee8a994..9e750cb922 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 97b3eea43d..e89372a076 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. |