rpms/gcc/FC-3 gcc34-hashtab-recursion.patch, NONE, 1.1 gcc34-i386-movsi-insv.patch, NONE, 1.1 gcc34-pr14084.patch, NONE, 1.1 gcc34-pr18925.patch, NONE, 1.1 gcc34-pr20191.patch, NONE, 1.1 gcc34-pr21955.patch, NONE, 1.1 gcc34-var-tracking-fix.patch, NONE, 1.1 gcc34-vsb-stack.patch, NONE, 1.1 .cvsignore, 1.60, 1.61 gcc34.spec, 1.31, 1.32 sources, 1.61, 1.62 gcc34-c++-pr19916.patch, 1.1, NONE gcc34-c++-redecl.patch, 1.1, NONE
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Fri Jul 22 12:21:42 UTC 2005
Author: jakub
Update of /cvs/dist/rpms/gcc/FC-3
In directory cvs.devel.redhat.com:/tmp/cvs-serv5923/FC-3
Modified Files:
.cvsignore gcc34.spec sources
Added Files:
gcc34-hashtab-recursion.patch gcc34-i386-movsi-insv.patch
gcc34-pr14084.patch gcc34-pr18925.patch gcc34-pr20191.patch
gcc34-pr21955.patch gcc34-var-tracking-fix.patch
gcc34-vsb-stack.patch
Removed Files:
gcc34-c++-pr19916.patch gcc34-c++-redecl.patch
Log Message:
auto-import gcc-3.4.4-2.fc3 on branch FC-3 from gcc-3.4.4-2.fc3.src.rpm
gcc34-hashtab-recursion.patch:
varasm.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
--- NEW FILE gcc34-hashtab-recursion.patch ---
2005-05-17 Jakub Jelinek <jakub at redhat.com>
* varasm.c (struct constant_descriptor_tree): Add hash field.
(const_desc_hash): Just return hash field.
(const_desc_eq): If hash values are different, return 0 immediately.
(output_constant_def): Compute hash field of temporary key, use
htab_find_slot_with_hash instead of htab_find_slot. Set hash in
newly built constant descriptor.
(lookup_constant_def): Compute hash field of temporary key, use
htab_find_with_hash instead of htab_find.
--- gcc/varasm.c 16 May 2005 21:37:01 -0000 1.510
+++ gcc/varasm.c 17 May 2005 06:34:48 -0000 1.511
@@ -2361,6 +2361,11 @@ struct constant_descriptor_tree GTY(())
/* The value of the constant. */
tree value;
+
+ /* Hash of value. Computing the hash from value each time
+ hashfn is called can't work properly, as that means recursive
+ use of the hash table during hash table expansion. */
+ hashval_t hash;
};
static GTY((param_is (struct constant_descriptor_tree)))
@@ -2374,7 +2379,7 @@ static void maybe_output_constant_def_co
static hashval_t
const_desc_hash (const void *ptr)
{
- return const_hash_1 (((struct constant_descriptor_tree *)ptr)->value);
+ return ((struct constant_descriptor_tree *)ptr)->hash;
}
static hashval_t
@@ -2474,8 +2479,11 @@ const_hash_1 (const tree exp)
static int
const_desc_eq (const void *p1, const void *p2)
{
- return compare_constant (((struct constant_descriptor_tree *)p1)->value,
- ((struct constant_descriptor_tree *)p2)->value);
+ const struct constant_descriptor_tree *c1 = p1;
+ const struct constant_descriptor_tree *c2 = p2;
+ if (c1->hash != c2->hash)
+ return 0;
+ return compare_constant (c1->value, c2->value);
}
/* Compare t1 and t2, and return 1 only if they are known to result in
@@ -2745,12 +2753,14 @@ output_constant_def (tree exp, int defer
/* Look up EXP in the table of constant descriptors. If we didn't find
it, create a new one. */
key.value = exp;
- loc = htab_find_slot (const_desc_htab, &key, INSERT);
+ key.hash = const_hash_1 (exp);
+ loc = htab_find_slot_with_hash (const_desc_htab, &key, key.hash, INSERT);
desc = *loc;
if (desc == 0)
{
desc = build_constant_desc (exp);
+ desc->hash = key.hash;
*loc = desc;
}
@@ -2853,7 +2863,8 @@ lookup_constant_def (tree exp)
struct constant_descriptor_tree key;
key.value = exp;
- desc = htab_find (const_desc_htab, &key);
+ key.hash = const_hash_1 (exp);
+ desc = htab_find_with_hash (const_desc_htab, &key, key.hash);
return (desc ? desc->rtl : NULL_RTX);
}
gcc34-i386-movsi-insv.patch:
config/i386/i386.md | 12 ++++++++++--
testsuite/gcc.dg/20050510-2.c | 26 ++++++++++++++++++++++++++
2 files changed, 36 insertions(+), 2 deletions(-)
--- NEW FILE gcc34-i386-movsi-insv.patch ---
2005-05-10 Jakub Jelinek <jakub at redhat.com>
* config/i386/i386.md (movsi_insv_1, movdi_insv_1_rex64): Mask
CONST_INT values with 255.
* gcc.dg/20050510-2.c: New test.
--- gcc/config/i386/i386.md.jj 2005-05-10 00:47:12.000000000 +0200
+++ gcc/config/i386/i386.md 2005-05-10 14:01:42.000000000 +0200
@@ -1771,7 +1771,11 @@
(const_int 8))
(match_operand:SI 1 "general_operand" "Qmn"))]
"!TARGET_64BIT"
- "mov{b}\t{%b1, %h0|%h0, %b1}"
+{
+ if (GET_CODE (operands[1]) == CONST_INT)
+ operands[1] = GEN_INT (INTVAL (operands[1]) & 255);
+ return "mov{b}\t{%b1, %h0|%h0, %b1}";
+}
[(set_attr "type" "imov")
(set_attr "mode" "QI")])
@@ -1781,7 +1785,11 @@
(const_int 8))
(match_operand:DI 1 "nonmemory_operand" "Qn"))]
"TARGET_64BIT"
- "mov{b}\t{%b1, %h0|%h0, %b1}"
+{
+ if (GET_CODE (operands[1]) == CONST_INT)
+ operands[1] = GEN_INT (INTVAL (operands[1]) & 255);
+ return "mov{b}\t{%b1, %h0|%h0, %b1}";
+}
[(set_attr "type" "imov")
(set_attr "mode" "QI")])
--- gcc/testsuite/gcc.dg/20050510-2.c.jj 2005-04-07 15:51:53.775361896 +0200
+++ gcc/testsuite/gcc.dg/20050510-2.c 2005-05-10 14:37:12.000000000 +0200
@@ -0,0 +1,26 @@
+/* { dg-options run } */
+/* { dg-options "-O2" } */
+
+extern void abort (void);
+
+__attribute__((noinline)) int
+foo (unsigned char *x)
+{
+ if (x[0] != 1 || x[1] != 0x15)
+ abort ();
+ return 0;
+}
+
+static inline void
+bar (unsigned short x)
+{
+ unsigned char s[2] = { x >> 8, x & 0xff };
+ foo (s);
+}
+
+int
+main (void)
+{
+ bar (0x115);
+ return 0;
+}
gcc34-pr14084.patch:
emit-rtl.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 85 insertions(+), 2 deletions(-)
--- NEW FILE gcc34-pr14084.patch ---
2004-05-27 Josef Zlomek <zlomekj at suse.cz>
PR middle-end/14084
* emit-rtl.c (gen_rtx_REG_offset): Adjust the offset according
to size of decl.
--- gcc/emit-rtl.c 25 May 2004 12:04:15 -0000 1.391
+++ gcc/emit-rtl.c 27 May 2004 04:28:12 -0000 1.392
@@ -746,13 +746,96 @@ gen_reg_rtx (enum machine_mode mode)
return val;
}
-/* Generate a register with same attributes as REG,
- but offsetted by OFFSET. */
+/* Generate a register with same attributes as REG, but offsetted by OFFSET.
+ Do the big endian correction if needed. */
rtx
gen_rtx_REG_offset (rtx reg, enum machine_mode mode, unsigned int regno, int offset)
{
rtx new = gen_rtx_REG (mode, regno);
+ tree decl;
+ HOST_WIDE_INT var_size;
+
+ /* PR middle-end/14084
+ The problem appears when a variable is stored in a larger register
+ and later it is used in the original mode or some mode in between
+ or some part of variable is accessed.
+
+ On little endian machines there is no problem because
+ the REG_OFFSET of the start of the variable is the same when
+ accessed in any mode (it is 0).
+
+ However, this is not true on big endian machines.
+ The offset of the start of the variable is different when accessed
+ in different modes.
+ When we are taking a part of the REG we have to change the OFFSET
+ from offset WRT size of mode of REG to offset WRT size of variable.
+
+ If we would not do the big endian correction the resulting REG_OFFSET
+ would be larger than the size of the DECL.
+
+ Examples of correction, for BYTES_BIG_ENDIAN WORDS_BIG_ENDIAN machine:
+
+ REG.mode MODE DECL size old offset new offset description
+ DI SI 4 4 0 int32 in SImode
+ DI SI 1 4 0 char in SImode
+ DI QI 1 7 0 char in QImode
+ DI QI 4 5 1 1st element in QImode
+ of char[4]
+ DI HI 4 6 2 1st element in HImode
+ of int16[2]
+
+ If the size of DECL is equal or greater than the size of REG
+ we can't do this correction because the register holds the
+ whole variable or a part of the variable and thus the REG_OFFSET
+ is already correct. */
+
+ decl = REG_EXPR (reg);
+ if ((BYTES_BIG_ENDIAN || WORDS_BIG_ENDIAN)
+ && decl != NULL
+ && offset > 0
+ && GET_MODE_SIZE (GET_MODE (reg)) > GET_MODE_SIZE (mode)
+ && ((var_size = int_size_in_bytes (TREE_TYPE (decl))) > 0
+ && var_size < GET_MODE_SIZE (GET_MODE (reg))))
+ {
+ int offset_le;
+
+ /* Convert machine endian to little endian WRT size of mode of REG. */
+ if (WORDS_BIG_ENDIAN)
+ offset_le = ((GET_MODE_SIZE (GET_MODE (reg)) - 1 - offset)
+ / UNITS_PER_WORD) * UNITS_PER_WORD;
+ else
+ offset_le = (offset / UNITS_PER_WORD) * UNITS_PER_WORD;
+
+ if (BYTES_BIG_ENDIAN)
+ offset_le += ((GET_MODE_SIZE (GET_MODE (reg)) - 1 - offset)
+ % UNITS_PER_WORD);
+ else
+ offset_le += offset % UNITS_PER_WORD;
+
+ if (offset_le >= var_size)
+ {
+ /* MODE is wider than the variable so the new reg will cover
+ the whole variable so the resulting OFFSET should be 0. */
+ offset = 0;
+ }
+ else
+ {
+ /* Convert little endian to machine endian WRT size of variable. */
+ if (WORDS_BIG_ENDIAN)
+ offset = ((var_size - 1 - offset_le)
+ / UNITS_PER_WORD) * UNITS_PER_WORD;
+ else
+ offset = (offset_le / UNITS_PER_WORD) * UNITS_PER_WORD;
+
+ if (BYTES_BIG_ENDIAN)
+ offset += ((var_size - 1 - offset_le)
+ % UNITS_PER_WORD);
+ else
+ offset += offset_le % UNITS_PER_WORD;
+ }
+ }
+
REG_ATTRS (new) = get_reg_attrs (REG_EXPR (reg),
REG_OFFSET (reg) + offset);
return new;
gcc34-pr18925.patch:
cp/class.c | 8 +++++++-
testsuite/g++.dg/ext/visibility/staticdatamem.C | 20 ++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
--- NEW FILE gcc34-pr18925.patch ---
2004-12-13 Mark Mitchell <mark at codesourcery.com>
PR c++/18925
* class.c (layout_class_type): Determine the visibility of static
data members.
* g++.dg/ext/visibility/staticdatamem.C: New test.
--- gcc/cp/class.c 8 Dec 2004 08:35:33 -0000 1.692
+++ gcc/cp/class.c 14 Dec 2004 02:21:46 -0000 1.693
@@ -4553,7 +4553,13 @@ layout_class_type (tree t, tree *virtual
At this point, finish_record_layout will be called, but
S1 is still incomplete.) */
if (TREE_CODE (field) == VAR_DECL)
- maybe_register_incomplete_var (field);
+ {
+ maybe_register_incomplete_var (field);
+ /* The visibility of static data members is determined
+ at their point of declaration, not their point of
+ definition. */
+ determine_visibility (field);
+ }
continue;
}
--- gcc/testsuite/g++.dg/ext/visibility/staticdatamem.C 1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/g++.dg/ext/visibility/staticdatamem.C 14 Dec 2004 02:15:55 -0000 1.1
@@ -0,0 +1,20 @@
+// PR c++/18925
+// { dg-do compile { target ia64-*-linux* } }
+// { dg-options "-fPIC -fvisibility=hidden" }
+// { dg-final { scan-assembler-not "gprel" } }
+
+class __attribute__ ((visibility("default"))) Type
+{
+ private:
+ static long _staticTypeCount;
+ public:
+ Type() { _staticTypeCount++; }
+ ~Type();
+};
+
+long Type::_staticTypeCount = 0;
+
+Type::~Type()
+{
+ _staticTypeCount--;
+}
gcc34-pr20191.patch:
gcc.c-torture/compile/20050615-1.c | 57 +++++++++++++++++++++++++++++++++++++
gcc/config/rs6000/rs6000.md | 20 +++++++-----
2 files changed, 68 insertions(+), 9 deletions(-)
--- NEW FILE gcc34-pr20191.patch ---
2005-06-15 Janis Johnson <janis187 at us.ibm.com>
PR target/20191
Backport from mainline:
2004-04-23 Dale Johannesen <dalej at apple.com>
* config/rs6000.md (movsf_hardfloat): Add POWER form of nop.
(movdf_hardfloat64): Ditto.
(movdf_softfloat64): Ditto.
* config/rs6000.md (movsf_hardfloat): Accept CTR-to-CTR copy.
(movdf_hardfloat64): Ditto.
PR target/20191
* gcc.c-torture/compile/20050615-1.c: New test.
--- gcc/config/rs6000/rs6000.md 2005-06-14 11:08:15.959387560 -0700
+++ gcc/config/rs6000/rs6000.md 2005-06-14 14:38:33.400313800 -0700
@@ -7839,8 +7839,8 @@
}")
(define_insn "*movsf_hardfloat"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=!r,!r,m,f,f,m,!cl,!q,!r,!r,!r")
- (match_operand:SF 1 "input_operand" "r,m,r,f,m,f,r,r,h,G,Fn"))]
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=!r,!r,m,f,f,m,!cl,!q,!r,!h,!r,!r")
+ (match_operand:SF 1 "input_operand" "r,m,r,f,m,f,r,r,h,0,G,Fn"))]
"(gpc_reg_operand (operands[0], SFmode)
|| gpc_reg_operand (operands[1], SFmode))
&& (TARGET_HARD_FLOAT && TARGET_FPRS)"
@@ -7854,10 +7854,11 @@
mt%0 %1
mt%0 %1
mf%1 %0
+ {cror 0,0,0|nop}
#
#"
- [(set_attr "type" "*,load,store,fp,fpload,fpstore,*,mtjmpr,*,*,*")
- (set_attr "length" "4,4,4,4,4,4,4,4,4,4,8")])
+ [(set_attr "type" "*,load,store,fp,fpload,fpstore,*,mtjmpr,*,*,*,*")
+ (set_attr "length" "4,4,4,4,4,4,4,4,4,4,4,8")])
(define_insn "*movsf_softfloat"
[(set (match_operand:SF 0 "nonimmediate_operand" "=r,cl,q,r,r,m,r,r,r,r,r,*h")
@@ -8114,8 +8115,8 @@
; ld/std require word-aligned displacements -> 'Y' constraint.
; List Y->r and r->Y before r->r for reload.
(define_insn "*movdf_hardfloat64"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,b,!r,f,f,m,!cl,!r,!r,!r,!r")
- (match_operand:DF 1 "input_operand" "r,Y,m,r,f,m,f,r,h,G,H,F"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=Y,r,b,!r,f,f,m,!cl,!r,!h,!r,!r,!r")
+ (match_operand:DF 1 "input_operand" "r,Y,m,r,f,m,f,r,h,0,G,H,F"))]
"TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS
&& (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))"
@@ -8129,11 +8130,12 @@
stfd%U0%X0 %1,%0
mt%0 %1
mf%1 %0
+ {cror 0,0,0|nop}
#
#
#"
- [(set_attr "type" "store,load,load,*,fp,fpload,fpstore,mtjmpr,*,*,*,*")
- (set_attr "length" "4,4,8,4,4,4,4,4,4,8,12,16")])
+ [(set_attr "type" "store,load,load,*,fp,fpload,fpstore,mtjmpr,*,*,*,*,*")
+ (set_attr "length" "4,4,8,4,4,4,4,4,4,4,8,12,16")])
(define_split
[(set (match_operand:DF 0 "base_reg_operand" "")
@@ -8191,7 +8193,7 @@
#
#
#
- nop"
+ {cror 0,0,0|nop}"
[(set_attr "type" "load,store,*,*,*,*,*,*,*")
(set_attr "length" "4,4,4,4,4,8,12,16,4")])
--- /dev/null 2004-06-24 11:06:20.000000000 -0700
+++ gcc.c-torture/compile/20050615-1.c 2005-06-15 11:35:06.000000000 -0700
@@ -0,0 +1,57 @@
+/* Test for PR target/20191. */
+
+struct S1;
+
+struct S1 {
+ struct S1 *next;
+ float x;
+};
+
+struct S2 {
+ float y;
+};
+
+extern int func_ex1 (float);
+
+extern int f;
+extern float n;
+extern struct S1 *bp1;
+extern struct S2 *bp2;
+
+inline float
+func1 (int f, struct S2 *p2)
+{
+ float a;
+
+ if (f)
+ a = n >= p2->y ? n : p2->y;
+ else
+ a = n;
+ return a;
+}
+
+inline float
+func2 (struct S1 *p1, struct S2 *p2)
+{
+ float a, b;
+
+ if(n <= 1.0)
+ b = func1 (f, p2);
+ else
+ {
+ a = n <= p1->x ? 0.0 : p1->x;
+ b = a >= p2->y ? a : p2->y;
+ }
+ return(b);
+}
+
+void
+func3 (struct S1 *p)
+{
+ float a = 0.0;
+
+ if (f)
+ a = func2 (bp1, bp2);
+ if (func_ex1 (a))
+ bp1 = p;
+}
gcc34-pr21955.patch:
include/std/std_sstream.h | 12 +++
src/Makefile.am | 15 ++++
src/Makefile.in | 25 ++++++-
src/sstream-inst-showmanyc.cc | 39 ++++++++++++
src/sstream-inst.cc | 5 +
testsuite/27_io/basic_streambuf/in_avail/char/1.cc | 54 +++++++++++++++++
testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc | 54 +++++++++++++++++
testsuite/27_io/basic_stringbuf/in_avail/char/1.cc | 4 -
testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc | 54 +++++++++++++++++
testsuite/27_io/basic_stringbuf/str/char/1.cc | 2
testsuite/lib/libstdc++.exp | 1
11 files changed, 258 insertions(+), 7 deletions(-)
--- NEW FILE gcc34-pr21955.patch ---
2005-07-22 Jakub Jelinek <jakub at redhat.com>
* src/sstream-inst.cc: Add .hidden directive for
streamsize basic_stringbuf<{char,wchar_t}>::showmanyc().
* src/sstream-inst-showmanyc.cc: New file.
* src/Makefile.am (libstdc++_nonshared.la): Add new library.
* src/Makefile.in: Rebuilt.
* testsuite/lib/libstdc++.exp: Append -lstdc++_nonshared for
testsuite executable linking.
2005-06-08 Benjamin Kosnik <bkoz at redhat.com>
PR libstdc++/21955
* include/std/std_sstream.h (basic_stringbuf::showmanyc): Add.
* testsuite/27_io/basic_streambuf/in_avail/char/1.cc: New, test
base class behavior.
* testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc: Same.
* testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc: New.
* testsuite/27_io/basic_stringbuf/in_avail/char/1.cc: Match
filebuf behavior.
* testsuite/27_io/basic_stringbuf/str/char/1.cc: Same.
--- libstdc++-v3/src/sstream-inst.cc.jj 2003-07-11 10:28:13.000000000 +0200
+++ libstdc++-v3/src/sstream-inst.cc 2005-07-21 17:46:08.000000000 +0200
@@ -60,3 +60,8 @@ namespace std
template class basic_stringstream<wchar_t>;
#endif
} // namespace std
+
+#ifdef PIC
+__asm (".hidden _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv");
+__asm (".hidden _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv");
+#endif
--- libstdc++-v3/src/sstream-inst-showmanyc.cc.jj 2005-07-21 21:27:40.000000000 +0200
+++ libstdc++-v3/src/sstream-inst-showmanyc.cc 2005-07-22 09:16:58.000000000 +0200
@@ -0,0 +1,39 @@
+// Explicit instantiation file.
+
+// Copyright (C) 2005
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <sstream>
+
+namespace std
+{
+ // These symbols are hidden in libstdc++.so, as it is undesirable to export
+ // @@GLIBCXX_3.4.6
+ template streamsize basic_stringbuf<char, char_traits<char>, allocator<char> >::showmanyc();
+ template streamsize basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >::showmanyc();
+} // namespace std
--- libstdc++-v3/src/Makefile.am.jj 2004-04-20 15:55:47.000000000 +0200
+++ libstdc++-v3/src/Makefile.am 2005-07-22 09:00:32.000000000 +0200
@@ -25,7 +25,7 @@
include $(top_srcdir)/fragment.am
# Cross compiler support.
-toolexeclib_LTLIBRARIES = libstdc++.la
+toolexeclib_LTLIBRARIES = libstdc++.la libstdc++_nonshared.la
# Symbol versioning for shared libraries.
if GLIBCXX_BUILD_VERSIONED_SHLIB
@@ -150,6 +150,11 @@ libstdc___la_DEPENDENCIES = ${version_de
libstdc___la_LDFLAGS = \
-version-info $(libtool_VERSION) ${version_arg} -lm
+libstdc___nonshared_la_SOURCES = \
+ sstream-inst-showmanyc.cc
+libstdc___nonshared_la_LIBADD =
+libstdc___nonshared_la_DEPENDENCIES = $(libstdc___nonshared_la_LIBADD)
+libstdc___nonshared_la_LDFLAGS = -static
# Use special rules for the deprecated source files so that they find
# deprecated include files.
@@ -159,6 +164,14 @@ strstream.lo: strstream.cc
strstream.o: strstream.cc
$(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $<
+# Use special rules for libstdc++_nonshared.la files, as -prefer-pic
+# doesn't seem to work for some reason.
+sstream-inst-showmanyc.lo: sstream-inst-showmanyc.cc
+ $(LTCXXCOMPILE) -c $< \
+ && cp -f .libs/sstream-inst-showmanyc.o sstream-inst-showmanyc.o
+sstream-inst-showmanyc.o: sstream-inst-showmanyc.cc
+ $(CXXCOMPILE) -fPIC -DPIC -c $<
+
# Use special rules for the concept-checking instantiations so that all
# the generated template functions are also instantiated. Force the checks
# to be on so that the instantiations are actually seen.
--- libstdc++-v3/src/Makefile.in.jj 2004-04-20 15:55:47.000000000 +0200
+++ libstdc++-v3/src/Makefile.in 2005-07-22 09:06:15.000000000 +0200
@@ -221,7 +221,7 @@ WARN_CXXFLAGS = \
AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
# Cross compiler support.
-toolexeclib_LTLIBRARIES = libstdc++.la
+toolexeclib_LTLIBRARIES = libstdc++.la libstdc++_nonshared.la
# Symbol versioning for shared libraries.
@GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE at version_arg = -Wl,--version-script=libstdc++-symbol.ver
@@ -308,6 +308,13 @@ libstdc___la_LDFLAGS = \
-version-info $(libtool_VERSION) ${version_arg} -lm
+libstdc___nonshared_la_SOURCES = \
+ sstream-inst-showmanyc.cc
+
+libstdc___nonshared_la_LIBADD =
+libstdc___nonshared_la_DEPENDENCIES = $(libstdc___nonshared_la_LIBADD)
+libstdc___nonshared_la_LDFLAGS = -static
+
# Use special rules for the deprecated source files so that they find
# deprecated include files.
GLIBCXX_INCLUDE_DIR = $(glibcxx_builddir)/include
@@ -379,6 +386,8 @@ am__objects_3 = allocator.lo codecvt.lo
$(am__objects_1) $(am__objects_2)
am_libstdc___la_OBJECTS = $(am__objects_3)
libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS)
+am_libstdc___nonshared_la_OBJECTS = sstream-inst-showmanyc.lo
+libstdc___nonshared_la_OBJECTS = $(am_libstdc___nonshared_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp =
@@ -386,10 +395,10 @@ am__depfiles_maybe =
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
-DIST_SOURCES = $(libstdc___la_SOURCES)
+DIST_SOURCES = $(libstdc___la_SOURCES) $(libstdc___nonshared_la_SOURCES)
DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/fragment.am \
Makefile.am
-SOURCES = $(libstdc___la_SOURCES)
+SOURCES = $(libstdc___la_SOURCES) $(libstdc___nonshared_la_SOURCES)
all: all-am
@@ -430,6 +439,8 @@ clean-toolexeclibLTLIBRARIES:
done
libstdc++.la: $(libstdc___la_OBJECTS) $(libstdc___la_DEPENDENCIES)
$(CXXLINK) -rpath $(toolexeclibdir) $(libstdc___la_LDFLAGS) $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) $(LIBS)
+libstdc++_nonshared.la: $(libstdc___nonshared_la_OBJECTS) $(libstdc___nonshared_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(toolexeclibdir) $(libstdc___nonshared_la_LDFLAGS) $(libstdc___nonshared_la_OBJECTS) $(libstdc___nonshared_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT) core *.core
@@ -674,6 +685,14 @@ strstream.lo: strstream.cc
strstream.o: strstream.cc
$(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $<
+# Use special rules for libstdc++_nonshared.la files, as -prefer-pic
+# doesn't seem to work for some reason.
+sstream-inst-showmanyc.lo: sstream-inst-showmanyc.cc
+ $(LTCXXCOMPILE) -c $< \
+ && cp -f .libs/sstream-inst-showmanyc.o sstream-inst-showmanyc.o
+sstream-inst-showmanyc.o: sstream-inst-showmanyc.cc
+ $(CXXCOMPILE) -fPIC -DPIC -c $<
+
# Use special rules for the concept-checking instantiations so that all
# the generated template functions are also instantiated. Force the checks
# to be on so that the instantiations are actually seen.
--- libstdc++-v3/include/std/std_sstream.h.jj 2004-10-04 14:58:25.000000000 +0200
+++ libstdc++-v3/include/std/std_sstream.h 2005-07-21 17:17:16.000000000 +0200
@@ -185,6 +185,18 @@ namespace std
_M_sync(const_cast<char_type*>(_M_string.data()), 0, __len);
}
+ virtual streamsize
+ showmanyc()
+ {
+ streamsize __ret = -1;
+ if (_M_mode & ios_base::in)
+ {
+ _M_update_egptr();
+ __ret = this->egptr() - this->gptr();
+ }
+ return __ret;
+ }
+
// [documentation is inherited]
virtual int_type
underflow();
--- libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc.jj 2003-10-01 12:12:11.000000000 +0200
+++ libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc 2005-07-22 01:22:15.000000000 +0200
@@ -45,7 +45,7 @@ void test03()
std::streamsize d1 = strb_01.in_avail();
std::streamsize d2 = strb_03.in_avail();
VERIFY( d1 ); // non-zero
- VERIFY( !d2 ); // zero, cuz ios_base::out
+ VERIFY( d2 == -1 ); // -1, cuz ios_base::out
VERIFY( d1 != d2 ); //these should be the same
VERIFY( static_cast<std::streamsize>(str_01.length()) == d1 );
VERIFY( strb_01.str() == strb_03.str() ); //ditto
--- libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/1.cc.jj 2003-10-01 12:12:10.000000000 +0200
+++ libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/1.cc 2005-07-22 01:22:04.000000000 +0200
@@ -49,8 +49,8 @@ void test04()
VERIFY( strmof_1 == static_cast<std::streamoff>(str_01.length()) );
VERIFY( strmof_2 == static_cast<std::streamoff>(str_02.length()) );
strmof_1 = strb_03.in_avail();
- // zero cuz write-only, or eof()? zero, from showmany
- VERIFY( strmof_1 == 0 );
+ // zero cuz write-only, or eof() to match basic_filebuf
+ VERIFY( strmof_1 == -1 );
}
int main()
--- libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc.jj 2005-07-22 01:22:04.000000000 +0200
+++ libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc 2005-07-22 01:22:04.000000000 +0200
@@ -0,0 +1,54 @@
+// 2005-06-07 Benjamin Kosnik
+
+// Copyright (C) 2005
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <sstream>
+#include <testsuite_hooks.h>
+#include <stdexcept>
+
+double
+test_stringstream()
+{
+ double result;
+ char* source = "1918";
+ std::stringstream s;
+ s << source;
+
+ std::string tmp = s.str();
+ std::streambuf* sb = s.rdbuf();
+ int i = sb->in_avail();
+
+ if (i)
+ {
+ s >> result;
+ }
+ else
+ {
+ throw std::runtime_error("conversion failed");
+ }
+ return result;
+}
+
+
+int main ()
+{
+ test_stringstream();
+ return 0;
+}
--- libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc.jj 2005-07-22 01:21:41.000000000 +0200
+++ libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc 2005-07-22 01:21:41.000000000 +0200
@@ -0,0 +1,54 @@
+// 2005-06-07 Benjamin Kosnik <bkoz at redhat.com>
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 27.8.1.4 Overridden virtual functions
+
+#include <fstream>
+#include <testsuite_hooks.h>
+
+typedef std::basic_streambuf<char> streambuf_type;
+
+struct testbuf : streambuf_type
+{
+ testbuf() { }
+};
+
+void test05()
+{
+ typedef streambuf_type::int_type int_type;
+ typedef streambuf_type::traits_type traits_type;
+ typedef streambuf_type::pos_type pos_type;
+ typedef streambuf_type::off_type off_type;
+ typedef size_t size_type;
+
+ bool test __attribute__((unused)) = true;
+ std::streamoff strmof_1, strmof_2;
+ testbuf sb01;
+
+ // int in_avail()
+ strmof_1 = sb01.in_avail();
+ VERIFY( strmof_1 == 0 );
+}
+
+int main()
+{
+ test05();
+ return 0;
+}
--- libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc.jj 2005-07-22 01:21:41.000000000 +0200
+++ libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc 2005-07-22 01:21:41.000000000 +0200
@@ -0,0 +1,54 @@
+// 2005-06-07 Benjamin Kosnik <bkoz at redhat.com>
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 27.8.1.4 Overridden virtual functions
+
+#include <fstream>
+#include <testsuite_hooks.h>
+
+typedef std::basic_streambuf<wchar_t> streambuf_type;
+
+struct testbuf : streambuf_type
+{
+ testbuf() { }
+};
+
+void test05()
+{
+ typedef streambuf_type::int_type int_type;
+ typedef streambuf_type::traits_type traits_type;
+ typedef streambuf_type::pos_type pos_type;
+ typedef streambuf_type::off_type off_type;
+ typedef size_t size_type;
+
+ bool test __attribute__((unused)) = true;
+ std::streamoff strmof_1, strmof_2;
+ testbuf sb01;
+
+ // int in_avail()
+ strmof_1 = sb01.in_avail();
+ VERIFY( strmof_1 == 0 );
+}
+
+int main()
+{
+ test05();
+ return 0;
+}
--- libstdc++-v3/testsuite/lib/libstdc++.exp.jj 2005-05-06 12:59:10.000000000 +0200
+++ libstdc++-v3/testsuite/lib/libstdc++.exp 2005-07-22 10:03:52.000000000 +0200
@@ -283,6 +283,7 @@ proc v3_target_compile { source dest typ
# Link the support objects into executables.
if { $type == "executable" } {
set cxx_final [concat $cxx_final ${v3-test_objs}]
+ lappend options "libs=-lstdc++_nonshared"
}
lappend options "compiler=$cxx_final"
gcc34-var-tracking-fix.patch:
Makefile.in | 3 +
dwarf2out.c | 47 +++++++++++++++----------
var-tracking.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++--------
3 files changed, 121 insertions(+), 33 deletions(-)
--- NEW FILE gcc34-var-tracking-fix.patch ---
2005-06-08 Eric Botcazou <ebotcazou at libertysurf.fr>
PR debug/21946
* dwarf2out.c (add_loc_descr_op_piece): Move to the
DWARF2_DEBUGGING_INFO section.
2005-06-07 Jakub Jelinek <jakub at redhat.com>
PR debug/21946
* dwarf2out.c (add_loc_descr_op_piece): New function.
(multiple_reg_loc_descriptor, concat_loc_descriptor,
loc_descriptor): Use it.
* var-tracking.c: Include regs.h and expr.h.
(emit_note_insn_var_location): Skip over pieces where offset
is smaller than previous offset plus previous piece mode size.
Optimize adjacent hard registers or memory locations.
* Makefile.in (var-tracking.o): Depend on $(REGS_H) and $(EXPR_H).
--- gcc/dwarf2out.c.jj 2005-06-07 00:39:11.000000000 +0200
+++ gcc/dwarf2out.c 2005-06-07 00:54:10.000000000 +0200
@@ -3747,6 +3748,7 @@ static dw_die_ref subrange_type_die (tre
static dw_die_ref modified_type_die (tree, int, int, dw_die_ref);
static int type_is_enum (tree);
static unsigned int dbx_reg_number (rtx);
+static void add_loc_descr_op_piece (dw_loc_descr_ref *, int);
static dw_loc_descr_ref reg_loc_descriptor (rtx);
static dw_loc_descr_ref one_reg_loc_descriptor (unsigned int);
static dw_loc_descr_ref multiple_reg_loc_descriptor (rtx, rtx);
@@ -8176,6 +8178,26 @@ dbx_reg_number (rtx rtl)
return DBX_REGISTER_NUMBER (regno);
}
+/* Optionally add a DW_OP_piece term to a location description expression.
+ DW_OP_piece is only added if the location description expression already
+ doesn't end with DW_OP_piece. */
+
+static void
+add_loc_descr_op_piece (dw_loc_descr_ref *list_head, int size)
+{
+ dw_loc_descr_ref loc;
+
+ if (*list_head != NULL)
+ {
+ /* Find the end of the chain. */
+ for (loc = *list_head; loc->dw_loc_next != NULL; loc = loc->dw_loc_next)
+ ;
+
+ if (loc->dw_loc_opc != DW_OP_piece)
+ loc->dw_loc_next = new_loc_descr (DW_OP_piece, size, 0);
+ }
+}
+
/* Return a location descriptor that designates a machine register or
zero if there is none. */
@@ -8235,7 +8257,7 @@ multiple_reg_loc_descriptor (rtx rtl, rt
t = one_reg_loc_descriptor (reg);
add_loc_descr (&loc_result, t);
- add_loc_descr (&loc_result, new_loc_descr (DW_OP_piece, size, 0));
+ add_loc_descr_op_piece (&loc_result, size);
++reg;
}
return loc_result;
@@ -8256,7 +8278,7 @@ multiple_reg_loc_descriptor (rtx rtl, rt
t = one_reg_loc_descriptor (REGNO (XVECEXP (regs, 0, i)));
add_loc_descr (&loc_result, t);
size = GET_MODE_SIZE (GET_MODE (XVECEXP (regs, 0, 0)));
- add_loc_descr (&loc_result, new_loc_descr (DW_OP_piece, size, 0));
+ add_loc_descr_op_piece (&loc_result, size);
}
return loc_result;
}
@@ -8551,14 +8573,10 @@ concat_loc_descriptor (rtx x0, rtx x1)
return 0;
cc_loc_result = x0_ref;
- add_loc_descr (&cc_loc_result,
- new_loc_descr (DW_OP_piece,
- GET_MODE_SIZE (GET_MODE (x0)), 0));
+ add_loc_descr_op_piece (&cc_loc_result, GET_MODE_SIZE (GET_MODE (x0)));
add_loc_descr (&cc_loc_result, x1_ref);
- add_loc_descr (&cc_loc_result,
- new_loc_descr (DW_OP_piece,
- GET_MODE_SIZE (GET_MODE (x1)), 0));
+ add_loc_descr_op_piece (&cc_loc_result, GET_MODE_SIZE (GET_MODE (x1)));
return cc_loc_result;
}
@@ -8619,8 +8637,7 @@ loc_descriptor (rtx rtl, bool can_use_fb
loc_result = loc_descriptor (XEXP (RTVEC_ELT (par_elems, 0), 0),
can_use_fbreg);
mode = GET_MODE (XEXP (RTVEC_ELT (par_elems, 0), 0));
- add_loc_descr (&loc_result,
- new_loc_descr (DW_OP_piece, GET_MODE_SIZE (mode), 0));
+ add_loc_descr_op_piece (&loc_result, GET_MODE_SIZE (mode));
for (i = 1; i < num_elem; i++)
{
dw_loc_descr_ref temp;
@@ -8629,9 +8646,7 @@ loc_descriptor (rtx rtl, bool can_use_fb
can_use_fbreg);
add_loc_descr (&loc_result, temp);
mode = GET_MODE (XEXP (RTVEC_ELT (par_elems, i), 0));
- add_loc_descr (&loc_result,
- new_loc_descr (DW_OP_piece,
- GET_MODE_SIZE (mode), 0));
+ add_loc_descr_op_piece (&loc_result, GET_MODE_SIZE (mode));
}
}
break;
@@ -9930,8 +9945,7 @@ add_location_or_const_value_attribute (d
/* Create the first one, so we have something to add to. */
descr = loc_descriptor (XEXP (RTVEC_ELT (par_elems, 0), 0), true);
mode = GET_MODE (XEXP (RTVEC_ELT (par_elems, 0), 0));
- add_loc_descr (&descr,
- new_loc_descr (DW_OP_piece, GET_MODE_SIZE (mode), 0));
+ add_loc_descr_op_piece (&descr, GET_MODE_SIZE (mode));
for (i = 1; i < num_elem; i++)
{
dw_loc_descr_ref temp;
@@ -9939,9 +9953,7 @@ add_location_or_const_value_attribute (d
temp = loc_descriptor (XEXP (RTVEC_ELT (par_elems, i), 0), true);
add_loc_descr (&descr, temp);
mode = GET_MODE (XEXP (RTVEC_ELT (par_elems, i), 0));
- add_loc_descr (&descr,
- new_loc_descr (DW_OP_piece,
- GET_MODE_SIZE (mode), 0));
+ add_loc_descr_op_piece (&descr, GET_MODE_SIZE (mode));
}
}
add_AT_location_description (die, DW_AT_location, descr);
--- gcc/var-tracking.c.jj 2005-06-07 00:39:11.000000000 +0200
+++ gcc/var-tracking.c 2005-06-07 00:52:15.000000000 +0200
@@ -102,6 +102,8 @@
#include "alloc-pool.h"
#include "fibheap.h"
#include "hashtab.h"
+#include "regs.h"
+#include "expr.h"
/* Type of micro operation. */
enum micro_operation_type
@@ -2185,10 +2187,12 @@ emit_note_insn_var_location (void **varp
rtx insn = ((emit_note_data *)data)->insn;
enum emit_note_where where = ((emit_note_data *)data)->where;
rtx note;
- int i;
+ int i, j, n_var_parts;
bool complete;
HOST_WIDE_INT last_limit;
tree type_size_unit;
+ HOST_WIDE_INT offsets[MAX_VAR_PARTS];
+ rtx loc[MAX_VAR_PARTS];
#ifdef ENABLE_CHECKING
if (!var->decl)
@@ -2197,16 +2201,90 @@ emit_note_insn_var_location (void **varp
complete = true;
last_limit = 0;
+ n_var_parts = 0;
for (i = 0; i < var->n_var_parts; i++)
{
+ enum machine_mode mode, wider_mode;
+
if (last_limit < var->var_part[i].offset)
{
complete = false;
break;
}
- last_limit
- = (var->var_part[i].offset
- + GET_MODE_SIZE (GET_MODE (var->var_part[i].loc_chain->loc)));
+ else if (last_limit > var->var_part[i].offset)
+ continue;
+ offsets[n_var_parts] = var->var_part[i].offset;
+ loc[n_var_parts] = var->var_part[i].loc_chain->loc;
+ mode = GET_MODE (loc[n_var_parts]);
+ last_limit = offsets[n_var_parts] + GET_MODE_SIZE (mode);
+
+ /* Attempt to merge adjacent registers or memory. */
+ wider_mode = GET_MODE_WIDER_MODE (mode);
+ for (j = i + 1; j < var->n_var_parts; j++)
+ if (last_limit <= var->var_part[j].offset)
+ break;
+ if (j < var->n_var_parts
+ && wider_mode != VOIDmode
+ && GET_CODE (loc[n_var_parts])
+ == GET_CODE (var->var_part[j].loc_chain->loc)
+ && mode == GET_MODE (var->var_part[j].loc_chain->loc)
+ && last_limit == var->var_part[j].offset)
+ {
+ rtx new_loc = NULL;
+ rtx loc2 = var->var_part[j].loc_chain->loc;
+
+ if (REG_P (loc[n_var_parts])
+ && HARD_REGNO_NREGS (REGNO (loc[n_var_parts]), mode) * 2
+ == HARD_REGNO_NREGS (REGNO (loc[n_var_parts]), wider_mode)
+ && REGNO (loc[n_var_parts])
+ + HARD_REGNO_NREGS (REGNO (loc[n_var_parts]), mode)
+ == REGNO (loc2))
+ {
+ if (! WORDS_BIG_ENDIAN && ! BYTES_BIG_ENDIAN)
+ new_loc = simplify_subreg (wider_mode, loc[n_var_parts],
+ mode, 0);
+ else if (WORDS_BIG_ENDIAN && BYTES_BIG_ENDIAN)
+ new_loc = simplify_subreg (wider_mode, loc2, mode, 0);
+ if (new_loc)
+ {
+ if (!REG_P (new_loc)
+ || REGNO (new_loc) != REGNO (loc[n_var_parts]))
+ new_loc = NULL;
+ else
+ REG_ATTRS (new_loc) = REG_ATTRS (loc[n_var_parts]);
+ }
+ }
+ else if (GET_CODE (loc[n_var_parts]) == MEM
+ && GET_CODE (XEXP (loc2, 0)) == PLUS
+ && GET_CODE (XEXP (XEXP (loc2, 0), 0)) == REG
+ && GET_CODE (XEXP (XEXP (loc2, 0), 1)) == CONST_INT)
+ {
+ if ((GET_CODE (XEXP (loc[n_var_parts], 0)) == REG
+ && rtx_equal_p (XEXP (loc[n_var_parts], 0),
+ XEXP (XEXP (loc2, 0), 0))
+ && INTVAL (XEXP (XEXP (loc2, 0), 1))
+ == GET_MODE_SIZE (mode))
+ || (GET_CODE (XEXP (loc[n_var_parts], 0)) == PLUS
+ && GET_CODE (XEXP (XEXP (loc[n_var_parts], 0), 1))
+ == CONST_INT
+ && rtx_equal_p (XEXP (XEXP (loc[n_var_parts], 0), 0),
+ XEXP (XEXP (loc2, 0), 0))
+ && INTVAL (XEXP (XEXP (loc[n_var_parts], 0), 1))
+ + GET_MODE_SIZE (mode)
+ == INTVAL (XEXP (XEXP (loc2, 0), 1))))
+ new_loc = adjust_address_nv (loc[n_var_parts],
+ wider_mode, 0);
+ }
+
+ if (new_loc)
+ {
+ loc[n_var_parts] = new_loc;
+ mode = wider_mode;
+ last_limit = offsets[n_var_parts] + GET_MODE_SIZE (mode);
+ i = j;
+ }
+ }
+ ++n_var_parts;
}
type_size_unit = TYPE_SIZE_UNIT (TREE_TYPE (var->decl));
if ((unsigned HOST_WIDE_INT) last_limit < TREE_INT_CST_LOW (type_size_unit))
@@ -2222,26 +2300,24 @@ emit_note_insn_var_location (void **varp
NOTE_VAR_LOCATION (note) = gen_rtx_VAR_LOCATION (VOIDmode, var->decl,
NULL_RTX);
}
- else if (var->n_var_parts == 1)
+ else if (n_var_parts == 1)
{
rtx expr_list
- = gen_rtx_EXPR_LIST (VOIDmode,
- var->var_part[0].loc_chain->loc,
- GEN_INT (var->var_part[0].offset));
+ = gen_rtx_EXPR_LIST (VOIDmode, loc[0], GEN_INT (offsets[0]));
NOTE_VAR_LOCATION (note) = gen_rtx_VAR_LOCATION (VOIDmode, var->decl,
expr_list);
}
- else if (var->n_var_parts)
+ else if (n_var_parts)
{
- rtx argp[MAX_VAR_PARTS];
rtx parallel;
- for (i = 0; i < var->n_var_parts; i++)
- argp[i] = gen_rtx_EXPR_LIST (VOIDmode, var->var_part[i].loc_chain->loc,
- GEN_INT (var->var_part[i].offset));
+ for (i = 0; i < n_var_parts; i++)
+ loc[i]
+ = gen_rtx_EXPR_LIST (VOIDmode, loc[i], GEN_INT (offsets[i]));
+
parallel = gen_rtx_PARALLEL (VOIDmode,
- gen_rtvec_v (var->n_var_parts, argp));
+ gen_rtvec_v (n_var_parts, loc));
NOTE_VAR_LOCATION (note) = gen_rtx_VAR_LOCATION (VOIDmode, var->decl,
parallel);
}
--- gcc/Makefile.in.jj 2005-06-07 00:39:11.000000000 +0200
+++ gcc/Makefile.in 2005-06-07 00:55:12.000000000 +0200
@@ -1693,7 +1693,8 @@ df.o : df.c $(CONFIG_H) $(SYSTEM_H) core
$(BASIC_BLOCK_H) df.h $(FIBHEAP_H)
var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h flags.h \
- $(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H)
+ $(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
+ $(REGS_H) $(EXPR_H)
conflict.o : conflict.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(OBSTACK_H) \
$(HASHTAB_H) $(RTL_H) hard-reg-set.h $(BASIC_BLOCK_H)
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
gcc34-vsb-stack.patch:
Makefile.in | 3
c-pragma.c | 22 ++--
doc/invoke.texi | 4
testsuite/gcc.dg/visibility-d.c | 205 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 222 insertions(+), 12 deletions(-)
--- NEW FILE gcc34-vsb-stack.patch ---
2005-07-22 Jakub Jelinek <jakub at redhat.com>
PR middle-end/20303
* c-pragma.c: Include varray.h.
(visibility_stack): New variable.
(handle_pragma_visibility): Use VARRAY.
* Makefile.in (c-pragma.o): Depend on varray.h.
* doc/invoke.texi: Remove the nested visibility push limit.
* gcc.dg/visibility-d.c: New test.
--- gcc/Makefile.in.jj 2005-07-21 15:31:14.000000000 +0200
+++ gcc/Makefile.in 2005-07-22 11:20:35.000000000 +0200
@@ -1345,7 +1345,8 @@ c-aux-info.o : c-aux-info.c $(CONFIG_H)
c-convert.o : c-convert.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
flags.h toplev.h $(C_COMMON_H) real.h
c-pragma.o: c-pragma.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
- function.h c-pragma.h toplev.h output.h $(GGC_H) $(TM_P_H) $(C_COMMON_H) gt-c-pragma.h
+ function.h c-pragma.h toplev.h output.h $(GGC_H) $(TM_P_H) $(C_COMMON_H) \
+ varray.h gt-c-pragma.h
graph.o: graph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) toplev.h flags.h output.h \
$(RTL_H) function.h hard-reg-set.h $(BASIC_BLOCK_H) graph.h
sbitmap.o: sbitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) flags.h \
--- gcc/doc/invoke.texi.jj 2005-06-07 00:39:11.000000000 +0200
+++ gcc/doc/invoke.texi 2005-07-22 12:03:55.000000000 +0200
@@ -11418,8 +11418,8 @@ For those adding visibility support to e
@samp{#pragma GCC visibility} of use. This works by you enclosing
the declarations you wish to set visibility for with (for example)
@samp{#pragma GCC visibility push(hidden)} and
- at samp{#pragma GCC visibility pop}. These can be nested up to sixteen
-times. Bear in mind that symbol visibility should be viewed @strong{as
+ at samp{#pragma GCC visibility pop}.
+Bear in mind that symbol visibility should be viewed @strong{as
part of the API interface contract} and thus all new code should
always specify visibility when it is not the default ie; declarations
only for use within the local DSO should @strong{always} be marked explicitly
--- gcc/c-pragma.c.jj 2004-09-01 18:16:57.000000000 +0200
+++ gcc/c-pragma.c 2005-07-22 11:42:24.000000000 +0200
@@ -34,6 +34,7 @@ Software Foundation, 59 Temple Place - S
#include "c-common.h"
#include "output.h"
#include "tm_p.h"
+#include "varray.h"
#define GCC_BAD(msgid) do { warning (msgid); return; } while (0)
#define GCC_BAD2(msgid, arg) do { warning (msgid, arg); return; } while (0)
@@ -483,6 +484,8 @@ maybe_apply_renaming_pragma (tree decl,
#ifdef HANDLE_PRAGMA_VISIBILITY
+static GTY(()) varray_type visibility_stack;
+
static void handle_pragma_visibility (cpp_reader *);
/* Sets the default visibility for symbols to something other than that
@@ -490,11 +493,13 @@ static void handle_pragma_visibility (cp
static void
handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED)
{ /* Form is #pragma GCC visibility push(hidden)|pop */
- static int visstack [16], visidx;
tree x;
enum cpp_ttype token;
enum { bad, push, pop } action = bad;
+ if (!visibility_stack)
+ VARRAY_INT_INIT (visibility_stack, 32, "visibility_stack");
+
token = c_lex (&x);
if (token == CPP_NAME)
{
@@ -510,14 +515,17 @@ handle_pragma_visibility (cpp_reader *du
{
if (pop == action)
{
- if (!visidx)
+ int visidx = VARRAY_ACTIVE_SIZE (visibility_stack);
+
+ if (visidx <= 0)
{
GCC_BAD ("No matching push for '#pragma GCC visibility pop'");
}
else
{
- default_visibility = visstack[--visidx];
- visibility_options.inpragma = (visidx>0);
+ default_visibility = VARRAY_INT (visibility_stack, visidx - 1);
+ VARRAY_POP (visibility_stack);
+ visibility_options.inpragma = (visidx>1);
}
}
else
@@ -529,14 +537,10 @@ handle_pragma_visibility (cpp_reader *du
{
GCC_BAD ("malformed #pragma GCC visibility push");
}
- else if (visidx >= 16)
- {
- GCC_BAD ("No more than sixteen #pragma GCC visibility pushes allowed at once");
- }
else
{
const char *str = IDENTIFIER_POINTER (x);
- visstack[visidx++] = default_visibility;
+ VARRAY_PUSH_INT (visibility_stack, (int) default_visibility);
if (!strcmp (str, "default"))
default_visibility = VISIBILITY_DEFAULT;
else if (!strcmp (str, "internal"))
--- gcc/testsuite/gcc.dg/visibility-d.c.jj 2005-07-22 11:28:44.000000000 +0200
+++ gcc/testsuite/gcc.dg/visibility-d.c 2005-07-22 11:59:35.000000000 +0200
@@ -0,0 +1,205 @@
+/* PR middle-end/20303 */
+/* Test nesting of #pragma GCC visibility. */
+/* { dg-do compile } */
+/* { dg-require-visibility "" } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo00" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo01" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo02" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo03" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo04" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo05" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo06" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo07" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo08" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo09" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo10" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo11" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo12" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo13" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo14" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo15" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo16" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo17" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo18" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo19" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo20" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo21" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo22" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo23" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo24" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo25" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo26" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo27" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo28" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo29" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo30" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo31" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo32" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo33" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo34" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo35" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo36" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo37" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo38" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo39" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo40" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo41" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo42" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo43" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo44" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo45" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo46" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo47" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo48" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo49" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo50" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo51" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo52" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo53" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo54" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo55" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo56" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo57" } } */
+/* { dg-final { scan-assembler-not "\\.hidden\[^\\n\]foo58" } } */
+/* { dg-final { scan-assembler "\\.hidden\[^\\n\]foo59" } } */
+
+#pragma GCC visibility push(default)
+void foo00();
+#pragma GCC visibility push(hidden)
+void foo01();
+#pragma GCC visibility push(default)
+void foo02();
+#pragma GCC visibility push(hidden)
+void foo03();
+#pragma GCC visibility push(default)
+void foo04();
+#pragma GCC visibility push(default)
+void foo05();
+#pragma GCC visibility push(default)
+void foo06();
+#pragma GCC visibility push(hidden)
+void foo07();
+#pragma GCC visibility push(default)
+void foo08();
+#pragma GCC visibility push(hidden)
+void foo09();
+#pragma GCC visibility push(default)
+void foo10();
+#pragma GCC visibility push(hidden)
+void foo11();
+#pragma GCC visibility push(hidden)
+void foo12();
+#pragma GCC visibility push(hidden)
+void foo13();
+#pragma GCC visibility push(default)
+void foo14();
+#pragma GCC visibility push(hidden)
+void foo15();
+#pragma GCC visibility push(default)
+void foo16();
+#pragma GCC visibility push(hidden)
+void foo17();
+#pragma GCC visibility push(default)
+void foo18();
+#pragma GCC visibility push(hidden)
+void foo19();
+#pragma GCC visibility push(default)
+void foo20();
+#pragma GCC visibility push(hidden)
+void foo21();
+#pragma GCC visibility push(default)
+void foo22();
+#pragma GCC visibility push(hidden)
+void foo23();
+#pragma GCC visibility push(default)
+void foo24();
+#pragma GCC visibility push(hidden)
+void foo25();
+#pragma GCC visibility push(default)
+void foo26();
+#pragma GCC visibility push(hidden)
+void foo27();
+#pragma GCC visibility push(default)
+void foo28();
+#pragma GCC visibility push(hidden)
+void foo29();
+#pragma GCC visibility pop
+void foo30();
+#pragma GCC visibility pop
+void foo31();
+#pragma GCC visibility pop
+void foo32();
+#pragma GCC visibility pop
+void foo33();
+#pragma GCC visibility pop
+void foo34();
+#pragma GCC visibility pop
+void foo35();
+#pragma GCC visibility pop
+void foo36();
+#pragma GCC visibility pop
+void foo37();
+#pragma GCC visibility pop
+void foo38();
+#pragma GCC visibility pop
+void foo39();
+#pragma GCC visibility pop
+void foo40();
+#pragma GCC visibility pop
+void foo41();
+#pragma GCC visibility pop
+void foo42();
+#pragma GCC visibility pop
+void foo43();
+#pragma GCC visibility pop
+void foo44();
+#pragma GCC visibility pop
+void foo45();
+#pragma GCC visibility pop
+void foo46();
+#pragma GCC visibility pop
+void foo47();
+#pragma GCC visibility pop
+void foo48();
+#pragma GCC visibility pop
+void foo49();
+#pragma GCC visibility pop
+void foo50();
+#pragma GCC visibility pop
+void foo51();
+#pragma GCC visibility pop
+void foo52();
+#pragma GCC visibility pop
+void foo53();
+#pragma GCC visibility pop
+void foo54();
+#pragma GCC visibility pop
+void foo55();
+#pragma GCC visibility pop
+void foo56();
+#pragma GCC visibility pop
+void foo57();
+#pragma GCC visibility pop
+void foo58();
+#pragma GCC visibility push (hidden)
+void foo59();
+#pragma GCC visibility pop
+#pragma GCC visibility pop
+
+#define D(N) \
+void foo##N##0() { } \
+void foo##N##1() { } \
+void foo##N##2() { } \
+void foo##N##3() { } \
+void foo##N##4() { } \
+void foo##N##5() { } \
+void foo##N##6() { } \
+void foo##N##7() { } \
+void foo##N##8() { } \
+void foo##N##9() { }
+D(0)
+D(1)
+D(2)
+D(3)
+D(4)
+D(5)
Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc/FC-3/.cvsignore,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- .cvsignore 14 Mar 2005 17:50:24 -0000 1.60
+++ .cvsignore 22 Jul 2005 12:21:40 -0000 1.61
@@ -1 +1 @@
-gcc-3.4.3-20050228.tar.bz2
+gcc-3.4.4-20050721.tar.bz2
Index: gcc34.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/FC-3/gcc34.spec,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- gcc34.spec 14 Mar 2005 17:50:24 -0000 1.31
+++ gcc34.spec 22 Jul 2005 12:21:40 -0000 1.32
@@ -1,6 +1,6 @@
-%define DATE 20050228
+%define DATE 20050721
%define gcc_version 3.4.3
-%define gcc_release 22.fc3
+%define gcc_release 2
%define _unpackaged_files_terminate_build 0
%define multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} alpha ia64 ppc x86_64 s390 sparc sparc64
@@ -24,8 +24,11 @@
%define jpackage_priority 100
Summary: Various compilers (C, C++, Objective-C, Java, ...)
Name: gcc
-Version: %{gcc_version}
-Release: %{gcc_release}
+Version: 3.4.4
+Release: 2.fc3
+%if "%{version}" != "%{gcc_version}"
+%define gcc_provides 3.4.3-26
+%endif
License: GPL
Group: Development/Languages
Source0: gcc-%{version}-%{DATE}.tar.bz2
@@ -61,8 +64,8 @@
Obsoletes: egcs
Obsoletes: gcc-chill
%if !%{build_ada}
-Obsoletes: gcc-gnat < %{version}-%{release}
-Obsoletes: libgnat < %{version}-%{release}
+Obsoletes: gcc-gnat < %{gcc_version}
+Obsoletes: libgnat < %{gcc_version}
%endif
%ifarch sparc sparc64
Obsoletes: egcs64
@@ -71,6 +74,9 @@
Provides: gcc34
Prereq: /sbin/install-info
AutoReq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc = %{gcc_provides}
+%endif
Patch1: gcc34-multi32-hack.patch
Patch2: gcc34-ice-hack.patch
@@ -79,8 +85,14 @@
Patch5: gcc34-java-nomulti.patch
Patch6: gcc34-gnuc-rh-release.patch
Patch7: gcc34-pr16104.patch
-Patch8: gcc34-c++-pr19916.patch
-Patch9: gcc34-c++-redecl.patch
+Patch8: gcc34-var-tracking-fix.patch
+Patch9: gcc34-i386-movsi-insv.patch
+Patch10: gcc34-pr18925.patch
+Patch11: gcc34-pr14084.patch
+Patch12: gcc34-hashtab-recursion.patch
+Patch13: gcc34-pr20191.patch
+Patch14: gcc34-pr21955.patch
+Patch15: gcc34-vsb-stack.patch
%define _gnu %{nil}
%ifarch sparc
@@ -101,6 +113,9 @@
Summary: GCC version 3.4 shared support library
Group: System Environment/Libraries
Autoreq: false
+%if "%{version}" != "%{gcc_version}"
+Provides: libgcc = %{gcc_provides}
+%endif
%description -n libgcc
This package contains GCC shared support library which is needed
@@ -116,6 +131,9 @@
Obsoletes: gcc34-c++
Provides: gcc34-c++
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-c++ = %{gcc_provides}
+%endif
%description c++
This package adds C++ support to the GNU Compiler Collection.
@@ -129,6 +147,9 @@
Obsoletes: libstdc++34
Provides: libstdc++34
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: libstdc++ = %{gcc_provides}
+%endif
%description -n libstdc++
The libstdc++ package contains a rewritten standard compliant GCC Standard
@@ -142,6 +163,9 @@
Obsoletes: libstdc++34-devel
Provides: libstdc++34-devel
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: libstdc++-devel = %{gcc_provides}
+%endif
%description -n libstdc++-devel
This is the GNU implementation of the standard C++ libraries. This
@@ -155,6 +179,9 @@
Requires: libobjc = %{version}-%{release}
Obsoletes: gcc3-objc
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-objc = %{gcc_provides}
+%endif
%description objc
gcc-objc provides Objective-C support for the GCC.
@@ -165,6 +192,9 @@
Summary: Objective-C runtime
Group: System Environment/Libraries
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: libobjc = %{gcc_provides}
+%endif
%description -n libobjc
This package contains Objective-C shared library which is needed to run
@@ -178,6 +208,9 @@
Prereq: /sbin/install-info
Obsoletes: gcc3-g77
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-g77 = %{gcc_provides}
+%endif
%description g77
The gcc-g77 package provides support for compiling Fortran 77
@@ -187,6 +220,9 @@
Summary: Fortran 77 runtime
Group: System Environment/Libraries
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: libf2c = %{gcc_provides}
+%endif
%description -n libf2c
This package contains Fortran 77 shared library which is needed to run
@@ -202,6 +238,9 @@
Provides: gcc34-java
Prereq: /sbin/install-info
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-java = %{gcc_provides}
+%endif
%description java
This package adds support for compiling Java(tm) programs and
@@ -225,6 +264,9 @@
# Kaffe includes jar too
Conflicts: kaffe
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: libgcj = %{gcc_provides}
+%endif
%description -n libgcj
The Java(tm) runtime library. You will need this package to run your Java
@@ -238,6 +280,9 @@
Obsoletes: libgcj34-devel
Provides: libgcj34-devel
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: libgcj-devel = %{gcc_provides}
+%endif
%description -n libgcj-devel
The Java(tm) static libraries and C header files. You will need this
@@ -248,6 +293,9 @@
Group: Development/Languages
Requires: gcc = %{version}-%{release}, %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-sparc32 = %{gcc_provides}
+%endif
%description sparc32
This package contains the GNU C compiler which only supports generating
@@ -261,6 +309,9 @@
Requires: gcc-c++ = %{version}-%{release}, gcc-sparc32 = %{version}-%{release}
Requires: %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-c++-sparc32 = %{gcc_provides}
+%endif
%description c++-sparc32
This package contains the GNU C++ compiler which only supports generating
@@ -273,6 +324,9 @@
Group: Development/Languages
Requires: gcc = %{version}-%{release}, %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-ppc32 = %{gcc_provides}
+%endif
%description ppc32
This package contains the GNU C compiler which only supports generating
@@ -286,6 +340,9 @@
Requires: gcc-c++ = %{version}-%{release}, gcc-ppc32 = %{version}-%{release}
Requires: %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-c++-ppc32 = %{gcc_provides}
+%endif
%description c++-ppc32
This package contains the GNU C++ compiler which only supports generating
@@ -301,6 +358,9 @@
Obsoletes: gnupro
%endif
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: cpp = %{gcc_provides}
+%endif
%description -n cpp
Cpp is the GNU C-Compatible Compiler Preprocessor.
@@ -331,6 +391,9 @@
Obsoletes: gnat-devel, gcc3-gnat
Prereq: /sbin/install-info
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: gcc-gnat = %{gcc_provides}
+%endif
%description gnat
GNAT is a GNU Ada 95 front-end to GCC. This package includes development tools,
@@ -341,6 +404,9 @@
Group: System Environment/Libraries
Obsoletes: gnat libgnat3
Autoreq: true
+%if "%{version}" != "%{gcc_version}"
+Provides: libgnat = %{gcc_provides}
+%endif
%description -n libgnat
GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries,
@@ -361,11 +427,17 @@
%patch5 -p0 -b .java-nomulti~
%patch6 -p0 -b .gnuc-rh-release~
%patch7 -p0 -b .pr16104~
-%patch8 -p0 -b .c++-pr19916~
-%patch9 -p0 -b .c++-redecl~
+%patch8 -p0 -b .var-tracking-fix~
+%patch9 -p0 -b .i386-movsi-insv~
+%patch10 -p0 -b .pr18925~
+%patch11 -p0 -b .pr14084~
+%patch12 -p0 -b .hashtab-recursion~
+%patch13 -p0 -b .pr20191~
+%patch14 -p0 -b .pr21955~
+%patch15 -p0 -b .vsb-stack~
-perl -pi -e 's/3\.4\.4/3.4.3/' gcc/version.c
-perl -pi -e 's/"%{gcc_version}"/"%{gcc_version} \(release\)"/' gcc/version.c
+perl -pi -e 's/3\.4\.5/3.4.4/' gcc/version.c
+perl -pi -e 's/"%{version}"/"%{version} \(release\)"/' gcc/version.c
perl -pi -e 's/\((prerelease|experimental|release|Red Hat[^)]*)\)/\(Red Hat %{version}-%{gcc_release}\)/' gcc/version.c
# Misdesign in libstdc++
@@ -556,8 +628,8 @@
chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat*
%endif
-FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
cp -a %{gcc_target_platform}/libiberty/c++filt $RPM_BUILD_ROOT%{_prefix}/bin/c++filt
chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c++filt
@@ -574,7 +646,7 @@
cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
if ! diff -up $cxxconfig $i; then
- cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h <<EOF
+ cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{version}/%{gcc_target_platform}/bits/c++config.h <<EOF
#ifndef _CPP_CPPCONFIG_WRAPPER
#define _CPP_CPPCONFIG_WRAPPER 1
#include <bits/wordsize.h>
@@ -599,10 +671,10 @@
%ifarch sparc ppc
# Install the sparc/ppc -m32 only compilers
-FULLPATH32=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}
-FULLEPATH32=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+FULLPATH32=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{_target_platform}/%{version}
+FULLEPATH32=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{_target_platform}/%{version}
mkdir -p $FULLPATH32 $FULLEPATH32
-ln -sf %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include \
+ln -sf %{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}/include \
$FULLPATH32/
install -m 755 gcc32/gcc/cc1 $FULLEPATH32/
install -m 755 gcc32/gcc/cc1plus $FULLEPATH32/
@@ -610,8 +682,8 @@
$RPM_BUILD_ROOT%{_prefix}/bin/%{_target_platform}-gcc
%endif
%ifarch sparc ppc
-cp -al $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform} \
- $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{_target_platform}
+cp -al $RPM_BUILD_ROOT%{_prefix}/include/c++/%{version}/%{gcc_target_platform} \
+ $RPM_BUILD_ROOT%{_prefix}/include/c++/%{version}/%{_target_platform}
%endif
%ifarch sparc64
ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
@@ -649,9 +721,9 @@
fi
mkdir -p $RPM_BUILD_ROOT/%{_lib}
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{version}-%{DATE}.so.1
+chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{version}-%{DATE}.so.1
+ln -sf libgcc_s-%{version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1
ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
%ifarch sparc ppc
ln -sf /lib64/libgcc_s.so.1 $FULLPATH/libgcc_s_64.so
@@ -676,7 +748,8 @@
pushd $FULLPATH
if [ "%{_lib}" = "lib" ]; then
ln -sf ../../../libobjc.so.1 libobjc.so
-ln -sf ../../../libstdc++.so.6.* libstdc++.so
+ln -sf ../../../libstdc++.so.6.* libstdc++_shared.so
+echo 'GROUP ( -lstdc++_nonshared -lstdc++_shared )' > libstdc++.so
%if %{build_java}
ln -sf ../../../libgcj.so.5.* libgcj.so
ln -sf ../../../lib-gnu-java-awt-peer-gtk.so.5.* lib-gnu-java-awt-peer-gtk.so
@@ -694,7 +767,8 @@
%endif
else
ln -sf ../../../../%{_lib}/libobjc.so.1 libobjc.so
-ln -sf ../../../../%{_lib}/libstdc++.so.6.* libstdc++.so
+ln -sf ../../../../%{_lib}/libstdc++.so.6.* libstdc++_shared.so
+echo 'GROUP ( -lstdc++_nonshared -lstdc++_shared )' > libstdc++.so
%if %{build_java}
ln -sf ../../../../%{_lib}/libgcj.so.5.* libgcj.so
ln -sf ../../../../%{_lib}/lib-gnu-java-awt-peer-gtk.so.5.* lib-gnu-java-awt-peer-gtk.so
@@ -713,13 +787,15 @@
fi
mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++_nonshared.*a .
mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libg2c.*a .
mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libfrtbegin.*a .
mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a .
%ifarch sparc ppc
ln -sf ../../../../../lib64/libobjc.so.1 64/libobjc.so
-ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | sed s~/lib/~/lib64/~` 64/libstdc++.so
+ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | sed s~/lib/~/lib64/~` 64/libstdc++_shared.so
+echo 'GROUP ( -lstdc++_nonshared -lstdc++_shared )' > 64/libstdc++.so
if [ "%{build_java}" -gt 0 ]; then
ln -sf ../`echo ../../../../lib/libgcj.so.5.* | sed s~/lib/~/lib64/~` 64/libgcj.so
ln -sf ../`echo ../../../../lib/lib-gnu-java-awt-peer-gtk.so.5.* | sed s~/lib/~/lib64/~` 64/lib-gnu-java-awt-peer-gtk.so
@@ -728,6 +804,7 @@
fi
ln -sf ../`echo ../../../../lib/libg2c.so.0.* | sed s~/lib/~/lib64/~` 64/libg2c.so
mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libstdc++_nonshared.*a 64/
mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libg2c.*a 64/
mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libfrtbegin.*a 64/
mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/
@@ -748,7 +825,8 @@
%ifarch %{multilib_64_archs}
mkdir -p 32
ln -sf ../../../../libobjc.so.1 32/libobjc.so
-ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | sed s~/../lib64/~/~` 32/libstdc++.so
+ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | sed s~/../lib64/~/~` 32/libstdc++_shared.so
+echo 'GROUP ( -lstdc++_nonshared -lstdc++_shared )' > 32/libstdc++.so
if [ "%{build_java}" -gt 0 ]; then
ln -sf ../`echo ../../../../lib64/libgcj.so.5.* | sed s~/../lib64/~/~` 32/libgcj.so
ln -sf ../`echo ../../../../lib64/lib-gnu-java-awt-peer-gtk.so.5.* | sed s~/../lib64/~/~` 32/lib-gnu-java-awt-peer-gtk.so
@@ -757,6 +835,7 @@
fi
ln -sf ../`echo ../../../../lib64/libg2c.so.0.* | sed s~/../lib64/~/~` 32/libg2c.so
mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libstdc++_nonshared.*a 32/
mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libg2c.*a 32/
mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libfrtbegin.*a 32/
mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/
@@ -776,12 +855,12 @@
fi
%else
%ifarch %{multilib_64_archs}
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{version}/libstdc++.a 32/libstdc++.a
if [ "%{build_java}" -gt 0 ]; then
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj.a 32/libgcj.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/lib-gnu-java-awt-peer-gtk.a 32/lib-gnu-java-awt-peer-gtk.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/lib-org-w3c-dom.a 32/lib-org-w3c-dom.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/lib-org-xml-sax.a 32/lib-org-xml-sax.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{version}/libgcj.a 32/libgcj.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{version}/lib-gnu-java-awt-peer-gtk.a 32/lib-gnu-java-awt-peer-gtk.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{version}/lib-org-w3c-dom.a 32/lib-org-w3c-dom.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{version}/lib-org-xml-sax.a 32/lib-org-xml-sax.a
fi
%endif
%endif
@@ -844,6 +923,23 @@
gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
+%if "%{version}" != "%{gcc_version}"
+mv -f $RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/{%{version},%{gcc_version}}
+ln -sf %{gcc_version} $RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/{%{version},%{gcc_version}}
+ln -sf %{gcc_version} $RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+mv -f $RPM_BUILD_ROOT%{_prefix}/include/c++/{%{version},%{gcc_version}}
+ln -sf %{gcc_version} $RPM_BUILD_ROOT%{_prefix}/include/c++/%{version}
+mv -f $RPM_BUILD_ROOT%{_prefix}/share/java/libgcj-{%{version},%{gcc_version}}.jar
+ln -sf libgcj-%{gcc_version}.jar $RPM_BUILD_ROOT%{_prefix}/share/java/libgcj-%{version}.jar
+%ifarch sparc ppc
+mv -f $RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{_target_platform}/{%{version},%{gcc_version}}
+ln -sf %{gcc_version} $RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{_target_platform}/%{version}
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{_target_platform}/{%{version},%{gcc_version}}
+ln -sf %{gcc_version} $RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{_target_platform}/%{version}
+%endif
+%endif
+
cd ..
%find_lang %{name}
@@ -983,9 +1079,15 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h
@@ -1047,11 +1149,14 @@
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
+%endif
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1
%files -n libgcc
%defattr(-,root,root)
-/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+/%{_lib}/libgcc_s-%{version}-%{DATE}.so.1
/%{_lib}/libgcc_s.so.1
%{_prefix}/sbin/libgcc_post_upgrade
%doc gcc/COPYING.LIB
@@ -1066,24 +1171,36 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
+%endif
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1plus
%ifarch sparc ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++_shared.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++_nonshared.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a
%endif
%ifarch %{multilib_64_archs}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++_shared.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++_nonshared.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a
%endif
%ifarch sparc ppc %{multilib_64_archs}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++_shared.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++_nonshared.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
%endif
%ifarch sparc sparc64 ppc ppc64
@@ -1101,6 +1218,9 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+%endif
%ifarch sparc ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++.a
@@ -1114,6 +1234,8 @@
%endif
%ifnarch sparc ppc %{multilib_64_archs}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++_shared.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++_nonshared.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
%endif
%doc libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/docs/html/
@@ -1123,9 +1245,15 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/objc
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1obj
@@ -1157,9 +1285,15 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f771
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libfrtbegin.a
@@ -1199,9 +1333,15 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
+%endif
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so
@@ -1253,6 +1393,9 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec
#%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/gc*.h
@@ -1276,9 +1419,15 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{version}
+%endif
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{version}
+%endif
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1
@@ -1297,9 +1446,15 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{_target_platform}
%dir %{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{_target_platform}/%{version}
+%endif
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{_target_platform}
%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{_target_platform}/%{version}
+%endif
%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}/cc1
%{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}/include
@@ -1308,6 +1463,9 @@
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{_target_platform}
%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{_target_platform}/%{version}
+%endif
%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}/cc1plus
%endif
@@ -1317,9 +1475,15 @@
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{_target_platform}
%dir %{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/lib/gcc/%{_target_platform}/%{version}
+%endif
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{_target_platform}
%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{_target_platform}/%{version}
+%endif
%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}/cc1
%{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}/include
@@ -1328,12 +1492,77 @@
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{_target_platform}
%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+%if "%{version}" != "%{gcc_version}"
+%{_prefix}/libexec/gcc/%{_target_platform}/%{version}
+%endif
%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}/cc1plus
%endif
%changelog
-* Mon Mar 14 2005 Jakub Jelinek <jakub at redhat.com> 3.4.3-22.fc3
+* Fri Jul 22 2005 Jakub Jelinek <jakub at redhat.com> 3.4.4-2
+- update from gcc-3_4-branch
+ - PRs c++/10611, c++/19608, c++/19884, c++/20563, c++/20789, c++/21336,
+ c++/21853, c++/21903, c++/21987, c/22308, libstdc++/21286,
+ rtl-optimization/22167, target/19933, target/20301, target/21888,
+ target/21889, target/22083
+ - fix -march=i386 -masm=intel -fpic (#162585)
+- on ppc64 and s390x, change the obsoletes for gcc-gnat and libgnat
+ to < %{gcc_version}
+- fix visibility handling of static class members
+ (Mark Mitchell, #159197, PR c++/18925)
+- fix some -fvar-tracking bugs that were causing bogus DW_OP_piece ops
+- fix -fvar-tracking on big-endian targets (Josef Zlomek,
+ PR middle-end/14084)
+- avoid recursive use of varasm hash tables (#157308)
+- on ppc accept CTR-to-CTR copy in mov[sd]f_hardfloat patterns
+ (Dale Johannesen, Janis Johnson, #160815, IT#74566,
+ PRs target/20191, target/22081)
+- remove limit of 16 nested GCC visibility pragmas (PR middle-end/20303)
+- fix stringbuf in_avail() (Benjamin Kosnik, #159408, IT#72781)
+
+* Thu May 26 2005 Jakub Jelinek <jakub at redhat.com> 3.4.4-1
+- update from gcc-3_4-branch
+ - GCC 3.4.4 release
+ - PRs middle-end/21709, c++/21768
+ - fix reg-stack ICE (#158407, PR target/21716)
+ - fix ppc64 libgcj (Andrew Haley, #154684, #142611)
+- add provides, so that packages requiring gcc = 3.4.3 or
+ libstdc++-devel = 3.4.3 etc. can be satisfied
+- use 3.4.3 directories and make 3.4.4 just a symlink,
+ so that other packages using the 3.4.3 directories are satisfied
+ and we don't try to replace a directory with a symlink (which rpm doesn't
+ like)
+
+* Tue May 10 2005 Jakub Jelinek <jakub at redhat.com> 3.4.3-25
+- update from gcc-3_4-branch
+ - PRs c++/21427, debug/16676, libffi/21285, target/16925, target/19051,
+ target/21416
+- don't enable -fvar-tracking on ia64 for -O0 or -g0 by default
+- fix warnings in <limits> when compiling with GCC 4 (Mark Mitchell, #157174)
+- fix warnings in <locale_facets.tcc> (#157190, PR libstdc++/16678)
+- fix output of i?86 movb $cst, %ah etc. instructions (#154116)
+- fix a regression introduced by PR target/14981 backport
+- fix VEC_SELECT handling in the combiner (PR rtl-optimization/21239)
+- fix i?86 address canonicalization (PR target/21297)
+
+* Sat May 7 2005 Jakub Jelinek <jakub at redhat.com> 3.4.3-24
+- -fvar-tracking support (Josef Zlomek, Daniel Berlin)
+
+* Fri May 6 2005 Jakub Jelinek <jakub at redhat.com> 3.4.3-23
+- update from gcc-3_4-branch
+ - PRs bootstrap/20633, c++/18464, c++/18644, c++/19034,
+ c++/19311, c++/19312, c++/19991, c++/20142, c++/20147, c++/20147,
+ c++/20240, c++/20333, c++/20679, c++/20995, c++/21025, c/11459,
+ c/18502, c/20740, c/21213, libstdc++/21035, libstdc++/21131,
+ middle-end/19225, middle-end/20364, rtl-optimization/19683,
+ target/14981, target/15491, target/17822, target/17824, target/18251,
+ target/18551, target/19819, target/20277, target/20288, target/20611,
+ target/20670, target/21098
+ - make libgcov symbols hidden (#162930, IT#72501, PR middle-end/19985)
- add Req/BuildReq for glib2 and libart_lgpl (#150923)
+- fix ada build with make -jN N>1
+
+* Thu Mar 3 2005 Jakub Jelinek <jakub at redhat.com> 3.4.3-22
- fix PR c++/19916 (Mark Mitchell, #148793)
- fixed C++ redeclaration handling (Alexandre Oliva, #149098)
@@ -1529,7 +1758,7 @@
(#135611)
- make sure .toc{,1} sections are created on ppc -m64 -mminimal-toc
(#134248, PR target/17751)
-- define __GNUC_RH_RELEASE__ macro to match %%{gcc_release} rpm macro
+- define __GNUC_RH_RELEASE__ macro to match %%{release} rpm macro
(well, its first number)
* Thu Oct 7 2004 Jakub Jelinek <jakub at redhat.com> 3.4.2-5
Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc/FC-3/sources,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- sources 14 Mar 2005 17:50:24 -0000 1.61
+++ sources 22 Jul 2005 12:21:40 -0000 1.62
@@ -1 +1 @@
-ca096b876862165ff61df69ff838f2a8 gcc-3.4.3-20050228.tar.bz2
+366165a58d2b9a416e694e0ae3180afc gcc-3.4.4-20050721.tar.bz2
--- gcc34-c++-pr19916.patch DELETED ---
--- gcc34-c++-redecl.patch DELETED ---
More information about the fedora-cvs-commits
mailing list