Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
720eac28
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
720eac28
编写于
6月 04, 2013
作者:
S
simonis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8015252: Enable HotSpot build with Clang
Reviewed-by: twisti, dholmes, kvn
上级
31a10fc2
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
348 addition
and
148 deletion
+348
-148
make/bsd/makefiles/adlc.make
make/bsd/makefiles/adlc.make
+1
-1
make/bsd/makefiles/gcc.make
make/bsd/makefiles/gcc.make
+159
-53
make/bsd/makefiles/vm.make
make/bsd/makefiles/vm.make
+5
-1
make/linux/makefiles/adlc.make
make/linux/makefiles/adlc.make
+1
-1
make/linux/makefiles/gcc.make
make/linux/makefiles/gcc.make
+172
-46
src/os/bsd/vm/os_bsd.cpp
src/os/bsd/vm/os_bsd.cpp
+0
-43
src/os_cpu/linux_x86/vm/linux_x86_32.s
src/os_cpu/linux_x86/vm/linux_x86_32.s
+3
-3
src/os_cpu/linux_x86/vm/os_linux_x86.cpp
src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+7
-0
未找到文件。
make/bsd/makefiles/adlc.make
浏览文件 @
720eac28
...
...
@@ -69,7 +69,7 @@ CXXFLAGS += -DASSERT
# CFLAGS_WARN holds compiler options to suppress/enable warnings.
# Compiler warnings are treated as errors
ifneq
($(COMPILER_WARNINGS_FATAL),false)
CFLAGS_WARN
=
-Werror
CFLAGS_WARN
=
$(WARNINGS_ARE_ERRORS)
endif
CFLAGS
+=
$(CFLAGS_WARN)
...
...
make/bsd/makefiles/gcc.make
浏览文件 @
720eac28
...
...
@@ -71,6 +71,11 @@ ifeq ($(SPEC),)
CC
=
$(CC32)
endif
ifeq
($(USE_CLANG), true)
CXX
=
clang++
CC
=
clang
endif
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
endif
...
...
@@ -79,21 +84,79 @@ ifeq ($(SPEC),)
endif
# -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
# prints the numbers (e.g. "2.95", "3.2.1")
CC_VER_MAJOR
:=
$(
shell
$(CC)
-dumpversion
|
sed
's/egcs-//'
|
cut
-d
'.'
-f1
)
CC_VER_MINOR
:=
$(
shell
$(CC)
-dumpversion
|
sed
's/egcs-//'
|
cut
-d
'.'
-f2
)
# check for precompiled headers support
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
# Allow the user to turn off precompiled headers from the command line.
ifneq
($(USE_PRECOMPILED_HEADER),0)
PRECOMPILED_HEADER_DIR
=
.
PRECOMPILED_HEADER_SRC
=
$(GAMMADIR)
/src/share/vm/precompiled/precompiled.hpp
PRECOMPILED_HEADER
=
$(PRECOMPILED_HEADER_DIR)
/precompiled.hpp.gch
ifeq
($(USE_CLANG), true)
CC_VER_MAJOR
:=
$(
shell
$(CC)
-v
2>&1 |
grep
version |
sed
"s/.*version
\(
[0-9]*
\.
[0-9]*
\)
.*/
\1
/"
|
cut
-d
'.'
-f1
)
CC_VER_MINOR
:=
$(
shell
$(CC)
-v
2>&1 |
grep
version |
sed
"s/.*version
\(
[0-9]*
\.
[0-9]*
\)
.*/
\1
/"
|
cut
-d
'.'
-f2
)
else
# -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
# prints the numbers (e.g. "2.95", "3.2.1")
CC_VER_MAJOR
:=
$(
shell
$(CC)
-dumpversion
|
sed
's/egcs-//'
|
cut
-d
'.'
-f1
)
CC_VER_MINOR
:=
$(
shell
$(CC)
-dumpversion
|
sed
's/egcs-//'
|
cut
-d
'.'
-f2
)
endif
ifeq
($(USE_CLANG), true)
# clang has precompiled headers support by default, but the user can switch
# it off by using 'USE_PRECOMPILED_HEADER=0'.
ifdef
LP64
ifeq
($(USE_PRECOMPILED_HEADER),)
USE_PRECOMPILED_HEADER
=
1
endif
else
# We don't support precompiled headers on 32-bit builds because there some files are
# compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make)
# Clang produces an error if the PCH file was compiled with other options than the actual compilation unit.
USE_PRECOMPILED_HEADER
=
0
endif
ifeq
($(USE_PRECOMPILED_HEADER),1)
ifndef
LP64
$(error
" Precompiled Headers only supported on 64-bit platforms!"
)
endif
PRECOMPILED_HEADER_DIR
=
.
PRECOMPILED_HEADER_SRC
=
$(GAMMADIR)
/src/share/vm/precompiled/precompiled.hpp
PRECOMPILED_HEADER
=
$(PRECOMPILED_HEADER_DIR)
/precompiled.hpp.pch
PCH_FLAG
=
-include
precompiled.hpp
PCH_FLAG/
DEFAULT
=
$(PCH_FLAG)
PCH_FLAG/
NO_PCH
=
-DNO_PCH
PCH_FLAG/
BY_FILE
=
$
(
PCH_FLAG/
$@
)
$
(
PCH_FLAG/DEFAULT
$
(
PCH_FLAG/
$@
))
VM_PCH_FLAG/
LIBJVM
=
$
(
PCH_FLAG/BY_FILE
)
VM_PCH_FLAG/
AOUT
=
VM_PCH_FLAG
=
$
(
VM_PCH_FLAG/
$(LINK_INTO)
)
# We only use precompiled headers for the JVM build
CFLAGS
+=
$(VM_PCH_FLAG)
# There are some files which don't like precompiled headers
# The following files are build with 'OPT_CFLAGS/NOOPT' (-O0) in the opt build.
# But Clang doesn't support a precompiled header which was compiled with -O3
# to be used in a compilation unit which uses '-O0'. We could also prepare an
# extra '-O0' PCH file for the opt build and use it here, but it's probably
# not worth the effort as long as only two files need this special handling.
PCH_FLAG/
loopTransform.o
=
$
(
PCH_FLAG/NO_PCH
)
PCH_FLAG/
sharedRuntimeTrig.o
=
$
(
PCH_FLAG/NO_PCH
)
PCH_FLAG/
sharedRuntimeTrans.o
=
$
(
PCH_FLAG/NO_PCH
)
endif
else
# ($(USE_CLANG), true)
# check for precompiled headers support
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
# Allow the user to turn off precompiled headers from the command line.
ifneq
($(USE_PRECOMPILED_HEADER),0)
PRECOMPILED_HEADER_DIR
=
.
PRECOMPILED_HEADER_SRC
=
$(GAMMADIR)
/src/share/vm/precompiled/precompiled.hpp
PRECOMPILED_HEADER
=
$(PRECOMPILED_HEADER_DIR)
/precompiled.hpp.gch
endif
endif
endif
# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
ifeq
($(USE_PRECOMPILED_HEADER),0)
CFLAGS
+=
-DDONT_USE_PRECOMPILED_HEADER
endif
#------------------------------------------------------------------------
# Compiler flags
...
...
@@ -115,17 +178,31 @@ endif
CFLAGS
+=
$(VM_PICFLAG)
CFLAGS
+=
-fno-rtti
CFLAGS
+=
-fno-exceptions
CFLAGS
+=
-pthread
CFLAGS
+=
-fcheck-new
# version 4 and above support fvisibility=hidden (matches jni_x86.h file)
# except 4.1.2 gives pointless warnings that can't be disabled (afaik)
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
CFLAGS
+=
-fvisibility
=
hidden
ifeq
($(USE_CLANG),)
CFLAGS
+=
-pthread
CFLAGS
+=
-fcheck-new
# version 4 and above support fvisibility=hidden (matches jni_x86.h file)
# except 4.1.2 gives pointless warnings that can't be disabled (afaik)
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
CFLAGS
+=
-fvisibility
=
hidden
endif
else
CFLAGS
+=
-fvisibility
=
hidden
endif
ifeq
($(USE_CLANG), true)
# Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm'
# Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment')
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0"
STACK_ALIGNMENT_OPT
=
-mno-omit-leaf-frame-pointer
-mstack-alignment
=
16
else
STACK_ALIGNMENT_OPT
=
-mno-omit-leaf-frame-pointer
-mllvm
-stack-alignment
=
16
endif
endif
ARCHFLAG
=
$
(
ARCHFLAG/
$(BUILDARCH)
)
ARCHFLAG/
i486
=
-m32
-march
=
i586
ARCHFLAG/
amd64
=
-m64
ARCHFLAG/
amd64
=
-m64
$(STACK_ALIGNMENT_OPT)
ARCHFLAG/
ia64
=
ARCHFLAG/
sparc
=
-m32
-mcpu
=
v9
ARCHFLAG/
sparcv9
=
-m64
-mcpu
=
v9
...
...
@@ -163,14 +240,25 @@ ifneq ($(COMPILER_WARNINGS_FATAL),false)
WARNINGS_ARE_ERRORS
=
-Werror
endif
# 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"
ifeq
($(USE_CLANG), true)
# However we need to clean the code up before we can unrestrictedly enable this option with Clang
WARNINGS_ARE_ERRORS
+=
-Wno-unused-value
-Wno-logical-op-parentheses
-Wno-parentheses-equality
-Wno-parentheses
WARNINGS_ARE_ERRORS
+=
-Wno-switch
-Wno-tautological-compare
# Not yet supported by clang in Xcode 4.6.2
# WARNINGS_ARE_ERRORS += -Wno-tautological-constant-out-of-range-compare
WARNINGS_ARE_ERRORS
+=
-Wno-delete-non-virtual-dtor
-Wno-deprecated
-Wno-format
-Wno-dynamic-class-memaccess
WARNINGS_ARE_ERRORS
+=
-Wno-return-type
-Wno-empty-body
endif
WARNING_FLAGS
=
-Wpointer-arith
-Wsign-compare
-Wundef
else
WARNING_FLAGS
=
-Wpointer-arith
-Wconversion
-Wsign-compare
-Wundef
ifeq
"$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
# conversions which might affect the values. Only enable it in earlier versions.
WARNING_FLAGS
=
-Wunused-function
ifeq
($(USE_CLANG),)
WARNINGS_FLAGS
+=
-Wconversion
endif
endif
CFLAGS_WARN/
DEFAULT
=
$(WARNINGS_ARE_ERRORS)
$(WARNING_FLAGS)
...
...
@@ -214,14 +302,24 @@ endif
OPT_CFLAGS/
NOOPT
=
-O0
# 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
ifneq
"$(shell expr \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) = 3 \) \))" "0"
OPT_CFLAGS/
mulnode.o
+=
-O0
# Work around some compiler bugs.
ifeq
($(USE_CLANG), true)
ifeq
($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1)
OPT_CFLAGS/
loopTransform.o
+=
$
(
OPT_CFLAGS/NOOPT
)
endif
else
# 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
ifeq
($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1)
OPT_CFLAGS/
mulnode.o
+=
$
(
OPT_CFLAGS/NOOPT
)
endif
endif
# Flags for generating make dependency flags.
ifneq
("${CC_VER_MAJOR}", "2")
DEPFLAGS
=
-fpch-deps
-MMD
-MP
-MF
$(DEP_DIR)
/
$
(
@:%
=
%.d
)
DEPFLAGS
=
-MMD
-MP
-MF
$(DEP_DIR)
/
$
(
@:%
=
%.d
)
ifeq
($(USE_CLANG),)
ifneq
($(CC_VER_MAJOR), 2)
DEPFLAGS
+=
-fpch-deps
endif
endif
# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
...
...
@@ -249,13 +347,15 @@ endif
# statically link libstdc++.so, work with gcc but ignored by g++
STATIC_STDCXX
=
-Wl
,-Bstatic
-lstdc
++
-Wl
,-Bdynamic
# statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x.
ifneq
("${CC_VER_MAJOR}", "2")
STATIC_LIBGCC
+=
-static-libgcc
endif
ifeq
($(USE_CLANG),)
# statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x.
ifneq
("${CC_VER_MAJOR}", "2")
STATIC_LIBGCC
+=
-static-libgcc
endif
ifeq
($(BUILDARCH), ia64)
LFLAGS
+=
-Wl
,-relax
ifeq
($(BUILDARCH), ia64)
LFLAGS
+=
-Wl
,-relax
endif
endif
# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
...
...
@@ -296,25 +396,31 @@ endif
#------------------------------------------------------------------------
# Debug flags
# Use the stabs format for debugging information (this is the default
# on gcc-2.91). It's good enough, has all the information about line
# numbers and local variables, and libjvm.so is only about 16M.
# Change this back to "-g" if you want the most expressive format.
# (warning: that could easily inflate libjvm.so to 150M!)
# Note: The Itanium gcc compiler crashes when using -gstabs.
DEBUG_CFLAGS/
ia64
=
-g
DEBUG_CFLAGS/
amd64
=
-g
DEBUG_CFLAGS/
arm
=
-g
DEBUG_CFLAGS/
ppc
=
-g
DEBUG_CFLAGS
+=
$
(
DEBUG_CFLAGS/
$(BUILDARCH)
)
ifeq
($(DEBUG_CFLAGS/$(BUILDARCH)),)
DEBUG_CFLAGS
+=
-gstabs
ifeq
($(USE_CLANG), true)
# Restrict the debug information created by Clang to avoid
# too big object files and speed the build up a little bit
# (see http://llvm.org/bugs/show_bug.cgi?id=7554)
CFLAGS
+=
-flimit-debug-info
endif
# DEBUG_BINARIES
overrides everything, use full -g debug information
# DEBUG_BINARIES
uses full -g debug information for all configs
ifeq
($(DEBUG_BINARIES), true)
DEBUG_CFLAGS
=
-g
CFLAGS
+=
$(DEBUG_CFLAGS)
CFLAGS
+=
-g
else
# Use the stabs format for debugging information (this is the default
# on gcc-2.91). It's good enough, has all the information about line
# numbers and local variables, and libjvm.so is only about 16M.
# Change this back to "-g" if you want the most expressive format.
# (warning: that could easily inflate libjvm.so to 150M!)
# Note: The Itanium gcc compiler crashes when using -gstabs.
DEBUG_CFLAGS/
ia64
=
-g
DEBUG_CFLAGS/
amd64
=
-g
DEBUG_CFLAGS/
arm
=
-g
DEBUG_CFLAGS/
ppc
=
-g
DEBUG_CFLAGS
+=
$
(
DEBUG_CFLAGS/
$(BUILDARCH)
)
ifeq
($(DEBUG_CFLAGS/$(BUILDARCH)),)
DEBUG_CFLAGS
+=
-gstabs
endif
endif
# If we are building HEADLESS, pass on to VM
...
...
make/bsd/makefiles/vm.make
浏览文件 @
720eac28
...
...
@@ -126,7 +126,11 @@ ifneq ($(OS_VENDOR), Darwin)
LFLAGS
+=
-Xlinker
-z
-Xlinker
noexecstack
endif
LIBS
+=
-lm
-pthread
LIBS
+=
-lm
ifeq
($(USE_CLANG),)
LIBS
+=
-pthread
endif
# By default, link the *.o into the library, not the executable.
LINK_INTO$(LINK_INTO)
=
LIBJVM
...
...
make/linux/makefiles/adlc.make
浏览文件 @
720eac28
...
...
@@ -68,7 +68,7 @@ CXXFLAGS += -DASSERT
# CFLAGS_WARN holds compiler options to suppress/enable warnings.
# Compiler warnings are treated as errors
CFLAGS_WARN
=
-Werror
CFLAGS_WARN
=
$(WARNINGS_ARE_ERRORS)
CFLAGS
+=
$(CFLAGS_WARN)
OBJECTNAMES
=
\
...
...
make/linux/makefiles/gcc.make
浏览文件 @
720eac28
...
...
@@ -35,9 +35,15 @@ ifeq ($(SPEC),)
HOSTCXX
=
g++
HOSTCC
=
gcc
STRIP
=
$(ALT_COMPILER_PATH)
/strip
else
ifeq
($(USE_CLANG), true)
CXX
=
clang++
CC
=
clang
else
CXX
=
g++
CC
=
gcc
endif
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
STRIP
=
strip
...
...
@@ -46,19 +52,79 @@ ifeq ($(SPEC),)
endif
# -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
# prints the numbers (e.g. "2.95", "3.2.1")
CC_VER_MAJOR
:=
$(
shell
$(CC)
-dumpversion
|
sed
's/egcs-//'
|
cut
-d
'.'
-f1
)
CC_VER_MINOR
:=
$(
shell
$(CC)
-dumpversion
|
sed
's/egcs-//'
|
cut
-d
'.'
-f2
)
ifeq
($(USE_CLANG), true)
CC_VER_MAJOR
:=
$(
shell
$(CC)
-v
2>&1 |
grep
version |
sed
"s/.*version
\(
[0-9]*
\.
[0-9]*
\)
.*/
\1
/"
|
cut
-d
'.'
-f1
)
CC_VER_MINOR
:=
$(
shell
$(CC)
-v
2>&1 |
grep
version |
sed
"s/.*version
\(
[0-9]*
\.
[0-9]*
\)
.*/
\1
/"
|
cut
-d
'.'
-f2
)
else
# -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
# prints the numbers (e.g. "2.95", "3.2.1")
CC_VER_MAJOR
:=
$(
shell
$(CC)
-dumpversion
|
sed
's/egcs-//'
|
cut
-d
'.'
-f1
)
CC_VER_MINOR
:=
$(
shell
$(CC)
-dumpversion
|
sed
's/egcs-//'
|
cut
-d
'.'
-f2
)
endif
ifeq
($(USE_CLANG), true)
# Clang has precompiled headers support by default, but the user can switch
# it off by using 'USE_PRECOMPILED_HEADER=0'.
ifdef
LP64
ifeq
($(USE_PRECOMPILED_HEADER),)
USE_PRECOMPILED_HEADER
=
1
endif
else
# We don't support precompiled headers on 32-bit builds because there some files are
# compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make)
# Clang produces an error if the PCH file was compiled with other options than the actual compilation unit.
USE_PRECOMPILED_HEADER
=
0
endif
ifeq
($(USE_PRECOMPILED_HEADER),1)
ifndef
LP64
$(error
" Precompiled Headers only supported on 64-bit platforms!"
)
endif
PRECOMPILED_HEADER_DIR
=
.
PRECOMPILED_HEADER_SRC
=
$(GAMMADIR)
/src/share/vm/precompiled/precompiled.hpp
PRECOMPILED_HEADER
=
$(PRECOMPILED_HEADER_DIR)
/precompiled.hpp.pch
PCH_FLAG
=
-include
precompiled.hpp
PCH_FLAG/
DEFAULT
=
$(PCH_FLAG)
PCH_FLAG/
NO_PCH
=
-DNO_PCH
PCH_FLAG/
BY_FILE
=
$
(
PCH_FLAG/
$@
)
$
(
PCH_FLAG/DEFAULT
$
(
PCH_FLAG/
$@
))
# check for precompiled headers support
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
# Allow the user to turn off precompiled headers from the command line.
ifneq
($(USE_PRECOMPILED_HEADER),0)
PRECOMPILED_HEADER_DIR
=
.
PRECOMPILED_HEADER_SRC
=
$(GAMMADIR)
/src/share/vm/precompiled/precompiled.hpp
PRECOMPILED_HEADER
=
$(PRECOMPILED_HEADER_DIR)
/precompiled.hpp.gch
VM_PCH_FLAG/
LIBJVM
=
$
(
PCH_FLAG/BY_FILE
)
VM_PCH_FLAG/
AOUT
=
VM_PCH_FLAG
=
$
(
VM_PCH_FLAG/
$(LINK_INTO)
)
# We only use precompiled headers for the JVM build
CFLAGS
+=
$(VM_PCH_FLAG)
# There are some files which don't like precompiled headers
# The following files are build with 'OPT_CFLAGS/NOOPT' (-O0) in the opt build.
# But Clang doesn't support a precompiled header which was compiled with -O3
# to be used in a compilation unit which uses '-O0'. We could also prepare an
# extra '-O0' PCH file for the opt build and use it here, but it's probably
# not worth the effoert as long as only two files need this special handling.
PCH_FLAG/
loopTransform.o
=
$
(
PCH_FLAG/NO_PCH
)
PCH_FLAG/
sharedRuntimeTrig.o
=
$
(
PCH_FLAG/NO_PCH
)
PCH_FLAG/
sharedRuntimeTrans.o
=
$
(
PCH_FLAG/NO_PCH
)
endif
else
# ($(USE_CLANG), true)
# check for precompiled headers support
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
# Allow the user to turn off precompiled headers from the command line.
ifneq
($(USE_PRECOMPILED_HEADER),0)
PRECOMPILED_HEADER_DIR
=
.
PRECOMPILED_HEADER_SRC
=
$(GAMMADIR)
/src/share/vm/precompiled/precompiled.hpp
PRECOMPILED_HEADER
=
$(PRECOMPILED_HEADER_DIR)
/precompiled.hpp.gch
endif
endif
endif
# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
ifeq
($(USE_PRECOMPILED_HEADER),0)
CFLAGS
+=
-DDONT_USE_PRECOMPILED_HEADER
endif
...
...
@@ -83,16 +149,30 @@ CFLAGS += $(VM_PICFLAG)
CFLAGS
+=
-fno-rtti
CFLAGS
+=
-fno-exceptions
CFLAGS
+=
-D_REENTRANT
CFLAGS
+=
-fcheck-new
# version 4 and above support fvisibility=hidden (matches jni_x86.h file)
# except 4.1.2 gives pointless warnings that can't be disabled (afaik)
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
CFLAGS
+=
-fvisibility
=
hidden
ifeq
($(USE_CLANG),)
CFLAGS
+=
-fcheck-new
# version 4 and above support fvisibility=hidden (matches jni_x86.h file)
# except 4.1.2 gives pointless warnings that can't be disabled (afaik)
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
CFLAGS
+=
-fvisibility
=
hidden
endif
else
CFLAGS
+=
-fvisibility
=
hidden
endif
ifeq
($(USE_CLANG), true)
# Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm'
# Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment')
ifneq
"$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0"
STACK_ALIGNMENT_OPT
=
-mno-omit-leaf-frame-pointer
-mstack-alignment
=
16
else
STACK_ALIGNMENT_OPT
=
-mno-omit-leaf-frame-pointer
-mllvm
-stack-alignment
=
16
endif
endif
ARCHFLAG
=
$
(
ARCHFLAG/
$(BUILDARCH)
)
ARCHFLAG/
i486
=
-m32
-march
=
i586
ARCHFLAG/
amd64
=
-m64
ARCHFLAG/
amd64
=
-m64
$(STACK_ALIGNMENT_OPT)
ARCHFLAG/
ia64
=
ARCHFLAG/
sparc
=
-m32
-mcpu
=
v9
ARCHFLAG/
sparcv9
=
-m64
-mcpu
=
v9
...
...
@@ -126,12 +206,22 @@ endif
# Compiler warnings are treated as errors
WARNINGS_ARE_ERRORS
=
-Werror
ifeq
($(USE_CLANG), true)
# However we need to clean the code up before we can unrestrictedly enable this option with Clang
WARNINGS_ARE_ERRORS
+=
-Wno-unused-value
-Wno-logical-op-parentheses
-Wno-parentheses-equality
-Wno-parentheses
WARNINGS_ARE_ERRORS
+=
-Wno-switch
-Wno-tautological-constant-out-of-range-compare
-Wno-tautological-compare
WARNINGS_ARE_ERRORS
+=
-Wno-delete-non-virtual-dtor
-Wno-deprecated
-Wno-format
-Wno-dynamic-class-memaccess
WARNINGS_ARE_ERRORS
+=
-Wno-return-type
-Wno-empty-body
endif
WARNING_FLAGS
=
-Wpointer-arith
-Wsign-compare
-Wundef
-Wunused-function
# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
# conversions which might affect the values. Only enable it in earlier versions.
ifeq
"$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
WARNING_FLAGS
+=
-Wconversion
ifeq
($(USE_CLANG),)
# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
# conversions which might affect the values. Only enable it in earlier versions.
ifeq
"$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
WARNING_FLAGS
+=
-Wconversion
endif
endif
CFLAGS_WARN/
DEFAULT
=
$(WARNINGS_ARE_ERRORS)
$(WARNING_FLAGS)
...
...
@@ -165,19 +255,24 @@ endif
OPT_CFLAGS/
NOOPT
=
-O0
# 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
ifneq
"$(shell expr \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) = 3 \) \))" "0"
OPT_CFLAGS/
mulnode.o
+=
-O0
# Work around some compiler bugs.
ifeq
($(USE_CLANG), true)
ifeq
($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1)
OPT_CFLAGS/
loopTransform.o
+=
$
(
OPT_CFLAGS/NOOPT
)
endif
else
# 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
ifeq
($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1)
OPT_CFLAGS/
mulnode.o
+=
$
(
OPT_CFLAGS/NOOPT
)
endif
endif
# Flags for generating make dependency flags.
ifneq
("${CC_VER_MAJOR}", "2")
DEPFLAGS
=
-fpch-deps
-MMD
-MP
-MF
$(DEP_DIR)
/
$
(
@:%
=
%.d
)
endif
# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
ifeq
($(USE_PRECOMPILED_HEADER),0)
CFLAGS
+=
-DDONT_USE_PRECOMPILED_HEADER
DEPFLAGS
=
-MMD
-MP
-MF
$(DEP_DIR)
/
$
(
@:%
=
%.d
)
ifeq
($(USE_CLANG),)
ifneq
("${CC_VER_MAJOR}", "2")
DEPFLAGS
+=
-fpch-deps
endif
endif
#------------------------------------------------------------------------
...
...
@@ -186,24 +281,33 @@ endif
# statically link libstdc++.so, work with gcc but ignored by g++
STATIC_STDCXX
=
-Wl
,-Bstatic
-lstdc
++
-Wl
,-Bdynamic
# statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x.
ifneq
("${CC_VER_MAJOR}", "2")
STATIC_LIBGCC
+=
-static-libgcc
endif
ifeq
($(USE_CLANG),)
# statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x.
ifneq
("${CC_VER_MAJOR}", "2")
STATIC_LIBGCC
+=
-static-libgcc
endif
ifeq
($(BUILDARCH), ia64)
LFLAGS
+=
-Wl
,-relax
ifeq
($(BUILDARCH), ia64)
LFLAGS
+=
-Wl
,-relax
endif
endif
# Enable linker optimization
LFLAGS
+=
-Xlinker
-O1
# If this is a --hash-style=gnu system, use --hash-style=both
# The gnu .hash section won't work on some Linux systems like SuSE 10.
_HAS_HASH_STYLE_GNU
:=
$(
shell
$(CC)
-dumpspecs
|
grep
--
'--hash-style=gnu'
)
ifneq
($(_HAS_HASH_STYLE_GNU),)
ifeq
($(USE_CLANG),)
# If this is a --hash-style=gnu system, use --hash-style=both
# The gnu .hash section won't work on some Linux systems like SuSE 10.
_HAS_HASH_STYLE_GNU
:=
$(
shell
$(CC)
-dumpspecs
|
grep
--
'--hash-style=gnu'
)
ifneq
($(_HAS_HASH_STYLE_GNU),)
LDFLAGS_HASH_STYLE
=
-Wl
,--hash-style
=
both
endif
else
# Don't know how to find out the 'hash style' of a system as '-dumpspecs'
# doesn't work for Clang. So for now we'll alwys use --hash-style=both
LDFLAGS_HASH_STYLE
=
-Wl
,--hash-style
=
both
endif
LFLAGS
+=
$(LDFLAGS_HASH_STYLE)
# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
...
...
@@ -221,6 +325,13 @@ AOUT_FLAGS += -Xlinker -export-dynamic
#------------------------------------------------------------------------
# Debug flags
ifeq
($(USE_CLANG), true)
# Restrict the debug information created by Clang to avoid
# too big object files and speed the build up a little bit
# (see http://llvm.org/bugs/show_bug.cgi?id=7554)
CFLAGS
+=
-flimit-debug-info
endif
# DEBUG_BINARIES uses full -g debug information for all configs
ifeq
($(DEBUG_BINARIES), true)
CFLAGS
+=
-g
...
...
@@ -237,7 +348,12 @@ else
DEBUG_CFLAGS/
ppc
=
-g
DEBUG_CFLAGS
+=
$
(
DEBUG_CFLAGS/
$(BUILDARCH)
)
ifeq
($(DEBUG_CFLAGS/$(BUILDARCH)),)
DEBUG_CFLAGS
+=
-gstabs
ifeq
($(USE_CLANG), true)
# Clang doesn't understand -gstabs
OPT_CFLAGS
+=
-g
else
OPT_CFLAGS
+=
-gstabs
endif
endif
ifeq
($(ENABLE_FULL_DEBUG_SYMBOLS),1)
...
...
@@ -247,7 +363,12 @@ else
FASTDEBUG_CFLAGS/
ppc
=
-g
FASTDEBUG_CFLAGS
+=
$
(
DEBUG_CFLAGS/
$(BUILDARCH)
)
ifeq
($(FASTDEBUG_CFLAGS/$(BUILDARCH)),)
FASTDEBUG_CFLAGS
+=
-gstabs
ifeq
($(USE_CLANG), true)
# Clang doesn't understand -gstabs
OPT_CFLAGS
+=
-g
else
OPT_CFLAGS
+=
-gstabs
endif
endif
OPT_CFLAGS/
ia64
=
-g
...
...
@@ -256,9 +377,14 @@ else
OPT_CFLAGS/
ppc
=
-g
OPT_CFLAGS
+=
$
(
OPT_CFLAGS/
$(BUILDARCH)
)
ifeq
($(OPT_CFLAGS/$(BUILDARCH)),)
ifeq
($(USE_CLANG), true)
# Clang doesn't understand -gstabs
OPT_CFLAGS
+=
-g
else
OPT_CFLAGS
+=
-gstabs
endif
endif
endif
endif
# If we are building HEADLESS, pass on to VM
...
...
src/os/bsd/vm/os_bsd.cpp
浏览文件 @
720eac28
...
...
@@ -626,8 +626,6 @@ void os::Bsd::hotspot_sigmask(Thread* thread) {
//////////////////////////////////////////////////////////////////////////////
// create new thread
static
address
highest_vm_reserved_address
();
// check if it's safe to start a new thread
static
bool
_thread_safety_check
(
Thread
*
thread
)
{
return
true
;
...
...
@@ -2112,10 +2110,6 @@ bool os::pd_release_memory(char* addr, size_t size) {
return
anon_munmap
(
addr
,
size
);
}
static
address
highest_vm_reserved_address
()
{
return
_highest_vm_reserved_address
;
}
static
bool
bsd_mprotect
(
char
*
addr
,
size_t
size
,
int
prot
)
{
// Bsd wants the mprotect address argument to be page aligned.
char
*
bottom
=
(
char
*
)
align_size_down
((
intptr_t
)
addr
,
os
::
Bsd
::
page_size
());
...
...
@@ -2159,43 +2153,6 @@ bool os::Bsd::hugetlbfs_sanity_check(bool warn, size_t page_size) {
return
false
;
}
/*
* Set the coredump_filter bits to include largepages in core dump (bit 6)
*
* From the coredump_filter documentation:
*
* - (bit 0) anonymous private memory
* - (bit 1) anonymous shared memory
* - (bit 2) file-backed private memory
* - (bit 3) file-backed shared memory
* - (bit 4) ELF header pages in file-backed private memory areas (it is
* effective only if the bit 2 is cleared)
* - (bit 5) hugetlb private memory
* - (bit 6) hugetlb shared memory
*/
static
void
set_coredump_filter
(
void
)
{
FILE
*
f
;
long
cdm
;
if
((
f
=
fopen
(
"/proc/self/coredump_filter"
,
"r+"
))
==
NULL
)
{
return
;
}
if
(
fscanf
(
f
,
"%lx"
,
&
cdm
)
!=
1
)
{
fclose
(
f
);
return
;
}
rewind
(
f
);
if
((
cdm
&
LARGEPAGES_BIT
)
==
0
)
{
cdm
|=
LARGEPAGES_BIT
;
fprintf
(
f
,
"%#lx"
,
cdm
);
}
fclose
(
f
);
}
// Large page support
static
size_t
_large_page_size
=
0
;
...
...
src/os_cpu/linux_x86/vm/linux_x86_32.s
浏览文件 @
720eac28
...
...
@@ -241,7 +241,7 @@ acb_CopyLeft:
jbe
2
f
#
<=
32
dwords
rep
; smovl
jmp
4
f
.
=.+
8
.
space
8
2
:
subl
%
esi
,%
edi
.
p2align
4
,,
15
3
:
movl
(%
esi
),%
edx
...
...
@@ -378,7 +378,7 @@ acs_CopyRight:
rep
; smovl
jmp
4
f
#
copy
aligned
dwords
.
=.+
5
.
space
5
2
:
subl
%
esi
,%
edi
.
p2align
4
,,
15
3
:
movl
(%
esi
),%
edx
...
...
@@ -454,7 +454,7 @@ ci_CopyRight:
popl
%
edi
popl
%
esi
ret
.
=.+
10
.
space
10
2
:
subl
%
esi
,%
edi
jmp
4
f
.
p2align
4
,,
15
...
...
src/os_cpu/linux_x86/vm/os_linux_x86.cpp
浏览文件 @
720eac28
...
...
@@ -93,6 +93,10 @@ address os::current_stack_pointer() {
register
void
*
esp
;
__asm__
(
"mov %%"
SPELL_REG_SP
", %0"
:
"=r"
(
esp
));
return
(
address
)
((
char
*
)
esp
+
sizeof
(
long
)
*
2
);
#elif defined(__clang__)
intptr_t
*
esp
;
__asm__
__volatile__
(
"mov %%"
SPELL_REG_SP
", %0"
:
"=r"
(
esp
)
:
);
return
(
address
)
esp
;
#else
register
void
*
esp
__asm__
(
SPELL_REG_SP
);
return
(
address
)
esp
;
...
...
@@ -175,6 +179,9 @@ intptr_t* _get_previous_fp() {
#ifdef SPARC_WORKS
register
intptr_t
**
ebp
;
__asm__
(
"mov %%"
SPELL_REG_FP
", %0"
:
"=r"
(
ebp
));
#elif defined(__clang__)
intptr_t
**
ebp
;
__asm__
__volatile__
(
"mov %%"
SPELL_REG_FP
", %0"
:
"=r"
(
ebp
)
:
);
#else
register
intptr_t
**
ebp
__asm__
(
SPELL_REG_FP
);
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录