# This file is part of ltrace.
# Copyright (C) 2013 Petr Machata, Red Hat Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
# 02110-1301 USA

if {![istarget arm*-*]} {
    unsupported "arm-specific test"
    return
}

set exe [ltraceCompile {} [ltraceSource c {
    int puc(void) { return 0; }

    int bar(void);
    int baz(void);
    __asm__ ("	.type   bar, %function\n"
	     "bar:		\n"
	     "	b puc	\n"
	     "	.type   baz, %function\n"
	     "baz:		\n"
	     "	b puc	\n");

    int main(void) { return bar() + baz(); }
}]]

ltraceMatch [ltraceRun -L -xbar+baz $exe] {
    {{bar} == 1}
    {{baz} == 1}
}

ltraceDone
