From a45500ae379230cefa3b76d4b5c902d7c8e858ca Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafael=20=C3=81vila=20de=20Esp=C3=ADndola?= Date: Wed, 2 Dec 2009 16:27:15 +0000 Subject: [PATCH] 2009-12-02 Rafael Avila de Espindola * 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. --- gold/ChangeLog | 6 ++++++ gold/incremental-dump.cc | 6 ++++++ gold/incremental.cc | 16 ++++++++++++++++ 3 files changed, 28 insertions(+) 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 + * 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 + * 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. -- 2.7.4