# HG changeset patch # User mgerdin # Date 1409046804 -7200 # Node ID f2910bf56d71b398511ab2d34c70b5ee61f00967 # Parent b24a4cc794ceeb109b60c1f55aa5b5549426c5f7 8056039: Hotspot does not compile with clang 3.4 on Linux Reviewed-by: brutisso, sla diff -r b24a4cc794ce -r f2910bf56d71 hotspot/src/os/aix/vm/os_aix.cpp --- 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; diff -r b24a4cc794ce -r f2910bf56d71 hotspot/src/os/bsd/vm/os_bsd.cpp --- 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; diff -r b24a4cc794ce -r f2910bf56d71 hotspot/src/os/linux/vm/os_linux.cpp --- 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; diff -r b24a4cc794ce -r f2910bf56d71 hotspot/src/os/solaris/vm/os_solaris.cpp --- 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; diff -r b24a4cc794ce -r f2910bf56d71 hotspot/src/share/vm/utilities/globalDefinitions.hpp --- 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" diff -r b24a4cc794ce -r f2910bf56d71 hotspot/src/share/vm/utilities/globalDefinitions_gcc.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 diff -r b24a4cc794ce -r f2910bf56d71 hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp --- 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