From: Ian Lance Taylor Date: Tue, 23 Feb 2010 17:45:38 +0000 (+0000) Subject: * arm.cc (Target_arm::do_finalize_sections): Create attribute X-Git-Tag: cygwin-1_7_3-release~367 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ca419a6f33e27d59324ba74c4655e551a381aad5;p=external%2Fbinutils.git * arm.cc (Target_arm::do_finalize_sections): Create attribute section if it does not already exist. * attributes.cc (Attributes_section_data::Attributes_section_data): Don't crash if size is zero. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index 45017f2..6259834 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,4 +1,11 @@ 2010-02-23 Viktor Kutuzov + + * arm.cc (Target_arm::do_finalize_sections): Create attribute + section if it does not already exist. + * attributes.cc (Attributes_section_data::Attributes_section_data): + Don't crash if size is zero. + +2010-02-23 Viktor Kutuzov Ian Lance Taylor * gold.cc (queue_middle_tasks): If no input files were opened, diff --git a/gold/arm.cc b/gold/arm.cc index bc5557a..b8141e0 100644 --- a/gold/arm.cc +++ b/gold/arm.cc @@ -7554,6 +7554,11 @@ Target_arm::do_finalize_sections( const Input_objects* input_objects, Symbol_table* symtab) { + // Create an empty uninitialized attribute section if we still don't have it + // at this moment. + if (this->attributes_section_data_ == NULL) + this->attributes_section_data_ = new Attributes_section_data(NULL, 0); + // Merge processor-specific flags. for (Input_objects::Relobj_iterator p = input_objects->relobj_begin(); p != input_objects->relobj_end(); diff --git a/gold/attributes.cc b/gold/attributes.cc index 2024fda..b9b3608 100644 --- a/gold/attributes.cc +++ b/gold/attributes.cc @@ -278,7 +278,7 @@ Attributes_section_data::Attributes_section_data( const unsigned char *p = view; p = view; - if (*(p++) == 'A') + if (size > 0 && p != NULL && *(p++) == 'A') { size--; while (size > 0)