Avoid using deprecated stat64 on Mac OS X
David Holmes
david.holmes at oracle.com
Sun Jul 28 23:10:25 PDT 2013
On 29/07/2013 4:02 PM, Krystal Mok wrote:
> Thank you very much, David.
>
> By the way, my build environment that had this problem was:
> Mac OS X 10.7.5,
> XCode 4.1
> i686-apple-darwin11-llvm-g++-4.2
Ooops - thanks.
David
> - Kris
>
>
> On Mon, Jul 29, 2013 at 1:57 PM, David Holmes <david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>> wrote:
>
> On 29/07/2013 3:34 PM, Krystal Mok wrote:
>
> Hi David,
>
> Thanks for taking a look. I'm not that familiar with other BSD
> variants,
> and I'm only encountering this on Mac OS X. Looking for help here.
>
>
> I can only assume that the warning is new in 10.8 as we don't see it
> building on 10.7. And given we are about to enable building on 10.8
> this is good to find now! I've filed 8021771.
>
>
> I think FreeBSD also uses the bsd-port in their downstream OpenJDK
> package. FreeBSD uses stat instead of stat64, too.
>
>
> We (ie whomever fixes this :) ) need to determine whether this can
> simply be changed or whether it needs to be ifdef'd on OSX.
>
> Thanks,
> David
>
> Thanks,
> Kris
>
>
> On Mon, Jul 29, 2013 at 1:24 PM, David Holmes
> <david.holmes at oracle.com <mailto:david.holmes at oracle.com>
> <mailto:david.holmes at oracle.__com
> <mailto:david.holmes at oracle.com>>> wrote:
>
> Hi Kris,
>
>
> On 28/07/2013 5:59 PM, Krystal Mok wrote:
>
> Hi all,
>
> I'm building a freshly cloned repo from the tip of
> hotspot-comp
> on Mac OS X
> 10.7.5, and got and error:
>
> llvm-g++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DAMD64
> -DASSERT -I.
>
> -I/Users/rednaxelafx/build/____hotspot-comp/hotspot/src/____share/vm/prims
>
> -I/Users/rednaxelafx/build/____hotspot-comp/hotspot/src/____share/vm
>
> -I/Users/rednaxelafx/build/____hotspot-comp/hotspot/src/____share/vm/precompiled
>
> -I/Users/rednaxelafx/build/____hotspot-comp/hotspot/src/cpu/____x86/vm
>
> -I/Users/rednaxelafx/build/____hotspot-comp/hotspot/src/os_____cpu/bsd_x86/vm
>
> -I/Users/rednaxelafx/build/____hotspot-comp/hotspot/src/os/____bsd/vm
>
> -I/Users/rednaxelafx/build/____hotspot-comp/hotspot/src/os/____posix/vm
> -I../generated
> -DHOTSPOT_RELEASE_VERSION="\"____25.0-b44-internal\""
> -DHOTSPOT_BUILD_TARGET="\"____fastdebug\""
> -DHOTSPOT_BUILD_USER="\"____rednaxelafx\""
> -DHOTSPOT_LIB_ARCH=\"amd64\"
> -DHOTSPOT_VM_DISTRO="\"____OpenJDK\""
> -DTARGET_OS_FAMILY_bsd
> -DTARGET_ARCH_x86
> -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86
> -DTARGET_OS_ARCH_MODEL_bsd_____x86_64 -DTARGET_COMPILER_gcc
>
> -DCOMPILER2
> -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -pthread
> -fcheck-new
> -m64
> -pipe -fno-strict-aliasing
> -DMAC_OS_X_VERSION_MAX_____ALLOWED=1070
>
> -mmacosx-version-min=10.7.0 -Os -DVM_LITTLE_ENDIAN
> -D_LP64=1
> -fno-omit-frame-pointer -Werror -Wunused-function
> -DDTRACE_ENABLED
> -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE
> -DALLOW_OPERATOR_NEW_USAGE
> -c -MMD -MP
> -MF
> ../generated/dependencies/____attachListener_bsd.o.d -fpch-deps -o
> attachListener_bsd.o
>
> /Users/rednaxelafx/build/____hotspot-comp/hotspot/src/os/____bsd/vm/attachListener_bsd.cpp
>
> cc1plus: warnings being treated as errors
>
> /Users/rednaxelafx/build/____hotspot-comp/hotspot/src/os/____bsd/vm/attachListener_bsd.cpp:
>
> In static member function ‘static void
> AttachListener::vm_start()’:
>
> /Users/rednaxelafx/build/____hotspot-comp/hotspot/src/os/____bsd/vm/attachListener_bsd.cpp:____455:
>
> warning: ‘stat64’ is deprecated (declared at
> /usr/include/sys/stat.h:466)
>
> /Users/rednaxelafx/build/____hotspot-comp/hotspot/src/os/____bsd/vm/attachListener_bsd.cpp:____455:
>
> warning: ‘stat64’ is deprecated (declared at
> /usr/include/sys/stat.h:466)
> make[6]: *** [attachListener_bsd.o] Error 1
>
> The problem came from a recent commit [1]:
> 7162400: Intermittent java.io.IOException: Bad file
> number during
> HotSpotVirtualMachine.____executeCommand
>
>
> According to [2], the *-64 variants of the stat*()
> functions
> have been
> deprecated on Mac OS X and should be avoided.
>
>
> So is this purely an OSX issue or also a BSD one? I'm
> assuming OSX.
>
> Does anybody out there actually use the BSD port seperately
> from OSX?
>
> David
> -----
>
>
>
> The fix is simple:
> diff -r d90d1b96b65b
> src/os/bsd/vm/attachListener_____bsd.cpp
> --- a/src/os/bsd/vm/____attachListener_bsd.cpp Fri Jul
> 26 12:37:39
> 2013 -0700
> +++ b/src/os/bsd/vm/____attachListener_bsd.cpp Sun Jul
> 28 15:55:54
>
> 2013 +0800
> @@ -445,14 +445,14 @@
>
> void AttachListener::vm_start() {
> char fn[UNIX_PATH_MAX];
> - struct stat64 st;
> + struct stat st;
> int ret;
>
> int n = snprintf(fn, UNIX_PATH_MAX, "%s/.java_pid%d",
> os::get_temp_directory(),
> os::current_process_id());
> assert(n < (int)UNIX_PATH_MAX, "java_pid file name
> buffer
> overflow");
>
> - RESTARTABLE(::stat64(fn, &st), ret);
> + RESTARTABLE(::stat(fn, &st), ret);
> if (ret == 0) {
> ret = ::unlink(fn);
> if (ret == -1) {
>
> I'm not sure if this should be done for all BSD
> platforms. Could
> anybody
> help confirm this?
>
> Thanks,
> Kris
>
> (P.S. recovering from bad health...)
>
> [1]:
> http://hg.openjdk.java.net/____hsx/hotspot-comp/hotspot/rev/____2e8f19c2feef
> <http://hg.openjdk.java.net/__hsx/hotspot-comp/hotspot/rev/__2e8f19c2feef>
>
> <http://hg.openjdk.java.net/__hsx/hotspot-comp/hotspot/rev/__2e8f19c2feef
> <http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/2e8f19c2feef>>
> [2]:
> https://developer.apple.com/____library/mac/documentation/____Darwin/Reference/ManPages/____man2/stat64.2.html
> <https://developer.apple.com/__library/mac/documentation/__Darwin/Reference/ManPages/__man2/stat64.2.html>
>
> <https://developer.apple.com/__library/mac/documentation/__Darwin/Reference/ManPages/__man2/stat64.2.html
> <https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/stat64.2.html>>
>
>
>
More information about the hotspot-dev
mailing list