blob: 476bc70dfa7954f6e561eeb26131c53a91a2979d [file] [log] [blame]
nethercote4388a402004-09-01 23:20:49 +00001include $(top_srcdir)/Makefile.tool.am
njn25e49d8e72002-09-23 09:36:25 +00002
njn7375de32009-08-05 08:08:18 +00003EXTRA_DIST = docs/mc-manual.xml docs/mc-tech-docs.xml
4
njn8b68b642009-06-24 00:37:09 +00005#----------------------------------------------------------------------------
6# Headers
7#----------------------------------------------------------------------------
8
9pkginclude_HEADERS = \
10 memcheck.h
11
12noinst_HEADERS = \
13 mc_include.h
14
15#----------------------------------------------------------------------------
16# memcheck-<platform>
17#----------------------------------------------------------------------------
18
19noinst_PROGRAMS = memcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@
20if VGCONF_HAVE_PLATFORM_SEC
21noinst_PROGRAMS += memcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@
tomfb7bcde2005-11-07 15:24:38 +000022endif
njnf76d27a2009-05-28 01:53:07 +000023
tomfb7bcde2005-11-07 15:24:38 +000024MEMCHECK_SOURCES_COMMON = \
njn1d0825f2006-03-27 11:37:07 +000025 mc_leakcheck.c \
26 mc_malloc_wrappers.c \
njn86f12dc2005-03-14 01:16:05 +000027 mc_main.c \
sewardj7cf4e6b2008-05-01 20:24:26 +000028 mc_translate.c \
sewardj7ce71662008-05-02 10:33:15 +000029 mc_machine.c \
30 mc_errors.c
tomfb7bcde2005-11-07 15:24:38 +000031
sewardj9e6428a2010-06-02 00:31:34 +000032memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
33 $(MEMCHECK_SOURCES_COMMON)
njn8b68b642009-06-24 00:37:09 +000034memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = \
35 $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
36memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = \
37 $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -O2
38memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES = \
39 $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@)
40memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = \
41 $(TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@)
42memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
43 $(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
sewardj9e6428a2010-06-02 00:31:34 +000044memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
sewardjd3645802010-06-13 22:13:58 +000045 $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
njnea2d6fd2010-07-01 00:20:20 +000046 @VALT_LOAD_ADDRESS_PRI@ \
sewardj9e6428a2010-06-02 00:31:34 +000047 $(LINK) \
48 $(memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
49 $(memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS)
50
njn8b68b642009-06-24 00:37:09 +000051if VGCONF_HAVE_PLATFORM_SEC
sewardj9e6428a2010-06-02 00:31:34 +000052memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES = \
53 $(MEMCHECK_SOURCES_COMMON)
njn8b68b642009-06-24 00:37:09 +000054memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS = \
55 $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
56memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS = \
57 $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -O2
58memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = \
59 $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@)
60memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD = \
61 $(TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@)
62memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
63 $(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
sewardj9e6428a2010-06-02 00:31:34 +000064memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
sewardjd3645802010-06-13 22:13:58 +000065 $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
njnea2d6fd2010-07-01 00:20:20 +000066 @VALT_LOAD_ADDRESS_SEC@ \
sewardj9e6428a2010-06-02 00:31:34 +000067 $(LINK) \
68 $(memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
69 $(memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS)
njn8b68b642009-06-24 00:37:09 +000070endif
tomfb7bcde2005-11-07 15:24:38 +000071
floriana705c282012-05-22 01:41:48 +000072# mc_main.c contains the helper function for memcheck that get called
73# all the time. To maximise performance compile with -fomit-frame-pointer
74# Primary beneficiary is x86.
njn8b68b642009-06-24 00:37:09 +000075mc_main.o: CFLAGS += -fomit-frame-pointer
tomfb7bcde2005-11-07 15:24:38 +000076
njn8b68b642009-06-24 00:37:09 +000077#----------------------------------------------------------------------------
78# vgpreload_memcheck-<platform>.so
79#----------------------------------------------------------------------------
njn25e49d8e72002-09-23 09:36:25 +000080
njn8b68b642009-06-24 00:37:09 +000081noinst_PROGRAMS += vgpreload_memcheck-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so
82if VGCONF_HAVE_PLATFORM_SEC
83noinst_PROGRAMS += vgpreload_memcheck-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so
84endif
sewardj2c48c7b2005-11-29 13:05:56 +000085
njn8b68b642009-06-24 00:37:09 +000086if VGCONF_OS_IS_DARWIN
87noinst_DSYMS = $(noinst_PROGRAMS)
88endif
sewardj1eff82b2006-10-17 00:56:43 +000089
njn8b68b642009-06-24 00:37:09 +000090VGPRELOAD_MEMCHECK_SOURCES_COMMON = mc_replace_strmem.c
sewardj1eff82b2006-10-17 00:56:43 +000091
njn8b68b642009-06-24 00:37:09 +000092vgpreload_memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = \
93 $(VGPRELOAD_MEMCHECK_SOURCES_COMMON)
94vgpreload_memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \
95 $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
96vgpreload_memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS = \
sewardj98977e02014-09-05 20:00:22 +000097 $(AM_CFLAGS_PSO_@VGCONF_PLATFORM_PRI_CAPS@) -O2
njn8b68b642009-06-24 00:37:09 +000098vgpreload_memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES = \
99 $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_PRI_CAPS@)
100vgpreload_memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \
101 $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
102 $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
sewardj9e6428a2010-06-02 00:31:34 +0000103
njn8b68b642009-06-24 00:37:09 +0000104if VGCONF_HAVE_PLATFORM_SEC
105vgpreload_memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES = \
106 $(VGPRELOAD_MEMCHECK_SOURCES_COMMON)
107vgpreload_memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS = \
108 $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
109vgpreload_memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS = \
sewardj98977e02014-09-05 20:00:22 +0000110 $(AM_CFLAGS_PSO_@VGCONF_PLATFORM_SEC_CAPS@) -O2
njn8b68b642009-06-24 00:37:09 +0000111vgpreload_memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES = \
112 $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_SEC_CAPS@)
113vgpreload_memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \
114 $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) \
115 $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
116endif
njn683c6ee2002-11-12 10:53:31 +0000117
floriana705c282012-05-22 01:41:48 +0000118# mc_replace_strmem.c runs on the simulated CPU, and it often appears
119# in stack traces shown to the user. It is built with
120# -fno-omit-frame-pointer so as to guarantee robust backtraces on x86,
121# on which CFI based unwinding is not the "normal" case and so is
122# sometimes fragile.
njn1d0825f2006-03-27 11:37:07 +0000123mc_replace_strmem.o: CFLAGS += -fno-omit-frame-pointer
njn3e884182003-04-15 13:03:23 +0000124