keith@csli.Stanford.EDU (Keith Nishihara) (12/15/89)
Has anyone made the stdargs stuff work in g++ 1.36.2, on a decstation 3100?
My attempts are simply not putting the arguments on the stack, so bad
data is being pulled off in the called function. I have tried using
g++-include/stdargs.h, and various hacks of other attempts at stdarg.h
(from cfront, the native compiler, etc.)
---------------------------------------------------------------------------
#include <stdio.h>
#include <stdarg.h>
void print(const char *fmt ...)
{
va_list ap;
va_start(ap, fmt);
fprintf(stderr, "print test: ");
vfprintf(stderr, fmt, ap);
va_end(ap);
}
main()
{
print("This is a test of three numbers %d 0x%x %f\n", 10, 0x123, 0.123);
}
---------------------------------------------------------------------------
I get:
print test: This is a test of three numbers 0 0x10001330 0.123000
I wanted:
print test: This is a test of three numbers 0 0x123 0.123000.
Neil/. Neil%teleos.com@ai.sri.com ...decwrl!argosy!teleos!neilgrunwald@foobar.colorado.edu (Dirk Grunwald) (12/16/89)
grab the file 'MIPS.FILES' via anonymous FTP from foobar.colorado.edu it contains a modified stdarg.h (that should be in libg++-1.36.X, X>0) and a modified gnulib2.c. i moved L_varargs from gnulib.c to gnulib2.c -- you'll need to twiddle your makefile a little to get it compiled (move 'varargs' from the gnulib to gnulib2 target) this implements 'builtin_saveregs' for the mips chip. the modified stdarg uses this to flush the $a0..$a3 registers to memory when using stdarg. there's also an md & tm- file that you might want to use - it corrects a couple of bugs in 1.36
rokicki@Neon.Stanford.EDU (Tomas G. Rokicki) (01/19/90)
Anybody know what might cause ld (through g++) to fail, error code 1, with no error messages, and not create an executable? I've got everything to compile (1.36.1; I switched back) but it won't link . . . If I take off the -lg++, it fails with `unresolved _xyzzy' or some such, which makes sense sort of . . . -tom