|
From: <sv...@va...> - 2009-12-29 14:11:50
|
Author: bart
Date: 2009-12-29 14:11:38 +0000 (Tue, 29 Dec 2009)
New Revision: 10970
Log:
Changes:
- Made sure that C++ compilers do not complain about the header files
include/pub_tool_libcassert.h and include/pub_tool_basics.h.
- Added the source file none/tests/valgrind_cpp_test.cpp. This source file
is compiled together with the regression tests in order to verify that
Valgrind's public header files compile cleanly with a C++ compiler.
These modifications are based on a patch provided by Konstantin Serebryany.
Added:
trunk/none/tests/valgrind_cpp_test.cpp
Modified:
trunk/include/pub_tool_basics.h
trunk/include/pub_tool_libcassert.h
trunk/none/tests/
trunk/none/tests/Makefile.am
Modified: trunk/include/pub_tool_basics.h
===================================================================
--- trunk/include/pub_tool_basics.h 2009-12-21 11:29:54 UTC (rev 10969)
+++ trunk/include/pub_tool_basics.h 2009-12-29 14:11:38 UTC (rev 10970)
@@ -193,15 +193,18 @@
SysRes;
#elif defined(VGO_darwin)
typedef
+ enum {
+ SysRes_MACH=40, // MACH, result is _wLO
+ SysRes_MDEP, // MDEP, result is _wLO
+ SysRes_UNIX_OK, // UNIX, success, result is _wHI:_wLO
+ SysRes_UNIX_ERR // UNIX, error, error is _wHI:_wLO
+ }
+ SysResMode;
+typedef
struct {
UWord _wLO;
UWord _wHI;
- enum {
- SysRes_MACH=40, // MACH, result is _wLO
- SysRes_MDEP, // MDEP, result is _wLO
- SysRes_UNIX_OK, // UNIX, success, result is _wHI:_wLO
- SysRes_UNIX_ERR // UNIX, error, error is _wHI:_wLO
- } _mode;
+ SysResMode _mode;
}
SysRes;
#else
Modified: trunk/include/pub_tool_libcassert.h
===================================================================
--- trunk/include/pub_tool_libcassert.h 2009-12-21 11:29:54 UTC (rev 10969)
+++ trunk/include/pub_tool_libcassert.h 2009-12-29 14:11:38 UTC (rev 10970)
@@ -33,15 +33,17 @@
#define tl_assert(expr) \
((void) ((expr) ? 0 : \
- (VG_(assert_fail) (/*isCore?*/False, #expr, \
- __FILE__, __LINE__, __PRETTY_FUNCTION__, \
- ""), \
+ (VG_(assert_fail) (/*isCore?*/False, (const Char*)#expr, \
+ (const Char*)__FILE__, __LINE__, \
+ (const Char*)__PRETTY_FUNCTION__, \
+ (const HChar*)""), \
0)))
#define tl_assert2(expr, format, args...) \
((void) ((expr) ? 0 : \
- (VG_(assert_fail) (/*isCore?*/False, #expr, \
- __FILE__, __LINE__, __PRETTY_FUNCTION__, \
+ (VG_(assert_fail) (/*isCore?*/False, (const Char*)#expr, \
+ (const Char*)__FILE__, __LINE__, \
+ (const Char*)__PRETTY_FUNCTION__, \
format, ##args), \
0)))
Property changes on: trunk/none/tests
___________________________________________________________________
Name: svn:ignore
- *.dSYM
*.so
*.stderr.diff*
*.stderr.out
*.stdout.diff*
*.stdout.out
.deps
ansi
args
async-sigs
as_mmap
as_shm
bitfield1
blockfault
bug129866
closeall
coolo_sigaction
coolo_strlen
discard
exec-sigmask
execve
faultstatus
fcntl_setown
fdleak_cmsg
fdleak_creat
fdleak_dup
fdleak_dup2
fdleak_fcntl
fdleak_ipv4
fdleak_open
fdleak_pipe
fdleak_socketpair
floored
fork
fucomip
gxx304
insn_basic
insn_basic.c
insn_cmov
insn_cmov.c
insn_fpu
insn_fpu.c
insn_mmx
insn_mmx.c
insn_mmxext
insn_mmxext.c
insn_sse
insn_sse.c
insn_sse2
insn_sse2.c
Makefile
Makefile.in
manythreads
map_unaligned
map_unmap
mq
mremap
mremap2
munmap_exe
nestedfns
pending
pluto
procfs-cmdline-exe
pth_atfork1
pth_blockedsig
pth_cancel1
pth_cancel2
pth_cvsimple
pth_detached
pth_empty
pth_exit
pth_exit2
pth_mutexspeed
pth_once
pth_rwlock
pth_semaphore1
pth_simple_mutex
pth_simple_threads
pth_specific
pth_stackalign
pth_yield
rcrl
readline1
resolv
res_search
rlimit_nofile
selfrun
sem
semlimit
sha1_test
shortpush
shorts
sigstackgrowth
smc1
stackgrowth
susphello
syscall-restart1
syscall-restart2
syslog
system
thread-exits
threaded-fork
threadederrno
timestamp
tls
vgcore.*
vgprintf
yield
+ *.dSYM
*.so
*.stderr.diff*
*.stderr.out
*.stdout.diff*
*.stdout.out
.deps
ansi
args
async-sigs
as_mmap
as_shm
bitfield1
blockfault
bug129866
closeall
coolo_sigaction
coolo_strlen
discard
exec-sigmask
execve
faultstatus
fcntl_setown
fdleak_cmsg
fdleak_creat
fdleak_dup
fdleak_dup2
fdleak_fcntl
fdleak_ipv4
fdleak_open
fdleak_pipe
fdleak_socketpair
floored
fork
fucomip
gxx304
insn_basic
insn_basic.c
insn_cmov
insn_cmov.c
insn_fpu
insn_fpu.c
insn_mmx
insn_mmx.c
insn_mmxext
insn_mmxext.c
insn_sse
insn_sse.c
insn_sse2
insn_sse2.c
Makefile
Makefile.in
manythreads
map_unaligned
map_unmap
mq
mremap
mremap2
munmap_exe
nestedfns
pending
pluto
procfs-cmdline-exe
pth_atfork1
pth_blockedsig
pth_cancel1
pth_cancel2
pth_cvsimple
pth_detached
pth_empty
pth_exit
pth_exit2
pth_mutexspeed
pth_once
pth_rwlock
pth_semaphore1
pth_simple_mutex
pth_simple_threads
pth_specific
pth_stackalign
pth_yield
rcrl
readline1
resolv
res_search
rlimit_nofile
selfrun
sem
semlimit
sha1_test
shortpush
shorts
sigstackgrowth
smc1
stackgrowth
susphello
syscall-restart1
syscall-restart2
syslog
system
thread-exits
threaded-fork
threadederrno
timestamp
tls
valgrind_cpp_test
vgcore.*
vgprintf
yield
Modified: trunk/none/tests/Makefile.am
===================================================================
--- trunk/none/tests/Makefile.am 2009-12-21 11:29:54 UTC (rev 10969)
+++ trunk/none/tests/Makefile.am 2009-12-29 14:11:38 UTC (rev 10970)
@@ -175,6 +175,7 @@
tls \
tls.so \
tls2.so \
+ valgrind_cpp_test \
vgprintf \
coolo_sigaction \
gxx304
@@ -262,6 +263,9 @@
tls2_so_LDFLAGS = -shared
endif
+valgrind_cpp_test_SOURCES = valgrind_cpp_test.cpp
+valgrind_cpp_test_LDADD = -lstdc++
+
# C++ tests
coolo_sigaction_SOURCES = coolo_sigaction.cpp
gxx304_SOURCES = gxx304.cpp
Added: trunk/none/tests/valgrind_cpp_test.cpp
===================================================================
--- trunk/none/tests/valgrind_cpp_test.cpp (rev 0)
+++ trunk/none/tests/valgrind_cpp_test.cpp 2009-12-29 14:11:38 UTC (rev 10970)
@@ -0,0 +1,47 @@
+// Test program to verify whether the Valgrind header files compile fine
+// with a C++ compiler.
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "pub_tool_basics.h"
+#include "pub_tool_libcassert.h"
+#include "pub_tool_libcbase.h"
+#include "pub_tool_mallocfree.h"
+#include "pub_tool_libcprint.h"
+#include "pub_tool_libcfile.h"
+#include "pub_tool_libcproc.h"
+#include "pub_tool_vki.h"
+#include "pub_tool_threadstate.h"
+#include "pub_tool_errormgr.h"
+#include "pub_tool_options.h"
+#include "pub_tool_machine.h"
+#include "pub_tool_debuginfo.h"
+#include "pub_tool_seqmatch.h"
+#include "pub_tool_tooliface.h"
+#include "pub_tool_options.h"
+
+#if defined(VGO_darwin)
+int CheckSys()
+{
+ return SysRes_MACH;
+}
+#endif
+
+void CheckAssert(int x)
+{
+ tl_assert(x);
+ tl_assert2(x, "fail");
+}
+
+int main(int argc, char** argv)
+{
+ fprintf(stderr, "Compilation succeeded.\n");
+ return 0;
+}
+
+void VG_(assert_fail)(Bool isCore, const Char* expr, const Char* file,
+ Int line, const Char* fn, const HChar* format, ... )
+{
+ abort();
+}
|
|
From: Konstantin S. <kon...@gm...> - 2009-12-29 14:44:55
|
Thank you, Bart!
Two things are still wrong:
1.pub_tool_basics.h still includes config.h, but config.h is not a part of
valgrind installation
2. When I compile none/tests/valgrind_cpp_test.cpp with gcc4.4 on linux with
-m32 I get this:
g++ -Iinst/include/valgrind -I. -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1
-m32 none/tests/valgrind_cpp_test.cpp
In file included from inst/include/valgrind/pub_tool_vki.h:49,
from none/tests/valgrind_cpp_test.cpp:14:
inst/include/valgrind/vki/vki-linux.h:2154: error:
'__vki_invalid_size_argument_for_IOC' cannot appear in a constant-expression
inst/include/valgrind/vki/vki-linux.h:2157: error:
'__vki_invalid_size_argument_for_IOC' cannot appear in a constant-expression
You need this (or similar) patch to resolve this:
Index: include/vki/vki-x86-linux.h
===================================================================
--- include/vki/vki-x86-linux.h (revision 10969)
+++ include/vki/vki-x86-linux.h (working copy)
@@ -479,12 +479,11 @@
((nr) << _VKI_IOC_NRSHIFT) | \
((size) << _VKI_IOC_SIZESHIFT))
-/* provoke compile error for invalid uses of size argument */
-extern unsigned int __vki_invalid_size_argument_for_IOC;
+/* provoke compile error (div by zero) for invalid uses of size argument */
#define _VKI_IOC_TYPECHECK(t) \
- ((sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) ? \
- sizeof(t) : __vki_invalid_size_argument_for_IOC)
+ (sizeof(t) / \
+ (sizeof(t) == sizeof(t[1]) && \
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
--kcc
On Tue, Dec 29, 2009 at 5:11 PM, <sv...@va...> wrote:
> Author: bart
> Date: 2009-12-29 14:11:38 +0000 (Tue, 29 Dec 2009)
> New Revision: 10970
>
> Log:
> Changes:
> - Made sure that C++ compilers do not complain about the header files
> include/pub_tool_libcassert.h and include/pub_tool_basics.h.
> - Added the source file none/tests/valgrind_cpp_test.cpp. This source file
> is compiled together with the regression tests in order to verify that
> Valgrind's public header files compile cleanly with a C++ compiler.
> These modifications are based on a patch provided by Konstantin Serebryany.
>
>
> Added:
> trunk/none/tests/valgrind_cpp_test.cpp
> Modified:
> trunk/include/pub_tool_basics.h
> trunk/include/pub_tool_libcassert.h
> trunk/none/tests/
> trunk/none/tests/Makefile.am
>
>
> Modified: trunk/include/pub_tool_basics.h
> ===================================================================
> --- trunk/include/pub_tool_basics.h 2009-12-21 11:29:54 UTC (rev 10969)
> +++ trunk/include/pub_tool_basics.h 2009-12-29 14:11:38 UTC (rev 10970)
> @@ -193,15 +193,18 @@
> SysRes;
> #elif defined(VGO_darwin)
> typedef
> + enum {
> + SysRes_MACH=40, // MACH, result is _wLO
> + SysRes_MDEP, // MDEP, result is _wLO
> + SysRes_UNIX_OK, // UNIX, success, result is _wHI:_wLO
> + SysRes_UNIX_ERR // UNIX, error, error is _wHI:_wLO
> + }
> + SysResMode;
> +typedef
> struct {
> UWord _wLO;
> UWord _wHI;
> - enum {
> - SysRes_MACH=40, // MACH, result is _wLO
> - SysRes_MDEP, // MDEP, result is _wLO
> - SysRes_UNIX_OK, // UNIX, success, result is _wHI:_wLO
> - SysRes_UNIX_ERR // UNIX, error, error is _wHI:_wLO
> - } _mode;
> + SysResMode _mode;
> }
> SysRes;
> #else
>
> Modified: trunk/include/pub_tool_libcassert.h
> ===================================================================
> --- trunk/include/pub_tool_libcassert.h 2009-12-21 11:29:54 UTC (rev 10969)
> +++ trunk/include/pub_tool_libcassert.h 2009-12-29 14:11:38 UTC (rev 10970)
> @@ -33,15 +33,17 @@
>
> #define tl_assert(expr) \
> ((void) ((expr) ? 0 : \
> - (VG_(assert_fail) (/*isCore?*/False, #expr, \
> - __FILE__, __LINE__, __PRETTY_FUNCTION__, \
> - ""), \
> + (VG_(assert_fail) (/*isCore?*/False, (const Char*)#expr, \
> + (const Char*)__FILE__, __LINE__, \
> + (const Char*)__PRETTY_FUNCTION__, \
> + (const HChar*)""), \
> 0)))
>
> #define tl_assert2(expr, format, args...) \
> ((void) ((expr) ? 0 : \
> - (VG_(assert_fail) (/*isCore?*/False, #expr, \
> - __FILE__, __LINE__, __PRETTY_FUNCTION__, \
> + (VG_(assert_fail) (/*isCore?*/False, (const Char*)#expr, \
> + (const Char*)__FILE__, __LINE__, \
> + (const Char*)__PRETTY_FUNCTION__, \
> format, ##args), \
> 0)))
>
>
>
> Property changes on: trunk/none/tests
> ___________________________________________________________________
> Name: svn:ignore
> - *.dSYM
> *.so
> *.stderr.diff*
> *.stderr.out
> *.stdout.diff*
> *.stdout.out
> .deps
> ansi
> args
> async-sigs
> as_mmap
> as_shm
> bitfield1
> blockfault
> bug129866
> closeall
> coolo_sigaction
> coolo_strlen
> discard
> exec-sigmask
> execve
> faultstatus
> fcntl_setown
> fdleak_cmsg
> fdleak_creat
> fdleak_dup
> fdleak_dup2
> fdleak_fcntl
> fdleak_ipv4
> fdleak_open
> fdleak_pipe
> fdleak_socketpair
> floored
> fork
> fucomip
> gxx304
> insn_basic
> insn_basic.c
> insn_cmov
> insn_cmov.c
> insn_fpu
> insn_fpu.c
> insn_mmx
> insn_mmx.c
> insn_mmxext
> insn_mmxext.c
> insn_sse
> insn_sse.c
> insn_sse2
> insn_sse2.c
> Makefile
> Makefile.in
> manythreads
> map_unaligned
> map_unmap
> mq
> mremap
> mremap2
> munmap_exe
> nestedfns
> pending
> pluto
> procfs-cmdline-exe
> pth_atfork1
> pth_blockedsig
> pth_cancel1
> pth_cancel2
> pth_cvsimple
> pth_detached
> pth_empty
> pth_exit
> pth_exit2
> pth_mutexspeed
> pth_once
> pth_rwlock
> pth_semaphore1
> pth_simple_mutex
> pth_simple_threads
> pth_specific
> pth_stackalign
> pth_yield
> rcrl
> readline1
> resolv
> res_search
> rlimit_nofile
> selfrun
> sem
> semlimit
> sha1_test
> shortpush
> shorts
> sigstackgrowth
> smc1
> stackgrowth
> susphello
> syscall-restart1
> syscall-restart2
> syslog
> system
> thread-exits
> threaded-fork
> threadederrno
> timestamp
> tls
> vgcore.*
> vgprintf
> yield
>
> + *.dSYM
> *.so
> *.stderr.diff*
> *.stderr.out
> *.stdout.diff*
> *.stdout.out
> .deps
> ansi
> args
> async-sigs
> as_mmap
> as_shm
> bitfield1
> blockfault
> bug129866
> closeall
> coolo_sigaction
> coolo_strlen
> discard
> exec-sigmask
> execve
> faultstatus
> fcntl_setown
> fdleak_cmsg
> fdleak_creat
> fdleak_dup
> fdleak_dup2
> fdleak_fcntl
> fdleak_ipv4
> fdleak_open
> fdleak_pipe
> fdleak_socketpair
> floored
> fork
> fucomip
> gxx304
> insn_basic
> insn_basic.c
> insn_cmov
> insn_cmov.c
> insn_fpu
> insn_fpu.c
> insn_mmx
> insn_mmx.c
> insn_mmxext
> insn_mmxext.c
> insn_sse
> insn_sse.c
> insn_sse2
> insn_sse2.c
> Makefile
> Makefile.in
> manythreads
> map_unaligned
> map_unmap
> mq
> mremap
> mremap2
> munmap_exe
> nestedfns
> pending
> pluto
> procfs-cmdline-exe
> pth_atfork1
> pth_blockedsig
> pth_cancel1
> pth_cancel2
> pth_cvsimple
> pth_detached
> pth_empty
> pth_exit
> pth_exit2
> pth_mutexspeed
> pth_once
> pth_rwlock
> pth_semaphore1
> pth_simple_mutex
> pth_simple_threads
> pth_specific
> pth_stackalign
> pth_yield
> rcrl
> readline1
> resolv
> res_search
> rlimit_nofile
> selfrun
> sem
> semlimit
> sha1_test
> shortpush
> shorts
> sigstackgrowth
> smc1
> stackgrowth
> susphello
> syscall-restart1
> syscall-restart2
> syslog
> system
> thread-exits
> threaded-fork
> threadederrno
> timestamp
> tls
> valgrind_cpp_test
> vgcore.*
> vgprintf
> yield
>
>
> Modified: trunk/none/tests/Makefile.am
> ===================================================================
> --- trunk/none/tests/Makefile.am 2009-12-21 11:29:54 UTC (rev 10969)
> +++ trunk/none/tests/Makefile.am 2009-12-29 14:11:38 UTC (rev 10970)
> @@ -175,6 +175,7 @@
> tls \
> tls.so \
> tls2.so \
> + valgrind_cpp_test \
> vgprintf \
> coolo_sigaction \
> gxx304
> @@ -262,6 +263,9 @@
> tls2_so_LDFLAGS = -shared
> endif
>
> +valgrind_cpp_test_SOURCES = valgrind_cpp_test.cpp
> +valgrind_cpp_test_LDADD = -lstdc++
> +
> # C++ tests
> coolo_sigaction_SOURCES = coolo_sigaction.cpp
> gxx304_SOURCES = gxx304.cpp
>
> Added: trunk/none/tests/valgrind_cpp_test.cpp
> ===================================================================
> --- trunk/none/tests/valgrind_cpp_test.cpp
> (rev 0)
> +++ trunk/none/tests/valgrind_cpp_test.cpp 2009-12-29 14:11:38 UTC
> (rev 10970)
> @@ -0,0 +1,47 @@
> +// Test program to verify whether the Valgrind header files compile fine
> +// with a C++ compiler.
> +
> +
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include "pub_tool_basics.h"
> +#include "pub_tool_libcassert.h"
> +#include "pub_tool_libcbase.h"
> +#include "pub_tool_mallocfree.h"
> +#include "pub_tool_libcprint.h"
> +#include "pub_tool_libcfile.h"
> +#include "pub_tool_libcproc.h"
> +#include "pub_tool_vki.h"
> +#include "pub_tool_threadstate.h"
> +#include "pub_tool_errormgr.h"
> +#include "pub_tool_options.h"
> +#include "pub_tool_machine.h"
> +#include "pub_tool_debuginfo.h"
> +#include "pub_tool_seqmatch.h"
> +#include "pub_tool_tooliface.h"
> +#include "pub_tool_options.h"
> +
> +#if defined(VGO_darwin)
> +int CheckSys()
> +{
> + return SysRes_MACH;
> +}
> +#endif
> +
> +void CheckAssert(int x)
> +{
> + tl_assert(x);
> + tl_assert2(x, "fail");
> +}
> +
> +int main(int argc, char** argv)
> +{
> + fprintf(stderr, "Compilation succeeded.\n");
> + return 0;
> +}
> +
> +void VG_(assert_fail)(Bool isCore, const Char* expr, const Char* file,
> + Int line, const Char* fn, const HChar* format, ... )
> +{
> + abort();
> +}
>
>
>
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and
> easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev
> _______________________________________________
> Valgrind-developers mailing list
> Val...@li...
> https://lists.sourceforge.net/lists/listinfo/valgrind-developers
>
|
|
From: Julian S. <js...@ac...> - 2009-12-31 13:06:50
|
On Tuesday 29 December 2009, sv...@va... wrote: > Author: bart > Date: 2009-12-29 14:11:38 +0000 (Tue, 29 Dec 2009) > New Revision: 10970 > > Log: > Changes: > - Made sure that C++ compilers do not complain about the header files > include/pub_tool_libcassert.h and include/pub_tool_basics.h. > - Added the source file none/tests/valgrind_cpp_test.cpp. This source file > is compiled together with the regression tests in order to verify that > Valgrind's public header files compile cleanly with a C++ compiler. > These modifications are based on a patch provided by Konstantin Serebryany. > [...] > Property changes on: trunk/none/tests > ___________________________________________________________________ > Name: svn:ignore > - *.dSYM > *.so > [... lots more files ...] Please could you do such commits separately in future? Updating the ignore list is fine, but it's not logically part of this commit. J |