x86-64: limit breakage from gcc movdir64b et al workaround
[binutils-gdb.git] / gas / read.c
index be6e3e03d4589d4278030b4652a590cb3b6e31b7..3e76065328954d203bdc7e2308813545792dd12b 100644 (file)
@@ -530,6 +530,9 @@ static const pseudo_typeS potable[] = {
   {"weakref", s_weakref, 0},
   {"word", cons, 2},
   {"zero", s_space, 0},
+  {"2byte", cons, 2},
+  {"4byte", cons, 4},
+  {"8byte", cons, 8},
   {NULL, NULL, 0}                      /* End sentinel.  */
 };
 
@@ -5740,12 +5743,12 @@ demand_copy_C_string (int *len_pointer)
 
       for (len = *len_pointer; len > 0; len--)
        {
-         if (*s == 0)
+         if (s[len - 1] == 0)
            {
              s = 0;
-             len = 1;
              *len_pointer = 0;
              as_bad (_("this string may not contain \'\\0\'"));
+             break;
            }
        }
     }
@@ -5906,7 +5909,16 @@ s_incbin (int x ATTRIBUTE_UNUSED)
   if (binfile)
     {
       long   file_len;
+      struct stat filestat;
 
+      if (fstat (fileno (binfile), &filestat) != 0
+         || ! S_ISREG (filestat.st_mode)
+         || S_ISDIR (filestat.st_mode))
+       {
+         as_bad (_("unable to include `%s'"), path);
+         goto done;
+       }
+      
       register_dependency (path);
 
       /* Compute the length of the file.  */