2009-12-02 Rafael Avila de Espindola <espindola@google.com>
authorRafael Ávila de Espíndola <respindola@mozilla.com>
Wed, 2 Dec 2009 16:27:15 +0000 (16:27 +0000)
committerRafael Ávila de Espíndola <respindola@mozilla.com>
Wed, 2 Dec 2009 16:27:15 +0000 (16:27 +0000)
* 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
gold/incremental-dump.cc
gold/incremental.cc

index 7368334d35cdad47e6a8b7985500b83005c21e03..f727c5f0c7881c174bb8b89ace6cda163c309254 100644 (file)
@@ -1,3 +1,9 @@
+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.
index daaee8a994bd7bab102d4065c5e5c655253eb5f5..9e750cb9222b44224498ba2e30c46e7d55e5ab00 100644 (file)
@@ -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:
index 97b3eea43d9d6f52fd8599481b915c277d22b95a..e89372a076337f185fcdc29c18f499e2027dd84b 100644 (file)
@@ -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.