Fix of the vaarg fix
This commit is contained in:
@@ -53,10 +53,10 @@ static unsigned char mkhex (unsigned char ch);
|
|||||||
static int cvt (double number, int prec, int sharpflag, unsigned char *negp,
|
static int cvt (double number, int prec, int sharpflag, unsigned char *negp,
|
||||||
unsigned char fmtch, unsigned char *startp, unsigned char *endp);
|
unsigned char fmtch, unsigned char *startp, unsigned char *endp);
|
||||||
|
|
||||||
union {
|
// union {
|
||||||
unsigned long u32;
|
// unsigned long u32;
|
||||||
va_list ap32;
|
// va_list ap32;
|
||||||
} x;
|
// } x;
|
||||||
|
|
||||||
int
|
int
|
||||||
_doprnt (char const *fmt, va_list ap, FILE *stream)
|
_doprnt (char const *fmt, va_list ap, FILE *stream)
|
||||||
@@ -368,13 +368,18 @@ number: if (sign && ((long) ul != 0L)) {
|
|||||||
case 'F':
|
case 'F':
|
||||||
case 'g':
|
case 'g':
|
||||||
case 'G': {
|
case 'G': {
|
||||||
|
|
||||||
|
// --- IM - vaarg alignment issue fix:
|
||||||
|
|
||||||
double d;
|
double d;
|
||||||
|
|
||||||
|
unsigned long *da;
|
||||||
|
|
||||||
|
da = (unsigned long *) ≈
|
||||||
|
|
||||||
unsigned long *l = (unsigned long *) &d;
|
unsigned long *l = (unsigned long *) &d;
|
||||||
|
|
||||||
x.ap32 = ap;
|
if ( (*da) & 4) { // maj
|
||||||
|
|
||||||
if ( x.u32 & 4) {
|
|
||||||
l[0]= va_arg(ap, unsigned long);
|
l[0]= va_arg(ap, unsigned long);
|
||||||
l[1]= va_arg(ap, unsigned long);
|
l[1]= va_arg(ap, unsigned long);
|
||||||
}
|
}
|
||||||
@@ -384,6 +389,8 @@ number: if (sign && ((long) ul != 0L)) {
|
|||||||
l[1]= va_arg(ap, unsigned long);
|
l[1]= va_arg(ap, unsigned long);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* don't do unrealistic precision; just pad it with
|
* don't do unrealistic precision; just pad it with
|
||||||
* zeroes later, so buffer size stays rational.
|
* zeroes later, so buffer size stays rational.
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ TAGSFILE = tags
|
|||||||
MANROFF = nroff -man -h -Tascii
|
MANROFF = nroff -man -h -Tascii
|
||||||
ELF2AOUT = $(TOPSRC)/tools/elf2aout/elf2aout
|
ELF2AOUT = $(TOPSRC)/tools/elf2aout/elf2aout
|
||||||
|
|
||||||
CFLAGS = -O
|
CFLAGS = -O -fno-short-double
|
||||||
|
|
||||||
LDFLAGS += -N -nostartfiles -fno-dwarf2-cfi-asm -T$(TOPSRC)/src/elf32-mips.ld \
|
LDFLAGS += -N -nostartfiles -fno-dwarf2-cfi-asm -T$(TOPSRC)/src/elf32-mips.ld \
|
||||||
$(TOPSRC)/src/crt0.o -L$(TOPSRC)/src
|
$(TOPSRC)/src/crt0.o -L$(TOPSRC)/src
|
||||||
|
|||||||
Reference in New Issue
Block a user