From: Rafael Ávila de Espíndola Date: Wed, 2 Dec 2009 16:27:15 +0000 (+0000) Subject: 2009-12-02 Rafael Avila de Espindola X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a45500ae379230cefa3b76d4b5c902d7c8e858ca;p=binutils-gdb.git 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. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index 7368334d35c..f727c5f0c78 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +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. diff --git a/gold/incremental-dump.cc b/gold/incremental-dump.cc index daaee8a994b..9e750cb9222 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 97b3eea43d9..e89372a0763 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.