Winelib _alloca/alloca linking problem

Vincent Béron vberon at mecano.gme.usherb.ca
Tue Apr 15 18:47:25 CDT 2003


Ok, so this won't get into CVS (way too "hacked until it works for me 
and only me"), but I don't know where to look further.

Can somebody explain me where _alloca is supposed to be 
implemented/forwarded/ends up being called?

The provided small program should be able to compile with either _alloca 
or alloca being called. Under Winelib, with the current msvcrt headers, 
_alloca is not found at all and linking fails. With the included patch, 
the program runs.

Should I add a forward in msvcrt.spec from _alloca to MSVCRT_alloca, 
which itself calls (glibc's) alloca? Or is there something obvious I missed?

Vincent
-------------- next part --------------
Index: wine/include/msvcrt/malloc.h
===================================================================
RCS file: /home/wine/wine/include/msvcrt/malloc.h,v
retrieving revision 1.5
diff -u -r1.5 malloc.h
--- wine/include/msvcrt/malloc.h	22 Mar 2003 21:15:41 -0000	1.5
+++ wine/include/msvcrt/malloc.h	15 Apr 2003 23:34:34 -0000
@@ -79,9 +79,6 @@
 }
 #endif
 
-
-#ifndef USE_MSVCRT_PREFIX
-static inline void* alloca(MSVCRT(size_t) i) { return _alloca(i); }
-#endif /* USE_MSVCRT_PREFIX */
+static inline void* _alloca(MSVCRT(size_t) i) { return alloca(i); }
 
 #endif /* __WINE_MALLOC_H */
-------------- next part --------------
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>

char *mp() {
	char *p;
	p = _alloca(2);
	p[0] = 0x41; /* A */
	p[1] = 0;
	return p;
}

int main(void) {
	char *p;
	p = mp();
	printf("%02x %02x\n", p[0], p[1]);
	exit(0);
	return 0;
}


More information about the wine-devel mailing list