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