summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog25
-rw-r--r--gcc/config/alpha/linux.h2
-rw-r--r--gcc/config/darwin.h2
-rw-r--r--gcc/config/freebsd.h2
-rw-r--r--gcc/config/linux.h2
-rw-r--r--gcc/config/lynx.h4
-rw-r--r--gcc/config/netbsd.h4
-rw-r--r--gcc/config/rs6000/linux.h2
-rw-r--r--gcc/config/rs6000/linux64.h2
-rw-r--r--gcc/config/s390/tpf.h2
-rw-r--r--gcc/config/sh/embed-elf.h2
-rw-r--r--gcc/config/sparc/linux.h2
-rw-r--r--gcc/config/sparc/linux64.h2
-rw-r--r--gcc/config/svr4.h2
-rw-r--r--gcc/doc/tm.texi11
-rw-r--r--gcc/gcov-io.h2
-rw-r--r--gcc/libgcov.c4
17 files changed, 51 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8a4ccc0c03f..03ca42bd23a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,28 @@
+2005-07-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/alpha/linux.h (TARGET_HAS_F_SETLKW): Renamed to ...
+ (TARGET_POSIX_IO): This.
+ * config/darwin.h: Likewise.
+ * config/freebsd.h: Likewise.
+ * config/linux.h: Likewise.
+ * config/lynx.h: Likewise.
+ * config/netbsd.h: Likewise.
+ * config/rs6000/linux64.h: Likewise.
+ * config/rs6000/linux.h: Likewise.
+ * config/s390/tpf.h: Likewise.
+ * config/sh/embed-elf.h: Likewise.
+ * config/sparc/linux64.h: Likewise.
+ * config/sparc/linux.h: Likewise.
+ * config/svr4.h: Likewise.
+ * gcov-io.h: Likewise.
+
+ * doc/tm.texi: Updated.
+
+ * libgcov.c (create_file_directory): Defined only if
+ TARGET_POSIX_IO is defined.
+ (gcov_exit): Call create_file_directory only if TARGET_POSIX_IO
+ is defined.
+
2005-07-13 Jan Hubicka <jh@suse.cz>
* tree-ssa-operands.c (get_expr_operands): Fix typo in previous patch.
diff --git a/gcc/config/alpha/linux.h b/gcc/config/alpha/linux.h
index 2509fe9eef0..0773462692d 100644
--- a/gcc/config/alpha/linux.h
+++ b/gcc/config/alpha/linux.h
@@ -71,7 +71,7 @@ Boston, MA 02110-1301, USA. */
runtime library. */
#define TARGET_C99_FUNCTIONS 1
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
#define LINK_GCC_C_SEQUENCE_SPEC \
"%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index b5cb068007b..c33e2030e4a 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -1026,7 +1026,7 @@ void darwin_register_objc_includes (const char *, const char *, int);
void add_framework_path (char *);
#define TARGET_OPTF add_framework_path
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
/* All new versions of Darwin have C99 functions. */
#define TARGET_C99_FUNCTIONS 1
diff --git a/gcc/config/freebsd.h b/gcc/config/freebsd.h
index bf7a52e83d1..21dc81e6013 100644
--- a/gcc/config/freebsd.h
+++ b/gcc/config/freebsd.h
@@ -84,4 +84,4 @@ Boston, MA 02110-1301, USA. */
/* Used by libgcc2.c. We support file locking with fcntl / F_SETLKW.
This enables the test coverage code to use file locking when exiting a
program, which avoids race conditions if the program has forked. */
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
diff --git a/gcc/config/linux.h b/gcc/config/linux.h
index c173d7bad62..3853fa42a00 100644
--- a/gcc/config/linux.h
+++ b/gcc/config/linux.h
@@ -103,4 +103,4 @@ Boston, MA 02110-1301, USA. */
is present in the runtime library. */
#define TARGET_C99_FUNCTIONS 1
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
diff --git a/gcc/config/lynx.h b/gcc/config/lynx.h
index 2805a57d336..271fb626df3 100644
--- a/gcc/config/lynx.h
+++ b/gcc/config/lynx.h
@@ -173,6 +173,6 @@ Boston, MA 02110-1301, USA. */
# define NO_IMPLICIT_EXTERN_C
#endif
-#ifndef TARGET_HAS_F_SETLKW
-# define TARGET_HAS_F_SETLKW
+#ifndef TARGET_POSIX_IO
+# define TARGET_POSIX_IO
#endif
diff --git a/gcc/config/netbsd.h b/gcc/config/netbsd.h
index 2cc6f8058fa..5386b656512 100644
--- a/gcc/config/netbsd.h
+++ b/gcc/config/netbsd.h
@@ -156,8 +156,8 @@ Boston, MA 02110-1301, USA. */
fprintf ((STREAM), "void __fini() {\n\t%s();\n}\n", (FUNC)); \
} while (0)
-#undef TARGET_HAS_F_SETLKW
-#define TARGET_HAS_F_SETLKW
+#undef TARGET_POSIX_IO
+#define TARGET_POSIX_IO
/* Handle #pragma weak and #pragma pack. */
diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
index 79eb199f952..497fcca2bc1 100644
--- a/gcc/config/rs6000/linux.h
+++ b/gcc/config/rs6000/linux.h
@@ -110,7 +110,7 @@
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
#define MD_UNWIND_SUPPORT "config/rs6000/linux-unwind.h"
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
index 7343cbb8723..31bf8ac86ed 100644
--- a/gcc/config/rs6000/linux64.h
+++ b/gcc/config/rs6000/linux64.h
@@ -536,7 +536,7 @@ while (0)
#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
#define LINK_GCC_C_SEQUENCE_SPEC \
"%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
diff --git a/gcc/config/s390/tpf.h b/gcc/config/s390/tpf.h
index e8c7f80893a..c1feaba09ae 100644
--- a/gcc/config/s390/tpf.h
+++ b/gcc/config/s390/tpf.h
@@ -32,7 +32,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#undef ASM_APP_OFF
#define ASM_APP_OFF "#NO_APP\n"
#define NO_IMPLICIT_EXTERN_C
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
#undef MD_EXEC_PREFIX
#undef MD_STARTFILE_PREFIX
diff --git a/gcc/config/sh/embed-elf.h b/gcc/config/sh/embed-elf.h
index 3c96f3fa2c9..2542c4c16bc 100644
--- a/gcc/config/sh/embed-elf.h
+++ b/gcc/config/sh/embed-elf.h
@@ -23,4 +23,4 @@ Boston, MA 02110-1301, USA. */
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX "_"
-#undef TARGET_HAS_F_SETLKW
+#undef TARGET_POSIX_IO
diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
index 87a043e53cf..c90080e1eed 100644
--- a/gcc/config/sparc/linux.h
+++ b/gcc/config/sparc/linux.h
@@ -208,7 +208,7 @@ do { \
runtime library. */
#define TARGET_C99_FUNCTIONS 1
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
#undef LINK_GCC_C_SEQUENCE_SPEC
#define LINK_GCC_C_SEQUENCE_SPEC \
diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
index 82860fea24e..d7ebb86e945 100644
--- a/gcc/config/sparc/linux64.h
+++ b/gcc/config/sparc/linux64.h
@@ -342,7 +342,7 @@ do { \
runtime library. */
#define TARGET_C99_FUNCTIONS 1
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
#undef LINK_GCC_C_SEQUENCE_SPEC
#define LINK_GCC_C_SEQUENCE_SPEC \
diff --git a/gcc/config/svr4.h b/gcc/config/svr4.h
index 74aa296a892..6fa88fcd821 100644
--- a/gcc/config/svr4.h
+++ b/gcc/config/svr4.h
@@ -203,4 +203,4 @@ Boston, MA 02110-1301, USA.
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE BITS_PER_WORD
-#define TARGET_HAS_F_SETLKW
+#define TARGET_POSIX_IO
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 4eeb1566984..5feacf5668e 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -9275,12 +9275,13 @@ You need only define this macro if the default of @samp{"LIBRARY_PATH"}
is wrong.
@end defmac
-@defmac TARGET_HAS_F_SETLKW
-Define this macro if the target supports file locking with fcntl / F_SETLKW@.
-Note that this functionality is part of POSIX@.
-Defining @code{TARGET_HAS_F_SETLKW} will enable the test coverage code
+@defmac TARGET_POSIX_IO
+Define this macro if the target supports the following POSIX@ file
+functions, access, mkdir and file locking with fcntl / F_SETLKW@.
+Defining @code{TARGET_POSIX_IO} will enable the test coverage code
to use file locking when exiting a program, which avoids race conditions
-if the program has forked.
+if the program has forked. It will also create directories at run-time
+for cross-profiling. @xref{Cross-profiling}.
@end defmac
@defmac MAX_CONDITIONAL_EXECUTE
diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h
index 045f6657ace..f3607d97890 100644
--- a/gcc/gcov-io.h
+++ b/gcc/gcov-io.h
@@ -195,7 +195,7 @@ typedef signed gcov_type __attribute__ ((mode (QI)));
#endif
-#if defined (TARGET_HAS_F_SETLKW)
+#if defined (TARGET_POSIX_IO)
#define GCOV_LOCKED 1
#else
#define GCOV_LOCKED 0
diff --git a/gcc/libgcov.c b/gcc/libgcov.c
index 09f3522537a..de44d911f01 100644
--- a/gcc/libgcov.c
+++ b/gcc/libgcov.c
@@ -91,6 +91,7 @@ static gcov_unsigned_t gcov_crc32;
/* Size of the longest file name. */
static size_t gcov_max_filename = 0;
+#ifdef TARGET_POSIX_IO
/* Make sure path component of the given FILENAME exists, create
missing directories. FILENAME must be writable.
Returns zero on success, or -1 if an error occurred. */
@@ -122,6 +123,7 @@ create_file_directory (char *filename)
};
return 0;
}
+#endif
/* Check if VERSION of the info block PTR matches libgcov one.
Return 1 on success, or zero in case of versions mismatch.
@@ -299,6 +301,7 @@ gcov_exit (void)
if (!gcov_open (gi_filename))
{
+#ifdef TARGET_POSIX_IO
/* Open failed likely due to missed directory.
Create directory and retry to open file. */
if (create_file_directory (gi_filename))
@@ -306,6 +309,7 @@ gcov_exit (void)
fprintf (stderr, "profiling:%s:Skip\n", gi_filename);
continue;
}
+#endif
if (!gcov_open (gi_filename))
{
fprintf (stderr, "profiling:%s:Cannot open\n", gi_filename);