1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2021-2023 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 <stdlib.h> 19 #include <unistd.h> 20 #include <sys/mman.h> 21 #include <stdio.h> 22 23 /* These will hold the addresses for two memory regions. */ 24 25 void *region_1; 26 void *region_2; 27 28 /* Allocate a page of memory using mmap, and return a pointer. */ 29 30 void * 31 allocate_page (void) 32 { 33 void *addr; 34 int pgsize = sysconf(_SC_PAGE_SIZE); 35 addr = mmap (NULL, pgsize, PROT_EXEC | PROT_READ | PROT_WRITE, 36 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); 37 if (addr == MAP_FAILED) 38 perror ("mmap"); 39 } 40 41 /* Only called so we can create a breakpoint. */ 42 43 void 44 breakpt (void) 45 { 46 /* Nothing. */ 47 } 48 49 /* The test. */ 50 51 int 52 main (void) 53 { 54 region_1 = allocate_page (); 55 region_2 = allocate_page (); 56 57 breakpt (); /* Break Here. */ 58 } 59