xref: /openbmc/qemu/tests/tcg/multiarch/test-vma.c (revision 67ff2186)
1*67ff2186SRichard Henderson /*
2*67ff2186SRichard Henderson  * Test very large vma allocations.
3*67ff2186SRichard Henderson  * The qemu out-of-memory condition was within the mmap syscall itself.
4*67ff2186SRichard Henderson  * If the syscall actually returns with MAP_FAILED, the test succeeded.
5*67ff2186SRichard Henderson  */
6*67ff2186SRichard Henderson #include <sys/mman.h>
7*67ff2186SRichard Henderson 
main()8*67ff2186SRichard Henderson int main()
9*67ff2186SRichard Henderson {
10*67ff2186SRichard Henderson     int n = sizeof(size_t) == 4 ? 32 : 45;
11*67ff2186SRichard Henderson 
12*67ff2186SRichard Henderson     for (int i = 28; i < n; i++) {
13*67ff2186SRichard Henderson         size_t l = (size_t)1 << i;
14*67ff2186SRichard Henderson         void *p = mmap(0, l, PROT_NONE,
15*67ff2186SRichard Henderson                        MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0);
16*67ff2186SRichard Henderson         if (p == MAP_FAILED) {
17*67ff2186SRichard Henderson             break;
18*67ff2186SRichard Henderson         }
19*67ff2186SRichard Henderson         munmap(p, l);
20*67ff2186SRichard Henderson     }
21*67ff2186SRichard Henderson     return 0;
22*67ff2186SRichard Henderson }
23