8011555: Invalid class name in with block with JavaImporter causes MH type mismatch
Reviewed-by: jlaskey, lagergren
#!/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.## MANUAL## ./common/bin/compare-objects.sh old_jdk_build_dir new_jdk_build_dir## Compares object files#if [ "x$1" = "x-h" ] || [ "x$1" = "x--help" ] || [ "x$1" == "x" ]; then echo "bash ./common/bin/compare-objects.sh old_jdk_build_dir new_jdk_build_dir <pattern>" echo "" echo "Compare object files" echo "" exit 10fi######### List of files (grep patterns) that are ignored# # 1) hotspot object filesIGNORE="-e hotspot"# 2) various build artifacts: sizer.32.o sizer.64.o dummyodbc.o# these are produced during build and then e.g run to produce other data# i.e not directly put into build => safe to ignoreIGNORE="${IGNORE} -e sizer.32.o -e sizer.64.o"IGNORE="${IGNORE} -e dummyodbc.o"IGNORE="${IGNORE} -e genSolarisConstants.o"IGNORE="${IGNORE} -e genUnixConstants.o"OLD="$1"NEW="$2"shift; shiftPATTERN="$*"if [ -f $NEW/spec.sh ]; then . $NEW/spec.shelif [ -f $NEW/../../spec.sh ]; then . $NEW/../../spec.shelif [ -f $OLD/spec.sh ]; then . $OLD/spec.shelif [ -f $OLD/../../spec.sh ]; then . $OLD/../../spec.shelse echo "Unable to find spec.sh" echo "Giving up" exit 1fiexport COMPARE_ROOT=/tmp/cimages.$USER/objectsmkdir -p $COMPARE_ROOT(${CD} $OLD && ${FIND} . -name '*.o') > $COMPARE_ROOT/list.old(${CD} $NEW && ${FIND} . -name '*.o') > $COMPARE_ROOT/list.new# On macosx JobjC is build in both i386 and x86_64 variant (universial binary)# but new build only builds the x86_64# Remove the 386 variants from comparison...to avoid "false" positives${GREP} -v 'JObjC.dst/Objects-normal/i386' $COMPARE_ROOT/list.old > $COMPARE_ROOT/list.old.new${CP} $COMPARE_ROOT/list.old $COMPARE_ROOT/list.old.full${CP} $COMPARE_ROOT/list.old.new $COMPARE_ROOT/list.oldfindnew() { arg_1=$1 arg_2=$2 # special case 1 unpack-cmd => unpackexe arg_1=`${ECHO} $arg_1 | ${SED} 's!unpack-cmd!unpackexe!g'` arg_2=`${ECHO} $arg_2 | ${SED} 's!unpack-cmd!unpackexe!g'` # special case 2 /JObjC.dst/ => /libjobjc/ arg_1=`${ECHO} $arg_1 | ${SED} 's!/JObjC.dst/!/libjobjc/!g'` arg_2=`${ECHO} $arg_2 | ${SED} 's!/JObjC.dst/!/libjobjc/!g'` full=`${ECHO} $arg_1 | ${SED} 's!\.!\\\.!g'` medium=`${ECHO} $arg_1 | ${SED} 's!.*/\([^/]*/[^/]*\)!\1!'` short=`${ECHO} $arg_2 | ${SED} 's!\.!\\\.!g'` if [ "`${GREP} -c "/$full" $COMPARE_ROOT/list.new`" -eq 1 ] then ${ECHO} $NEW/$arg_1 return fi if [ "`${GREP} -c "$medium" $COMPARE_ROOT/list.new`" -eq 1 ] then ${GREP} "$medium" $COMPARE_ROOT/list.new return fi if [ "`${GREP} -c "/$short" $COMPARE_ROOT/list.new`" -eq 1 ] then ${GREP} "/$short" $COMPARE_ROOT/list.new return fi # old style has "dir" before obj{64} dir=`${ECHO} $arg_1 | ${SED} 's!.*/\([^/]*\)/obj[64]*.*!\1!g'` if [ -n "$dir" -a "$dir" != "$arg_1" ] then if [ "`${GREP} $dir $COMPARE_ROOT/list.new | ${GREP} -c "/$short"`" -eq 1 ] then ${GREP} $dir $COMPARE_ROOT/list.new | ${GREP} "/$short" return fi # Try with lib$dir/ if [ "`${GREP} "lib$dir/" $COMPARE_ROOT/list.new | ${GREP} -c "/$short"`" -eq 1 ] then ${GREP} "lib$dir/" $COMPARE_ROOT/list.new | ${GREP} "/$short" return fi # Try with $dir_objs if [ "`${GREP} "${dir}_objs" $COMPARE_ROOT/list.new | ${GREP} -c "/$short"`" -eq 1 ] then ${GREP} "${dir}_objs" $COMPARE_ROOT/list.new | ${GREP} "/$short" return fi fi # check for some specifics... for i in demo hotspot jobjc do if [ "`${ECHO} $full | ${GREP} -c $i`" -gt 0 ] then if [ "`${GREP} $i $COMPARE_ROOT/list.new | ${GREP} -c "/$short"`" -eq 1 ] then ${GREP} $i $COMPARE_ROOT/list.new | ${GREP} "/$short" return fi fi done # check for specific demo demo=`${ECHO} $arg_1 | ${SED} 's!.*/demo/jvmti/\([^/]*\)/.*!\1!g'` if [ -n "$demo" -a "$dir" != "$demo" ] then if [ "`${GREP} $demo $COMPARE_ROOT/list.new | ${GREP} -c "/$short"`" -eq 1 ] then ${GREP} $demo $COMPARE_ROOT/list.new | ${GREP} "/$short" return fi fi return}compare() { old=$1 new=$2 ${DIFF} $old $new > /dev/null res=$? if [ $res -eq 0 ] then ${ECHO} 0 return fi # check if stripped objects gives equality ${CP} $old $COMPARE_ROOT/`basename $old`.old ${CP} $new $COMPARE_ROOT/`basename $old`.new ${POST_STRIP_CMD} $COMPARE_ROOT/`basename $old`.old $COMPARE_ROOT/`basename $old`.new > /dev/null 2>&1 ${DIFF} $COMPARE_ROOT/`basename $old`.old $COMPARE_ROOT/`basename $old`.new > /dev/null res=$? ${RM} $COMPARE_ROOT/`basename $old`.old $COMPARE_ROOT/`basename $old`.new if [ $res -eq 0 ] then ${ECHO} S return fi name=`basename $1 | ${SED} 's!\.o!!'` cntold=`strings $old | ${GREP} -c $name` cntnew=`strings $new | ${GREP} -c $name` if [ $cntold -gt 0 -a $cntnew -gt 0 ] then ${ECHO} F return fi ${ECHO} 1}for F in `${CAT} $COMPARE_ROOT/list.old`do if [ "${IGNORE}" ] && [ "`${ECHO} $F | ${GREP} ${IGNORE}`" ] then # # skip ignored files # continue; fi if [ "$PATTERN" ] && [ `${ECHO} $F | ${GREP} -c $PATTERN` -eq 0 ] then continue; fi f=`basename $F` o=$OLD/$F n=`findnew $F $f` if [ "$n" ] then n="$NEW/$n" ${ECHO} `compare $o $n` : $f : $o : $n else ${ECHO} "- : $f : $o " fidone