1*d4f6e58fSAlex Bennée /* Check that --sysroot is applied to open(2). 2*d4f6e58fSAlex Bennée #sim: --sysroot=@exedir@ 3*d4f6e58fSAlex Bennée 4*d4f6e58fSAlex Bennée We assume, with EXE being the name of the executable: 5*d4f6e58fSAlex Bennée - The simulator executes with cwd the same directory where the executable 6*d4f6e58fSAlex Bennée is located (so argv[0] contains a plain filename without directory 7*d4f6e58fSAlex Bennée components). 8*d4f6e58fSAlex Bennée - There's no /EXE on the host file system. */ 9*d4f6e58fSAlex Bennée 10*d4f6e58fSAlex Bennée #include <stdio.h> 11*d4f6e58fSAlex Bennée #include <stdlib.h> 12*d4f6e58fSAlex Bennée #include <string.h> 13*d4f6e58fSAlex Bennée #include <errno.h> main(int argc,char * argv[])14*d4f6e58fSAlex Bennéeint main (int argc, char *argv[]) 15*d4f6e58fSAlex Bennée { 16*d4f6e58fSAlex Bennée char *fnam = argv[0]; 17*d4f6e58fSAlex Bennée FILE *f; 18*d4f6e58fSAlex Bennée if (argv[0][0] != '/') 19*d4f6e58fSAlex Bennée { 20*d4f6e58fSAlex Bennée fnam = malloc (strlen (argv[0]) + 2); 21*d4f6e58fSAlex Bennée if (fnam == NULL) 22*d4f6e58fSAlex Bennée abort (); 23*d4f6e58fSAlex Bennée strcpy (fnam, "/"); 24*d4f6e58fSAlex Bennée strcat (fnam, argv[0]); 25*d4f6e58fSAlex Bennée } 26*d4f6e58fSAlex Bennée 27*d4f6e58fSAlex Bennée f = fopen (fnam, "rb"); 28*d4f6e58fSAlex Bennée if (f == NULL) 29*d4f6e58fSAlex Bennée abort (); 30*d4f6e58fSAlex Bennée fclose(f); 31*d4f6e58fSAlex Bennée 32*d4f6e58fSAlex Bennée /* Cover another execution path. */ 33*d4f6e58fSAlex Bennée if (fopen ("/nonexistent", "rb") != NULL 34*d4f6e58fSAlex Bennée || errno != ENOENT) 35*d4f6e58fSAlex Bennée abort (); 36*d4f6e58fSAlex Bennée printf ("pass\n"); 37*d4f6e58fSAlex Bennée return 0; 38*d4f6e58fSAlex Bennée } 39