summaryrefslogtreecommitdiff
path: root/patches/gcc/5.4.0
diff options
context:
space:
mode:
Diffstat (limited to 'patches/gcc/5.4.0')
-rw-r--r--patches/gcc/5.4.0/1100-msp430-string-literals.patch81
-rw-r--r--patches/gcc/5.4.0/111-alpha-bad-eh_frame.patch13
-rw-r--r--patches/gcc/5.4.0/879-gcc-xtensa-fix-fprintf-format-specifiers.patch74
3 files changed, 168 insertions, 0 deletions
diff --git a/patches/gcc/5.4.0/1100-msp430-string-literals.patch b/patches/gcc/5.4.0/1100-msp430-string-literals.patch
new file mode 100644
index 0000000..819d6d2
--- /dev/null
+++ b/patches/gcc/5.4.0/1100-msp430-string-literals.patch
@@ -0,0 +1,81 @@
+commit 9d247a3d78b97c004e7ca5e7d6cc9964dba870c7
+Author: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Wed May 13 01:11:13 2015 +0000
+
+ gcc/
+ * config/mmix/mmix.c, config/msp430/msp430.c: Add space between
+ string literal and macro name.
+ gcc/ada/
+ * sigtramp-vxworks.c: Add space between string literal and macro
+ name.
+
+ git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223106 138bc75d-0d04-0410-961f-82ee72b054a4
+
+diff --git a/gcc/ada/sigtramp-vxworks.c b/gcc/ada/sigtramp-vxworks.c
+index 2119296dc1d..c697626a03e 100644
+--- a/gcc/ada/sigtramp-vxworks.c
++++ b/gcc/ada/sigtramp-vxworks.c
+@@ -342,16 +342,16 @@ CR("") \
+ TCR("# Allocate frame and save the non-volatile") \
+ TCR("# registers we're going to modify") \
+ TCR("mov ip, sp") \
+-TCR("stmfd sp!, {r"S(CFA_REG)", fp, ip, lr, pc}") \
++TCR("stmfd sp!, {r" S(CFA_REG)", fp, ip, lr, pc}") \
+ TCR("# Setup CFA_REG = context, which we'll retrieve as our CFA value") \
+-TCR("ldr r"S(CFA_REG)", [ip]") \
++TCR("ldr r" S(CFA_REG)", [ip]") \
+ TCR("") \
+ TCR("# Call the real handler. The signo, siginfo and sigcontext") \
+ TCR("# arguments are the same as those we received in r0, r1 and r2") \
+ TCR("sub fp, ip, #4") \
+ TCR("blx r3") \
+ TCR("# Restore our callee-saved items, release our frame and return") \
+-TCR("ldmfd sp, {r"S(CFA_REG)", fp, sp, pc}")
++TCR("ldmfd sp, {r" S(CFA_REG)", fp, sp, pc}")
+
+ #else
+ Not_implemented;
+diff --git a/gcc/config/mmix/mmix.c b/gcc/config/mmix/mmix.c
+index 6e991207dbc..e0699854e25 100644
+--- a/gcc/config/mmix/mmix.c
++++ b/gcc/config/mmix/mmix.c
+@@ -2520,7 +2520,7 @@ mmix_output_shiftvalue_op_from_str (FILE *stream,
+ if (! mmix_shiftable_wyde_value (value))
+ {
+ char s[sizeof ("0xffffffffffffffff")];
+- sprintf (s, "%#"PRIx64, value);
++ sprintf (s, "%#" PRIx64, value);
+ internal_error ("MMIX Internal: %s is not a shiftable int", s);
+ }
+
+@@ -2562,7 +2562,7 @@ mmix_output_octa (FILE *stream, int64_t value, int do_begin_end)
+ fprintf (stream, "#" HOST_WIDE_INT_PRINT_HEX_PURE,
+ (HOST_WIDE_INT) value);
+ else /* Need to avoid the hex output; there's no ...WIDEST...HEX_PURE. */
+- fprintf (stream, "%"PRIu64, value);
++ fprintf (stream, "%" PRIu64, value);
+
+ if (do_begin_end)
+ fprintf (stream, "\n");
+@@ -2579,7 +2579,7 @@ mmix_output_shifted_value (FILE *stream, int64_t value)
+ if (! mmix_shiftable_wyde_value (value))
+ {
+ char s[16+2+1];
+- sprintf (s, "%#"PRIx64, value);
++ sprintf (s, "%#" PRIx64, value);
+ internal_error ("MMIX Internal: %s is not a shiftable int", s);
+ }
+
+diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c
+index bec168ca2ae..58d0efea1de 100644
+--- a/gcc/config/msp430/msp430.c
++++ b/gcc/config/msp430/msp430.c
+@@ -2248,7 +2248,7 @@ static struct
+ }
+ const_shift_helpers[] =
+ {
+-#define CSH(N,C,X,G) { "__mspabi_"N, C, X, gen_##G }
++#define CSH(N,C,X,G) { "__mspabi_" N, C, X, gen_##G }
+
+ CSH ("slli", 1, 1, slli_1),
+ CSH ("slll", 1, 1, slll_1),
diff --git a/patches/gcc/5.4.0/111-alpha-bad-eh_frame.patch b/patches/gcc/5.4.0/111-alpha-bad-eh_frame.patch
new file mode 100644
index 0000000..93f6e94
--- /dev/null
+++ b/patches/gcc/5.4.0/111-alpha-bad-eh_frame.patch
@@ -0,0 +1,13 @@
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80037
+
+diff --git a/libgcc/config/alpha/t-alpha b/libgcc/config/alpha/t-alpha
+index 0b6ffb1..0c2f840 100644
+--- a/libgcc/config/alpha/t-alpha
++++ b/libgcc/config/alpha/t-alpha
+@@ -1,2 +1,6 @@
+ # This is a support routine for longlong.h, used by libgcc2.c.
+ LIB2ADD += $(srcdir)/config/alpha/qrnnd.S
++
++# When GAS-generated unwind tables are created, they get created
++# after the __FRAME_END__ terminator, which causes an ld error.
++CRTSTUFF_T_CFLAGS = -fno-unwind-tables
diff --git a/patches/gcc/5.4.0/879-gcc-xtensa-fix-fprintf-format-specifiers.patch b/patches/gcc/5.4.0/879-gcc-xtensa-fix-fprintf-format-specifiers.patch
new file mode 100644
index 0000000..e75e258
--- /dev/null
+++ b/patches/gcc/5.4.0/879-gcc-xtensa-fix-fprintf-format-specifiers.patch
@@ -0,0 +1,74 @@
+From 1117c8be9e712f778739d751aa61038794437d7d Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Sun, 28 May 2017 19:56:56 -0700
+Subject: [PATCH] gcc: xtensa: fix fprintf format specifiers
+
+HOST_WIDE_INT may not be long as assumed in print_operand and
+xtensa_emit_call. Use HOST_WIDE_INT_PRINT_DEC/HOST_WIDE_INT_PRINT_HEX
+format strings instead of %ld/0x%lx. This fixes incorrect assembly code
+generation by the compiler running on armhf host.
+
+2017-05-28 Max Filippov <jcmvbkbc@gmail.com>
+gcc/
+ * config/xtensa/xtensa.c (xtensa_emit_call): Use
+ HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
+ (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
+ format string.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gcc/config/xtensa/xtensa.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
+index 36ab1e3..8e62d63 100644
+--- a/gcc/config/xtensa/xtensa.c
++++ b/gcc/config/xtensa/xtensa.c
+@@ -1811,7 +1811,8 @@ xtensa_emit_call (int callop, rtx *operands)
+ rtx tgt = operands[callop];
+
+ if (GET_CODE (tgt) == CONST_INT)
+- sprintf (result, "call%d\t0x%lx", WINDOW_SIZE, INTVAL (tgt));
++ sprintf (result, "call%d\t" HOST_WIDE_INT_PRINT_HEX,
++ WINDOW_SIZE, INTVAL (tgt));
+ else if (register_operand (tgt, VOIDmode))
+ sprintf (result, "callx%d\t%%%d", WINDOW_SIZE, callop);
+ else
+@@ -2382,14 +2383,14 @@ print_operand (FILE *file, rtx x, int letter)
+
+ case 'L':
+ if (GET_CODE (x) == CONST_INT)
+- fprintf (file, "%ld", (32 - INTVAL (x)) & 0x1f);
++ fprintf (file, HOST_WIDE_INT_PRINT_DEC, (32 - INTVAL (x)) & 0x1f);
+ else
+ output_operand_lossage ("invalid %%L value");
+ break;
+
+ case 'R':
+ if (GET_CODE (x) == CONST_INT)
+- fprintf (file, "%ld", INTVAL (x) & 0x1f);
++ fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x) & 0x1f);
+ else
+ output_operand_lossage ("invalid %%R value");
+ break;
+@@ -2403,7 +2404,7 @@ print_operand (FILE *file, rtx x, int letter)
+
+ case 'd':
+ if (GET_CODE (x) == CONST_INT)
+- fprintf (file, "%ld", INTVAL (x));
++ fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
+ else
+ output_operand_lossage ("invalid %%d value");
+ break;
+@@ -2472,7 +2473,7 @@ print_operand (FILE *file, rtx x, int letter)
+ else if (GET_CODE (x) == MEM)
+ output_address (XEXP (x, 0));
+ else if (GET_CODE (x) == CONST_INT)
+- fprintf (file, "%ld", INTVAL (x));
++ fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
+ else
+ output_addr_const (file, x);
+ }
+--
+2.1.4
+