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