6715633: when matching a memory node the adr_type should not change
Summary: verify the adr_type of a mach node was not changed
Reviewed-by: rasbold, never
## Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.## This code is free software; you can redistribute it and/or modify it# under the terms of the GNU General Public License version 2 only, as# published by the Free Software Foundation. Sun designates this# particular file as subject to the "Classpath" exception as provided# by Sun in the LICENSE file that accompanied this code.## This code is distributed in the hope that it will be useful, but WITHOUT# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License# version 2 for more details (a copy is included in the LICENSE file that# accompanied this code).## You should have received a copy of the GNU General Public License version# 2 along with this work; if not, write to the Free Software Foundation,# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.## Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,# CA 95054 USA or visit www.sun.com if you need additional information or# have any questions.### Generic makefile for building shared libraries.## WARNING: This file is shared with other workspaces.# So when it includes other files, it must use JDK_TOPDIR.#include $(JDK_TOPDIR)/make/common/Classes.gmk## It is important to define these *after* including Classes.gmk# in order to override the values defined inthat makefile.#ifeq ($(LIBRARY), fdlibm)ifeq ($(PLATFORM),windows)ACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(FDDLIBM_SUFFIX)ACTUAL_LIBRARY_DIR = $(OBJDIR)else # PLATFORMACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(ARCH).$(FDDLIBM_SUFFIX)ACTUAL_LIBRARY_DIR = $(OBJDIR)endif #PLATFORMelse # LIBRARYACTUAL_LIBRARY_NAME = $(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)ACTUAL_LIBRARY_DIR = $(LIB_LOCATION)endifACTUAL_LIBRARY = $(ACTUAL_LIBRARY_DIR)/$(ACTUAL_LIBRARY_NAME)library:: $(ACTUAL_LIBRARY)FILES_o = $(patsubst %.c, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))FILES_o += $(patsubst %.s, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_s))))FILES_o += $(patsubst %.cpp, %.$(OBJECT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_cpp))))ifeq ($(INCREMENTAL_BUILD),true)FILES_d = $(patsubst %.c, %.$(DEPEND_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))FILES_d += $(patsubst %.cpp, %.$(DEPEND_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_cpp))))endif # INCREMENTAL_BUILDifeq ($(PLATFORM),solaris)# List of all lint files, one for each .c file (only for C)FILES_ln = $(patsubst %.c, %.$(LINT_SUFFIX), $(addprefix $(OBJDIR)/, $(notdir $(FILES_c))))endif## C++ libraries must be linked with CC.#ifdef CPLUSPLUSLIBRARYLINKER=$(LINK.cc)elseLINKER=$(LINK.c)endif# FIXUP: unpack needs the zip .o files. So we must build zip?# or fix unpack makefile so it uses Program.gmk.ifneq ($(IMPORT_NATIVE_BINARIES),true) COMPILE_IT=trueelse ifeq ($(LIBRARY),zip) COMPILE_IT=true else COMPILE_IT=false endifendif# If a Makefile has specified a pre-compiled closed src lib, just copy it.ifdef USE_BINARY_PLUG_LIBRARY COMPILE_IT=falseendif# We either need to import (copy) libraries in, or build themifeq ($(COMPILE_IT),true)$(ACTUAL_LIBRARY):: $(INIT) $(TEMPDIR) $(LIBDIR) $(BINDIR) $(EXTDIR) classheaders## COMPILE_APPROACH: Different approaches to compile up the native object# files as quickly as possible.# The setting of parallel works best on Unix, batch on Windows.#COMPILE_FILES_o = $(OBJDIR)/.files_compiled$(COMPILE_FILES_o): $(FILES_d) $(FILES_o) @$(ECHO) "$<" >> $@clean:: $(RM) $(COMPILE_FILES_o)## COMPILE_APPROACH=parallel: Will trigger compilations (just compilations) to# happen in parallel. Greatly decreases Unix build time, even on single CPU# machines, more so on multiple CPU machines. Default is 2 compiles# at a time, but can be adjusted with ALT_PARALLEL_COMPILE_JOBS.# Note that each .d file will also be dependent on it's .o file, see# Rules.gmk.# Note this does not depend on Rules.gmk to work like batch (below)# and this technique doesn't seem to help Windows build time nor does# it work very well, it's possible the Windows Visual Studio compilers# don't work well in a parallel situation, this needs investigation.#ifeq ($(COMPILE_APPROACH),parallel).PHONY: library_parallel_compilelibrary_parallel_compile: @$(ECHO) "Begin parallel compiles: $(shell $(PWD))" @$(MAKE) -j $(PARALLEL_COMPILE_JOBS) $(COMPILE_FILES_o) @$(ECHO) "Done with parallel compiles: $(shell $(PWD))"$(ACTUAL_LIBRARY):: library_parallel_compileendif## COMPILE_APPROACH=batch: Will trigger compilations (just compilations) to# happen in batch mode. Greatly decreases Windows build time.# See logic in Rules.gmk for how compiles happen, the $(MAKE) in# library_batch_compile below triggers the actions in Rules.gmk.# Note that each .d file will also be dependent on it's .o file, see# Rules.gmk.#ifeq ($(COMPILE_APPROACH),batch).PHONY: library_batch_compilelibrary_batch_compile: @$(ECHO) "Begin BATCH compiles: $(shell $(PWD))" $(MAKE) $(COMPILE_FILES_o) $(MAKE) batch_compile @$(ECHO) "Done with BATCH compiles: $(shell $(PWD))" $(MAKE) COMPILE_APPROACH=normal $(COMPILE_FILES_o)$(ACTUAL_LIBRARY):: library_batch_compileendififeq ($(PLATFORM), windows)## Library building rules.#$(LIBRARY).lib:: $(OBJDIR)ifeq ($(LIBRARY), fdlibm)$(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lib$(OBJDIR)/$(LIBRARY).lib:: $(OBJDIR)/$(LIBRARY).lcf @$(prep-target) $(LIBEXE) -NODEFAULTLIB:MSVCRT -out:$@ -nologo \ @$(OBJDIR)/$(LIBRARY).lcf $(OTHER_LCF) $(LDLIBS_COMMON)else # LIBRARY# build it into $(OBJDIR) so that the other generated files get put # there, then copy just the DLL (and MAP file) to the requested directory.#$(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lcf @$(prep-target) @$(MKDIR) -p $(OBJDIR) $(LINK) -dll -out:$(OBJDIR)/$(@F) \ -map:$(OBJDIR)/$(LIBRARY).map \ $(LFLAGS) @$(OBJDIR)/$(LIBRARY).lcf \ $(OTHER_LCF) $(JAVALIB) $(LDLIBS) $(CP) $(OBJDIR)/$(@F) $@ $(CP) $(OBJDIR)/$(LIBRARY).map $(@D) $(CP) $(OBJDIR)/$(LIBRARY).pdb $(@D)endif # LIBRARY$(OBJDIR)/$(LIBRARY).lcf: $(OBJDIR)/$(LIBRARY).res $(COMPILE_FILES_o) $(FILES_m) @$(prep-target) @$(MKDIR) -p $(TEMPDIR) @$(ECHO) $(FILES_o) > $@ ifndef LOCAL_RESOURCE_FILE @$(ECHO) $(OBJDIR)/$(LIBRARY).res >> $@endif @$(ECHO) Created $@ # J2SE name required hereRC_FLAGS += /D "J2SE_FNAME=$(LIBRARY).dll" \ /D "J2SE_INTERNAL_NAME=$(LIBRARY)" \ /D "J2SE_FTYPE=0x2L"$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)ifndef LOCAL_RESOURCE_FILE @$(prep-target) $(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)endif## Install a .lib file if required.#ifeq ($(INSTALL_DOT_LIB), true)$(ACTUAL_LIBRARY):: $(LIBDIR)/$(LIBRARY).libclean:: -$(RM) $(LIBDIR)/$(LIBRARY).lib$(LIBDIR)/$(LIBRARY).lib:: $(OBJDIR)/$(LIBRARY).lib $(install-file)$(LIBDIR)/$(LIBRARY).dll:: $(OBJDIR)/$(LIBRARY).dll $(install-file)endif # INSTALL_DOT_LIBelse # PLATFORM## On Solaris, use mcs to write the version into the comment section of# the shared library. On other platforms set this to false at the# make command line.#$(ACTUAL_LIBRARY):: $(COMPILE_FILES_o) $(FILES_m) $(FILES_reorder) @$(prep-target) @$(ECHO) "STATS: LIBRARY=$(LIBRARY), PRODUCT=$(PRODUCT), _OPT=$(_OPT)" @$(ECHO) "Rebuilding $@ because of $?"ifeq ($(LIBRARY), fdlibm) $(AR) -r $@ $(FILES_o)else # LIBRARY $(LINKER) $(SHARED_LIBRARY_FLAG) -o $@ $(FILES_o) $(LDLIBS)ifeq ($(WRITE_LIBVERSION),true) $(MCS) -d -a "$(FULL_VERSION)" $@endif # WRITE_LIBVERSIONendif # LIBRARYendif # PLATFORM## Cross check all linted files against each other#ifeq ($(PLATFORM),solaris)lint.errors : $(FILES_ln) $(LINT.c) $(FILES_ln) $(LDLIBS) endifelse # COMPILE_IT# OpenJDK rule is first so any lib is preferentially copied from that location.ifndef USE_BINARY_PLUG_LIBRARY# In this case we are just copying the file.ifneq ($(LIBRARY), fdlibm)# Copies in the file from the JDK_IMPORT_PATH area$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/% $(install-import-file)$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/native_threads/% $(install-import-file)$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/headless/% $(install-import-file)$(ACTUAL_LIBRARY_DIR)/%: $(JDK_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/xawt/% $(install-import-file)else # fdlibm$(ACTUAL_LIBRARY_DIR)/%: $(prep-target)endif # fdlibmendif # USE_BINARY_PLUG_LIBRARYendif # COMPILE_IT## Class libraries with JNI native methods get a include to the package.#ifdef PACKAGEvpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)vpath %.c $(SHARE_SRC)/native/$(PKGDIR)OTHER_INCLUDES += -I$(SHARE_SRC)/native/common -I$(PLATFORM_SRC)/native/commonOTHER_INCLUDES += -I$(SHARE_SRC)/native/$(PKGDIR) \ -I$(PLATFORM_SRC)/native/$(PKGDIR)endif## Clean/clobber rules#clean:: $(RM) -r $(ACTUAL_LIBRARY)clobber:: clean## INCREMENTAL_BUILD means that this workspace will be built over and over# possibly incrementally. This means tracking the object file dependencies# on include files so that sources get re-compiled when the include files# change. When building from scratch and doing a one time build (like# release engineering or nightly builds) set INCREMENTAL_BUILD=false.#ifeq ($(INCREMENTAL_BUILD),true)## Workaround: gnumake sometimes says files is empty when it shouldn't# was: files := $(foreach file, $(wildcard $(OBJDIR)/*.$(DEPEND_SUFFIX)), $(file))#files := $(shell $(LS) $(OBJDIR)/*.$(DEPEND_SUFFIX) 2>/dev/null)## Only include these files if we have any.#ifneq ($(strip $(files)),)include $(files)endif # filesendif # INCREMENTAL_BUILD## Default dependencies#all: buildbuild: librarydebug: $(MAKE) VARIANT=DBG buildfastdebug: $(MAKE) VARIANT=DBG FASTDEBUG=true buildopenjdk: $(MAKE) OPENJDK=true build.PHONY: all build debug fastdebug