|
From: <sv...@va...> - 2005-06-19 16:10:51
|
Author: njn
Date: 2005-06-19 17:10:47 +0100 (Sun, 19 Jun 2005)
New Revision: 3951
Log:
Removed dependency on <sys/mman.h> by using our own versions of
mmap/munmap. Required making VG_(munmap_native) public.
Modified:
trunk/coregrind/m_libcmman.c
trunk/coregrind/m_main.c
trunk/coregrind/pub_core_libcmman.h
Modified: trunk/coregrind/m_libcmman.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_libcmman.c 2005-06-19 16:07:49 UTC (rev 3950)
+++ trunk/coregrind/m_libcmman.c 2005-06-19 16:10:47 UTC (rev 3951)
@@ -103,7 +103,7 @@
return res.isError ? (void*)-1 : (void*)res.val;
}
=20
-static SysRes munmap_native(void *start, SizeT length)
+SysRes VG_(munmap_native)(void *start, SizeT length)
{
return VG_(do_syscall2)(__NR_munmap, (UWord)start, length );
}
@@ -111,7 +111,7 @@
/* Returns -1 on failure. */
Int VG_(munmap)( void* start, SizeT length )
{
- SysRes res =3D munmap_native(start, length);
+ SysRes res =3D VG_(munmap_native)(start, length);
if (!res.isError) {
VG_(unmap_range)((Addr)start, length);
return 0;
Modified: trunk/coregrind/m_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_main.c 2005-06-19 16:07:49 UTC (rev 3950)
+++ trunk/coregrind/m_main.c 2005-06-19 16:10:47 UTC (rev 3951)
@@ -63,7 +63,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/mman.h>
#include <sys/ptrace.h>
#include <sys/wait.h>
#include <unistd.h>
@@ -328,9 +327,8 @@
=20
static void layout_remaining_space(Addr argc_addr, float ratio)
{
- Int ires;
- void* vres;
- Addr client_size, shadow_size;
+ SysRes res;
+ Addr client_size, shadow_size;
=20
// VG_(valgrind_base) should have been set by scan_auxv, but if not,
// this is a workable approximation
@@ -377,20 +375,23 @@
#undef SEGSIZE
=20
// Ban redzone
- vres =3D mmap((void *)VG_(client_end), REDZONE_SIZE, PROT_NONE,
- MAP_FIXED|MAP_ANON|MAP_PRIVATE|MAP_NORESERVE, -1, 0);
- vg_assert((void*)-1 !=3D vres);
+ res =3D VG_(mmap_native)((void *)VG_(client_end), REDZONE_SIZE, VKI_P=
ROT_NONE,
+ VKI_MAP_FIXED|VKI_MAP_ANONYMOUS|VKI_MAP_PRIVATE|VKI_MAP_N=
ORESERVE,
+ -1, 0);
+ vg_assert(!res.isError);
=20
// Make client hole
- ires =3D munmap((void*)VG_(client_base), client_size);
- vg_assert(0 =3D=3D ires);
+ res =3D VG_(munmap_native)((void*)VG_(client_base), client_size);
+ vg_assert(!res.isError);
=20
// Map shadow memory.
// Initially all inaccessible, incrementally initialized as it is use=
d
if (shadow_size !=3D 0) {
- vres =3D mmap((char *)VG_(shadow_base), shadow_size, PROT_NONE,
- MAP_PRIVATE|MAP_ANON|MAP_FIXED|MAP_NORESERVE, -1, 0);
- if ((void*)-1 =3D=3D vres) {
+ res =3D VG_(mmap_native)((char *)VG_(shadow_base), shadow_size,
+ VKI_PROT_NONE,
+ VKI_MAP_PRIVATE|VKI_MAP_ANONYMOUS|VKI_MAP_FIXED|VKI_MA=
P_NORESERVE,
+ -1, 0);
+ if (res.isError) {
fprintf(stderr,=20
"valgrind: Could not allocate address space (%p bytes)\n"
"valgrind: for shadow memory\n"
@@ -818,7 +819,7 @@
const struct exeinfo *info,
UInt** client_auxv)
{
- void* res;
+ SysRes res;
char **cpp;
char *strtab; /* string table */
char *stringbase;
@@ -912,11 +913,11 @@
/* =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D alloc=
ate space =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D */
=20
/* allocate a stack - mmap enough space for the stack */
- res =3D mmap((void *)VG_PGROUNDDN(cl_esp),=20
+ res =3D VG_(mmap_native)((void *)VG_PGROUNDDN(cl_esp),=20
VG_(clstk_end) - VG_PGROUNDDN(cl_esp),
- PROT_READ | PROT_WRITE | PROT_EXEC,=20
- MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0);
- vg_assert((void*)-1 !=3D res);=20
+ VKI_PROT_READ|VKI_PROT_WRITE|VKI_PROT_EXEC,=20
+ VKI_MAP_PRIVATE|VKI_MAP_ANONYMOUS|VKI_MAP_FIXED, -1, 0);
+ vg_assert(!res.isError);=20
=20
/* =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D copy =
client stack =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
*/
=20
@@ -1302,7 +1303,7 @@
{
killpad_extra* extra =3D ex;
void *b, *e;
- int res;
+ SysRes res;
=20
vg_assert(NULL !=3D extra->killpad_padstat);
=20
@@ -1323,8 +1324,8 @@
else
e =3D segend;
=20
- res =3D munmap(b, (char *)e-(char *)b);
- vg_assert(0 =3D=3D res);
+ res =3D VG_(munmap_native)(b, (char *)e-(char *)b);
+ vg_assert(!res.isError);
=20
return 1;
}
Modified: trunk/coregrind/pub_core_libcmman.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/pub_core_libcmman.h 2005-06-19 16:07:49 UTC (rev 3950=
)
+++ trunk/coregrind/pub_core_libcmman.h 2005-06-19 16:10:47 UTC (rev 3951=
)
@@ -45,6 +45,7 @@
=20
extern SysRes VG_(mmap_native) ( void* start, SizeT length, UInt pro=
t,
UInt flags, UInt fd, OffT offset );
+extern SysRes VG_(munmap_native) ( void* start, SizeT length );
extern SysRes VG_(mprotect_native) ( void *start, SizeT length, UInt pro=
t );
=20
#endif // __PUB_CORE_LIBCMMAN_H
|