2009-11-25 Doug Kwan <dougkwan@google.com>

* arm.cc (Target_arm::Target_arm): Move method definition outside of
	class definition.  Add code to handle --target1-rel, --target1-abs
	and --target2= options.
	(Target_arm::get_reloc_reloc_type): Change method to be non-static
	and const.
	(Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
	member declaration.
	(Target_arm::Scan::local, Target_arm::Scan::global,
	Target_arm::Relocate::relocate,
	Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
	call to Target_arm::get_real_reloc_type.
	(Target_arm::get_real_reloc_type): Use command line options to
	determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
	* options.h (--target1-rel, --target1-abs, --target2): New ARM-only
	options.
This commit is contained in:
Doug Kwan
2009-11-25 04:32:36 +00:00
parent 5193828376
commit 50aeb7d431
3 changed files with 91 additions and 19 deletions

View File

@@ -884,6 +884,17 @@ class General_options
DEFINE_string(sysroot, options::TWO_DASHES, '\0', "",
N_("Set target system root directory"), N_("DIR"));
DEFINE_bool(target1_rel, options::TWO_DASHES, '\0', false,
N_("(ARM only) Force R_ARM_TARGET1 type to R_ARM_REL32"),
NULL);
DEFINE_bool(target1_abs, options::TWO_DASHES, '\0', false,
N_("(ARM only) Force R_ARM_TARGET1 type to R_ARM_ABS32"),
NULL);
DEFINE_enum(target2, options::TWO_DASHES, '\0', "default",
N_("(ARM only) Set R_ARM_TARGET2 relocation type"),
N_("[default, rel, abs, got-rel"),
{"default", "rel", "abs", "got-rel"});
DEFINE_bool(trace, options::TWO_DASHES, 't', false,
N_("Print the name of each input file"), NULL);