#!/bin/bash## Copyright (c) 2012, 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.## This script is not to be run as stand-alone, it should be included from# compare.sh.########################################################################################### Check that we are run via inclusion from compare.sh and not as stand-alone.if [ -z "$COMPARE_EXCEPTIONS_INCLUDE" ]; then echo "Error: This script should not be run as stand-alone. It is included by compare.sh" exit 1fi########################################################################################### Diff exceptionsif [ "$OPENJDK_TARGET_OS" = "linux" ] && [ "$OPENJDK_TARGET_CPU" = "x86" ]; thenSTRIP_BEFORE_COMPARE="./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so./demo/jvmti/gctest/lib/libgctest.so./demo/jvmti/heapTracker/lib/libheapTracker.so./demo/jvmti/heapViewer/lib/libheapViewer.so./demo/jvmti/minst/lib/libminst.so./demo/jvmti/mtrace/lib/libmtrace.so./demo/jvmti/versionCheck/lib/libversionCheck.so./demo/jvmti/waiters/lib/libwaiters.so"ACCEPTED_BIN_DIFF="./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so./demo/jvmti/gctest/lib/libgctest.so./demo/jvmti/heapTracker/lib/libheapTracker.so./demo/jvmti/heapViewer/lib/libheapViewer.so./demo/jvmti/minst/lib/libminst.so./demo/jvmti/mtrace/lib/libmtrace.so./demo/jvmti/versionCheck/lib/libversionCheck.so./demo/jvmti/waiters/lib/libwaiters.so./lib/i386/client/libjvm.so./lib/i386/libattach.so./lib/i386/libdt_socket.so./lib/i386/libinstrument.so./lib/i386/libjsdt.so./lib/i386/libmanagement.so./lib/i386/libnpt.so./lib/i386/libverify.so./lib/i386/server/libjvm.so./bin/appletviewer./bin/idlj./bin/jar./bin/jarsigner./bin/java./bin/javac./bin/javadoc./bin/javah./bin/javap./bin/jdeps./bin/jcmd./bin/jconsole./bin/jdb./bin/jimage./bin/jinfo./bin/jjs./bin/jmap./bin/jps./bin/jrunscript./bin/jsadebugd./bin/jstack./bin/jstat./bin/jstatd./bin/keytool./bin/orbd./bin/pack200./bin/policytool./bin/rmic./bin/rmid./bin/rmiregistry./bin/schemagen./bin/serialver./bin/servertool./bin/tnameserv./bin/wsgen./bin/wsimport./bin/xjc"fiif [ "$OPENJDK_TARGET_OS" = "linux" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; thenSTRIP_BEFORE_COMPARE="./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so./demo/jvmti/gctest/lib/libgctest.so./demo/jvmti/heapTracker/lib/libheapTracker.so./demo/jvmti/heapViewer/lib/libheapViewer.so./demo/jvmti/minst/lib/libminst.so./demo/jvmti/mtrace/lib/libmtrace.so./demo/jvmti/versionCheck/lib/libversionCheck.so./demo/jvmti/waiters/lib/libwaiters.so"ACCEPTED_BIN_DIFF="./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so./demo/jvmti/gctest/lib/libgctest.so./demo/jvmti/heapTracker/lib/libheapTracker.so./demo/jvmti/heapViewer/lib/libheapViewer.so./demo/jvmti/minst/lib/libminst.so./demo/jvmti/mtrace/lib/libmtrace.so./demo/jvmti/versionCheck/lib/libversionCheck.so./demo/jvmti/waiters/lib/libwaiters.so./lib/amd64/libattach.so./lib/amd64/libdt_socket.so./lib/amd64/libinstrument.so./lib/amd64/libjsdt.so./lib/amd64/libjsig.so./lib/amd64/libmanagement.so./lib/amd64/libnpt.so./lib/amd64/libsaproc.so./lib/amd64/libverify.so./lib/amd64/server/libjsig.so./lib/amd64/server/libjvm.so./bin/appletviewer./bin/idlj./bin/jar./bin/jarsigner./bin/java./bin/javac./bin/javadoc./bin/javah./bin/javap./bin/jdeps./bin/jcmd./bin/jconsole./bin/jdb./bin/jimage./bin/jinfo./bin/jjs./bin/jmap./bin/jps./bin/jrunscript./bin/jsadebugd./bin/jstack./bin/jstat./bin/jstatd./bin/keytool./bin/orbd./bin/pack200./bin/policytool./bin/rmic./bin/rmid./bin/rmiregistry./bin/schemagen./bin/serialver./bin/servertool./bin/tnameserv./bin/wsgen./bin/wsimport./bin/xjc"fiif [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; thenSTRIP_BEFORE_COMPARE="./demo/jni/Poller/lib/libPoller.so./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so./demo/jvmti/gctest/lib/libgctest.so./demo/jvmti/heapTracker/lib/libheapTracker.so./demo/jvmti/heapViewer/lib/libheapViewer.so./demo/jvmti/minst/lib/libminst.so./demo/jvmti/mtrace/lib/libmtrace.so./demo/jvmti/versionCheck/lib/libversionCheck.so./demo/jvmti/waiters/lib/libwaiters.so"SORT_SYMBOLS="./lib/amd64/server/libjvm.so./lib/amd64/libsaproc.so"SKIP_BIN_DIFF="true"ACCEPTED_SMALL_SIZE_DIFF="./demo/jni/Poller/lib/libPoller.so./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so./demo/jvmti/gctest/lib/libgctest.so./demo/jvmti/heapTracker/lib/libheapTracker.so./demo/jvmti/heapViewer/lib/libheapViewer.so./demo/jvmti/minst/lib/libminst.so./demo/jvmti/mtrace/lib/libmtrace.so./demo/jvmti/versionCheck/lib/libversionCheck.so./demo/jvmti/waiters/lib/libwaiters.so./lib/amd64/jli/libjli.so./lib/amd64/jspawnhelper./lib/amd64/libJdbcOdbc.so./lib/amd64/libattach.so./lib/amd64/libawt.so./lib/amd64/libawt_headless.so./lib/amd64/libawt_xawt.so./lib/amd64/libdcpr.so./lib/amd64/libdt_socket.so./lib/amd64/libfontmanager.so./lib/amd64/libinstrument.so./lib/amd64/libj2gss.so./lib/amd64/libj2pcsc.so./lib/amd64/libj2pkcs11.so./lib/amd64/libj2ucrypto.so./lib/amd64/libjaas_unix.so./lib/amd64/libjava.so./lib/amd64/libjawt.so./lib/amd64/libjdwp.so./lib/amd64/libjfr.so./lib/amd64/libjpeg.so./lib/amd64/libjsdt.so./lib/amd64/libjsound.so./lib/amd64/libkcms.so./lib/amd64/liblcms.so./lib/amd64/libmanagement.so./lib/amd64/libmlib_image.so./lib/amd64/libnet.so./lib/amd64/libnio.so./lib/amd64/libnpt.so./lib/amd64/libsctp.so./lib/amd64/libsplashscreen.so./lib/amd64/libsunec.so./lib/amd64/libsunwjdga.so./lib/amd64/libt2k.so./lib/amd64/libunpack.so./lib/amd64/libverify.so./lib/amd64/libzip.so./lib/amd64/server/64/libjvm_db.so./lib/amd64/server/64/libjvm_dtrace.so./lib/amd64/server/libjvm.so./lib/amd64/server/libjvm_db.so./lib/amd64/server/libjvm_dtrace.so./bin/appletviewer./bin/idlj./bin/jar./bin/jarsigner./bin/java./bin/javac./bin/javadoc./bin/javah./bin/javap./bin/jdeps./bin/jcmd./bin/jconsole./bin/jdb./bin/jimage./bin/jinfo./bin/jjs./bin/jmap./bin/jps./bin/jrunscript./bin/jsadebugd./bin/jstack./bin/jstat./bin/jstatd./bin/keytool./bin/orbd./bin/pack200./bin/policytool./bin/rmic./bin/rmid./bin/rmiregistry./bin/schemagen./bin/serialver./bin/servertool./bin/tnameserv./bin/unpack200./bin/wsgen./bin/wsimport./bin/xjc"SKIP_FULLDUMP_DIFF="true"# Filter random C++ symbol strings.# Some numbers differ randomly.# Can't use space in these expressions as the shell will mess with them.DIS_DIFF_FILTER="$SED \ -e 's/\.[a-zA-Z0-9_\$]\{15,15\}/<SYM>/g' \ -e 's/\([0-9a-f][0-9a-f].\)\{2,8\}[0-9a-f][0-9a-f]/<NUMS>/g' \ -e 's/\(0x\)[0-9a-f]*\([,(>]\)/\1<HEX>\2/g' \ -e 's/\(0x\)[0-9a-f]*$/\1<HEX>/g' \ -e 's/\(\#.\)[0-9a-f]*\(.<\)/\1<HEX>\2/g' \ -e 's/[\.A-Za-z0-9%]\{16,16\}$/<BIN>/g'"fiif [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "sparcv9" ]; thenSTRIP_BEFORE_COMPARE="./demo/jni/Poller/lib/libPoller.so./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so./demo/jvmti/gctest/lib/libgctest.so./demo/jvmti/heapTracker/lib/libheapTracker.so./demo/jvmti/heapViewer/lib/libheapViewer.so./demo/jvmti/minst/lib/libminst.so./demo/jvmti/mtrace/lib/libmtrace.so./demo/jvmti/versionCheck/lib/libversionCheck.so./demo/jvmti/waiters/lib/libwaiters.so"SORT_SYMBOLS="./demo/jvmti/waiters/lib/libwaiters.so./lib/sparcv9/libjsig.so./lib/sparcv9/libsaproc.so./lib/sparcv9/server/libjvm.so./lib/sparcv9/server/libjvm_dtrace.so"SKIP_BIN_DIFF="true"ACCEPTED_SMALL_SIZE_DIFF="./demo/jni/Poller/lib/libPoller.so./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so./demo/jvmti/gctest/lib/libgctest.so./demo/jvmti/heapTracker/lib/libheapTracker.so./demo/jvmti/heapViewer/lib/libheapViewer.so./demo/jvmti/minst/lib/libminst.so./demo/jvmti/mtrace/lib/libmtrace.so./demo/jvmti/versionCheck/lib/libversionCheck.so./demo/jvmti/waiters/lib/libwaiters.so./lib/sparcv9/client/libjvm.so./lib/sparcv9/jli/libjli.so./lib/sparcv9/jspawnhelper./lib/sparcv9/libJdbcOdbc.so./lib/sparcv9/libattach.so./lib/sparcv9/libawt.so./lib/sparcv9/libawt_headless.so./lib/sparcv9/libawt_xawt.so./lib/sparcv9/libdcpr.so./lib/sparcv9/libdt_socket.so./lib/sparcv9/libfontmanager.so./lib/sparcv9/libinstrument.so./lib/sparcv9/libj2gss.so./lib/sparcv9/libj2pcsc.so./lib/sparcv9/libj2pkcs11.so./lib/sparcv9/libj2ucrypto.so./lib/sparcv9/libjaas_unix.so./lib/sparcv9/libjava.so./lib/sparcv9/libjawt.so./lib/sparcv9/libjdwp.so./lib/sparcv9/libjfr.so./lib/sparcv9/libjpeg.so./lib/sparcv9/libjsdt.so./lib/sparcv9/libjsound.so./lib/sparcv9/libkcms.so./lib/sparcv9/liblcms.so./lib/sparcv9/libmanagement.so./lib/sparcv9/libmlib_image.so./lib/sparcv9/libmlib_image_v.so./lib/sparcv9/libnet.so./lib/sparcv9/libnio.so./lib/sparcv9/libnpt.so./lib/sparcv9/libsctp.so./lib/sparcv9/libsplashscreen.so./lib/sparcv9/libsunec.so./lib/sparcv9/libsunwjdga.so./lib/sparcv9/libt2k.so./lib/sparcv9/libunpack.so./lib/sparcv9/libverify.so./lib/sparcv9/libzip.so./lib/sparcv9/server/libjvm.so./bin/appletviewer./bin/idlj./bin/jar./bin/jarsigner./bin/java./bin/javac./bin/javadoc./bin/javah./bin/javap./bin/jdeps./bin/jcmd./bin/jconsole./bin/jdb./bin/jimage./bin/jinfo./bin/jjs./bin/jmap./bin/jps./bin/jrunscript./bin/jsadebugd./bin/jstack./bin/jstat./bin/jstatd./bin/keytool./bin/orbd./bin/pack200./bin/policytool./bin/rmic./bin/rmid./bin/rmiregistry./bin/schemagen./bin/serialver./bin/servertool./bin/tnameserv./bin/unpack200./bin/wsgen./bin/wsimport./bin/xjc"# Filter random C++ symbol strings.# Some numbers differ randomly.DIS_DIFF_FILTER="$SED \ -e 's/\$[a-zA-Z0-9_\$]\{15,15\}/<SYM>/g' \ -e 's/[0-9a-f][0-9a-f].[0-9a-f][0-9a-f].[0-9a-f][0-9a-f].[0-9a-f][0-9a-f]/<NUMS>/g' \ -e 's/\(%g1,.0x\)[0-9a-f]*\(,.%g1\)/\1<HEX>\2/g' \ -e 's/\(!.\)[0-9a-f]*\(.<SUNWprivate_1.1+0x\)[0-9a-f]*/\1<NUM>\2<HEX>/g' \ -e 's/\!.[0-9a-f]\{1,4\} <_DYNAMIC+0x[0-9a-f]\{1,4\}>/<DYNAMIC>/g'"# Some xor instructions end up with different args in the lib but not in the object files.ACCEPTED_DIS_DIFF="./demo/jvmti/waiters/lib/libwaiters.so"SKIP_FULLDUMP_DIFF="true"fiif [ "$OPENJDK_TARGET_OS" = "windows" ]; thenACCEPTED_JARZIP_CONTENTS="/modules_libs/java.security.jgss/w2k_lsa_auth.diz/modules_libs/java.security.jgss/w2k_lsa_auth.dll"# Probably should add all libs hereACCEPTED_SMALL_SIZE_DIFF="./demo/jvmti/gctest/lib/gctest.dll./demo/jvmti/heapTracker/lib/heapTracker.dll./demo/jvmti/minst/lib/minst.dll./bin/attach.dll./bin/jsoundds.dll./bin/server/jvm.dll./bin/appletviewer.exe./bin/idlj.exe./bin/jar.exe./bin/jarsigner.exe./bin/java-rmi.exe./bin/java.exe./bin/javac.exe./bin/javadoc.exe./bin/javah.exe./bin/javap.exe./bin/jdeps.exe./bin/javaw.exe./bin/jcmd.exe./bin/jconsole.exe./bin/jdb.exe./bin/jimage.exe./bin/jinfo.exe./bin/jjs.exe./bin/jmap.exe./bin/jps.exe./bin/jrunscript.exe./bin/jsadebugd.exe./bin/jstack.exe./bin/jstat.exe./bin/jstatd.exe./bin/keytool.exe./bin/kinit.exe./bin/klist.exe./bin/ktab.exe./bin/orbd.exe./bin/pack200.exe./bin/policytool.exe./bin/rmic.exe./bin/rmid.exe./bin/rmiregistry.exe./bin/schemagen.exe./bin/serialver.exe./bin/servertool.exe./bin/tnameserv.exe./bin/unpack200.exe./bin/wsgen.exe./bin/wsimport.exe./bin/xjc.exe"# jabswitch.exe is compiled and linked with incremental turned on in the old# build. This makes no sense, so it's turned off in the new build.ACCEPTED_SIZE_DIFF="./bin/jabswitch.exe"ACCEPTED_DIS_DIFF="./bin/jabswitch.exe"# On windows, there are unavoidable allignment issues making# a perfect disasm diff impossible. Filter out the following:# * Random parts of C++ symbols (this is a bit greedy, but does the trick)# @XXXXX# * Hexadecimal addresses that are sometimes alligned differently.# * Dates in version strings XXXX_XX_XX.DIS_DIFF_FILTER="$SED \ -e 's/^ [0-9A-F]\{16\}: //g' \ -e 's/[@?][A-Za-z0-9_]\{1,25\}/<SYM>/g' \ -e 's/\([\[+]\)[0-9A-F]\{4,16\}h\]/\1<HEXSTR>]/g' \ -e 's/_[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}/_<DATE>/g'"#DIS_DIFF_FILTER="$CAT"SKIP_BIN_DIFF="true"SKIP_FULLDUMP_DIFF="true"fiif [ "$OPENJDK_TARGET_OS" = "macosx" ]; thenACCEPTED_JARZIP_CONTENTS="/META-INF/INDEX.LIST"ACCEPTED_BIN_DIFF="./bin/appletviewer./bin/idlj./bin/jar./bin/jarsigner./bin/java./bin/javac./bin/javadoc./bin/javah./bin/javap./bin/javaws./bin/jdeps./bin/jcmd./bin/jconsole./bin/jdb./bin/jimage./bin/jinfo./bin/jjs./bin/jmap./bin/jps./bin/jrunscript./bin/jsadebugd./bin/jstack./bin/jstat./bin/jstatd./bin/keytool./bin/orbd./bin/pack200./bin/policytool./bin/rmic./bin/rmid./bin/rmiregistry./bin/schemagen./bin/serialver./bin/servertool./bin/tnameserv./bin/wsgen./bin/wsimport./bin/xjc./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.dylib./demo/jvmti/gctest/lib/libgctest.dylib./demo/jvmti/heapTracker/lib/libheapTracker.dylib./demo/jvmti/heapViewer/lib/libheapViewer.dylib./demo/jvmti/minst/lib/libminst.dylib./demo/jvmti/mtrace/lib/libmtrace.dylib./demo/jvmti/versionCheck/lib/libversionCheck.dylib./demo/jvmti/waiters/lib/libwaiters.dylib./Contents/Home/bin/_javaws./Contents/Home/bin/idlj./Contents/Home/bin/servertool./Contents/Home/lib/shortcuts/JavaWSApplicationStub./Contents/Home/lib/jli/libjli.dylib./Contents/Home/lib/libAppleScriptEngine.dylib./Contents/Home/lib/libattach.dylib./Contents/Home/lib/libawt_lwawt.dylib./Contents/Home/lib/libdeploy.dylib./Contents/Home/lib/libdt_socket.dylib./Contents/Home/lib/libinstrument.dylib./Contents/Home/lib/libjdwp.dylib./Contents/Home/lib/libjsdt.dylib./Contents/Home/lib/libjsig.dylib./Contents/Home/lib/libmanagement.dylib./Contents/Home/lib/libnpjp2.dylib./Contents/Home/lib/libosx.dylib./Contents/Home/lib/libosxapp.dylib./Contents/Home/lib/libverify.dylib./Contents/Home/lib/libsaproc.dylib./Contents/Home/lib/libsplashscreen.dylib./Contents/Home/lib/server/libjvm.dylib./Contents/Home/lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel./Contents/Resources/JavaControlPanelHelper./Contents/Resources/JavaUpdater.app/Contents/MacOS/JavaUpdater./lib/shortcuts/JavaWSApplicationStub./lib/jli/libjli.dylib./lib/libAppleScriptEngine.dylib./lib/libattach.dylib./lib/libawt_lwawt.dylib./lib/libdeploy.dylib./lib/libdt_socket.dylib./lib/libinstrument.dylib./lib/libjdwp.dylib./lib/libjsdt.dylib./lib/libjsig.dylib./lib/libmanagement.dylib./lib/libnpjp2.dylib./lib/libosx.dylib./lib/libosxapp.dylib./lib/libverify.dylib./lib/libsaproc.dylib./lib/libsplashscreen.dylib./lib/server/libjvm.dylib./lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel"SORT_SYMBOLS="./Contents/Home/lib/libsaproc.dylib./lib/libsaproc.dylib"ACCEPTED_SMALL_SIZE_DIFF="$ACCEPTED_BIN_DIFF"DIS_DIFF_FILTER="$SED \ -e 's/0x[0-9a-f]\{4,16\}/<HEXSTR>/g'"fi