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