1/* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2014-2020 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18#include <unistd.h> 19#include <stdio.h> 20#include <stdlib.h> 21#include <string.h> 22 23void 24some_function (void) 25{ 26} 27 28int 29main (int argc, char **argv) 30{ 31 size_t len; 32 char *bin; 33 34 len = strlen (argv[0]); 35 bin = malloc (len + 1); 36 memcpy (bin, argv[0], len + 1); 37 if (bin[len - 1] == '1') 38 bin[len - 1] = '2'; 39 40 execl (bin, bin, (char *) NULL); 41 perror ("execl failed"); 42 some_function (); 43 exit (1); 44} 45