1 #! /bin/sh 2 # Copyright (C) 2005, 2006 Red Hat, Inc. 3 # This file is part of Red Hat elfutils. 4 # 5 # Red Hat elfutils is free software; you can redistribute it and/or modify 6 # it under the terms of the GNU General Public License as published by the 7 # Free Software Foundation; version 2 of the License. 8 # 9 # Red Hat elfutils is distributed in the hope that it will be useful, but 10 # WITHOUT ANY WARRANTY; without even the implied warranty of 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 # General Public License for more details. 13 # 14 # You should have received a copy of the GNU General Public License along 15 # with Red Hat elfutils; if not, write to the Free Software Foundation, 16 # Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. 17 # 18 # Red Hat elfutils is an included package of the Open Invention Network. 19 # An included package of the Open Invention Network is a package for which 20 # Open Invention Network licensees cross-license their patents. No patent 21 # license is granted, either expressly or impliedly, by designation as an 22 # included package. Should you wish to participate in the Open Invention 23 # Network licensing program, please visit www.openinventionnetwork.com 24 # <http://www.openinventionnetwork.com>. 25 26 27 . $srcdir/test-subr.sh 28 29 # This tests all the miscellaneous components of backend support 30 # against whatever this build is running on. A platform will fail 31 # this test if it is missing parts of the backend implementation. 32 # 33 # As new backend code is added to satisfy the test, be sure to update 34 # the fixed test cases (run-allregs.sh et al) to test that backend 35 # in all builds. 36 37 tempfiles native.c native 38 echo 'main () { while (1) pause (); }' > native.c 39 40 native=0 41 kill_native() 42 { 43 test $native -eq 0 || { 44 kill -9 $native 2> /dev/null || : 45 wait $native 2> /dev/null || : 46 } 47 native=0 48 } 49 50 native_cleanup() 51 { 52 kill_native 53 test_cleanup 54 } 55 56 trap native_cleanup 0 1 2 15 57 58 for cc in "$HOSTCC" "$HOST_CC" cc gcc "$CC"; do 59 test "x$cc" != x || continue 60 $cc -o native -g native.c > /dev/null 2>&1 && 61 # Some shell versions don't do this right without the braces. 62 { ./native > /dev/null 2>&1 & native=$! ; } && 63 sleep 1 && kill -0 $native 2> /dev/null && 64 break || 65 native=0 66 done 67 68 native_test() 69 { 70 # Try the build against itself, i.e. $config_host. 71 testrun "$@" -e $1 > /dev/null 72 73 # Try the build against a presumed native process, running this sh. 74 # For tests requiring debug information, this may not test anything. 75 testrun "$@" -p $$ > /dev/null 76 77 # Try the build against the trivial native program we just built with -g. 78 test $native -eq 0 || testrun "$@" -p $native > /dev/null 79 } 80 81 native_test ./allregs 82 native_test ./funcretval 83 84 # We do this explicitly rather than letting the trap 0 cover it, 85 # because as of version 3.1 bash prints the "Killed" report for 86 # $native when we do the kill inside the exit handler. 87 native_cleanup 88 89 exit 0 90