Index: gold/arm.cc

===================================================================
RCS file: /cvs/src/src/gold/arm.cc,v
retrieving revision 1.116
diff -u -u -p -r1.116 arm.cc
--- gold/arm.cc	3 Aug 2010 14:07:12 -0000	1.116
+++ gold/arm.cc	6 Aug 2010 07:59:30 -0000
@@ -10290,11 +10290,11 @@ Target_arm<big_endian>::merge_object_att
 	    out_attr[i].set_int_value(in_attr[i].int_value());
 	  break;
 	case elfcpp::Tag_ABI_PCS_wchar_t:
-	  // FIXME: Make it possible to turn off this warning.
 	  if (out_attr[i].int_value()
 	      && in_attr[i].int_value()
 	      && out_attr[i].int_value() != in_attr[i].int_value()
-	      && parameters->options().warn_mismatch())
+	      && parameters->options().warn_mismatch()
+	      && parameters->options().wchar_size_warning())
 	    {
 	      gold_warning(_("%s uses %u-byte wchar_t yet the output is to "
 			     "use %u-byte wchar_t; use of wchar_t values "
@@ -10315,10 +10315,10 @@ Target_arm<big_endian>::merge_object_att
 		  // Use whatever requirements the new object has.
 		  out_attr[i].set_int_value(in_attr[i].int_value());
 		}
-	      // FIXME: Make it possible to turn off this warning.
 	      else if (in_attr[i].int_value() != elfcpp::AEABI_enum_forced_wide
 		       && out_attr[i].int_value() != in_attr[i].int_value()
-		       && parameters->options().warn_mismatch())
+		       && parameters->options().warn_mismatch()
+		       && parameters->options().enum_size_warning())
 		{
 		  unsigned int in_value = in_attr[i].int_value();
 		  unsigned int out_value = out_attr[i].int_value();
Index: gold/options.h
===================================================================
RCS file: /cvs/src/src/gold/options.h,v
retrieving revision 1.147
diff -u -u -p -r1.147 options.h
--- gold/options.h	1 Jun 2010 23:37:57 -0000	1.147
+++ gold/options.h	6 Aug 2010 07:59:30 -0000
@@ -722,6 +722,10 @@ class General_options
   DEFINE_special(EL, options::ONE_DASH, '\0',
 		 N_("Link little-endian objects."), NULL);

+  DEFINE_bool(enum_size_warning, options::TWO_DASHES, '\0', true, NULL,
+	      N_("(ARM only) Do not warn about objects with incompatible "
+		 "enum sizes"));
+
   DEFINE_bool(fatal_warnings, options::TWO_DASHES, '\0', false,
 	      N_("Treat warnings as errors"),
 	      N_("Do not treat warnings as errors"));
@@ -1038,6 +1042,10 @@ class General_options
 		    N_("Report unresolved symbols as errors"),
 		    NULL, true);

+  DEFINE_bool(wchar_size_warning, options::TWO_DASHES, '\0', true, NULL,
+	      N_("(ARM only) Do not warn about objects with incompatible "
+		 "wchar_t sizes"));
+
   DEFINE_bool(whole_archive, options::TWO_DASHES, '\0', false,
               N_("Include all archive contents"),
               N_("Include only needed archive contents"));
This commit is contained in:
Doug Kwan 2010-08-12 18:27:46 +00:00
parent 13ea7aae96
commit ce0d197204
3 changed files with 19 additions and 4 deletions

View file

@ -1,3 +1,10 @@
2010-08-12 Doug Kwan <dougkwan@google.com>
* arm.cc (Target_arm::merge_object_attributes): Check command line
options --no-wchar-size-warning and --no-enum-size-warning.
* options.h (General_options): Add ld-compatible options
--no-enum-size-warning and --no-wchar-size-warning.
2010-08-04 Ian Lance Taylor <iant@google.com>
* x86_64.cc (Target_x86_64::Scan::local): Use

View file

@ -10290,11 +10290,11 @@ Target_arm<big_endian>::merge_object_attributes(
out_attr[i].set_int_value(in_attr[i].int_value());
break;
case elfcpp::Tag_ABI_PCS_wchar_t:
// FIXME: Make it possible to turn off this warning.
if (out_attr[i].int_value()
&& in_attr[i].int_value()
&& out_attr[i].int_value() != in_attr[i].int_value()
&& parameters->options().warn_mismatch())
&& parameters->options().warn_mismatch()
&& parameters->options().wchar_size_warning())
{
gold_warning(_("%s uses %u-byte wchar_t yet the output is to "
"use %u-byte wchar_t; use of wchar_t values "
@ -10315,10 +10315,10 @@ Target_arm<big_endian>::merge_object_attributes(
// Use whatever requirements the new object has.
out_attr[i].set_int_value(in_attr[i].int_value());
}
// FIXME: Make it possible to turn off this warning.
else if (in_attr[i].int_value() != elfcpp::AEABI_enum_forced_wide
&& out_attr[i].int_value() != in_attr[i].int_value()
&& parameters->options().warn_mismatch())
&& parameters->options().warn_mismatch()
&& parameters->options().enum_size_warning())
{
unsigned int in_value = in_attr[i].int_value();
unsigned int out_value = out_attr[i].int_value();

View file

@ -722,6 +722,10 @@ class General_options
DEFINE_special(EL, options::ONE_DASH, '\0',
N_("Link little-endian objects."), NULL);
DEFINE_bool(enum_size_warning, options::TWO_DASHES, '\0', true, NULL,
N_("(ARM only) Do not warn about objects with incompatible "
"enum sizes"));
DEFINE_bool(fatal_warnings, options::TWO_DASHES, '\0', false,
N_("Treat warnings as errors"),
N_("Do not treat warnings as errors"));
@ -1038,6 +1042,10 @@ class General_options
N_("Report unresolved symbols as errors"),
NULL, true);
DEFINE_bool(wchar_size_warning, options::TWO_DASHES, '\0', true, NULL,
N_("(ARM only) Do not warn about objects with incompatible "
"wchar_t sizes"));
DEFINE_bool(whole_archive, options::TWO_DASHES, '\0', false,
N_("Include all archive contents"),
N_("Include only needed archive contents"));