On Mon, Jul 27, 2015 at 2:38 PM, Илья Бизяев <[email protected]> wrote: > That commit does not fix the problem. What does the "alloca" function do? > Maybe it can be replaced with stuff from <cstdlib>, such as malloc? If I'm > not mistaken, it's portable.
OK, so... alloca is a function that sort of acts like a Variable Length Array or VLA (https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html). Effectively, you can get a block of memory on the stack without going through the memory manager. VLA is not a C++ feature: http://stackoverflow.com/q/31645309, so I resisted using it. On another list, we are discussing what to do about it. Basically, we want to avoid the memory manager. Based on the results below, it looks like Cygwin wants to provide it. I'm not sure what went wrong on x86_64, because it works for Crgwin i386. Maybe it has something to do with their _EXFUN(...). And Cygwin is *not* excluding it from C++: $ cat /usr/include/alloca.h | grep -B 1 -A 3 __cplusplus $ So I'm not sure why the symbol is not available: Jeff $ grep -IR alloca /usr/include | grep -v allocate /usr/include/alloca.h:/* libc/include/alloca.h - Allocate memory on stack */ /usr/include/alloca.h:#undef alloca /usr/include/alloca.h:#define alloca(size) __builtin_alloca(size) /usr/include/alloca.h:void * _EXFUN(alloca,(size_t)); /usr/include/bash/ansi_stdlib.h:/* Memory allocation functions. */ /usr/include/bash/config.h:/* Define if using alloca.c. */ /usr/include/bash/config.h: This function is required for alloca.c support on those systems. */ /usr/include/bash/config.h:/* Define if you have alloca, as a function or macro. */ /usr/include/bash/config.h:/* Define if you have <alloca.h> and it should be used (not on Ultrix). */ /usr/include/bash/config.h:/* If using the C implementation of alloca, define if you know the /usr/include/bash/memalloc.h:/* memalloc.h -- consolidate code for including alloca.h or malloc.h and /usr/include/bash/memalloc.h: defining alloca. */ /usr/include/bash/memalloc.h:# undef alloca /usr/include/bash/memalloc.h:# define alloca __builtin_alloca /usr/include/bash/memalloc.h:# include <alloca.h> /usr/include/bash/memalloc.h:# if defined (__hpux) && defined (__STDC__) && !defined (alloca) ... -- -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com. --- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
