Index: gold/arm.cc
authorDoug Kwan <dougkwan@google.com>
Thu, 12 Aug 2010 18:27:46 +0000 (18:27 +0000)
committerDoug Kwan <dougkwan@google.com>
Thu, 12 Aug 2010 18:27:46 +0000 (18:27 +0000)
commitce0d1972043ea09562ed28d2bb9cadc50a9dd29d
tree33884e17a20f184b0af11b86ec08b81bcb48ff3d
parent13ea7aae964fd349ff139916b4a512c197982456
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"));
gold/ChangeLog
gold/arm.cc
gold/options.h