[PATCH][jdk8u] hotspot: Fix build warning with gcc 7.x

Siddhesh Poyarekar siddhesh at gotplt.org
Thu Dec 20 13:24:22 UTC 2018


Hi,

gcc 7 has improved diagnostics that warn on potential out of bounds 
errors.  This results in the following warning when building jdk8u with 
gcc 7:

/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/code/dependencies.cpp: 
In function ‘static void Dependencies::write_dependency_to(xmlStream*, 
Dependencies::DepType, GrowableArray<Dependencies::DepArgument>*, Klass*)’:
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/code/dependencies.cpp:498:6: 
warning: ‘%d’ directive writing between 1 and 10 bytes into a region of 
size 9 [-Wformat-overflow=]
  void Dependencies::write_dependency_to(xmlStream* xtty,
       ^~~~~~~~~~~~
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/code/dependencies.cpp:498:6: 
note: directive argument in the range [0, 2147483647]
In file included from /usr/include/stdio.h:862:0,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/prims/jni.h:39,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/utilities/globalDefinitions.hpp:33,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/utilities/debug.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/runtime/globals.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/memory/allocation.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/memory/iterator.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/memory/genOopClosures.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/oops/klass.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/runtime/handles.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/memory/universe.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/code/oopRecorder.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/asm/codeBuffer.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/asm/assembler.hpp:28,
                  from 
/home/ubuntu/openjdk/jdk8u/hotspot/src/share/vm/precompiled/precompiled.hpp:29:
/usr/include/aarch64-linux-gnu/bits/stdio2.h:34:43: note: 
‘__builtin___sprintf_chk’ output between 3 and 12 bytes into a 
destination of size 10
        __bos (__s), __fmt, __va_arg_pack ());
                                            ^
The bounds will likely never be crossed in practice but it might be safe 
to trivially bump up th size of the array in question (xn) and thus 
silence the warning.  Attached patch does that.

I have build tested this on aarch64 and x86 to verify that the warning 
is silenced.  A hotspot test run aarch64 shows no new test failures from 
this.

Siddhesh
-------------- next part --------------
diff -r c747935d0dc6 src/share/vm/code/dependencies.cpp
--- a/src/share/vm/code/dependencies.cpp	Tue Nov 13 11:21:32 2018 -0500
+++ b/src/share/vm/code/dependencies.cpp	Thu Dec 20 12:38:32 2018 +0000
@@ -525,7 +525,7 @@
         xtty->object("x", arg.metadata_value());
       }
     } else {
-      char xn[10]; sprintf(xn, "x%d", j);
+      char xn[12]; sprintf(xn, "x%d", j);
       if (arg.is_oop()) {
         xtty->object(xn, arg.oop_value());
       } else {


More information about the jdk8u-dev mailing list