diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-10-16 08:04:58 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-10-16 08:05:09 -0700 |
commit | 6457197210144f50a696097c0d308d81d46d5510 (patch) | |
tree | dc8ba9a38f4bc0a79bf27dba208599434dbeff0c /gold | |
parent | e66acfb155e75c1909a6f29702ed6ba3762e36b4 (diff) | |
download | gdb-6457197210144f50a696097c0d308d81d46d5510.zip gdb-6457197210144f50a696097c0d308d81d46d5510.tar.gz gdb-6457197210144f50a696097c0d308d81d46d5510.tar.bz2 |
Don't ignore "-m emulation" command line option
Gold shouldn't ignore "-m emulation" command line option, which may
lead to incorrect output.
PR gold/19119
* options.h (General_options): Remove "obsolete" from -m.
* parameters.cc (set_parameters_target): Check if input target
is compatible with output emulation set by "-m emulation".
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 7 | ||||
-rw-r--r-- | gold/options.h | 2 | ||||
-rw-r--r-- | gold/parameters.cc | 10 |
3 files changed, 18 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index ff11c88..1f619f7 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,10 @@ +2015-10-16 H.J. Lu <hongjiu.lu@intel.com> + + PR gold/19119 + * options.h (General_options): Remove "obsolete" from -m. + * parameters.cc (set_parameters_target): Check if input target + is compatible with output emulation set by "-m emulation". + 2015-10-13 H.J. Lu <hongjiu.lu@intel.com> PR gold/19118 diff --git a/gold/options.h b/gold/options.h index 641efee..4d65225 100644 --- a/gold/options.h +++ b/gold/options.h @@ -934,7 +934,7 @@ class General_options N_("OFFSET")); DEFINE_string(m, options::EXACTLY_ONE_DASH, 'm', "", - N_("Set GNU linker emulation; obsolete"), N_("EMULATION")); + N_("Set GNU linker emulation"), N_("EMULATION")); DEFINE_bool(mmap_output_file, options::TWO_DASHES, '\0', true, N_("Map the output file for writing (default)."), diff --git a/gold/parameters.cc b/gold/parameters.cc index 5ed1912..15df42a 100644 --- a/gold/parameters.cc +++ b/gold/parameters.cc @@ -297,6 +297,16 @@ set_parameters_options(const General_options* options) void set_parameters_target(Target* target) { + if (parameters->options_valid() && parameters->options().user_set_m()) + { + const char* emulation = parameters->options().m(); + Target* output = select_target_by_emulation(emulation); + if (!output) + gold_error(_("unrecognised output emulation: %s"), emulation); + else if (output != target) + gold_error(_("input file is incompatible with %s output emulation"), + emulation); + } static_parameters.set_target(target); } |