From: Nicholas Nethercote Date: Wed, 15 Jul 2009 03:08:35 +0000 (+0000) Subject: Handle fallocate() on 64-bit platforms. Fixes bug 185794. X-Git-Tag: svn/VALGRIND_3_5_0~391 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f00335141ba79a20e134d73630e79fbbfb9c3563;p=thirdparty%2Fvalgrind.git Handle fallocate() on 64-bit platforms. Fixes bug 185794. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10456 --- diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index 113ed88be7..fed3ba6e19 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -92,6 +92,8 @@ DECL_TEMPLATE(linux, sys_epoll_pwait); DECL_TEMPLATE(linux, sys_eventfd); DECL_TEMPLATE(linux, sys_eventfd2); +DECL_TEMPLATE(linux, sys_fallocate); + DECL_TEMPLATE(linux, sys_gettid); DECL_TEMPLATE(linux, sys_set_tid_address); DECL_TEMPLATE(linux, sys_tkill); diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c index a7f1359240..0f1a6ae3b4 100644 --- a/coregrind/m_syswrap/syswrap-amd64-linux.c +++ b/coregrind/m_syswrap/syswrap-amd64-linux.c @@ -1359,7 +1359,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { LINXY(__NR_timerfd_create, sys_timerfd_create), // 283 LINX_(__NR_eventfd, sys_eventfd), // 284 -// LINX_(__NR_fallocate, sys_ni_syscall), // 285 + LINX_(__NR_fallocate, sys_fallocate), // 285 LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 286 LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 287 // (__NR_paccept, sys_ni_syscall) // 288 diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 0cdce9a6ea..a02ad8d461 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -1146,6 +1146,16 @@ POST(sys_eventfd2) } } +// 64-bit version. +PRE(sys_fallocate) +{ + *flags |= SfMayBlock; + PRINT("sys_fallocate ( %ld, %ld, %lld, %lld )", + ARG1, ARG2, (Long)ARG3, (Long)ARG4); + PRE_REG_READ4(long, "fallocate", + int, fd, int, mode, vki_loff_t, offset, vki_loff_t, len); +} + /* --------------------------------------------------------------------- tid-related wrappers ------------------------------------------------------------------ */ diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c index f2498bc418..a9e709547a 100644 --- a/coregrind/m_syswrap/syswrap-ppc32-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c @@ -1857,7 +1857,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { LINXY(__NR_timerfd_create, sys_timerfd_create), // 306 LINX_(__NR_eventfd, sys_eventfd), // 307 // LINX_(__NR_sync_file_range2, sys_ni_syscall), // 308 -// LINX_(__NR_fallocate, sys_ni_syscall), // 309 +// LINX_(__NR_fallocate, sys_fallocate), // 309 // LINXY(__NR_subpage_prot, sys_ni_syscall), // 310 LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 311 LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 312 diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c index 257d1826a2..1ce4f64bbe 100644 --- a/coregrind/m_syswrap/syswrap-ppc64-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c @@ -1497,7 +1497,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { LINXY(__NR_timerfd_create, sys_timerfd_create), // 306 LINX_(__NR_eventfd, sys_eventfd), // 307 // LINX_(__NR_sync_file_range2, sys_ni_syscall), // 308 -// LINX_(__NR_fallocate, sys_ni_syscall), // 309 + LINX_(__NR_fallocate, sys_fallocate), // 309 // LINXY(__NR_subpage_prot, sys_ni_syscall), // 310 LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 311 LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 312 diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index 7d5d67443c..60a052cd92 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -2234,7 +2234,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { LINXY(__NR_signalfd, sys_signalfd), // 321 LINXY(__NR_timerfd_create, sys_timerfd_create), // 322 LINX_(__NR_eventfd, sys_eventfd), // 323 -// LINX_(__NR_fallocate, sys_ni_syscall), // 324 + //LINX_(__NR_fallocate, sys_fallocate), // 324 LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 325 LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 326