-
Bug
-
Resolution: Not an Issue
-
P4
-
7
-
generic
-
generic
A number of "glitches" have been found in the Hotspot build files:
- see 6767659 for missed i486 -> x86_32 conversion
---
In make/solaris/makefiles/i486.make we have:
# force C++ interpreter to be full optimization
OPT_CFLAGS/interpret.o = -fast -O4
but there is no interpret.cpp. This should have been bytecodeInterpreter.o but to preserve existing behaviour it should just be deleted. (Vladimir fixed this before I could file this CR)
-----
build/solaris/makefiles/amd64.make contains this snippet:
# Temporary until SS10 C++ compiler is fixed
OPT_CFLAGS/generateOptoStub.o = -xO2
OPT_CFLAGS/thread.o = -xO2
The applicability of this under SS12 should be investigated, and if necessary this should be conditional on SS10 being used.
----
In solaris/makefiles/sparcWorks.make in the section for REV >= 5.5
ifeq ("${Platform_arch_model}", "x86_32")
OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS)
# UBE (CC 5.5) has bug 4923569 with -xO4
OPT_CFLAGS+=-xO3
endif # 32bit x86
The use of -xtarget=pentium is archaic and obsolete. Using -xtarget=pentium is the same as setting:
-xarch=386 -xchip=pentium -xcache=generic
and yet there is no -xarch 386 option listed in the manual, and the actual -x386 option is deprecated, replaced with -xarch=generic.
We should investigate what target value is appropriate for 2008.
We should also investigate whether -xO3 is desirable rather than -xO4 under SS12.
----
In solaris/makefiles/sparcWorks.make we set the various -m and -xtarget flags based on the architecture for use with SS12. The SS12 readme states to use "-xarch=sse2 -m64" in place of -xarch=amd64 but we don't set the sse2 part.
This should also be investigated.
----
Do we really need to support compiler versions < 5.5 ? It would be nice to be able to clean out all the historical baggage.
-----
in dtrace.make we have this:
ISA = $(subst i386,i486,$(shell isainfo -n))
...
XARCH = $(subst sparcv9,v9,$(shell echo $(ISA)))
...
$(CC) $(SYMFLAG) $(ARCHFLAG/$(XARCH)) -D$(TYPE) -I. -I$(GENERATED) \
which means on sparcv9 we will be looking for ARCHFLAG/v9 but it doesn't exist as sparcWorks.make contains:
ifeq ($(shell expr $(COMPILER_REV) \>= 5.9), 1)
ARCHFLAG/sparc = $(ARCHFLAG_NEW/sparc)
ARCHFLAG/sparcv9 = $(ARCHFLAG_NEW/sparcv9)
ARCHFLAG/i486 = $(ARCHFLAG_NEW/i486)
ARCHFLAG/amd64 = $(ARCHFLAG_NEW/amd64)
else
ARCHFLAG/sparc = $(ARCHFLAG_OLD/sparc)
ARCHFLAG/sparcv9 = $(ARCHFLAG_OLD/sparcv9)
ARCHFLAG/i486 = $(ARCHFLAG_OLD/i486)
ARCHFLAG/amd64 = $(ARCHFLAG_OLD/amd64)
endif
so unless I missed something it appears to me that we don't need XARCH and should instead be using $(ARCHFLAG/$(ISA))
In make/solaris/makefiles/fastdebug.make this specialization:
# Workaround for a bug in dtrace. If ciEnv::post_compiled_method_load_event()
# is inlined, the resulting dtrace object file needs a reference to this
# function, whose symbol name is too long for dtrace. So disable inlining
# for this method for now. (fix this when dtrace bug 6258412 is fixed)
OPT_CFLAGS/ciEnv.o = $(OPT_CFLAGS) -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_
should be written as:
OPT_CFLAGS/ciEnv.o += -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_
in case OPT_CFLAGS/ciEnv.o is specialized elsewhere.
In make/linux/makefiles/top.make we have:
AD_Spec = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch).ad
but that should be
AD_Spec = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad
- see 6767659 for missed i486 -> x86_32 conversion
---
In make/solaris/makefiles/i486.make we have:
# force C++ interpreter to be full optimization
OPT_CFLAGS/interpret.o = -fast -O4
but there is no interpret.cpp. This should have been bytecodeInterpreter.o but to preserve existing behaviour it should just be deleted. (Vladimir fixed this before I could file this CR)
-----
build/solaris/makefiles/amd64.make contains this snippet:
# Temporary until SS10 C++ compiler is fixed
OPT_CFLAGS/generateOptoStub.o = -xO2
OPT_CFLAGS/thread.o = -xO2
The applicability of this under SS12 should be investigated, and if necessary this should be conditional on SS10 being used.
----
In solaris/makefiles/sparcWorks.make in the section for REV >= 5.5
ifeq ("${Platform_arch_model}", "x86_32")
OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS)
# UBE (CC 5.5) has bug 4923569 with -xO4
OPT_CFLAGS+=-xO3
endif # 32bit x86
The use of -xtarget=pentium is archaic and obsolete. Using -xtarget=pentium is the same as setting:
-xarch=386 -xchip=pentium -xcache=generic
and yet there is no -xarch 386 option listed in the manual, and the actual -x386 option is deprecated, replaced with -xarch=generic.
We should investigate what target value is appropriate for 2008.
We should also investigate whether -xO3 is desirable rather than -xO4 under SS12.
----
In solaris/makefiles/sparcWorks.make we set the various -m and -xtarget flags based on the architecture for use with SS12. The SS12 readme states to use "-xarch=sse2 -m64" in place of -xarch=amd64 but we don't set the sse2 part.
This should also be investigated.
----
Do we really need to support compiler versions < 5.5 ? It would be nice to be able to clean out all the historical baggage.
-----
in dtrace.make we have this:
ISA = $(subst i386,i486,$(shell isainfo -n))
...
XARCH = $(subst sparcv9,v9,$(shell echo $(ISA)))
...
$(CC) $(SYMFLAG) $(ARCHFLAG/$(XARCH)) -D$(TYPE) -I. -I$(GENERATED) \
which means on sparcv9 we will be looking for ARCHFLAG/v9 but it doesn't exist as sparcWorks.make contains:
ifeq ($(shell expr $(COMPILER_REV) \>= 5.9), 1)
ARCHFLAG/sparc = $(ARCHFLAG_NEW/sparc)
ARCHFLAG/sparcv9 = $(ARCHFLAG_NEW/sparcv9)
ARCHFLAG/i486 = $(ARCHFLAG_NEW/i486)
ARCHFLAG/amd64 = $(ARCHFLAG_NEW/amd64)
else
ARCHFLAG/sparc = $(ARCHFLAG_OLD/sparc)
ARCHFLAG/sparcv9 = $(ARCHFLAG_OLD/sparcv9)
ARCHFLAG/i486 = $(ARCHFLAG_OLD/i486)
ARCHFLAG/amd64 = $(ARCHFLAG_OLD/amd64)
endif
so unless I missed something it appears to me that we don't need XARCH and should instead be using $(ARCHFLAG/$(ISA))
In make/solaris/makefiles/fastdebug.make this specialization:
# Workaround for a bug in dtrace. If ciEnv::post_compiled_method_load_event()
# is inlined, the resulting dtrace object file needs a reference to this
# function, whose symbol name is too long for dtrace. So disable inlining
# for this method for now. (fix this when dtrace bug 6258412 is fixed)
OPT_CFLAGS/ciEnv.o = $(OPT_CFLAGS) -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_
should be written as:
OPT_CFLAGS/ciEnv.o += -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_
in case OPT_CFLAGS/ciEnv.o is specialized elsewhere.
In make/linux/makefiles/top.make we have:
AD_Spec = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch).ad
but that should be
AD_Spec = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad
- relates to
-
JDK-6767659 Conversion from i486 to x86 missed some entries in makefiles
-
- Closed
-