8177076: jshell tool: allow non-zero /exit
8190383: JShell API: no way for the jshell tool to report exit status to provider
Reviewed-by: jlahoda
## Copyright (c) 2008, 2017, Oracle and/or its affiliates. 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.## 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA# or visit www.oracle.com if you need additional information or have any# questions.### Single gnu makefile for solaris, linux and windows (windows requires cygwin and mingw)# Default arch; it is changed below as needed.ARCH = i386OS = $(shell uname)AR = ar## OS = SunOS ##ifeq ($(OS),SunOS)CPU = $(shell uname -p)ARCH1=$(CPU:i586=i386)ARCH=$(ARCH1:i686=i386)OS = solarisCC = ccCFLAGS += -KPICifdef LP64ifeq ($(ARCH),sparc)ARCH = sparcv9endififeq ($(ARCH),i386)ARCH = amd64endifendifCFLAGS/sparcv9 += -xarch=v9CFLAGS/amd64 += -m64CFLAGS += $(CFLAGS/$(ARCH))DLDFLAGS += -GLDFLAGS += -ldlOUTFLAGS += -o $@LIB_EXT = .soelse## OS = Linux ##ifeq ($(OS),Linux)ifneq ($(MINGW),)LIB_EXT = .dllCPPFLAGS += -I$(TARGET_DIR)/includeLDFLAGS += -L$(TARGET_DIR)/libOS=windowsifneq ($(findstring x86_64-,$(MINGW)),)ARCH=amd64elseARCH=i386endifCC = $(MINGW)-gccCONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)else #linuxCPU = $(shell uname -m)ARCH1=$(CPU:x86_64=amd64)ARCH2=$(ARCH1:i686=i386)ARCH=$(ARCH2:sparc64=sparcv9)ifdef LP64CFLAGS/sparcv9 += -m64CFLAGS/amd64 += -m64CFLAGS/ppc64 += -m64CFLAGS/ppc64le += -m64 -DABI_ELFv2elseARCH=$(ARCH2:amd64=i386)ifneq ($(findstring arm,$(ARCH)),)ARCH=armendifCFLAGS/i386 += -m32CFLAGS/sparc += -m32endifCFLAGS += $(CFLAGS/$(ARCH))CFLAGS += -fPICOS = linuxLIB_EXT = .soCC = gccendifCFLAGS += -ODLDFLAGS += -sharedLDFLAGS += -ldlOUTFLAGS += -o $@else## OS = AIX ##ifeq ($(OS),AIX)OS = aixARCH = ppc64CC = xlc_rCFLAGS += -DAIX -g -qpic=large -q64CFLAGS/ppc64 += -q64AR = ar -X64DLDFLAGS += -qmkshrobj -lzOUTFLAGS += -o $@LIB_EXT = .soelse## OS = Darwin ##ifeq ($(OS),Darwin)CPU = $(shell uname -m)ARCH1=$(CPU:x86_64=amd64)ARCH=$(ARCH1:i686=i386)ifdef LP64CFLAGS/sparcv9 += -m64CFLAGS/amd64 += -m64elseARCH=$(ARCH1:amd64=i386)CFLAGS/i386 += -m32CFLAGS/sparc += -m32endif # LP64CFLAGS += $(CFLAGS/$(ARCH))CFLAGS += -fPICOS = macosxLIB_EXT = .dylibCC = gccCFLAGS += -O# CFLAGS += -DZ_PREFIXDLDFLAGS += -sharedDLDFLAGS += -lzLDFLAGS += -ldlOUTFLAGS += -o $@else## OS = Windows ##OS = windowsCC = gccCFLAGS += /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi-CFLAGS += LIBARCH=\"$(LIBARCH)\"DLDFLAGS += /dll /subsystem:windows /incremental:no \ /export:decode_instructionOUTFLAGS += /link /out:$@LIB_EXT = .dllendif # Darwinendif # AIXendif # Linuxendif # SunOSLIBARCH = $(ARCH)ifdef LP64LIBARCH64/sparc = sparcv9LIBARCH64/i386 = amd64LIBARCH64 = $(LIBARCH64/$(ARCH))ifneq ($(LIBARCH64),)LIBARCH = $(LIBARCH64)endif # LIBARCH64/$(ARCH)endif # LP64JDKARCH=$(LIBARCH:i386=i586)ifeq ($(BINUTILS),)# Pop all the way out of the workspace to look for binutils.# ...You probably want to override this setting.BINUTILSDIR = $(shell cd build/binutils;pwd)elseBINUTILSDIR = $(shell cd $(BINUTILS);pwd)endifCPPFLAGS += -I$(BINUTILSDIR)/include -I$(BINUTILSDIR)/bfd -I$(TARGET_DIR)/bfdCPPFLAGS += -DLIBARCH_$(LIBARCH) -DLIBARCH=\"$(LIBARCH)\" -DLIB_EXT=\"$(LIB_EXT)\"TARGET_DIR = build/$(OS)-$(JDKARCH)TARGET = $(TARGET_DIR)/hsdis-$(LIBARCH)$(LIB_EXT)SOURCE = hsdis.cLIBRARIES = $(TARGET_DIR)/bfd/libbfd.a \ $(TARGET_DIR)/opcodes/libopcodes.a \ $(TARGET_DIR)/libiberty/libiberty.aDEMO_TARGET = $(TARGET_DIR)/hsdis-demoDEMO_SOURCE = hsdis-demo.c.PHONY: all clean demo bothall: $(TARGET)both: all all64%64: $(MAKE) LP64=1 ${@:%64=%}demo: $(TARGET) $(DEMO_TARGET)$(LIBRARIES): $(TARGET_DIR) $(TARGET_DIR)/Makefile if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes; fi$(TARGET_DIR)/Makefile: (cd $(TARGET_DIR); CC=$(CC) CFLAGS="$(CFLAGS)" AR="$(AR)" $(BINUTILSDIR)/configure --disable-nls $(CONFIGURE_ARGS))$(TARGET): $(SOURCE) $(LIBS) $(LIBRARIES) $(TARGET_DIR) $(CC) $(OUTFLAGS) $(CPPFLAGS) $(CFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES)$(DEMO_TARGET): $(DEMO_SOURCE) $(TARGET) $(TARGET_DIR) $(CC) $(OUTFLAGS) -DTARGET_DIR=\"$(TARGET_DIR)\" $(CPPFLAGS) -g $(CFLAGS/$(ARCH)) $(DEMO_SOURCE) $(LDFLAGS)$(TARGET_DIR): [ -d $@ ] || mkdir -p $@clean: rm -rf $(TARGET_DIR)