When I try cross-compiling using
./configure '--host=i586-mingw32msvc'
I get warnings on alloca usage, e.g.,
/home/nisse/hack/nettle/cbc.c: In function `nettle_cbc_decrypt': /home/nisse/hack/nettle/cbc.c:101: warning: implicit declaration of function `alloca' /home/nisse/hack/nettle/cbc.c:101: warning: incompatible implicit declaration of built-in function `alloca'
Which header should I include to get a proper declaration? In config.h, I have some boilerplate code which includes malloc.h, but only if *not* using gcc. Should I always include malloc.h if it exists, regardless of the compiler used?
Regards, /Niels
On Tue, 3 Jul 2012, Niels Möller wrote:
When I try cross-compiling using
./configure '--host=i586-mingw32msvc'
I get warnings on alloca usage, e.g.,
/home/nisse/hack/nettle/cbc.c: In function `nettle_cbc_decrypt': /home/nisse/hack/nettle/cbc.c:101: warning: implicit declaration of function `alloca' /home/nisse/hack/nettle/cbc.c:101: warning: incompatible implicit declaration of built-in function `alloca'
Which header should I include to get a proper declaration? In config.h, I have some boilerplate code which includes malloc.h, but only if *not* using gcc. Should I always include malloc.h if it exists, regardless of the compiler used?
That sounds like a sane solution to me - if it exists, including it shouldn't hurt I guess.
// Martin
Martin Storsjö martin@martin.st writes:
That sounds like a sane solution to me - if it exists, including it shouldn't hurt I guess.
Ok. Done and pushed now. Another windows problem: I get link warnings, e.g.,
i586-mingw32msvc-gcc -g -O2 -ggdb3 -Wno-pointer-sign -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Wnested-externs -L.. nettle-benchmark.o nettle-openssl.o ../getopt.o ../getopt1.o ../nettle-internal.o -lnettle -o nettle-benchmark.exe Info: resolving _nettle_aes128 by linking to __imp__nettle_aes128 (auto-import) Info: resolving _nettle_aes192 by linking to __imp__nettle_aes192 (auto-import) Info: resolving _nettle_aes256 by linking to __imp__nettle_aes256 (auto-import) Info: resolving _nettle_arcfour128 by linking to __imp__nettle_arcfour128 (auto-import) Info: resolving _nettle_camellia128 by linking to __imp__nettle_camellia128 (auto-import) Info: resolving _nettle_camellia192 by linking to __imp__nettle_camellia192 (auto-import) Info: resolving _nettle_camellia256 by linking to __imp__nettle_camellia256 (auto-import) Info: resolving _nettle_cast128 by linking to __imp__nettle_cast128 (auto-import) Info: resolving _nettle_serpent256 by linking to __imp__nettle_serpent256 (auto-import) Info: resolving _nettle_twofish128 by linking to __imp__nettle_twofish128 (auto-import) Info: resolving _nettle_twofish192 by linking to __imp__nettle_twofish192 (auto-import) Info: resolving _nettle_twofish256 by linking to __imp__nettle_twofish256 (auto-import) Info: resolving _nettle_md2 by linking to __imp__nettle_md2 (auto-import) Info: resolving _nettle_md4 by linking to __imp__nettle_md4 (auto-import) Info: resolving _nettle_md5 by linking to __imp__nettle_md5(auto-import) Info: resolving _nettle_sha1 by linking to __imp__nettle_sha1 (auto-import) Info: resolving _nettle_sha224 by linking to __imp__nettle_sha224 (auto-import) Info: resolving _nettle_sha256 by linking to __imp__nettle_sha256 (auto-import) Info: resolving _nettle_sha384 by linking to __imp__nettle_sha384 (auto-import) Info: resolving _nettle_sha512 by linking to __imp__nettle_sha512 (auto-import) Info: resolving _nettle_ripemd160 by linking to __imp__nettle_ripemd160 (auto-import) Info: resolving __nettle_sha1_compress by linking to __imp___nettle_sha1_compress (auto-import) /usr/lib/gcc/i586-mingw32msvc/4.4.4/../../../../i586-mingw32msvc/bin/ld: warning: auto-importing has been activated without --enable-auto-import specified on the command line. This should work unless it involves constant data structures referencingsymbols from auto-imported DLLs.
I get similar warnings for building most or all executables. Most seem harmless; make check succeeds (running all testprograms via wine). However
wine examples/nettle-benchmark.exe
crashes.
wine: Unhandled page fault on execute access to 0x66210226 at address 0x66210226 (thread 0009), starting debugger... Unhandled exception: page fault on execute access to 0x66210226 in 32-bit code (0x66210226). [...] Backtrace: =>1 0x66210226 (0x0062feb8) 2 0x004010a7 in nettle-benchmark (+0x10a7) (0x0062fee8) 3 0x00401143 in nettle-benchmark (+0x1143) (0x0062ff08) 4 0x7b8783a8 in kernel32 (+0x583a8) (0x0062ffe8)
And it links in nettle-internal.o, which indeed defines a couple of constant structures with pointers to functions in nettle.dll. Is there any easy way to improve the situation? At this time, I don't want to redo the dll rules and add dllimport and dllexport clutter to headers (if that would even help?).
Regards, /Niels
nettle-bugs@lists.lysator.liu.se