aoqi@0: # dlong@7598: # Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. aoqi@0: # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: # aoqi@0: # This code is free software; you can redistribute it and/or modify it aoqi@0: # under the terms of the GNU General Public License version 2 only, as aoqi@0: # published by the Free Software Foundation. aoqi@0: # aoqi@0: # This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: # version 2 for more details (a copy is included in the LICENSE file that aoqi@0: # accompanied this code). aoqi@0: # aoqi@0: # You should have received a copy of the GNU General Public License version aoqi@0: # 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: # aoqi@0: # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: # or visit www.oracle.com if you need additional information or have any aoqi@0: # questions. aoqi@0: # aoqi@0: # aoqi@1: aoqi@1: # aoqi@1: # This file has been modified by Loongson Technology in 2015. These aoqi@1: # modifications are Copyright (c) 2015 Loongson Technology, and are made aoqi@1: # available on the same license terms set forth above. aoqi@1: # aoqi@1: aoqi@0: include $(GAMMADIR)/make/defs.make aoqi@0: include $(GAMMADIR)/make/altsrc.make aoqi@0: aoqi@0: # Rules to build serviceability agent library, used by vm.make aoqi@0: aoqi@0: # libsaproc.so: serviceability agent aoqi@0: aoqi@0: SAPROC = saproc aoqi@0: LIBSAPROC = lib$(SAPROC).so aoqi@0: aoqi@0: LIBSAPROC_DEBUGINFO = lib$(SAPROC).debuginfo aoqi@0: LIBSAPROC_DIZ = lib$(SAPROC).diz aoqi@0: aoqi@0: AGENT_DIR = $(GAMMADIR)/agent aoqi@0: aoqi@0: SASRCDIR = $(AGENT_DIR)/src/os/$(Platform_os_family) aoqi@0: aoqi@0: SASRCFILES = $(SASRCDIR)/salibelf.c \ aoqi@0: $(SASRCDIR)/symtab.c \ aoqi@0: $(SASRCDIR)/libproc_impl.c \ aoqi@0: $(SASRCDIR)/ps_proc.c \ aoqi@0: $(SASRCDIR)/ps_core.c \ aoqi@0: $(SASRCDIR)/LinuxDebuggerLocal.c \ aoqi@0: $(AGENT_DIR)/src/share/native/sadis.c aoqi@0: aoqi@0: -include $(HS_ALT_MAKE)/linux/makefiles/saproc.make aoqi@0: aoqi@0: SAMAPFILE = $(SASRCDIR)/mapfile aoqi@0: aoqi@0: DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) aoqi@0: DEST_SAPROC_DEBUGINFO = $(JDK_LIBDIR)/$(LIBSAPROC_DEBUGINFO) aoqi@0: DEST_SAPROC_DIZ = $(JDK_LIBDIR)/$(LIBSAPROC_DIZ) aoqi@0: aoqi@0: # DEBUG_BINARIES overrides everything, use full -g debug information aoqi@0: ifeq ($(DEBUG_BINARIES), true) aoqi@0: SA_DEBUG_CFLAGS = -g aoqi@0: endif aoqi@0: aoqi@0: # if $(AGENT_DIR) does not exist, we don't build SA aoqi@0: # also, we don't build SA on Itanium or zero. aoqi@0: aoqi@0: ifneq ($(wildcard $(AGENT_DIR)),) aoqi@0: ifneq ($(filter-out ia64 zero,$(SRCARCH)),) aoqi@0: BUILDLIBSAPROC = $(LIBSAPROC) aoqi@0: endif aoqi@0: endif aoqi@0: aoqi@0: ifneq ($(ALT_SASRCDIR),) dlong@7598: ALT_SAINCDIR=-I$(ALT_SASRCDIR) -DALT_SASRCDIR aoqi@0: else aoqi@0: ALT_SAINCDIR= aoqi@0: endif aoqi@0: SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE) aoqi@0: dlong@7598: SAARCH ?= $(BUILDARCH) dlong@7598: aoqi@0: $(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE) aoqi@0: $(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \ aoqi@0: echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \ aoqi@0: exit 1; \ aoqi@0: fi aoqi@0: @echo Making SA debugger back-end... aoqi@9139: ifneq (mips64, $(findstring mips64, $(BUILDARCH))) aoqi@0: $(QUIETLY) $(CC) -D$(BUILDARCH) -D_GNU_SOURCE \ aoqi@0: -D_FILE_OFFSET_BITS=64 \ aoqi@0: $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ aoqi@0: -I$(SASRCDIR) \ aoqi@0: -I$(GENERATED) \ aoqi@0: -I$(BOOT_JAVA_HOME)/include \ aoqi@0: -I$(BOOT_JAVA_HOME)/include/$(Platform_os_family) \ aoqi@0: $(ALT_SAINCDIR) \ aoqi@0: $(SASRCFILES) \ aoqi@0: $(SA_LFLAGS) \ aoqi@0: $(SA_DEBUG_CFLAGS) \ aoqi@0: $(EXTRA_CFLAGS) \ aoqi@0: -o $@ \ aoqi@0: -lthread_db aoqi@6877: else aoqi@6877: #2016/4/22 aoqi: If -Dmips64 is used, mips64 would be conflict with "struct mips64_watch_regs mips64" in /usr/include/asm/ptrace.h. aoqi@7994: $(QUIETLY) $(CC) -Dmips -D_GNU_SOURCE \ aoqi@6877: -D_FILE_OFFSET_BITS=64 \ aoqi@6877: $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \ aoqi@6877: -I$(SASRCDIR) \ aoqi@6877: -I$(GENERATED) \ aoqi@6877: -I$(BOOT_JAVA_HOME)/include \ aoqi@6877: -I$(BOOT_JAVA_HOME)/include/$(Platform_os_family) \ aoqi@6877: $(ALT_SAINCDIR) \ aoqi@6877: $(SASRCFILES) \ aoqi@6877: $(SA_LFLAGS) \ aoqi@6877: $(SA_DEBUG_CFLAGS) \ aoqi@6877: $(EXTRA_CFLAGS) \ aoqi@6877: -o $@ \ aoqi@6877: -lthread_db aoqi@6877: endif aoqi@0: ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) aoqi@0: $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO) aoqi@0: $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@ aoqi@0: ifeq ($(STRIP_POLICY),all_strip) aoqi@0: $(QUIETLY) $(STRIP) $@ aoqi@0: else aoqi@0: ifeq ($(STRIP_POLICY),min_strip) aoqi@0: $(QUIETLY) $(STRIP) -g $@ aoqi@0: # implied else here is no stripping at all aoqi@0: endif aoqi@0: endif aoqi@0: ifeq ($(ZIP_DEBUGINFO_FILES),1) aoqi@0: $(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO) aoqi@0: $(RM) $(LIBSAPROC_DEBUGINFO) aoqi@0: endif aoqi@0: endif aoqi@0: aoqi@0: install_saproc: $(BUILDLIBSAPROC) aoqi@0: $(QUIETLY) if [ -e $(LIBSAPROC) ] ; then \ aoqi@0: echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"; \ aoqi@0: test -f $(LIBSAPROC_DEBUGINFO) && \ aoqi@0: cp -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \ aoqi@0: test -f $(LIBSAPROC_DIZ) && \ aoqi@0: cp -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ); \ aoqi@0: cp -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"; \ aoqi@0: fi aoqi@0: aoqi@0: .PHONY: install_saproc