Compare commits

...

15 Commits

Author SHA1 Message Date
753d4b61f2 add legacy provides to libgcc_s.so.1 [release 9.2.0-2mamba;Wed Aug 28 2019] 2024-01-05 22:37:51 +01:00
75955c0210 fix for liblto_plugin.so link added in previous release [release 8.3.0-3mamba;Mon Mar 18 2019] 2024-01-05 22:37:51 +01:00
38649232e0 automatic version update by autodist [release 8.3.0-1mamba;Fri Feb 22 2019] 2024-01-05 22:37:51 +01:00
a7ab85556c automatic version update by autodist [release 8.2.0-1mamba;Thu Jul 26 2018] 2024-01-05 22:37:51 +01:00
7c3a8f2281 automatic version update by autodist [release 8.1.0-1mamba;Fri May 18 2018] 2024-01-05 22:37:50 +01:00
74633b6112 automatic version update by autodist [release 7.3.0-1mamba;Thu Jan 25 2018] 2024-01-05 22:37:50 +01:00
cf935f49cc automatic version update by autodist [release 6.2.0-1mamba;Wed Aug 24 2016] 2024-01-05 22:37:50 +01:00
4704b4a610 patched for libgcj abi minor [release 6.1.0-2mamba;Mon May 09 2016] 2024-01-05 22:37:50 +01:00
824464f600 automatic version update by autodist [release 5.3.0-1mamba;Fri Dec 11 2015] 2024-01-05 22:37:50 +01:00
4b71f7cb6f rebuilt with go
move to %{_libdir} files formerly installed in /%{_lib} [release 5.2.0-2mamba;Sat Nov 21 2015]
2024-01-05 22:37:50 +01:00
527498f321 new target: arm-openmamba-linux-gnueabihf [release 4.9.2-2mamba;Thu Apr 09 2015] 2024-01-05 22:37:50 +01:00
e295aa7e88 automatic version update by autodist [release 4.9.2-1mamba;Thu Oct 30 2014] 2024-01-05 22:37:49 +01:00
e672a842ab automatic version update by autodist [release 4.9.1-1mamba;Sun Jul 27 2014] 2024-01-05 22:37:49 +01:00
6b32be643f apply upstream fixes to fix crashes seen in libQtScript after building Qt (seehttps://bugzilla.redhat.com/show_bug.cgi?id=1091482 ) [release 4.9.0-2mamba;Mon Jun 16 2014] 2024-01-05 22:37:49 +01:00
52c8a529e2 automatic version update by autodist [release 4.9.0-1mamba;Sat May 03 2014] 2024-01-05 22:37:49 +01:00
5 changed files with 759 additions and 447 deletions

Binary file not shown.

View File

@ -0,0 +1,102 @@
Submitted By: Armin K. <krejzi at email dot com>
Date: 2014-05-10
Initial Package Version: 4.9.0
Upstream Status: Fixed Upstream
Origin: Upstream VCS
Description: Prevents compiler from generating broken code that would cause
some programs to segfault or behave incorrectly when compiled
with gcc-4.9.0
--- a/gcc/ipa-devirt.c 2014-04-08 07:35:11.000000000 +0200
+++ b/gcc/ipa-devirt.c 2014-05-10 16:46:14.502859179 +0200
@@ -987,6 +987,17 @@
context->outer_type = expected_type;
context->offset = 0;
context->maybe_derived_type = true;
+ context->maybe_in_construction = true;
+ /* POD can be changed to an instance of a polymorphic type by
+ placement new. Here we play safe and assume that any
+ non-polymorphic type is POD. */
+ if ((TREE_CODE (type) != RECORD_TYPE
+ || !TYPE_BINFO (type)
+ || !polymorphic_type_binfo_p (TYPE_BINFO (type)))
+ && (TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST
+ || (offset + tree_to_uhwi (TYPE_SIZE (expected_type)) <=
+ tree_to_uhwi (TYPE_SIZE (type)))))
+ return true;
return false;
}
--- a/gcc/testsuite/g++.dg/ipa/devirt-11.C 2013-09-08 18:42:21.000000000 +0200
+++ b/gcc/testsuite/g++.dg/ipa/devirt-11.C 2014-05-10 16:46:14.503859198 +0200
@@ -45,5 +45,5 @@
/* While inlining function called once we should devirtualize a new call to fn2
and two to fn3. While doing so the new symbol for fn2 needs to be
introduced. */
-/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 3 "inline" } } */
+/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 1 "inline" } } */
/* { dg-final { cleanup-ipa-dump "inline" } } */
--- a/gcc/testsuite/g++.dg/ipa/devirt-31.C 1970-01-01 01:00:00.000000000 +0100
+++ b/gcc/testsuite/g++.dg/ipa/devirt-31.C 2014-05-10 16:46:14.503859198 +0200
@@ -0,0 +1,23 @@
+/* { dg-options "-O2 -std=c++11 -fdump-ipa-inline" } */
+#include <new>
+
+class EmbeddedObject {
+public:
+ virtual int val() { return 2; }
+};
+
+class Container {
+ alignas(EmbeddedObject) char buffer[sizeof(EmbeddedObject)];
+public:
+ EmbeddedObject *obj() { return (EmbeddedObject*)buffer; }
+ Container() { new (buffer) EmbeddedObject(); }
+};
+
+Container o;
+
+int main()
+{
+ __builtin_printf("%d\n", o.obj()->val());
+}
+/* { dg-final { scan-ipa-dump-not "__builtin_unreachable" "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
--- a/gcc/tree-ssa-threadedge.c 2014-01-02 23:23:26.000000000 +0100
+++ b/gcc/tree-ssa-threadedge.c 2014-05-10 16:45:59.053571881 +0200
@@ -387,7 +387,34 @@
&& (gimple_code (stmt) != GIMPLE_CALL
|| gimple_call_lhs (stmt) == NULL_TREE
|| TREE_CODE (gimple_call_lhs (stmt)) != SSA_NAME))
- continue;
+ {
+ /* STMT might still have DEFS and we need to invalidate any known
+ equivalences for them.
+
+ Consider if STMT is a GIMPLE_ASM with one or more outputs that
+ feeds a conditional inside a loop. We might derive an equivalence
+ due to the conditional. */
+ tree op;
+ ssa_op_iter iter;
+
+ if (backedge_seen)
+ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF)
+ {
+ /* This call only invalidates equivalences created by
+ PHI nodes. This is by design to keep the cost of
+ of invalidation reasonable. */
+ invalidate_equivalences (op, stack, src_map, dst_map);
+
+ /* However, conditionals can imply values for real
+ operands as well. And those won't be recorded in the
+ maps. In fact, those equivalences may be recorded totally
+ outside the threading code. We can just create a new
+ temporary NULL equivalence here. */
+ record_temporary_equivalence (op, NULL_TREE, stack);
+ }
+
+ continue;
+ }
/* The result of __builtin_object_size depends on all the arguments
of a phi node. Temporarily using only one edge produces invalid

View File

@ -0,0 +1,15 @@
--- trunk/gcc/lra-lives.c 2014/05/30 08:43:05 211074
+++ trunk/gcc/lra-lives.c 2014/06/16 09:58:34 211701
@@ -558,7 +558,11 @@
/* It might be 'inheritance pseudo <- reload pseudo'. */
|| (src_regno >= lra_constraint_new_regno_start
&& ((int) REGNO (SET_DEST (set))
- >= lra_constraint_new_regno_start))))
+ >= lra_constraint_new_regno_start)
+ /* Remember to skip special cases where src/dest regnos are
+ the same, e.g. insn SET pattern has matching constraints
+ like =r,0. */
+ && src_regno != (int) REGNO (SET_DEST (set)))))
{
int hard_regno = -1, regno = -1;

View File

@ -0,0 +1,20 @@
--- gcc-7.1.0/libgcc/config/i386/linux-unwind.h.orig 2017-10-17 15:57:36.616505453 +0200
+++ gcc-7.1.0/libgcc/config/i386/linux-unwind.h 2017-10-17 15:57:54.791574061 +0200
@@ -58,7 +58,7 @@
if (*(unsigned char *)(pc+0) == 0x48
&& *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
{
- struct ucontext *uc_ = context->cfa;
+ struct ucontext_t *uc_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
The aliasing warning is correct, but should not be a problem
because it does not alias anything. */
@@ -138,7 +138,7 @@
siginfo_t *pinfo;
void *puc;
siginfo_t info;
- struct ucontext uc;
+ struct ucontext_t uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
The aliasing warning is correct, but should not be a problem

1069
gcc.spec

File diff suppressed because it is too large Load Diff