RFR: 8214976: Warn about uses of functions replaced for portability
Harold Seigel
hseigel at openjdk.java.net
Wed Jan 5 16:16:17 UTC 2022
On Tue, 4 Jan 2022 19:23:24 GMT, Harold Seigel <hseigel at openjdk.org> wrote:
> Please review this change for JDK-8214976. This change adds attribute warnings to header file compilerWarnings.hpp so that compilation warnings get issued when certain system functions are called directly, instead of hotspot's os:: versions of the functions. Many additional files were changed because of compilation warnings resulting from the compilerWarnings.hpp changes.
>
> A sample warning is:
>
> .../open/test/hotspot/gtest/logging/test_log.cpp:63:19: error: call to 'fopen' declared with attribute warning: use os::fopen [-Werror=attribute-warning]
> 63 | FILE* fp = fopen(TestLogFileName, "r");
> | ~~~~~^~~~~~~~~~~~~~~~~~~~~~
>
>
> Note that changing src/hotspot/os/linux/gc/z/zMountPoint_linux.cpp to call os:: functions requires adding "#include "runtime/os.hpp" and caused test gc/z/TestAllocateHeapAt.java to fail. So, for now, I just added PRAGMA_PERMIT_FORBIDDEN_C_FUNCTION to zMountPoint_linux.cpp. There's a similar issue with gtest/logging/test_logDecorators.cpp.
>
> Attribute warnings for additional functions, such as malloc(), were not included in this change because they require lots of source code changes.
>
> This change was tested by running mach5 tiers 1-2 on Linux, Mac OS, and Windows, Mach5 tiers 3-5 on Linux x64. Also, builds were done on Linux-zero, Linux-s390, and Linux-ppc.
>
> Thanks, Harold
Hi Kim,
I don't think that FORBIDDEN_C_FUNCTION should be enforced for files os_aix.cpp, os_bsd.cpp, os_posix.cpp, and os_windows.cpp. These are platform specific files that intentionally call multiple native functions. For example, os_linux.cpp calls close_dir() fopen(), close(), readdir(), write(), lseek(), etc.
Since PRAGMA_PERMIT_FORBIDDEN_C_FUNCTION ignores its argument and disables the warning for all native calls, I think it's reasonable to just specify PRAGMA_PERMIT_FORBIDDEN_C_FUNCTION once at the beginning of the above files and not clutter them with many PRAGMA_DIAG_PUSH/POP's.
Thanks, Harold
-------------
PR: https://git.openjdk.java.net/jdk/pull/6961
More information about the hotspot-dev
mailing list