OSDN Git Service

* gcov.c (canonicalize_name): Protect use of S_ISLNK.
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Nov 2011 21:44:01 +0000 (21:44 +0000)
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Nov 2011 21:44:01 +0000 (21:44 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181367 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gcov.c

index e7c6952..94661b5 100644 (file)
@@ -1,3 +1,7 @@
+2011-11-14  Nathan Sidwell  <nathan@acm.org>
+
+       * gcov.c (canonicalize_name): Protect use of S_ISLNK.
+
 2011-11-14  Jan Hubicka  <jh@suse.cz>
 
        * config/i386/i386.c (core cost model): Correct pasto.
index dffb827..c5cc0ef 100644 (file)
@@ -1688,10 +1688,15 @@ canonicalize_name (const char *name)
        {
          /* '..', we can only elide it and the previous directory, if
             we're not a symlink.  */
-         struct stat buf;
-         
+         struct stat ATTRIBUTE_UNUSED buf;
+
          *ptr = 0;
-         if (dd_base == ptr || stat (result, &buf) || S_ISLNK (buf.st_mode))
+         if (dd_base == ptr
+#if defined (S_ISLNK)
+             /* S_ISLNK is not POSIX.1-1996.  */
+             || stat (result, &buf) || S_ISLNK (buf.st_mode)
+#endif
+             )
            {
              /* Cannot elide, or unreadable or a symlink.  */
              dd_base = ptr + 2 + slash;