[PATCH][GOLD] Fix some issues in building ARM Linux kernel with gold.
Ian Lance Taylor
iant@google.com
Wed Apr 7 21:01:00 GMT 2010
"Doug Kwan (關振德)" <dougkwan@google.com> writes:
> 2010-03-30 Doug Kwan <dougkwan@google.com>
>
> * arm.cc (Arm_relobj::Arm_relobj): Initialize
> merge_flags_and_attribures.
> (Arm_relobj::merge_flags_and_attributes): New method.
> (Arm_relobj::merge_flags_and_attributes_): New data member.
> (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
> (Arm_relobj::scan_sections_for_stubs): Ditto.
> (Arm_relobj::do_read_symbols): Check to see if we really want to
> merge processor-specific flags and attributes. Exit early if
> an object is empty except for section names and the undefined symbol.
> (Target_arm::do_finalize_sections): Move check for ELF format to
> Arm_relobj::do_read_symbols. Merge processor specific flags and
> attributes from a regular object only when we have determined that
> it is aapropriate. Do not create an .ARM.attributes section in
> output if there is no regular input object.
> (Target_arm::merge_processor_specific_flags): Check
> --warn-mismatch before printing any error.
> (Target_arm::merge_object_attributes): Ditto.
> * gold.cc (queue_middle_tasks): Handle the case in which there is
> no regular object in input.
> * options.cc (General_options::parse_EB): New method.
> (General_options::parse_EL): Same.
> (General_options::General_options): Initialize endianity_.
> * options.h (-EB, -EL, --no-pipeline-knowledge, -p, --warn-mismatch):
> New options.
> (General_options::Endianity): New enum.
> (General_options::endianity): New method.
> (General_options::endianity_): New data member.
> * parameters.cc (Parameters::set_options): Check target endianity.
> (Parameters::set_target_once): Ditto.
> (Parameters::check_target_endianity): New method.
> (parameters_force_valid_target): If either -EL or -EB is specified,
> use it to define endianity of default target.
> * parameters.h (Parameters::check_target_endianity): New method
> declaration.
Please change "endianity" to "endianness" throughout the patch.
Sorry.
> + if (this->target().is_big_endian() != big_endian)
> + gold_error(_("incompatible endianity specified in command line"));
Make this error message more like "input file does not match -EB/-EL
option". It would be nice if we could give the name of the file, but
I guess that is not convenient.
This is OK with those changes.
Thanks.
Ian
More information about the Binutils
mailing list