git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3365 c046a42c-6fe2-441c-8c8c-71466251a162
		
			
				
	
	
		
			49 lines
		
	
	
		
			833 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			833 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
#notarget: cris*-*-elf
 | 
						|
*/
 | 
						|
 | 
						|
#define _GNU_SOURCE
 | 
						|
#include <string.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <sys/types.h>
 | 
						|
#include <sys/stat.h>
 | 
						|
#include <fcntl.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <sys/mman.h>
 | 
						|
 | 
						|
int main (int argc, char *argv[])
 | 
						|
{
 | 
						|
  int fd = open (argv[0], O_RDONLY);
 | 
						|
  struct stat sb;
 | 
						|
  int size;
 | 
						|
  void *a;
 | 
						|
  const char *str = "a string you'll only find in the program";
 | 
						|
 | 
						|
  if (fd == -1)
 | 
						|
    {
 | 
						|
      perror ("open");
 | 
						|
      abort ();
 | 
						|
    }
 | 
						|
 | 
						|
  if (fstat (fd, &sb) < 0)
 | 
						|
    {
 | 
						|
      perror ("fstat");
 | 
						|
      abort ();
 | 
						|
    }
 | 
						|
 | 
						|
  size = sb.st_size;
 | 
						|
 | 
						|
  /* We want to test mmapping a size that isn't exactly a page.  */
 | 
						|
  if ((size & 8191) == 0)
 | 
						|
    size--;
 | 
						|
 | 
						|
  a = mmap (NULL, size, PROT_READ, MAP_SHARED, fd, 0);
 | 
						|
 | 
						|
  if (memmem (a, size, str, strlen (str) + 1) == NULL)
 | 
						|
    abort ();
 | 
						|
 | 
						|
  printf ("pass\n");
 | 
						|
  exit (0);
 | 
						|
}
 |