2010-06-16 Doug Kwan <dougkwan@google.com>
* arm.cc (Target_arm::do_finalize_sections): Do not emit an .ARM.attributes section if we have not merged any input attributes sections.
This commit is contained in:
parent
6ffe3d995f
commit
3e23530232
2 changed files with 12 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2010-06-16 Doug Kwan <dougkwan@google.com>
|
||||||
|
|
||||||
|
* arm.cc (Target_arm::do_finalize_sections): Do not emit an
|
||||||
|
.ARM.attributes section if we have not merged any input
|
||||||
|
attributes sections.
|
||||||
|
|
||||||
2010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
|
2010-06-15 Viktor Kutuzov <vkutuzov@accesssoftek.com>
|
||||||
|
|
||||||
* arm.cc: Allow combining objects with no EABI version
|
* arm.cc: Allow combining objects with no EABI version
|
||||||
|
|
|
@ -8101,6 +8101,7 @@ Target_arm<big_endian>::do_finalize_sections(
|
||||||
const Input_objects* input_objects,
|
const Input_objects* input_objects,
|
||||||
Symbol_table* symtab)
|
Symbol_table* symtab)
|
||||||
{
|
{
|
||||||
|
bool merged_any_attributes = false;
|
||||||
// Merge processor-specific flags.
|
// Merge processor-specific flags.
|
||||||
for (Input_objects::Relobj_iterator p = input_objects->relobj_begin();
|
for (Input_objects::Relobj_iterator p = input_objects->relobj_begin();
|
||||||
p != input_objects->relobj_end();
|
p != input_objects->relobj_end();
|
||||||
|
@ -8115,6 +8116,7 @@ Target_arm<big_endian>::do_finalize_sections(
|
||||||
arm_relobj->processor_specific_flags());
|
arm_relobj->processor_specific_flags());
|
||||||
this->merge_object_attributes(arm_relobj->name().c_str(),
|
this->merge_object_attributes(arm_relobj->name().c_str(),
|
||||||
arm_relobj->attributes_section_data());
|
arm_relobj->attributes_section_data());
|
||||||
|
merged_any_attributes = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8129,6 +8131,7 @@ Target_arm<big_endian>::do_finalize_sections(
|
||||||
arm_dynobj->processor_specific_flags());
|
arm_dynobj->processor_specific_flags());
|
||||||
this->merge_object_attributes(arm_dynobj->name().c_str(),
|
this->merge_object_attributes(arm_dynobj->name().c_str(),
|
||||||
arm_dynobj->attributes_section_data());
|
arm_dynobj->attributes_section_data());
|
||||||
|
merged_any_attributes = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create an empty uninitialized attribute section if we still don't have it
|
// Create an empty uninitialized attribute section if we still don't have it
|
||||||
|
@ -8210,9 +8213,9 @@ Target_arm<big_endian>::do_finalize_sections(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create an .ARM.attributes section unless we have no regular input
|
// Create an .ARM.attributes section if we have merged any attributes
|
||||||
// object. In that case the output will be empty.
|
// from inputs.
|
||||||
if (input_objects->number_of_relobjs() != 0)
|
if (merged_any_attributes)
|
||||||
{
|
{
|
||||||
Output_attributes_section_data* attributes_section =
|
Output_attributes_section_data* attributes_section =
|
||||||
new Output_attributes_section_data(*this->attributes_section_data_);
|
new Output_attributes_section_data(*this->attributes_section_data_);
|
||||||
|
|
Loading…
Reference in a new issue