diff options
Diffstat (limited to 'mdk-stage1/dietlibc/lib/assert_fail.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/assert_fail.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/assert_fail.c b/mdk-stage1/dietlibc/lib/assert_fail.c new file mode 100644 index 000000000..caa70ef5b --- /dev/null +++ b/mdk-stage1/dietlibc/lib/assert_fail.c @@ -0,0 +1,27 @@ +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +extern int __ltostr(char *s, int size, unsigned long i, int base, char UpCase); + +void __assert_fail (const char *assertion, const char *file, unsigned int line, const char *function) +{ + int alen=strlen(assertion); + int flen=strlen(file); + int fulen=strlen(function); + char *buf=(char*)alloca(alen+flen+fulen+50); + if (buf) { + char *tmp; + *buf=0; + if (file) strcat(strcat(buf,file),":"); + tmp=buf+strlen(buf); + __ltostr(tmp,10,line,10,0); + strcat(buf,": "); + if (function) strcat(strcat(buf,function),": "); + strcat(buf,"Assertion `"); + strcat(buf,assertion); + strcat(buf,"' failed.\n"); + write(2,buf,strlen(buf)); + } + abort(); +} |