RFR: build pragma error with gcc 4.4.7

Michal Vala mvala at redhat.com
Fri Mar 16 10:48:49 UTC 2018


Hi,

I've been trying to build latest jdk with gcc 4.4.7 and I hit compile error due 
to pragma used in function:

/mnt/ramdisk/openjdk/src/hotspot/os/linux/os_linux.inline.hpp:103: error: 
#pragma GCC diagnostic not allowed inside functions


I'm sending little patch that fixes the issue by wrapping whole function. I've 
also created a macro for ignoring deprecated declaration inside 
compilerWarnings.hpp to line up with others.

Can someone please review? If it's ok, I would also need a sponsor.


diff -r 422615764e12 src/hotspot/os/linux/os_linux.inline.hpp
--- a/src/hotspot/os/linux/os_linux.inline.hpp	Thu Mar 15 14:54:10 2018 -0700
+++ b/src/hotspot/os/linux/os_linux.inline.hpp	Fri Mar 16 10:50:24 2018 +0100
@@ -96,13 +96,12 @@
    return ::ftruncate64(fd, length);
  }

-inline struct dirent* os::readdir(DIR* dirp, dirent *dbuf)
-{
  // readdir_r has been deprecated since glibc 2.24.
  // See https://sourceware.org/bugzilla/show_bug.cgi?id=19056 for more details.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
+PRAGMA_DIAG_PUSH
+PRAGMA_DEPRECATED_IGNORED
+inline struct dirent* os::readdir(DIR* dirp, dirent *dbuf)
+{
    dirent* p;
    int status;
    assert(dirp != NULL, "just checking");
@@ -114,11 +113,11 @@
    if((status = ::readdir_r(dirp, dbuf, &p)) != 0) {
      errno = status;
      return NULL;
-  } else
+  } else {
      return p;
-
-#pragma GCC diagnostic pop
+  }
  }
+PRAGMA_DIAG_POP

  inline int os::closedir(DIR *dirp) {
    assert(dirp != NULL, "argument is NULL");
diff -r 422615764e12 src/hotspot/share/utilities/compilerWarnings.hpp
--- a/src/hotspot/share/utilities/compilerWarnings.hpp	Thu Mar 15 14:54:10 2018 
-0700
+++ b/src/hotspot/share/utilities/compilerWarnings.hpp	Fri Mar 16 10:50:24 2018 
+0100
@@ -48,6 +48,7 @@
  #define PRAGMA_FORMAT_NONLITERAL_IGNORED _Pragma("GCC diagnostic ignored 
\"-Wformat-nonliteral\"") \
                                           _Pragma("GCC diagnostic ignored 
\"-Wformat-security\"")
  #define PRAGMA_FORMAT_IGNORED _Pragma("GCC diagnostic ignored \"-Wformat\"")
+#define PRAGMA_DEPRECATED_IGNORED _Pragma("GCC diagnostic ignored 
\"-Wdeprecated-declarations\"")

  #if defined(__clang_major__) && \
        (__clang_major__ >= 4 || \


Thanks!

-- 
Michal Vala
OpenJDK QE
Red Hat Czech


More information about the hotspot-dev mailing list