Note that I have MinGW, not Cygwin. Cygwin aims at providing full Posix compatibility, while MinGW aims at optimization and uses some native Windows stuff.
пн, 27 июля 2015, 22:05, Jeffrey Walton <[email protected]>: > 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.
