compare_exceptions.sh.incl revision 2576:d3c1b028c499
1#!/bin/bash
2#
3# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
4# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5#
6# This code is free software; you can redistribute it and/or modify it
7# under the terms of the GNU General Public License version 2 only, as
8# published by the Free Software Foundation.
9#
10# This code is distributed in the hope that it will be useful, but WITHOUT
11# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13# version 2 for more details (a copy is included in the LICENSE file that
14# accompanied this code).
15#
16# You should have received a copy of the GNU General Public License version
17# 2 along with this work; if not, write to the Free Software Foundation,
18# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19#
20# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21# or visit www.oracle.com if you need additional information or have any
22# questions.
23#
24
25# This script is not to be run as stand-alone, it should be included from
26# compare.sh.
27
28##########################################################################################
29# Check that we are run via inclusion from compare.sh and not as stand-alone.
30if [ -z "$COMPARE_EXCEPTIONS_INCLUDE" ]; then
31    echo "Error: This script should not be run as stand-alone. It is included by compare.sh"
32    exit 1
33fi
34
35##########################################################################################
36# Diff exceptions
37
38if [ "$OPENJDK_TARGET_OS" = "linux" ]; then
39
40  STRIP_BEFORE_COMPARE="
41      "
42
43  ACCEPTED_BIN_DIFF="
44      ./lib/client/libjsig.so
45      ./lib/client/libjvm.so
46      ./lib/libattach.so
47      ./lib/libdt_socket.so
48      ./lib/libinstrument.so
49      ./lib/libjsdt.so
50      ./lib/libjsig.so
51      ./lib/libmanagement.so
52      ./lib/libnet.so
53      ./lib/libnpt.so
54      ./lib/libverify.so
55      ./lib/minimal/libjsig.so
56      ./lib/minimal/libjvm.so
57      ./lib/server/libjsig.so
58      ./lib/server/libjvm.so
59      ./bin/appletviewer
60      ./bin/idlj
61      ./bin/jar
62      ./bin/jarsigner
63      ./bin/java
64      ./bin/javac
65      ./bin/javadoc
66      ./bin/javah
67      ./bin/javap
68      ./bin/jdeps
69      ./bin/jcmd
70      ./bin/jconsole
71      ./bin/jdb
72      ./bin/jhsdb
73      ./bin/jimage
74      ./bin/jinfo
75      ./bin/jjs
76      ./bin/jlink
77      ./bin/jmap
78      ./bin/jmod
79      ./bin/jps
80      ./bin/jrunscript
81      ./bin/jsadebugd
82      ./bin/jshell
83      ./bin/jstack
84      ./bin/jstat
85      ./bin/jstatd
86      ./bin/keytool
87      ./bin/orbd
88      ./bin/pack200
89      ./bin/policytool
90      ./bin/rmic
91      ./bin/rmid
92      ./bin/rmiregistry
93      ./bin/schemagen
94      ./bin/serialver
95      ./bin/servertool
96      ./bin/tnameserv
97      ./bin/wsgen
98      ./bin/wsimport
99      ./bin/xjc
100      "
101
102  if [ "$OPENJDK_TARGET_CPU" = "arm" ]; then
103    # NOTE: When comparing the old and new hotspot builds, the link time
104    # optimization makes good comparisons impossible. Fulldump compare always
105    # fails and disassembly can end up with some functions in different order.
106    # So for now, accept the difference but put a limit on the size. The
107    # different order of functions shouldn't result in a very big diff.
108    KNOWN_FULLDUMP_DIFF="
109        ./lib/minimal/libjvm.so
110        "
111
112    # Link time optimization adds random numbers to symbol names
113    NEED_DIS_DIFF_FILTER="
114        ./lib/minimal/libjvm.so
115        "
116    DIS_DIFF_FILTER="$SED -r \
117        -e 's/\.[0-9]+/.X/g' \
118        -e 's/\t[0-9a-f]{4} [0-9a-f]{4} /\tXXXX XXXX /' \
119        -e 's/\t[0-9a-f]{5,} /\t<HEX> /' \
120        "
121    KNOWN_DIS_DIFF="
122        ./lib/minimal/libjvm.so
123        "
124    MAX_KNOWN_DIS_DIFF_SIZE="3000"
125
126    NEED_SYMBOLS_DIFF_FILTER="
127        ./lib/minimal/libjvm.so
128        "
129    SYMBOLS_DIFF_FILTER="$SED -r \
130        -e 's/\.[0-9]+/.X/g'
131        "
132  fi
133fi
134
135if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
136
137  STRIP_BEFORE_COMPARE="
138      "
139
140  SORT_SYMBOLS="
141      ./lib/server/libjvm.so
142      ./lib/libfontmanager.so
143      ./lib/libjimage.so
144      ./lib/libsaproc.so
145      ./lib/libunpack.so
146      ./bin/unpack200
147      "
148
149  SKIP_BIN_DIFF="true"
150
151  ACCEPTED_SMALL_SIZE_DIFF="
152      ./lib/jli/libjli.so
153      ./lib/jspawnhelper
154      ./lib/libJdbcOdbc.so
155      ./lib/libattach.so
156      ./lib/libawt.so
157      ./lib/libawt_headless.so
158      ./lib/libawt_xawt.so
159      ./lib/libdcpr.so
160      ./lib/libdt_socket.so
161      ./lib/libfontmanager.so
162      ./lib/libinstrument.so
163      ./lib/libj2gss.so
164      ./lib/libj2pcsc.so
165      ./lib/libj2pkcs11.so
166      ./lib/libj2ucrypto.so
167      ./lib/libjaas_unix.so
168      ./lib/libjava.so
169      ./lib/libjawt.so
170      ./lib/libjdwp.so
171      ./lib/libjpeg.so
172      ./lib/libjsdt.so
173      ./lib/libjsound.so
174      ./lib/libkcms.so
175      ./lib/liblcms.so
176      ./lib/libmanagement.so
177      ./lib/libmlib_image.so
178      ./lib/libnet.so
179      ./lib/libnio.so
180      ./lib/libnpt.so
181      ./lib/libsctp.so
182      ./lib/libsplashscreen.so
183      ./lib/libsunec.so
184      ./lib/libsunwjdga.so
185      ./lib/libt2k.so
186      ./lib/libunpack.so
187      ./lib/libverify.so
188      ./lib/libzip.so
189      ./lib/server/64/libjvm_db.so
190      ./lib/server/64/libjvm_dtrace.so
191      ./lib/server/libjvm.so
192      ./lib/server/libjvm_db.so
193      ./lib/server/libjvm_dtrace.so
194      ./bin/appletviewer
195      ./bin/idlj
196      ./bin/jar
197      ./bin/jarsigner
198      ./bin/java
199      ./bin/javac
200      ./bin/javadoc
201      ./bin/javah
202      ./bin/javap
203      ./bin/jdeps
204      ./bin/jcmd
205      ./bin/jconsole
206      ./bin/jdb
207      ./bin/jimage
208      ./bin/jinfo
209      ./bin/jjs
210      ./bin/jlink
211      ./bin/jmap
212      ./bin/jmod
213      ./bin/jps
214      ./bin/jrunscript
215      ./bin/jsadebugd
216      ./bin/jstack
217      ./bin/jstat
218      ./bin/jstatd
219      ./bin/keytool
220      ./bin/orbd
221      ./bin/pack200
222      ./bin/policytool
223      ./bin/rmic
224      ./bin/rmid
225      ./bin/rmiregistry
226      ./bin/schemagen
227      ./bin/serialver
228      ./bin/servertool
229      ./bin/tnameserv
230      ./bin/unpack200
231      ./bin/wsgen
232      ./bin/wsimport
233      ./bin/xjc
234      "
235
236  SKIP_FULLDUMP_DIFF="true"
237
238  # Random strings looking like this differ: <.XAKoKoPIac2W0OA.
239  DIS_DIFF_FILTER="$SED \
240      -e 's/<\.[A-Za-z0-9]\{\15}\./<.SYM./' \
241      "
242
243fi
244
245if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "sparcv9" ]; then
246
247  STRIP_BEFORE_COMPARE="
248      "
249
250  SORT_SYMBOLS="
251      ./lib/libjsig.so
252      ./lib/libfontmanager.so
253      ./lib/libjimage.so
254      ./lib/libsaproc.so
255      ./lib/libunpack.so
256      ./lib/server/libjvm.so
257      ./lib/server/libjvm_dtrace.so
258      ./bin/unpack200
259      "
260
261  SKIP_BIN_DIFF="true"
262
263  ACCEPTED_SMALL_SIZE_DIFF="
264      ./lib/client/libjvm.so
265      ./lib/jli/libjli.so
266      ./lib/jspawnhelper
267      ./lib/libJdbcOdbc.so
268      ./lib/libattach.so
269      ./lib/libawt.so
270      ./lib/libawt_headless.so
271      ./lib/libawt_xawt.so
272      ./lib/libdcpr.so
273      ./lib/libdt_socket.so
274      ./lib/libfontmanager.so
275      ./lib/libinstrument.so
276      ./lib/libj2gss.so
277      ./lib/libj2pcsc.so
278      ./lib/libj2pkcs11.so
279      ./lib/libj2ucrypto.so
280      ./lib/libjaas_unix.so
281      ./lib/libjava.so
282      ./lib/libjawt.so
283      ./lib/libjdwp.so
284      ./lib/libjpeg.so
285      ./lib/libjsdt.so
286      ./lib/libjsound.so
287      ./lib/libkcms.so
288      ./lib/liblcms.so
289      ./lib/libmanagement.so
290      ./lib/libmlib_image.so
291      ./lib/libmlib_image_v.so
292      ./lib/libnet.so
293      ./lib/libnio.so
294      ./lib/libnpt.so
295      ./lib/libsctp.so
296      ./lib/libsplashscreen.so
297      ./lib/libsunec.so
298      ./lib/libsunwjdga.so
299      ./lib/libt2k.so
300      ./lib/libunpack.so
301      ./lib/libverify.so
302      ./lib/libzip.so
303      ./lib/server/libjvm.so
304      ./bin/appletviewer
305      ./bin/idlj
306      ./bin/jar
307      ./bin/jarsigner
308      ./bin/java
309      ./bin/javac
310      ./bin/javadoc
311      ./bin/javah
312      ./bin/javap
313      ./bin/jdeps
314      ./bin/jcmd
315      ./bin/jconsole
316      ./bin/jdb
317      ./bin/jimage
318      ./bin/jinfo
319      ./bin/jjs
320      ./bin/jlink
321      ./bin/jmap
322      ./bin/jmod
323      ./bin/jps
324      ./bin/jrunscript
325      ./bin/jsadebugd
326      ./bin/jstack
327      ./bin/jstat
328      ./bin/jstatd
329      ./bin/keytool
330      ./bin/orbd
331      ./bin/pack200
332      ./bin/policytool
333      ./bin/rmic
334      ./bin/rmid
335      ./bin/rmiregistry
336      ./bin/schemagen
337      ./bin/serialver
338      ./bin/servertool
339      ./bin/tnameserv
340      ./bin/unpack200
341      ./bin/wsgen
342      ./bin/wsimport
343      ./bin/xjc
344      "
345
346  DIS_DIFF_FILTER="$SED \
347      -e 's/^[0-9a-f]\{16\}/<ADDR>:/' \
348      -e 's/^ *[0-9a-f]\{3,8\}:/  <ADDR>:/' \
349      -e 's/:	[0-9a-f][0-9a-f]\( [0-9a-f][0-9a-f]\)\{2,10\}/:	<NUMS>/' \
350      -e 's/\$[a-zA-Z0-9_\$]\{15\}\./<SYM>./' \
351      -e 's/, [0-9a-fx\-]\{1,8\}/, <ADDR>/g' \
352      -e 's/0x[0-9a-f]\{1,8\}/<HEX>/g' \
353      -e 's/\! [0-9a-f]\{1,8\} /! <ADDR> /' \
354      -e 's/call  [0-9a-f]\{4,7\}/call  <ADDR>/' \
355      -e 's/%hi(0),/%hi(<HEX>),/' \
356      "
357
358  KNOWN_DIS_DIFF="
359      ./lib/libsaproc.so
360  "
361
362  MAX_KNOWN_DIS_DIFF_SIZE="3000"
363
364  # On slowdebug the disassembly can differ randomly.
365  if [ "$DEBUG_LEVEL" = "slowdebug" ]; then
366    ACCEPTED_DIS_DIFF="
367        ./lib/libfontmanager.so
368        ./lib/server/libjvm.so
369    "
370  fi
371
372  SKIP_FULLDUMP_DIFF="true"
373
374fi
375
376
377if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
378
379  ACCEPTED_JARZIP_CONTENTS="
380      /modules_libs/java.security.jgss/w2k_lsa_auth.diz
381      /modules_libs/java.security.jgss/w2k_lsa_auth.pdb
382      /modules_libs/java.security.jgss/w2k_lsa_auth.map
383      /modules_libs/java.security.jgss/w2k_lsa_auth.dll
384      "
385
386  # Probably should add all libs here
387  ACCEPTED_SMALL_SIZE_DIFF="
388      ./bin/attach.dll
389      ./bin/jsoundds.dll
390      ./bin/client/jvm.dll
391      ./bin/server/jvm.dll
392      ./bin/appletviewer.exe
393      ./bin/idlj.exe
394      ./bin/jar.exe
395      ./bin/jarsigner.exe
396      ./bin/java-rmi.exe
397      ./bin/java.exe
398      ./bin/javac.exe
399      ./bin/javadoc.exe
400      ./bin/javah.exe
401      ./bin/javap.exe
402      ./bin/jdeps.exe
403      ./bin/javaw.exe
404      ./bin/jcmd.exe
405      ./bin/jconsole.exe
406      ./bin/jdb.exe
407      ./bin/jimage.exe
408      ./bin/jinfo.exe
409      ./bin/jjs.exe
410      ./bin/jlink.exe
411      ./bin/jmap.exe
412      ./bin/jmod.exe
413      ./bin/jps.exe
414      ./bin/jrunscript.exe
415      ./bin/jsadebugd.exe
416      ./bin/jstack.exe
417      ./bin/jstat.exe
418      ./bin/jstatd.exe
419      ./bin/keytool.exe
420      ./bin/kinit.exe
421      ./bin/klist.exe
422      ./bin/ktab.exe
423      ./bin/orbd.exe
424      ./bin/pack200.exe
425      ./bin/policytool.exe
426      ./bin/rmic.exe
427      ./bin/rmid.exe
428      ./bin/rmiregistry.exe
429      ./bin/schemagen.exe
430      ./bin/serialver.exe
431      ./bin/servertool.exe
432      ./bin/tnameserv.exe
433      ./bin/unpack200.exe
434      ./bin/wsgen.exe
435      ./bin/wsimport.exe
436      ./bin/xjc.exe
437      "
438
439  ACCEPTED_DIS_DIFF="
440      ./bin/jabswitch.exe
441      "
442
443  if [ "$OPENJDK_TARGET_CPU" = "x86" ]; then
444    DIS_DIFF_FILTER="$SED -r \
445        -e 's/^  [0-9A-F]{16}: //' \
446        -e 's/^  [0-9A-F]{8}: /  <ADDR>: /' \
447        -e 's/(offset \?\?)_C@_.*/\1<SYM>/' \
448        -e 's/[@?][A-Za-z0-9_]{1,25}/<SYM>/' \
449        -e 's/([-,+])[0-9A-F]{2,16}/\1<HEXSTR>/g' \
450        -e 's/\[[0-9A-F]{4,16}h\]/[<HEXSTR>]/' \
451        -e 's/: ([a-z]{2}[a-z ]{2})        [0-9A-F]{2,16}h?$/: \1        <HEXSTR>/' \
452        -e 's/_20[0-9]{2}_[0-1][0-9]_[0-9]{2}/_<DATE>/' \
453        "
454  elif [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
455    DIS_DIFF_FILTER="$SED -r \
456        -e 's/^  [0-9A-F]{16}: //' \
457        -e 's/\[[0-9A-F]{4,16}h\]/[<HEXSTR>]/' \
458        -e 's/([,+])[0-9A-F]{2,16}h/\1<HEXSTR>/' \
459        -e 's/([a-z]{2}[a-z ]{2})        [0-9A-F]{4,16}$/\1        <HEXSTR>/' \
460        -e 's/\[\?\?_C@_.*/[<SYM>]/' \
461        "
462  fi
463
464  SKIP_BIN_DIFF="true"
465  SKIP_FULLDUMP_DIFF="true"
466
467  # NOTE: When comparing the old and new hotspot builds, the server jvm.dll
468  # cannot be made equal in disassembly. Some functions just always end up
469  # in different order. So for now, accept the difference but put a limit
470  # on the size. The different order of functions shouldn't result in a very
471  # big diff.
472  KNOWN_DIS_DIFF="
473      ./bin/server/jvm.dll
474      "
475  MAX_KNOWN_DIS_DIFF_SIZE="2000000"
476fi
477
478
479if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
480
481  ACCEPTED_JARZIP_CONTENTS="
482      /META-INF/INDEX.LIST
483      "
484
485  ACCEPTED_BIN_DIFF="
486      ./bin/appletviewer
487      ./bin/idlj
488      ./bin/jar
489      ./bin/jarsigner
490      ./bin/java
491      ./bin/javac
492      ./bin/javadoc
493      ./bin/javah
494      ./bin/javap
495      ./bin/javaws
496      ./bin/jdeps
497      ./bin/jcmd
498      ./bin/jconsole
499      ./bin/jdb
500      ./bin/jimage
501      ./bin/jinfo
502      ./bin/jjs
503      ./bin/jlink
504      ./bin/jmap
505      ./bin/jmod
506      ./bin/jps
507      ./bin/jrunscript
508      ./bin/jsadebugd
509      ./bin/jstack
510      ./bin/jstat
511      ./bin/jstatd
512      ./bin/keytool
513      ./bin/orbd
514      ./bin/pack200
515      ./bin/policytool
516      ./bin/rmic
517      ./bin/rmid
518      ./bin/rmiregistry
519      ./bin/schemagen
520      ./bin/serialver
521      ./bin/servertool
522      ./bin/tnameserv
523      ./bin/wsgen
524      ./bin/wsimport
525      ./bin/xjc
526      ./Contents/Home/bin/_javaws
527      ./Contents/Home/bin/javaws
528      ./Contents/Home/bin/idlj
529      ./Contents/Home/bin/servertool
530      ./Contents/Home/lib/shortcuts/JavaWSApplicationStub
531      ./Contents/Home/lib/jli/libjli.dylib
532      ./Contents/Home/lib/jspawnhelper
533      ./Contents/Home/lib/libAppleScriptEngine.dylib
534      ./Contents/Home/lib/libattach.dylib
535      ./Contents/Home/lib/libawt_lwawt.dylib
536      ./Contents/Home/lib/libdeploy.dylib
537      ./Contents/Home/lib/libdt_socket.dylib
538      ./Contents/Home/lib/libinstrument.dylib
539      ./Contents/Home/lib/libjdwp.dylib
540      ./Contents/Home/lib/libjsdt.dylib
541      ./Contents/Home/lib/libjsig.dylib
542      ./Contents/Home/lib/libmanagement.dylib
543      ./Contents/Home/lib/libnpjp2.dylib
544      ./Contents/Home/lib/libosx.dylib
545      ./Contents/Home/lib/libosxapp.dylib
546      ./Contents/Home/lib/libosxui.dylib
547      ./Contents/Home/lib/libverify.dylib
548      ./Contents/Home/lib/libsaproc.dylib
549      ./Contents/Home/lib/libsplashscreen.dylib
550      ./Contents/Home/lib/server/libjsig.dylib
551      ./Contents/Home/lib/server/libjvm.dylib
552      ./Contents/Home/lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel
553      ./Contents/Resources/JavaControlPanelHelper
554      ./Contents/Resources/JavaUpdater.app/Contents/MacOS/JavaUpdater
555      ./Contents/Resources/JavawsLauncher.app/Contents/MacOS/JavawsLauncher
556      ./lib/shortcuts/JavaWSApplicationStub
557      ./lib/jli/libjli.dylib
558      ./lib/jspawnhelper
559      ./lib/libAppleScriptEngine.dylib
560      ./lib/libattach.dylib
561      ./lib/libawt_lwawt.dylib
562      ./lib/libdeploy.dylib
563      ./lib/libdt_socket.dylib
564      ./lib/libinstrument.dylib
565      ./lib/libjdwp.dylib
566      ./lib/libjsdt.dylib
567      ./lib/libjsig.dylib
568      ./lib/libmanagement.dylib
569      ./lib/libnpjp2.dylib
570      ./lib/libosx.dylib
571      ./lib/libosxapp.dylib
572      ./lib/libosxui.dylib
573      ./lib/libverify.dylib
574      ./lib/libsaproc.dylib
575      ./lib/libsplashscreen.dylib
576      ./lib/server/libjsig.dylib
577      ./lib/server/libjvm.dylib
578      ./lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel
579      ./Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation
580      ./Versions/A/Sparkle
581      "
582
583  SORT_SYMBOLS="
584      ./Contents/Home/lib/libsaproc.dylib
585      ./lib/libsaproc.dylib
586      ./lib/libjsig.dylib
587      "
588
589  ACCEPTED_SMALL_SIZE_DIFF="$ACCEPTED_BIN_DIFF"
590
591  DIS_DIFF_FILTER="LANG=C $SED \
592      -e 's/0x[0-9a-f]\{3,16\}/<HEXSTR>/g' -e 's/^[0-9a-f]\{12,20\}/<ADDR>/' \
593      -e 's/-20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]-[0-2][0-9]\{5\}/<DATE>/g' \
594      -e 's/), built on .*/), <DATE>/' \
595      "
596
597fi
598