8056039: Hotspot does not compile with clang 3.4 on Linux
Reviewed-by: brutisso, sla
--- a/hotspot/src/os/aix/vm/os_aix.cpp Wed Sep 10 11:55:33 2014 +0200
+++ b/hotspot/src/os/aix/vm/os_aix.cpp Tue Aug 26 11:53:24 2014 +0200
@@ -4002,10 +4002,6 @@
return true;
}
-// int local_vsnprintf(char* buf, size_t count, const char* format, va_list args) {
-// return ::vsnprintf(buf, count, format, args);
-// }
-
// Is a (classpath) directory empty?
bool os::dir_is_empty(const char* path) {
DIR *dir = NULL;
--- a/hotspot/src/os/bsd/vm/os_bsd.cpp Wed Sep 10 11:55:33 2014 +0200
+++ b/hotspot/src/os/bsd/vm/os_bsd.cpp Tue Aug 26 11:53:24 2014 +0200
@@ -3797,11 +3797,6 @@
return true;
}
-ATTRIBUTE_PRINTF(3, 0)
-int local_vsnprintf(char* buf, size_t count, const char* format, va_list args) {
- return ::vsnprintf(buf, count, format, args);
-}
-
// Is a (classpath) directory empty?
bool os::dir_is_empty(const char* path) {
DIR *dir = NULL;
--- a/hotspot/src/os/linux/vm/os_linux.cpp Wed Sep 10 11:55:33 2014 +0200
+++ b/hotspot/src/os/linux/vm/os_linux.cpp Tue Aug 26 11:53:24 2014 +0200
@@ -5007,10 +5007,6 @@
return true;
}
-int local_vsnprintf(char* buf, size_t count, const char* format, va_list args) {
- return ::vsnprintf(buf, count, format, args);
-}
-
// Is a (classpath) directory empty?
bool os::dir_is_empty(const char* path) {
DIR *dir = NULL;
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp Wed Sep 10 11:55:33 2014 +0200
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp Tue Aug 26 11:53:24 2014 +0200
@@ -4729,27 +4729,6 @@
bool os::check_heap(bool force) { return true; }
-typedef int (*vsnprintf_t)(char* buf, size_t count, const char* fmt, va_list argptr);
-static vsnprintf_t sol_vsnprintf = NULL;
-
-int local_vsnprintf(char* buf, size_t count, const char* fmt, va_list argptr) {
- if (!sol_vsnprintf) {
- //search for the named symbol in the objects that were loaded after libjvm
- void* where = RTLD_NEXT;
- if ((sol_vsnprintf = CAST_TO_FN_PTR(vsnprintf_t, dlsym(where, "__vsnprintf"))) == NULL)
- sol_vsnprintf = CAST_TO_FN_PTR(vsnprintf_t, dlsym(where, "vsnprintf"));
- if (!sol_vsnprintf){
- //search for the named symbol in the objects that were loaded before libjvm
- where = RTLD_DEFAULT;
- if ((sol_vsnprintf = CAST_TO_FN_PTR(vsnprintf_t, dlsym(where, "__vsnprintf"))) == NULL)
- sol_vsnprintf = CAST_TO_FN_PTR(vsnprintf_t, dlsym(where, "vsnprintf"));
- assert(sol_vsnprintf != NULL, "vsnprintf not found");
- }
- }
- return (*sol_vsnprintf)(buf, count, fmt, argptr);
-}
-
-
// Is a (classpath) directory empty?
bool os::dir_is_empty(const char* path) {
DIR *dir = NULL;
--- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Sep 10 11:55:33 2014 +0200
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp Tue Aug 26 11:53:24 2014 +0200
@@ -66,6 +66,9 @@
#ifndef ATTRIBUTE_PRINTF
#define ATTRIBUTE_PRINTF(fmt, vargs)
#endif
+#ifndef ATTRIBUTE_SCANF
+#define ATTRIBUTE_SCANF(fmt, vargs)
+#endif
#include "utilities/macros.hpp"
--- a/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Wed Sep 10 11:55:33 2014 +0200
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Tue Aug 26 11:53:24 2014 +0200
@@ -271,15 +271,16 @@
#define PRAGMA_IMPLEMENTATION #pragma implementation
#define VALUE_OBJ_CLASS_SPEC
-#ifndef ATTRIBUTE_PRINTF
// Diagnostic pragmas like the ones defined below in PRAGMA_FORMAT_NONLITERAL_IGNORED
// were only introduced in GCC 4.2. Because we have no other possibility to ignore
// these warnings for older versions of GCC, we simply don't decorate our printf-style
// functions with __attribute__(format) in that case.
#if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2)) || (__GNUC__ > 4)
+#ifndef ATTRIBUTE_PRINTF
#define ATTRIBUTE_PRINTF(fmt,vargs) __attribute__((format(printf, fmt, vargs)))
-#else
-#define ATTRIBUTE_PRINTF(fmt,vargs)
+#endif
+#ifndef ATTRIBUTE_SCANF
+#define ATTRIBUTE_SCANF(fmt,vargs) __attribute__((format(scanf, fmt, vargs)))
#endif
#endif
--- a/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp Wed Sep 10 11:55:33 2014 +0200
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp Tue Aug 26 11:53:24 2014 +0200
@@ -265,14 +265,6 @@
inline int wcslen(const jchar* x) { return wcslen((const wchar_t*)x); }
-
-// Misc
-// NOTE: This one leads to an infinite recursion on Linux
-#ifndef LINUX
-int local_vsnprintf(char* buf, size_t count, const char* fmt, va_list argptr);
-#define vsnprintf local_vsnprintf
-#endif
-
// Portability macros
#define PRAGMA_INTERFACE
#define PRAGMA_IMPLEMENTATION