[Mono-dev] [PATCH] Android Support [3/4]
Jonathan Pryor
jonpryor at vt.edu
Mon Apr 19 15:31:40 EDT 2010
On Mon, 2010-04-19 at 15:22 -0300, Rodrigo Kumpera wrote:
> On Mon, Apr 19, 2010 at 2:44 PM, Jonathan Pryor <jonpryor at vt.edu>
> wrote:
> +AC_CHECK_HEADER([malloc.h],
> + [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1],
> + [Define to 1 if you have /usr/include/malloc.h.])],,)
> +
> What's the use for this? We check the header but then we don't use the
> new define.
That's because it's an old define, used in mono/utils/dlmalloc.c and
mono/utils/dlmalloc.h. I don't know why our configure doesn't set it,
but without this check compiling under the Android NDK results in a
build failure [0].
The primary issue appears to be system header files. mono-codeman.c
#includes <string.h>. Under glibc, <string.h> only #includes
<features.h> and <stddef.h>.
Under Android, however, <string.h> #includes <malloc.h> as well, and
<malloc.h> includes a definition for `struct mallinfo`, and since
mono-codeman.c also #includes "dlmalloc.h" this results in a duplicate
definition for `struct mallinfo`.
Different system headers, different results.
This also implies that my patch, as is, won't work under desktop Linux
(oops). Specifically, mono-codeman.c needs to #include <malloc.h>
before #including "dlmalloc.h".
Advice?
- Jon
[0] In file included from mono-codeman.c:16:dlmalloc.h: At top level:
dlmalloc.h:195: error: redefinition of 'struct mallinfo'
More information about the Mono-devel-list
mailing list