/* Copyright (C) 2008 Emmanuel Varoquaux This file is part of XOS. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <unistd.h> #include <stdio.h> int main() { void *_brk; volatile int *test_addr; printf("dummy printf to malloc memory.\n"); _brk = sbrk(0); printf("brk=%p\n", _brk); test_addr = _brk + 4095; printf("increasing data segment...\n"); sbrk(4096); _brk = sbrk(0); printf("brk=%p\n", _brk); printf("checking...\n"); *test_addr = 0; printf("ok.\n"); printf("decreasing data segment...\n"); sbrk(-4096); _brk = sbrk(0); printf("brk=%p\n", _brk); printf("segfaulting...\n"); *test_addr = 0; return 0; }