mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-02-23 10:00:21 +00:00
- GLIBC requires a fix to work with binutils 2.30 on aarch64. This fix relies on binutils 2.24 or newer, which is okay for glibc 2.26 since it needs 2.25 or newer anyway. But older glibc versions are now pinned to binutils 2.29 or older on aarch64. - xtensa needs patches in libgcc with gcc 7.3. - comment in newlib's patch to indicate it is a reversal of a commit. Signed-off-by: Alexey Neyman <stilor@att.net>
81 lines
2.9 KiB
Diff
81 lines
2.9 KiB
Diff
Revert the commit below. A better solution is being discussed on newlib's mailing list.
|
|
|
|
commit fcd33916ac03086b9090c68e88036afa4b25d913
|
|
Author: Alexander Fedotov <alfedotov@gmail.com>
|
|
Date: Mon Dec 25 16:28:22 2017 +0300
|
|
|
|
fix incompatible pointer type for va_list in nano versions of printf and scanf for target like PowerPC
|
|
|
|
diff --git b/newlib/libc/stdio/nano-vfprintf.c a/newlib/libc/stdio/nano-vfprintf.c
|
|
index 663eb7149..e6604e771 100644
|
|
--- b/newlib/libc/stdio/nano-vfprintf.c
|
|
+++ a/newlib/libc/stdio/nano-vfprintf.c
|
|
@@ -168,16 +168,6 @@ static char *rcsid = "$Id$";
|
|
#include "vfieeefp.h"
|
|
#include "nano-vfprintf_local.h"
|
|
|
|
-
|
|
-/* GCC PR 14577 at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14557 */
|
|
-#if __STDC_VERSION__ >= 201112L
|
|
-#define va_ptr(ap) _Generic(&(ap), va_list *: &(ap), default: (va_list *)(ap))
|
|
-#elif __GNUC__ >= 4
|
|
-#define va_ptr(ap) __builtin_choose_expr(__builtin_types_compatible_p(__typeof__(&(ap)), va_list *), &(ap), (va_list *)(ap))
|
|
-#else
|
|
-#define va_ptr(ap) (sizeof(ap) == sizeof(va_list) ? (va_list *)&(ap) : (va_list *)(ap))
|
|
-#endif
|
|
-
|
|
/* The __ssputs_r function is shared between all versions of vfprintf
|
|
and vfwprintf. */
|
|
#ifdef STRING_ONLY
|
|
@@ -643,12 +633,12 @@ _DEFUN(_VFPRINTF_R, (data, fp, fmt0, ap),
|
|
}
|
|
else
|
|
{
|
|
- n = _printf_float (data, &prt_data, fp, pfunc, va_ptr(ap));
|
|
+ n = _printf_float (data, &prt_data, fp, pfunc, &ap);
|
|
}
|
|
}
|
|
else
|
|
#endif
|
|
- n = _printf_i (data, &prt_data, fp, pfunc, va_ptr(ap));
|
|
+ n = _printf_i (data, &prt_data, fp, pfunc, &ap);
|
|
|
|
if (n == -1)
|
|
goto error;
|
|
diff --git b/newlib/libc/stdio/nano-vfscanf.c a/newlib/libc/stdio/nano-vfscanf.c
|
|
index 6467e5425..564f2916d 100644
|
|
--- b/newlib/libc/stdio/nano-vfscanf.c
|
|
+++ a/newlib/libc/stdio/nano-vfscanf.c
|
|
@@ -119,15 +119,6 @@ Supporting OS subroutines required:
|
|
#include "../stdlib/local.h"
|
|
#include "nano-vfscanf_local.h"
|
|
|
|
-/* GCC PR 14577 at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14557 */
|
|
-#if __STDC_VERSION__ >= 201112L
|
|
-#define va_ptr(ap) _Generic(&(ap), va_list *: &(ap), default: (va_list *)(ap))
|
|
-#elif __GNUC__ >= 4
|
|
-#define va_ptr(ap) __builtin_choose_expr(__builtin_types_compatible_p(__typeof__(&(ap)), va_list *), &(ap), (va_list *)(ap))
|
|
-#else
|
|
-#define va_ptr(ap) (sizeof(ap) == sizeof(va_list) ? (va_list *)&(ap) : (va_list *)(ap))
|
|
-#endif
|
|
-
|
|
#define VFSCANF vfscanf
|
|
#define _VFSCANF_R _vfscanf_r
|
|
#define __SVFSCANF __svfscanf
|
|
@@ -433,12 +424,12 @@ _DEFUN(__SVFSCANF_R, (rptr, fp, fmt0, ap),
|
|
}
|
|
ret = 0;
|
|
if (scan_data.code < CT_INT)
|
|
- ret = _scanf_chars (rptr, &scan_data, fp, va_ptr(ap));
|
|
+ ret = _scanf_chars (rptr, &scan_data, fp, &ap);
|
|
else if (scan_data.code < CT_FLOAT)
|
|
- ret = _scanf_i (rptr, &scan_data, fp, va_ptr(ap));
|
|
+ ret = _scanf_i (rptr, &scan_data, fp, &ap);
|
|
#ifdef FLOATING_POINT
|
|
else if (_scanf_float)
|
|
- ret = _scanf_float (rptr, &scan_data, fp, va_ptr(ap));
|
|
+ ret = _scanf_float (rptr, &scan_data, fp, &ap);
|
|
#endif
|
|
|
|
if (ret == MATCH_FAILURE)
|