Date: Fri, 01 Oct 1999 17:13:06 -0400 (EDT) From: Mike Heffner <spock@techfour.net> To: freebsd-questions@freebsd.org Subject: program breaks with stable->current upgrade Message-ID: <XFMail.991001171306.spock@techfour.net>
next in thread | raw e-mail | index | archive | help
hi, i have just recently upgraded to current from stable, and a program which i
use doesn't work anymore. the program dies with a signal 8, floating point
exception during runtime. after investigating, i found that the problem is that
it uses nested calls to __builtin_apply(). (a builtin function in gcc, allows
the calling of other functions with a variable number of args). the program
worked fine under -stable, but no longer works under -current. i don't think
this is a result of not being compatible with current, but rather something
that just got accidently broken between the two distributions.
is there any way to fix this problem?
Thanks,
---------------------------------
Mike Heffner <spock@techfour.net>
Fredericksburg, VA
ICQ# 882073
Date: 01-Oct-99 Time: 16:59:22
---------------------------------
this is a short program which demonstrates the problem. when a function returns
that has been called with __builtin_apply() from within another function called
with __builtin_apply(), it will die/core dump with a SIGFPE.
/* example.c - spock@techfour.net */
#include <stdio.h>
int fb(int);
int fc(int);
int fa (int a){
printf("(fa) blah = %d\n", a);
a++;
__builtin_apply((void *)fb, __builtin_apply_args(), 32);
return 1;
}
int fb (int b){
printf("(fb) blah = %d\n", b);
b++;
__builtin_apply((void *)fc, __builtin_apply_args(), 32);
return 1;
}
int fc(int c){
printf("(fc) blah = %d\n", c);
return 1;
/* program will crash immediately after returning from this
* function */
}
main(){
int blah=1;
fa(blah);
}
/* end example.c */
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.991001171306.spock>
