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