|
|
1.1 root 1: /*
2: #notarget: cris*-*-elf
3: */
4:
5: #define _GNU_SOURCE
6: #include <string.h>
7: #include <stdlib.h>
8: #include <stdio.h>
9: #include <sys/types.h>
10: #include <sys/stat.h>
11: #include <fcntl.h>
12: #include <unistd.h>
13: #include <sys/mman.h>
14:
15: int main (int argc, char *argv[])
16: {
17: int fd = open (argv[0], O_RDONLY);
18: struct stat sb;
19: int size;
20: void *a;
21: const char *str = "a string you'll only find in the program";
22:
23: if (fd == -1)
24: {
25: perror ("open");
26: abort ();
27: }
28:
29: if (fstat (fd, &sb) < 0)
30: {
31: perror ("fstat");
32: abort ();
33: }
34:
35: size = sb.st_size;
36:
37: /* We want to test mmapping a size that isn't exactly a page. */
38: if ((size & 8191) == 0)
39: size--;
40:
41: a = mmap (NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
42:
43: if (memmem (a, size, str, strlen (str) + 1) == NULL)
44: abort ();
45:
46: printf ("pass\n");
47: exit (0);
48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.