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 37tempfiles native.c native 38echo 'main () { while (1) pause (); }' > native.c 39 40native=0 41kill_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 50native_cleanup() 51{ 52 kill_native 53 test_cleanup 54} 55 56trap native_cleanup 0 1 2 15 57 58for 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 66done 67 68native_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 81native_test ./allregs 82native_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. 87native_cleanup 88 89exit 0 90