Blob Blame History Raw
diff -Nrup a/binutils/strings.c b/binutils/strings.c
--- a/binutils/strings.c	2013-02-27 13:28:03.000000000 -0700
+++ b/binutils/strings.c	2014-01-06 11:26:21.939427032 -0700
@@ -456,7 +456,18 @@ get_char (FILE *stream, file_ptr *addres
 {
   int c, i;
   long r = EOF;
-  unsigned char buf[4];
+  /* Aggressive optimizations might expose elements of BUF as individual
+     objects and then uninitialized analysis may be performed on those
+     elements.
+
+     If that happens, the compiler can/will warn in the switch statement
+     below because it does not know the relationship between ENCODING_BYTES
+     and ENCODING which prevents uninitialized uses.
+
+     Just initialize the object to zeros, which seems to be the best of
+     several bad solutions (#pragma GCC diagnostic, exposing the
+     relationship between ENCODING_BYTES and ENCODING here, etc). */
+  unsigned char buf[4] = { 0 };
 
   for (i = 0; i < encoding_bytes; i++)
     {
diff -Nrup a/ld/ldfile.c b/ld/ldfile.c
--- a/ld/ldfile.c	2013-02-27 13:28:03.000000000 -0700
+++ b/ld/ldfile.c	2014-01-06 12:53:39.559070145 -0700
@@ -596,7 +596,7 @@ static void
 ldfile_open_command_file_1 (const char *name, bfd_boolean default_only)
 {
   FILE *ldlex_input_stack;
-  bfd_boolean sysrooted;
+  bfd_boolean sysrooted = FALSE;
 
   ldlex_input_stack = ldfile_find_command_file (name, default_only, &sysrooted);