Statistics
| Branch: | Revision:

root / tests / tcg / cris / check_mmap2.c @ c09015dd

History | View | Annotate | Download (833 Bytes)

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_SHARED, fd, 0);
42

    
43
  if (memmem (a, size, str, strlen (str) + 1) == NULL)
44
    abort ();
45

    
46
  printf ("pass\n");
47
  exit (0);
48
}