Hi Michal,

On 16/03/2018 8:48 PM, Michal Vala wrote:
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:

That's a very old gcc. Our "official" version is 4.9.2 but we're working on getting gcc 7.x working as well. This code causes no problem on 4.9.2+ so to make any change we'd have to know it will continue to work on later versions.

Also a google search indicates the "pragma diagnostic push" and pop weren't added until gcc 4.6 ??

David
-----

/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!

Reply via email to