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)
===================================================================
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

index d19a5be24661603568eb18af4357845ed9a6cb69..90510b5f6e1514785df990df9caae2735d738f03 100644 (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
index 5d2553330149f3b81374ebd83190b92fbd8f21cd..51ce38c2ddc33f002238658c1ed17b1bba3d3206 100644 (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();
index cf1c15375fb7e1e25733d1115ac3112d3f5e255f..efd9e90fcb8290df7334a10ed0c8b89cf17e8fe9 100644 (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"));
This page took 0.037542 seconds and 4 git commands to generate.