1a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# This file is part of ltrace. 2a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# Copyright (C) 2012 Petr Machata, Red Hat Inc. 3a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# 4a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# This program is free software; you can redistribute it and/or 5a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# modify it under the terms of the GNU General Public License as 6a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# published by the Free Software Foundation; either version 2 of the 7a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# License, or (at your option) any later version. 8a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# 9a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# This program is distributed in the hope that it will be useful, but 10a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# WITHOUT ANY WARRANTY; without even the implied warranty of 11a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# General Public License for more details. 13a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# 14a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# You should have received a copy of the GNU General Public License 15a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# along with this program; if not, write to the Free Software 16a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 17a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata# 02110-1301 USA 18a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata 19a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machataset testfile "ppc-lwarx" 20a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machataset srcfile ${testfile}.c 21a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machataset binfile ${testfile} 22a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata 23a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machataif [get_compiler_info $binfile] { 24a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata return -1 25a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata} 26a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata 27a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machataif { [istarget powerpc*-*] } then { 28a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata verbose "compiling source file now....." 29a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata if { [ltrace_compile $srcdir/$subdir/$srcfile $objdir/$subdir/$binfile executable {debug} ] != "" } { 30a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata send_user "Testcase compile failed, so all tests in this file will automatically fail\n." 31a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata } 32a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata 33a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata # set options for ltrace. 34a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata ltrace_options "-x" "atomic_add" "-e" "!atoi" 35a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata 36a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata # Run PUT for ltarce. 37a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata set exec_output [ltrace_runtest $objdir/$subdir $objdir/$subdir/$binfile] 38a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata 39a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata # Check the output of this program. 40a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata verbose "ltrace runtest output: $exec_output\n" 41a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata if [regexp {ELF from incompatible architecture} $exec_output] { 42a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata fail "32-bit ltrace can not perform on 64-bit PUTs and rebuild ltrace in 64 bit mode!" 43a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata return 44a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata } elseif [ regexp {Couldn't get .hash data} $exec_output ] { 45a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata fail "Couldn't get .hash data!" 46a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata return 47a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata } 48a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata 49a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata set pattern "atomic_add(.*, 5,.*)" 50a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 51a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata set pattern "atomic_add(.*, 10,.*)" 52a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 53a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata set pattern "atomic_add(.*, 15,.*)" 54a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 55a266acb9c3bbde884a32268f164de62d03aa04d0Petr Machata} 56