# HG changeset patch # User xlu # Date 1214514901 25200 # Node ID 3e82d72933d0e53be525fc1e2c4bb426d2ec4334 # Parent f232d7d670235d9a26c63d78f40cb198f5c72f22 6718830: Hotspot fails to build with gcc 4.3 Summary: Fixed linux make file and couple adlc code to meet the changes of gcc 4.3 Reviewed-by: kamg, igor diff -r f232d7d67023 -r 3e82d72933d0 make/linux/makefiles/gcc.make --- a/make/linux/makefiles/gcc.make Tue Jun 24 16:52:31 2008 -0700 +++ b/make/linux/makefiles/gcc.make Thu Jun 26 14:15:01 2008 -0700 @@ -84,8 +84,17 @@ # Compiler warnings are treated as errors WARNINGS_ARE_ERRORS = -Werror + # Except for a few acceptable ones +# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit +# conversions which might affect the values. To avoid that, we need to turn +# it off explicitly. +ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" +ACCEPTABLE_WARNINGS = -Wpointer-arith -Wsign-compare +else ACCEPTABLE_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare +endif + CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ACCEPTABLE_WARNINGS) # Special cases CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@)) diff -r f232d7d67023 -r 3e82d72933d0 src/share/vm/adlc/adlc.hpp --- a/src/share/vm/adlc/adlc.hpp Tue Jun 24 16:52:31 2008 -0700 +++ b/src/share/vm/adlc/adlc.hpp Thu Jun 26 14:15:01 2008 -0700 @@ -29,11 +29,7 @@ // standard library constants #include "stdio.h" #include "stdlib.h" -#if _MSC_VER >= 1300 // Visual C++ 7.0 or later #include -#else -#include -#endif #include "string.h" #include "ctype.h" #include "stdarg.h" diff -r f232d7d67023 -r 3e82d72933d0 src/share/vm/adlc/filebuff.hpp --- a/src/share/vm/adlc/filebuff.hpp Tue Jun 24 16:52:31 2008 -0700 +++ b/src/share/vm/adlc/filebuff.hpp Thu Jun 26 14:15:01 2008 -0700 @@ -23,13 +23,9 @@ */ // FILEBUFF.HPP - Definitions for parser file buffering routines +#include -#if _MSC_VER >= 1300 // Visual C++ 7.0 or later -#include -#else -#include -#endif - +using namespace std; // STRUCTURE FOR HANDLING INPUT AND OUTPUT FILES typedef struct { const char *_name;