# This file is part of ltrace.
# Copyright (C) 2012, 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

set bin1 [ltraceCompile {} [ltraceSource c {
    #include <unistd.h>
    #include <stdlib.h>
    int main(int argc, char ** argv) {
	execl(argv[1], argv[1], NULL);
	abort();
    }
}]]

set bin2 [ltraceCompile {} [ltraceSource c {
    #include <stdio.h>
    int main(void) {
	return puts("Hello, World.");
    }
}]]

ltraceMatch [ltraceRun -xmain -- $bin1 $bin2] {
    {{^execl\(} == 1}
    {{^puts\(.*\) .*= 14} == 1}
    {{^main\(} == 2}
}

ltraceMatch [ltraceRun -c -- $bin1 $bin2] {
    {{exec} > 0}
}

ltraceDone
