diff options
Diffstat (limited to 'gold/testsuite/icf_safe_test.sh')
-rwxr-xr-x | gold/testsuite/icf_safe_test.sh | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/gold/testsuite/icf_safe_test.sh b/gold/testsuite/icf_safe_test.sh index 3b2795a8fb..fe224f6988 100755 --- a/gold/testsuite/icf_safe_test.sh +++ b/gold/testsuite/icf_safe_test.sh @@ -40,28 +40,34 @@ check_nofold() check_fold() { - func_addr_1=`grep $2 $1 | awk '{print $1}'` - func_addr_2=`grep $3 $1 | awk '{print $1}'` - if [ $func_addr_1 != $func_addr_2 ] - then - echo "Safe Identical Code Folding did not fold " $2 "and" $3 - exit 1 - fi + awk " +BEGIN { discard = 0; } +/^Discarded input/ { discard = 1; } +/^Memory map/ { discard = 0; } +/.*\\.text\\..*($2|$3).*/ { act[discard] = act[discard] \" \" \$0; } +END { + # printf \"kept\" act[0] \"\\nfolded\" act[1] \"\\n\"; + if (length(act[0]) == 0 || length(act[1]) == 0) + { + printf \"Safe Identical Code Folding did not fold $2 and $3\\n\" + exit 1; + } + }" $1 } arch_specific_safe_fold() { - grep_x86=`grep -q -e "Advanced Micro Devices X86-64" -e "Intel 80386" -e "ARM" -e "TILE" $2` + grep_x86=`grep -q -e "Advanced Micro Devices X86-64" -e "Intel 80386" -e "ARM" -e "TILE" -e "PowerPC" $2` if [ $? -eq 0 ]; then - check_fold $1 $3 $4 + check_fold $3 $4 $5 else - check_nofold $1 $3 $4 + check_nofold $1 $4 $5 fi } arch_specific_safe_fold icf_safe_test_1.stdout icf_safe_test_2.stdout \ - "kept_func_1" "kept_func_2" -check_fold icf_safe_test_1.stdout "_ZN1AD1Ev" "_ZN1AC1Ev" + icf_safe_test.map "kept_func_1" "kept_func_2" +check_fold icf_safe_test.map "_ZN1AD2Ev" "_ZN1AC2Ev" check_nofold icf_safe_test_1.stdout "kept_func_3" "kept_func_1" check_nofold icf_safe_test_1.stdout "kept_func_3" "kept_func_2" |