Skip to content

Commit facb34d

Browse files
authored
Merge pull request #8269 from tautschnig/features/mmap64
C library: add mmap64
2 parents 04a4a51 + 4725692 commit facb34d

File tree

2 files changed

+40
-18
lines changed

2 files changed

+40
-18
lines changed

src/ansi-c/library/mman.c

+39-18
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
# endif
2121

2222
__CPROVER_bool __VERIFIER_nondet___CPROVER_bool(void);
23+
void *mmap64(void *, __CPROVER_size_t, int, int, int, off_t);
2324

2425
void *mmap(
2526
void *addr,
@@ -29,24 +30,7 @@ void *mmap(
2930
int fd,
3031
off_t offset)
3132
{
32-
(void)prot;
33-
(void)fd;
34-
(void)offset;
35-
36-
if(
37-
addr == 0 ||
38-
(__VERIFIER_nondet___CPROVER_bool() && (flags & MAP_FIXED) == 0))
39-
{
40-
if(flags & MAP_ANONYMOUS && (flags & MAP_UNINITIALIZED) == 0)
41-
return __CPROVER_allocate(length, 1);
42-
else
43-
return __CPROVER_allocate(length, 0);
44-
}
45-
else
46-
{
47-
__CPROVER_allocated_memory((__CPROVER_size_t)addr, length);
48-
return addr;
49-
}
33+
return mmap64(addr, length, prot, flags, fd, offset);
5034
}
5135

5236
#endif
@@ -73,6 +57,7 @@ void *mmap(
7357
# endif
7458

7559
__CPROVER_bool __VERIFIER_nondet___CPROVER_bool(void);
60+
void *mmap64(void *, __CPROVER_size_t, int, int, int, off_t);
7661

7762
void *_mmap(
7863
void *addr,
@@ -81,6 +66,42 @@ void *_mmap(
8166
int flags,
8267
int fd,
8368
off_t offset)
69+
{
70+
return mmap64(addr, length, prot, flags, fd, offset);
71+
}
72+
73+
#endif
74+
75+
/* FUNCTION: mmap64 */
76+
77+
#ifndef _WIN32
78+
79+
# ifndef __CPROVER_SYS_MMAN_H_INCLUDED
80+
# include <sys/mman.h>
81+
# define __CPROVER_SYS_MMAN_H_INCLUDED
82+
# endif
83+
84+
# ifndef MAP_FIXED
85+
# define MAP_FIXED 0
86+
# endif
87+
88+
# ifndef MAP_ANONYMOUS
89+
# define MAP_ANONYMOUS 0
90+
# endif
91+
92+
# ifndef MAP_UNINITIALIZED
93+
# define MAP_UNINITIALIZED 0
94+
# endif
95+
96+
__CPROVER_bool __VERIFIER_nondet___CPROVER_bool(void);
97+
98+
void *mmap64(
99+
void *addr,
100+
__CPROVER_size_t length,
101+
int prot,
102+
int flags,
103+
int fd,
104+
off_t offset)
84105
{
85106
(void)prot;
86107
(void)fd;

src/ansi-c/library_check.sh

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ perl -p -i -e 's/^__builtin_alloca\n//' __functions # alloca-01
5757
perl -p -i -e 's/^fclose_cleanup\n//' __functions # fopen
5858
perl -p -i -e 's/^fopen64\n//' __functions # fopen
5959
perl -p -i -e 's/^freopen64\n//' __functions # freopen
60+
perl -p -i -e 's/^mmap64\n//' __functions # mmap
6061
perl -p -i -e 's/^munmap\n//' __functions # mmap-01
6162
perl -p -i -e 's/^__fgets_chk\n//' __functions # fgets-01/__fgets_chk.desc
6263
perl -p -i -e 's/^__fprintf_chk\n//' __functions # fprintf-01/__fprintf_chk.desc

0 commit comments

Comments
 (0)