openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2009
- 1 participants
- 754 discussions
Hello community,
here is the log from the commit of package createrepo for openSUSE:Factory
checked in at Fri May 1 02:19:04 CEST 2009.
--------
--- createrepo/createrepo.changes 2009-01-25 22:20:53.000000000 +0100
+++ createrepo/createrepo.changes 2009-04-30 11:56:05.763509658 +0200
@@ -1,0 +2,9 @@
+Thu Apr 30 11:02:57 CEST 2009 - lrupp(a)suse.de
+
+- fix createrepo-0.4.11-hashfix.patch:
+ + sha() is also deprecated
+ + allow usage on older python versions
+- review/port all patches to the current 0.4.11 version
+- added rpmlintrc to avoid rpmlint warning for libxml2-python
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
createrepo-0.4.10-cachefix.patch
createrepo-0.4.10-fixsymlinks.patch
createrepo-0.4.8-cache_utime.patch
createrepo-license-to-confirm.patch
createrepo-missing-tags.patch
createrepo-suse-changelogs.patch
modifyrepo-prettyxml.patch
New:
----
createrepo-0.4.11-cachefix.patch
createrepo-0.4.11-cache_utime.patch
createrepo-0.4.11-fixsymlinks.patch
createrepo-0.4.11-license-to-confirm.patch
createrepo-0.4.11-missing-tags.patch
createrepo-0.4.11-modifyrepo-prettyxml.patch
createrepo-0.4.11-suse-changelogs.patch
createrepo-rpmlintrc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ createrepo.spec ++++++
--- /var/tmp/diff_new_pack.S21385/_old 2009-05-01 02:14:57.000000000 +0200
+++ /var/tmp/diff_new_pack.S21385/_new 2009-05-01 02:14:57.000000000 +0200
@@ -21,20 +21,21 @@
Name: createrepo
BuildRequires: python
Version: 0.4.11
-Release: 79
+Release: 81
License: GPL v2 or later
Summary: Creates a Common Metadata Repository
Group: System/Packages
Source: %{name}-%{version}.tar.bz2
-Patch: %{name}-missing-tags.patch
-Patch1: %{name}-suse-changelogs.patch
-Patch2: modifyrepo-prettyxml.patch
-Patch3: %{name}-0.4.8-cache_utime.patch
-Patch5: %{name}-0.4.10-fixsymlinks.patch
-Patch6: %{name}-0.4.10-cachefix.patch
-Patch7: %{name}-license-to-confirm.patch
-Patch8: %{name}-0.4.11-hashfix.patch
-Patch9: %{name}-0.4.11-filenamefix.patch
+Source1: createrepo-rpmlintrc
+Patch: createrepo-0.4.11-missing-tags.patch
+Patch1: createrepo-0.4.11-suse-changelogs.patch
+Patch2: createrepo-0.4.11-modifyrepo-prettyxml.patch
+Patch3: createrepo-0.4.11-cache_utime.patch
+Patch4: createrepo-0.4.11-fixsymlinks.patch
+Patch5: createrepo-0.4.11-cachefix.patch
+Patch6: createrepo-0.4.11-license-to-confirm.patch
+Patch7: createrepo-0.4.11-hashfix.patch
+Patch8: createrepo-0.4.11-filenamefix.patch
Url: http://linux.duke.edu/metadata/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
@@ -62,16 +63,16 @@
%patch1
%patch2
%patch3
-%patch5 -p1
+%patch4
+%patch5
%patch6
%patch7
-%if %{suse_version} > 1010
-%patch8
-%endif
%if %{suse_version} > 1100
-%patch9
+%patch8
%endif
+%build
+
%install
%if %{suse_version} <= 1010
sed -e "s,rpm.RPMTAG_ENHANCESNAME,1159," \
@@ -98,6 +99,12 @@
%{_datadir}/%{name}/*
%changelog
+* Thu Apr 30 2009 lrupp(a)suse.de
+- fix createrepo-0.4.11-hashfix.patch:
+ + sha() is also deprecated
+ + allow usage on older python versions
+- review/port all patches to the current 0.4.11 version
+- added rpmlintrc to avoid rpmlint warning for libxml2-python
* Sun Jan 25 2009 cthiel(a)suse.de
- Fix DeprecationWarnings (bnc#467934, bnc#458460). Thanks to Dmitry Mittov
for the patches.
@@ -185,7 +192,7 @@
* Tolerate unknown files in repodata dirs
* patch to support --noepoch for use with old versions of rpm
- remove python-urlgrabber dependency
-* Tue May 23 2006 cthiel(a)suse.de
+* Wed May 24 2006 cthiel(a)suse.de
- added license-to-confirm.patch (by Jose Mercado <jose(a)novell.com>)
* adds license-to-confirm element for packages which have EULAs
* Wed Mar 22 2006 cthiel(a)suse.de
@@ -208,7 +215,7 @@
Suggests, and Recommends rpm tags in the metadata.
* Wed Jan 25 2006 mls(a)suse.de
- converted neededforbuild to BuildRequires
-* Wed Sep 28 2005 dmueller(a)suse.de
+* Thu Sep 29 2005 dmueller(a)suse.de
- add norootforbuild
* Wed Sep 28 2005 cthiel(a)suse.de
- use cachedir relative to package directory, if cachedir isn't an aboslute
++++++ createrepo-0.4.10-cachefix.patch -> createrepo-0.4.11-cachefix.patch ++++++
--- createrepo/createrepo-0.4.10-cachefix.patch 2008-07-23 18:22:13.000000000 +0200
+++ createrepo/createrepo-0.4.11-cachefix.patch 2009-04-30 11:29:26.083513205 +0200
@@ -1,6 +1,8 @@
---- dumpMetadata.py
+Index: dumpMetadata.py
+===================================================================
+--- dumpMetadata.py.orig
+++ dumpMetadata.py
-@@ -603,8 +603,8 @@
+@@ -605,8 +605,8 @@ class RpmMetaData:
t.append("".join(self.hdr[rpm.RPMTAG_SIGGPG]))
if type(self.hdr[rpm.RPMTAG_SIGPGP]) is not types.NoneType:
t.append("".join(self.hdr[rpm.RPMTAG_SIGPGP]))
@@ -10,3 +12,4 @@
+ t.append("".join(self.hdr[rpm.RPMTAG_SHA1HEADER]))
key = md5.new("".join(t)).hexdigest()
+
++++++ createrepo-0.4.8-cache_utime.patch -> createrepo-0.4.11-cache_utime.patch ++++++
--- createrepo/createrepo-0.4.8-cache_utime.patch 2008-07-23 18:22:13.000000000 +0200
+++ createrepo/createrepo-0.4.11-cache_utime.patch 2009-04-30 11:23:28.932019017 +0200
@@ -1,11 +1,12 @@
---- dumpMetadata.py
+Index: dumpMetadata.py
+===================================================================
+--- dumpMetadata.py.orig
+++ dumpMetadata.py
-@@ -614,7 +614,7 @@
+@@ -618,6 +618,7 @@ class RpmMetaData:
csumo = open(csumfile, 'r')
checksum = csumo.readline()
csumo.close()
--
+ os.path.os.utime(csumfile, None)
+
else:
checksum = getChecksum(self.options['sumtype'], fo)
- csumo = open(csumfile, 'w')
++++++ createrepo-0.4.11-filenamefix.patch ++++++
--- /var/tmp/diff_new_pack.S21385/_old 2009-05-01 02:14:57.000000000 +0200
+++ /var/tmp/diff_new_pack.S21385/_new 2009-05-01 02:14:57.000000000 +0200
@@ -1,6 +1,8 @@
---- dumpMetadata.py 2008-12-03 14:08:45.000000000 +0600
-+++ dumpMetadata.py 2009-01-21 18:13:17.000000000 +0600
-@@ -45,7 +44,7 @@
+Index: dumpMetadata.py
+===================================================================
+--- dumpMetadata.py.orig
++++ dumpMetadata.py
+@@ -44,7 +44,7 @@ class GzipFile(gzip.GzipFile):
def _write_gzip_header(self):
self.fileobj.write('\037\213') # magic header
self.fileobj.write('\010') # compression method
@@ -9,4 +11,3 @@
flags = 0
if fname:
flags = FNAME
-
++++++ createrepo-0.4.10-fixsymlinks.patch -> createrepo-0.4.11-fixsymlinks.patch ++++++
--- createrepo/createrepo-0.4.10-fixsymlinks.patch 2008-07-23 18:22:13.000000000 +0200
+++ createrepo/createrepo-0.4.11-fixsymlinks.patch 2009-04-30 11:28:00.443514600 +0200
@@ -1,10 +1,14 @@
---- createrepo/genpkgmetadata.py.20070803 2007-06-07 06:33:34.000000000 -0400
-+++ createrepo/genpkgmetadata.py 2007-08-03 15:36:17.000000000 -0400
-@@ -83,11 +83,15 @@
+Index: genpkgmetadata.py
+===================================================================
+--- genpkgmetadata.py.orig
++++ genpkgmetadata.py
+@@ -99,9 +99,13 @@ class MetaDataGenerator:
def extension_visitor(filelist, dirname, names):
for fn in names:
- if os.path.isdir(fn):
+- continue
+- if self.cmds['skip-symlinks'] and os.path.islink(fn):
+ if os.path.islink(dirname + '/' + fn):
+ if self.cmds['skip-symlinks']:
+ continue
@@ -13,14 +17,9 @@
+ continue
+ elif os.path.isdir(dirname + '/' + fn):
continue
-- if self.cmds['skip-symlinks'] and os.path.islink(fn):
-- continue
-- elif fn[-extlen:].lower() == '%s' % (ext):
-+ if fn[-extlen:].lower() == '%s' % (ext):
+ elif fn[-extlen:].lower() == '%s' % (ext):
relativepath = dirname.replace(startdir, "", 1)
- relativepath = relativepath.lstrip("/")
- filelist.append(os.path.join(relativepath,fn))
-@@ -325,9 +329,15 @@
+@@ -345,9 +349,15 @@ class SplitMetaDataGenerator(MetaDataGen
def extension_visitor(arg, dirname, names):
for fn in names:
++++++ createrepo-0.4.11-hashfix.patch ++++++
--- /var/tmp/diff_new_pack.S21385/_old 2009-05-01 02:14:57.000000000 +0200
+++ /var/tmp/diff_new_pack.S21385/_new 2009-05-01 02:14:57.000000000 +0200
@@ -1,33 +1,52 @@
---- dumpMetadata.py 2008-12-03 14:08:45.000000000 +0600
-+++ dumpMetadata.py 2009-01-21 18:13:17.000000000 +0600
-@@ -22,8 +22,7 @@
+Index: dumpMetadata.py
+===================================================================
+--- dumpMetadata.py.orig
++++ dumpMetadata.py
+@@ -22,8 +22,6 @@ import glob
import os
import rpm
import exceptions
-import md5
-import sha
-+import hashlib
import types
import struct
import re
-@@ -124,9 +123,9 @@
+@@ -124,9 +122,21 @@ def getChecksum(sumtype, file, CHUNK=2**
fo = open(file, 'rb', CHUNK)
if sumtype == 'md5':
- sum = md5.new()
-+ sum = hashlib.md5()
++ try:
++ import hashlib
++ sum = hashlib.md5()
++ except ImportError:
++ # for Python < 2.6
++ import md5
++ sum = md5.new()
elif sumtype == 'sha':
- sum = sha.new()
-+ sum = hashlib.sha1()
++ try:
++ import hashlib
++ sum = hashlib.sha1()
++ except ImportError:
++ # for Python < 2.6
++ import sha
++ sum = sha.new()
else:
raise MDError, 'Error Checksumming file, wrong checksum type %s' % sumtype
chunk = fo.read
-@@ -609,7 +608,7 @@
+@@ -609,7 +619,13 @@ class RpmMetaData:
if type(self.hdr[rpm.RPMTAG_SHA1HEADER]) is not types.NoneType:
t.append("".join(self.hdr[rpm.RPMTAG_SHA1HEADER]))
- key = md5.new("".join(t)).hexdigest()
-+ key = hashlib.md5("".join(t)).hexdigest()
++ try:
++ import hashlib
++ key = hashlib.md5("".join(t)).hexdigest()
++ except ImportError:
++ # for Python < 2.6
++ import md5
++ key = md5.new("".join(t)).hexdigest()
csumtag = '%s-%s-%s-%s' % (os.path.basename(self.relativepath),
self.hdr[rpm.RPMTAG_SHA1HEADER],
++++++ createrepo-0.4.11-license-to-confirm.patch ++++++
Index: dumpMetadata.py
===================================================================
--- dumpMetadata.py.orig
+++ dumpMetadata.py
@@ -18,6 +18,7 @@
# $Id$
+import glob
import os
import rpm
import exceptions
@@ -630,7 +631,7 @@ class RpmMetaData:
-def generateXML(doc, node, formatns, rpmObj, sumtype):
+def generateXML(doc, node, formatns, susens, rpmObj, sumtype):
"""takes an xml doc object and a package metadata entry node, populates a
package node with the md information"""
ns = node.ns()
@@ -664,6 +665,27 @@ def generateXML(doc, node, formatns, rpm
if rpmObj.localurl is not None:
location.newProp('xml:base', rpmObj.localurl)
location.newProp('href', rpmObj.relativepath)
+
+ eulas = glob.glob("%s.eula.*" % os.path.join(rpmObj.options['basedir'], rpmObj.relativepath))
+ if eulas is not None:
+ for eula in eulas:
+ match = re.match("(.*eula)\.(.*)", eula)
+ lang = match.group(2)
+
+ eulaContent = None
+
+ try:
+ fd = open(eula, "r")
+ eulaContent = fd.read()
+ fd.close()
+ except IOError:
+ raise MDError, "Failed read contents of %s" % eula
+
+ if eulaContent is not None:
+ eulaNode = pkgNode.newChild(susens, 'license-to-confirm', None)
+ eulaNode.newProp('lang', lang)
+ eulaNode.addContent(utf8String(eulaContent))
+
format = pkgNode.newChild(ns, 'format', None)
for tag in ['license', 'vendor', 'group', 'buildhost', 'sourcerpm']:
value = rpmObj.tagByName(tag)
Index: genpkgmetadata.py
===================================================================
--- genpkgmetadata.py.orig
+++ genpkgmetadata.py
@@ -181,11 +181,12 @@ class MetaDataGenerator:
self.baseroot = self.basedoc.newChild(None, "metadata", None)
basens = self.baseroot.newNs('http://linux.duke.edu/metadata/common', None)
self.formatns = self.baseroot.newNs('http://linux.duke.edu/metadata/rpm', 'rpm')
+ self.susens = self.baseroot.newNs('http://novell.com/package/metadata/suse/common', 'suse')
self.baseroot.setNs(basens)
basefilepath = os.path.join(self.cmds['outputdir'], self.cmds['tempdir'], self.cmds['primaryfile'])
self.basefile = _gzipOpen(basefilepath, 'w')
self.basefile.write('<?xml version="1.0" encoding="UTF-8"?>\n')
- self.basefile.write('<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="%s">\n' %
+ self.basefile.write('<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" xmlns:suse="http://novell.com/package/metadata/suse/common" packages="%s">\n' %
self.pkgcount)
def _setupFilelists(self):
@@ -223,7 +224,7 @@ class MetaDataGenerator:
errorprint('\n%s - %s' % (e, file))
return None
try:
- basenode = dumpMetadata.generateXML(self.basedoc, self.baseroot, self.formatns, mdobj, self.cmds['sumtype'])
+ basenode = dumpMetadata.generateXML(self.basedoc, self.baseroot, self.formatns, self.susens, mdobj, self.cmds['sumtype'])
except dumpMetadata.MDError, e:
errorprint(_('\nAn error occurred creating primary metadata: %s') % e)
return None
++++++ createrepo-0.4.11-missing-tags.patch ++++++
Index: dumpMetadata.py
===================================================================
--- dumpMetadata.py.orig
+++ dumpMetadata.py
@@ -292,14 +292,10 @@ class RpmMetaData:
return returnflags
if type(flags) is not types.ListType:
- newflag = flags & 0xf
- returnflags.append(newflag)
+ returnflags.append(flags)
else:
for flag in flags:
- newflag = flag
- if flag is not None:
- newflag = flag & 0xf
- returnflags.append(newflag)
+ returnflags.append(flag)
return returnflags
def _checkPreReq(self, flags):
@@ -541,37 +537,49 @@ class RpmMetaData:
if names is not None:
lst = zip(names, flags, ver, prereq)
return self._uniq(lst)
-
- def obsoletesList(self):
+
+ def tagsList(self, name, flags, version):
lst = []
- names = self.hdr[rpm.RPMTAG_OBSOLETENAME]
- tmpflags = self.hdr[rpm.RPMTAG_OBSOLETEFLAGS]
+ names = self.hdr[name]
+ tmpflags = self.hdr[flags]
flags = self._correctFlags(tmpflags)
- ver = self._correctVersion(self.hdr[rpm.RPMTAG_OBSOLETEVERSION])
+ ver = self._correctVersion(self.hdr[version])
if names is not None:
lst = zip(names, flags, ver)
return self._uniq(lst)
+ def obsoletesList(self):
+ return self.tagsList(rpm.RPMTAG_OBSOLETENAME, rpm.RPMTAG_OBSOLETEFLAGS,
+ rpm.RPMTAG_OBSOLETEVERSION)
+
def conflictsList(self):
- lst = []
- names = self.hdr[rpm.RPMTAG_CONFLICTNAME]
- tmpflags = self.hdr[rpm.RPMTAG_CONFLICTFLAGS]
- flags = self._correctFlags(tmpflags)
- ver = self._correctVersion(self.hdr[rpm.RPMTAG_CONFLICTVERSION])
- if names is not None:
- lst = zip(names, flags, ver)
- return self._uniq(lst)
+ return self.tagsList(rpm.RPMTAG_CONFLICTNAME, rpm.RPMTAG_CONFLICTFLAGS,
+ rpm.RPMTAG_CONFLICTVERSION)
def providesList(self):
- lst = []
- names = self.hdr[rpm.RPMTAG_PROVIDENAME]
- tmpflags = self.hdr[rpm.RPMTAG_PROVIDEFLAGS]
- flags = self._correctFlags(tmpflags)
- ver = self._correctVersion(self.hdr[rpm.RPMTAG_PROVIDEVERSION])
- if names is not None:
- lst = zip(names, flags, ver)
- return self._uniq(lst)
-
+ return self.tagsList(rpm.RPMTAG_PROVIDENAME, rpm.RPMTAG_PROVIDEFLAGS,
+ rpm.RPMTAG_PROVIDEVERSION)
+
+ def enhancesList(self):
+ lst = self.tagsList(rpm.RPMTAG_ENHANCESNAME, rpm.RPMTAG_ENHANCESFLAGS,
+ rpm.RPMTAG_ENHANCESVERSION)
+ return [ l for l in lst if not l[1] & rpm.RPMSENSE_STRONG ]
+
+ def supplementsList(self):
+ lst = self.tagsList(rpm.RPMTAG_ENHANCESNAME, rpm.RPMTAG_ENHANCESFLAGS,
+ rpm.RPMTAG_ENHANCESVERSION)
+ return [ l for l in lst if l[1] & rpm.RPMSENSE_STRONG ]
+
+ def suggestsList(self):
+ lst = self.tagsList(rpm.RPMTAG_SUGGESTSNAME, rpm.RPMTAG_SUGGESTSFLAGS,
+ rpm.RPMTAG_SUGGESTSVERSION)
+ return [ l for l in lst if not l[1] & rpm.RPMSENSE_STRONG ]
+
+ def recommendsList(self):
+ lst = self.tagsList(rpm.RPMTAG_SUGGESTSNAME, rpm.RPMTAG_SUGGESTSFLAGS,
+ rpm.RPMTAG_SUGGESTSVERSION)
+ return [ l for l in lst if l[1] & rpm.RPMSENSE_STRONG ]
+
def changelogLists(self):
lst = []
names = self.listTagByName('changelogname')
@@ -668,12 +676,18 @@ def generateXML(doc, node, formatns, rpm
hr.newProp('end', str(rpmObj.rangeend))
for (lst, nodename) in [(rpmObj.providesList(), 'provides'),
(rpmObj.conflictsList(), 'conflicts'),
- (rpmObj.obsoletesList(), 'obsoletes')]:
+ (rpmObj.obsoletesList(), 'obsoletes'),
+ (rpmObj.enhancesList(), 'enhances'),
+ (rpmObj.supplementsList(), 'supplements'),
+ (rpmObj.suggestsList(), 'suggests'),
+ (rpmObj.recommendsList(), 'recommends')]:
if len(lst) > 0:
rpconode = format.newChild(formatns, nodename, None)
for (name, flags, (e,v,r)) in lst:
entry = rpconode.newChild(formatns, 'entry', None)
entry.newProp('name', name)
+ if flags is not None:
+ flags = flags & 0xf
if flags != 0:
if flags == 2: arg = 'LT'
if flags == 4: arg = 'GT'
@@ -695,6 +709,8 @@ def generateXML(doc, node, formatns, rpm
for (name, flags, (e,v,r), prereq) in depsList:
entry = rpconode.newChild(formatns, 'entry', None)
entry.newProp('name', name)
+ if flags is not None:
+ flags = flags & 0xf
if flags != 0:
if flags == 2: arg = 'LT'
if flags == 4: arg = 'GT'
++++++ createrepo-0.4.11-modifyrepo-prettyxml.patch ++++++
Index: modifyrepo.py
===================================================================
--- modifyrepo.py.orig
+++ modifyrepo.py
@@ -92,15 +92,22 @@ class RepoMetadata:
## Build the metadata
root = self.doc.firstChild
+ root.appendChild(self.doc.createTextNode(" "))
data = self._insert_element(root, 'data', attrs={ 'type' : mdtype })
+ data.appendChild(self.doc.createTextNode("\n "))
self._insert_element(data, 'location',
attrs={ 'href' : 'repodata/' + mdname })
+ data.appendChild(self.doc.createTextNode("\n "))
self._insert_element(data, 'checksum', attrs={ 'type' : 'sha' },
text=sha.new(newmd).hexdigest())
+ data.appendChild(self.doc.createTextNode("\n "))
self._insert_element(data, 'timestamp',
text=str(os.stat(destmd).st_mtime))
+ data.appendChild(self.doc.createTextNode("\n "))
self._insert_element(data, 'open-checksum', attrs={ 'type' : 'sha' },
text=sha.new(md).hexdigest())
+ data.appendChild(self.doc.createTextNode("\n "))
+ root.appendChild(self.doc.createTextNode("\n"))
print " type =", mdtype
print " location =", 'repodata/' + mdname
@@ -111,6 +118,7 @@ class RepoMetadata:
## Write the updated repomd.xml
outmd = file(self.repomdxml, 'w')
self.doc.writexml(outmd)
+ outmd.write("\n")
outmd.close()
print "Wrote:", self.repomdxml
++++++ createrepo-0.4.11-suse-changelogs.patch ++++++
Index: dumpMetadata.py
===================================================================
--- dumpMetadata.py.orig
+++ dumpMetadata.py
@@ -785,7 +785,10 @@ def otherXML(doc, node, rpmObj):
for (name, time, text) in clogs:
clog = pkg.newChild(None, 'changelog', None)
clog.addContent(utf8String(text))
- clog.newProp('author', utf8String(name))
+ if name == '' or name[0] != '-':
+ clog.newProp('author', utf8String(name))
+ else:
+ clog.newProp('author', utf8String(name[2:]))
clog.newProp('date', str(time))
return pkg
++++++ createrepo-rpmlintrc ++++++
# this is not really a library
addFilter("explicit-lib-dependency.*libxml2-python")
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package gcc41 for openSUSE:Factory
checked in at Fri May 1 02:14:35 CEST 2009.
--------
--- gcc41/cross-avr-gcc.changes 2009-04-16 01:55:32.000000000 +0200
+++ gcc41/cross-avr-gcc.changes 2009-04-21 15:38:36.000000000 +0200
@@ -1,0 +2,14 @@
+Mon Apr 20 16:22:27 CEST 2009 - rguenther(a)suse.de
+
+- Downgrade to SLE10 head version plus patches that accumulated
+ in STABLE. May serve as a base for fixing bnc#485521.
+- Add patch to fix makeinfo detection.
+- Add patch to fix ld version detection.
+- Fix ldconfig calls.
+
+-------------------------------------------------------------------
+Sat Apr 18 14:54:39 CEST 2009 - rguenther(a)suse.de
+
+- Adjust Ada BuildRequires check.
+
+-------------------------------------------------------------------
gcc41.changes: same change
libgcj41.changes: same change
calling whatdependson for head-i586
Old:
----
gcc-4.1.3-20080612.tar.bz2
pr29166.diff
New:
----
barcelona.patch
gcc-4.1.2-20070115.tar.bz2
gcc41-binutils-version.patch
gcc41-makeinfo.patch
gcc-amdfam10-alignloop.diff
ia64-bad-prologue-generation.patch
note-gnu-stack.diff
nov277135.diff
nov341254-altivec.diff
nov341254-pic.diff
nov354405.diff
nov376357.diff
nov394409.diff
nov480052.diff
nov494022.diff
nov495844.diff
pr30113.patch
pr34130.patch
pr34641.patch
sse5-suse.patch01
warn-enum.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cross-avr-gcc.spec ++++++
--- /var/tmp/diff_new_pack.NA7724/_old 2009-05-01 02:08:04.000000000 +0200
+++ /var/tmp/diff_new_pack.NA7724/_new 2009-05-01 02:08:04.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package cross-avr-gcc (Version 4.1.3_20080612)
+# spec file for package cross-avr-gcc (Version 4.1.2_20070115)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -34,8 +34,8 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later; X11/MIT
-Version: 4.1.3_20080612
-Release: 33
+Version: 4.1.2_20070115
+Release: 9
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%define binsuffix -4.1
@@ -57,6 +57,8 @@
Patch2: gcc-noalias-warn.diff
Patch5: boehm-gc-strict-aliasing.patch
Patch7: acats-timeout.patch
+Patch8: gcc41-makeinfo.patch
+Patch9: gcc41-binutils-version.patch
Patch10: program-transform-name.diff
Patch12: gcc4-ppc64-m32-m64-multilib-only.patch
Patch23: libjava-no-multilib.diff
@@ -78,11 +80,16 @@
Patch97: nov189571-2.diff
Patch98: nvl199137.patch
Patch100: pr28755.patch
-Patch105: pr29166.diff
-Patch106: fix-ada-build.diff
-Patch107: pr20218.patch
-Patch108: pr29558.patch
+Patch101: pr30113.patch
+Patch102: ia64-bad-prologue-generation.patch
+Patch103: pr34130.patch
+Patch104: nov480052.diff
+Patch105: pr34641.patch
+Patch107: fix-ada-build.diff
+Patch108: pr20218.patch
+Patch109: pr29558.patch
Patch110: pr29512.patch
+Patch111: nov495844.diff
Patch123: gcc41-no-unwind-tables.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
@@ -90,6 +97,7 @@
Patch57: gcc41-ppc32-retaddr.patch
Patch54: gcc41-ldbl-default.patch
Patch50: gcc41-ldbl-default-libstdc++.patch
+Patch52: note-gnu-stack.diff
Patch53: gcc41-strncat-chk.patch
# general improvement patches
Patch60: pr25626.patch
@@ -104,9 +112,15 @@
Patch69: gcc41-ssse3.patch
Patch70: pr27880.diff
Patch72: Wprofile-mismatch.patch
-Patch73: parentheses-mathematical-5.diff
-Patch74: Wuninitialized.patch
-Patch75: fpreserve-function-arguments4.patch
+Patch73: fpreserve-function-arguments4.patch
+Patch74: warn-enum.diff
+Patch75: nov277135.diff
+Patch76: nov376357.diff
+Patch77: nov394409.diff
+Patch78: nov354405.diff
+Patch79: nov494022.diff
+Patch80: parentheses-mathematical-5.diff
+Patch81: Wuninitialized.patch
# Greyhound (aka AMD Family 10h) support
Patch200: gcc-amdfam10-suse-1.patch
Patch201: gcc-amdfam10-suse-2.patch
@@ -121,8 +135,13 @@
Patch210: gcc-amdfam10-suse-11.patch
Patch211: gcc-amdfam10-suse-12.patch
Patch212: gcc-amdfam10-suse-20.patch
+Patch213: gcc-amdfam10-alignloop.diff
+Patch214: barcelona.patch
+Patch215: sse5-suse.patch01
# POWER6 support
Patch300: gcc-4.1.0-power6.diff
+Patch301: nov341254-pic.diff
+Patch302: nov341254-altivec.diff
%if "%{gcc_target_arch}" == "avr"
# Joerg Wunsch places his cross-avr-gcc-patches there:
# http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files
@@ -173,6 +192,8 @@
%patch2
%patch5
%patch7
+%patch8
+%patch9
%patch10
%if !%{build_nof}
%patch12
@@ -196,17 +217,23 @@
%patch97
%patch98 -p1
%patch100
+%patch101
+%patch102 -p1
+%patch103
+%patch104
%patch105
-%patch106
%patch107
%patch108
+%patch109
%patch110
+%patch111
%patch123
%patch51
%patch55
%patch57
%patch54
%patch50
+%patch52
%patch53
cd libstdc++-v3
%patch60
@@ -225,6 +252,12 @@
%patch73
%patch74
%patch75
+%patch76
+%patch77
+%patch78
+%patch79
+%patch80
+%patch81
%patch200
%patch201
%patch202
@@ -238,7 +271,12 @@
%patch210
%patch211
%patch212
+%patch213 -p1
+%patch214
+%patch215
%patch300
+%patch301 -p1
+%patch302 -p1
%if "%{gcc_target_arch}" == "avr"
%patch1000
%patch1001
@@ -326,11 +364,22 @@
# to install a cross glibc, which we don't, or make the whole
# thing point to the native glibc, which is in /, hence the
# --with-sysroot=/
-CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
-TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
%if %{build_ada}
-CC="gcc%{binsuffix}" GNATBIND="gnatbind%{binsuffix}" \
+# Using the host gnatmake like
+# CC="gcc%{hostsuffix}" GNATBIND="gnatbind%{hostsuffix}"
+# GNATMAKE="gnatmake%{hostsuffix}"
+# doesn't work due to PR33857, so an un-suffixed gnatmake has to be
+# available
+mkdir -p host-tools/bin
+cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake
+cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink
+cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind
+cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc
+ln -sf /usr/%{_lib} host-tools/%{_lib}
+export PATH="`pwd`/host-tools/bin:$PATH"
%endif
+CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
+TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
../configure \
%if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
%else
@@ -415,6 +464,14 @@
%{_prefix}
%changelog
+* Mon Apr 20 2009 rguenther(a)suse.de
+- Downgrade to SLE10 head version plus patches that accumulated
+ in STABLE. May serve as a base for fixing bnc#485521.
+- Add patch to fix makeinfo detection.
+- Add patch to fix ld version detection.
+- Fix ldconfig calls.
+* Sat Apr 18 2009 rguenther(a)suse.de
+- Adjust Ada BuildRequires check.
* Thu Apr 16 2009 ro(a)suse.de
- buildfix: refresh patch gcc41-ia64-stack-protector.patch
* Mon Mar 16 2009 rguenther(a)suse.de
++++++ gcc41.spec ++++++
--- /var/tmp/diff_new_pack.NA7724/_old 2009-05-01 02:08:05.000000000 +0200
+++ /var/tmp/diff_new_pack.NA7724/_new 2009-05-01 02:08:05.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package gcc41 (Version 4.1.3_20080612)
+# spec file for package gcc41 (Version 4.1.2_20070115)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -52,10 +52,16 @@
Name: gcc41
BuildRequires: bison flex gettext-devel glibc-devel-32bit perl texinfo zlib-devel
%if %{build_ada}
-BuildRequires: gcc-ada gcc41-ada
+%if %{suse_version} > 1010
+%define hostsuffix -4.1
+BuildRequires: gcc41-ada
+%else
+%define hostsuffix %{nil}
+BuildRequires: gcc-ada
+%endif
%endif
%if %{build_libjava}
-BuildRequires: gtk2-devel libart_lgpl-devel unzip update-desktop-files
+BuildRequires: gtk2-devel libart_lgpl-devel unzip
%endif
%if %{build_fortran}
BuildRequires: mpfr-devel
@@ -118,8 +124,8 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: GPL v2 or later
-Version: 4.1.3_20080612
-Release: 32
+Version: 4.1.2_20070115
+Release: 8
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%define binsuffix -4.1
@@ -148,6 +154,8 @@
Patch2: gcc-noalias-warn.diff
Patch5: boehm-gc-strict-aliasing.patch
Patch7: acats-timeout.patch
+Patch8: gcc41-makeinfo.patch
+Patch9: gcc41-binutils-version.patch
Patch10: program-transform-name.diff
Patch12: gcc4-ppc64-m32-m64-multilib-only.patch
Patch23: libjava-no-multilib.diff
@@ -169,11 +177,16 @@
Patch97: nov189571-2.diff
Patch98: nvl199137.patch
Patch100: pr28755.patch
-Patch105: pr29166.diff
-Patch106: fix-ada-build.diff
-Patch107: pr20218.patch
-Patch108: pr29558.patch
+Patch101: pr30113.patch
+Patch102: ia64-bad-prologue-generation.patch
+Patch103: pr34130.patch
+Patch104: nov480052.diff
+Patch105: pr34641.patch
+Patch107: fix-ada-build.diff
+Patch108: pr20218.patch
+Patch109: pr29558.patch
Patch110: pr29512.patch
+Patch111: nov495844.diff
Patch123: gcc41-no-unwind-tables.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
@@ -181,6 +194,7 @@
Patch57: gcc41-ppc32-retaddr.patch
Patch54: gcc41-ldbl-default.patch
Patch50: gcc41-ldbl-default-libstdc++.patch
+Patch52: note-gnu-stack.diff
Patch53: gcc41-strncat-chk.patch
# general improvement patches
Patch60: pr25626.patch
@@ -195,9 +209,15 @@
Patch69: gcc41-ssse3.patch
Patch70: pr27880.diff
Patch72: Wprofile-mismatch.patch
-Patch73: parentheses-mathematical-5.diff
-Patch74: Wuninitialized.patch
-Patch75: fpreserve-function-arguments4.patch
+Patch73: fpreserve-function-arguments4.patch
+Patch74: warn-enum.diff
+Patch75: nov277135.diff
+Patch76: nov376357.diff
+Patch77: nov394409.diff
+Patch78: nov354405.diff
+Patch79: nov494022.diff
+Patch80: parentheses-mathematical-5.diff
+Patch81: Wuninitialized.patch
# Greyhound (aka AMD Family 10h) support
Patch200: gcc-amdfam10-suse-1.patch
Patch201: gcc-amdfam10-suse-2.patch
@@ -212,8 +232,13 @@
Patch210: gcc-amdfam10-suse-11.patch
Patch211: gcc-amdfam10-suse-12.patch
Patch212: gcc-amdfam10-suse-20.patch
+Patch213: gcc-amdfam10-alignloop.diff
+Patch214: barcelona.patch
+Patch215: sse5-suse.patch01
# POWER6 support
Patch300: gcc-4.1.0-power6.diff
+Patch301: nov341254-pic.diff
+Patch302: nov341254-altivec.diff
%if "%{gcc_target_arch}" == "avr"
# Joerg Wunsch places his cross-avr-gcc-patches there:
# http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files
@@ -372,10 +397,10 @@
The GCC team.
%post -n libgcc41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgcc41
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -392,10 +417,10 @@
Libgcc is needed for dynamically linked C programs.
%post -n libgcc41-32bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgcc41-32bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -412,10 +437,10 @@
Libgcc is needed for dynamically linked C programs.
%post -n libgcc41-64bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgcc41-64bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -444,10 +469,10 @@
et.al.
%post -n libstdc++41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libstdc++41
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -474,10 +499,10 @@
et.al.
%post -n libstdc++41-32bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libstdc++41-32bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -504,10 +529,10 @@
et.al.
%post -n libstdc++41-64bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libstdc++41-64bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
%package info
@@ -584,10 +609,10 @@
%post -n libobjc41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libobjc41
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -609,10 +634,10 @@
The library for the GNU Objective C compiler.
%post -n libobjc41-32bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libobjc41-32bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -634,10 +659,10 @@
The library for the GNU Objective C compiler.
%post -n libobjc41-64bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libobjc41-64bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
%package obj-c++
@@ -717,10 +742,10 @@
The GCC team.
%post -n libada41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libada41
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -787,10 +812,10 @@
The GCC team.
%post -n libgfortran41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgfortran41
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -814,10 +839,10 @@
of the GNU Compiler Collection (GCC).
%post -n libgfortran41-32bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgfortran41-32bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -841,10 +866,10 @@
of the GNU Compiler Collection (GCC).
%post -n libgfortran41-64bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgfortran41-64bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -868,10 +893,10 @@
%post -n libmudflap41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libmudflap41
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -893,10 +918,10 @@
This is the Mudflap Extension Runtime Library.
%post -n libmudflap41-32bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libmudflap41-32bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -918,10 +943,10 @@
This is the Mudflap Extension Runtime Library.
%post -n libmudflap41-64bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libmudflap41-64bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
%package java
@@ -957,10 +982,10 @@
%post -n libgcj41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgcj41
-%run_ldconfig
+/sbin/ldconfig
%package -n libgcj41-devel
License: GPL v2 or later; LGPL v2.1 or later
@@ -1011,10 +1036,10 @@
%post -n libffi41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libffi41
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -1030,10 +1055,10 @@
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
%post -n libffi41-32bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libffi41-32bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -1049,10 +1074,10 @@
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
%post -n libffi41-64bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libffi41-64bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -1272,6 +1297,8 @@
%patch2
%patch5
%patch7
+%patch8
+%patch9
%patch10
%if !%{build_nof}
%patch12
@@ -1295,17 +1322,23 @@
%patch97
%patch98 -p1
%patch100
+%patch101
+%patch102 -p1
+%patch103
+%patch104
%patch105
-%patch106
%patch107
%patch108
+%patch109
%patch110
+%patch111
%patch123
%patch51
%patch55
%patch57
%patch54
%patch50
+%patch52
%patch53
cd libstdc++-v3
%patch60
@@ -1324,6 +1357,12 @@
%patch73
%patch74
%patch75
+%patch76
+%patch77
+%patch78
+%patch79
+%patch80
+%patch81
%patch200
%patch201
%patch202
@@ -1337,7 +1376,12 @@
%patch210
%patch211
%patch212
+%patch213 -p1
+%patch214
+%patch215
%patch300
+%patch301 -p1
+%patch302 -p1
%if "%{gcc_target_arch}" == "avr"
%patch1000
%patch1001
@@ -1425,11 +1469,22 @@
# to install a cross glibc, which we don't, or make the whole
# thing point to the native glibc, which is in /, hence the
# --with-sysroot=/
-CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
-TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
%if %{build_ada}
-CC="gcc%{binsuffix}" GNATBIND="gnatbind%{binsuffix}" \
+# Using the host gnatmake like
+# CC="gcc%{hostsuffix}" GNATBIND="gnatbind%{hostsuffix}"
+# GNATMAKE="gnatmake%{hostsuffix}"
+# doesn't work due to PR33857, so an un-suffixed gnatmake has to be
+# available
+mkdir -p host-tools/bin
+cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake
+cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink
+cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind
+cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc
+ln -sf /usr/%{_lib} host-tools/%{_lib}
+export PATH="`pwd`/host-tools/bin:$PATH"
%endif
+CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
+TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
../configure \
%if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
%else
@@ -1495,17 +1550,21 @@
--host=%{GCCDIST}
# COMMON-END
# Only run profiled bootstrap on archs where it works
-%ifarch %ix86 x86_64 ppc ppc64 ia64
-make profiledbootstrap BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
-%else
+#%ifarch %ix86 x86_64 ppc ppc64 ia64
+#make profiledbootstrap BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
+#%else
make bootstrap-lean BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
-%endif
+#%endif
#make -C gcc proto
make info
%if %{run_tests}
echo "Run testsuite"
-make -k check $PARALLEL || true
(make -C %{GCCDIST}/libstdc++-v3 check-abi || true)
+mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.log %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.log
+mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.sum %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.sum
+make -k check $PARALLEL || true
+mkdir ../testresults
+../contrib/test_summary > ../testresults/test_summary.txt
%endif
%install
@@ -1661,18 +1720,7 @@
chmod a+x $RPM_BUILD_ROOT%{_libdir}/libgna*-*.so
# LIBJAVA-DELETE-END
%endif
-#ln -sf gcc%{binsuffix} $RPM_BUILD_ROOT%{_prefix}/bin/cc%{binsuffix}
-#ln -sf g++%{binsuffix} $RPM_BUILD_ROOT%{_prefix}/bin/c++%{binsuffix}
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/c++%{binsuffix}
-#mkdir -p $RPM_BUILD_ROOT/lib
-#%if !%{gcc_for_opt}
-#cat <<\EOF > $RPM_BUILD_ROOT/lib/cpp
-##!/bin/sh
-## Traditionally, /lib/cpp only knew about C
-#exec %{_prefix}/bin/cpp -xc "$@"
-#EOF
-#chmod 755 $RPM_BUILD_ROOT/lib/cpp
-#%endif
%if %{biarch}
%if %{build_primary_64bit}
# move around some libs that end in wrong paths
@@ -1726,7 +1774,6 @@
%endif
%endif
%if %{run_tests}
-mkdir ../testresults
cp `find . -name "*.sum"` ../testresults/
cp `find . -name "*.log" \! -name "config.log" |grep -v 'acats/tests' ` ../testresults/
chmod 644 ../testresults/*
@@ -1914,11 +1961,13 @@
%{libsubdir}/include/mm3dnow.h
%{libsubdir}/include/mmintrin.h
%{libsubdir}/include/ammintrin.h
+%{libsubdir}/include/bmmintrin.h
%{libsubdir}/include/emmintrin.h
%{libsubdir}/include/pmmintrin.h
%{libsubdir}/include/xmmintrin.h
%{libsubdir}/include/tmmintrin.h
%{libsubdir}/include/mm_malloc.h
+%{libsubdir}/include/mmintrin-common.h
%endif
%{libsubdir}/include/mf-runtime.h
%versmainlib *crt*.o
@@ -2352,11 +2401,20 @@
%files -n gcc41-testresults
%defattr(-,root,root)
+%doc testresults/test_summary.txt
%doc testresults/*.sum
%doc testresults/*.log
%endif
%changelog
+* Mon Apr 20 2009 rguenther(a)suse.de
+- Downgrade to SLE10 head version plus patches that accumulated
+ in STABLE. May serve as a base for fixing bnc#485521.
+- Add patch to fix makeinfo detection.
+- Add patch to fix ld version detection.
+- Fix ldconfig calls.
+* Sat Apr 18 2009 rguenther(a)suse.de
+- Adjust Ada BuildRequires check.
* Thu Apr 16 2009 ro(a)suse.de
- buildfix: refresh patch gcc41-ia64-stack-protector.patch
* Mon Mar 16 2009 rguenther(a)suse.de
++++++ libgcj41.spec ++++++
--- /var/tmp/diff_new_pack.NA7724/_old 2009-05-01 02:08:05.000000000 +0200
+++ /var/tmp/diff_new_pack.NA7724/_new 2009-05-01 02:08:05.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package libgcj41 (Version 4.1.3_20080612)
+# spec file for package libgcj41 (Version 4.1.2_20070115)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -65,10 +65,16 @@
Name: libgcj41
BuildRequires: bison flex gettext-devel glibc-devel-32bit perl texinfo zlib-devel
%if %{build_ada}
-BuildRequires: gcc-ada gcc41-ada
+%if %{suse_version} > 1010
+%define hostsuffix -4.1
+BuildRequires: gcc41-ada
+%else
+%define hostsuffix %{nil}
+BuildRequires: gcc-ada
+%endif
%endif
%if %{build_libjava}
-BuildRequires: gtk2-devel libart_lgpl-devel unzip update-desktop-files
+BuildRequires: gtk2-devel libart_lgpl-devel unzip
%endif
%if %{build_fortran}
BuildRequires: mpfr-devel
@@ -131,8 +137,8 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: GPL v2 or later; LGPL v2.1 or later
-Version: 4.1.3_20080612
-Release: 43
+Version: 4.1.2_20070115
+Release: 10
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%define binsuffix -4.1
@@ -161,6 +167,8 @@
Patch2: gcc-noalias-warn.diff
Patch5: boehm-gc-strict-aliasing.patch
Patch7: acats-timeout.patch
+Patch8: gcc41-makeinfo.patch
+Patch9: gcc41-binutils-version.patch
Patch10: program-transform-name.diff
Patch12: gcc4-ppc64-m32-m64-multilib-only.patch
Patch23: libjava-no-multilib.diff
@@ -182,11 +190,16 @@
Patch97: nov189571-2.diff
Patch98: nvl199137.patch
Patch100: pr28755.patch
-Patch105: pr29166.diff
-Patch106: fix-ada-build.diff
-Patch107: pr20218.patch
-Patch108: pr29558.patch
+Patch101: pr30113.patch
+Patch102: ia64-bad-prologue-generation.patch
+Patch103: pr34130.patch
+Patch104: nov480052.diff
+Patch105: pr34641.patch
+Patch107: fix-ada-build.diff
+Patch108: pr20218.patch
+Patch109: pr29558.patch
Patch110: pr29512.patch
+Patch111: nov495844.diff
Patch123: gcc41-no-unwind-tables.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
@@ -194,6 +207,7 @@
Patch57: gcc41-ppc32-retaddr.patch
Patch54: gcc41-ldbl-default.patch
Patch50: gcc41-ldbl-default-libstdc++.patch
+Patch52: note-gnu-stack.diff
Patch53: gcc41-strncat-chk.patch
# general improvement patches
Patch60: pr25626.patch
@@ -208,9 +222,15 @@
Patch69: gcc41-ssse3.patch
Patch70: pr27880.diff
Patch72: Wprofile-mismatch.patch
-Patch73: parentheses-mathematical-5.diff
-Patch74: Wuninitialized.patch
-Patch75: fpreserve-function-arguments4.patch
+Patch73: fpreserve-function-arguments4.patch
+Patch74: warn-enum.diff
+Patch75: nov277135.diff
+Patch76: nov376357.diff
+Patch77: nov394409.diff
+Patch78: nov354405.diff
+Patch79: nov494022.diff
+Patch80: parentheses-mathematical-5.diff
+Patch81: Wuninitialized.patch
# Greyhound (aka AMD Family 10h) support
Patch200: gcc-amdfam10-suse-1.patch
Patch201: gcc-amdfam10-suse-2.patch
@@ -225,8 +245,13 @@
Patch210: gcc-amdfam10-suse-11.patch
Patch211: gcc-amdfam10-suse-12.patch
Patch212: gcc-amdfam10-suse-20.patch
+Patch213: gcc-amdfam10-alignloop.diff
+Patch214: barcelona.patch
+Patch215: sse5-suse.patch01
# POWER6 support
Patch300: gcc-4.1.0-power6.diff
+Patch301: nov341254-pic.diff
+Patch302: nov341254-altivec.diff
%if "%{gcc_target_arch}" == "avr"
# Joerg Wunsch places his cross-avr-gcc-patches there:
# http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files
@@ -255,10 +280,10 @@
%post
-%run_ldconfig
+/sbin/ldconfig
%postun
-%run_ldconfig
+/sbin/ldconfig
%package -n libgcj41-devel
License: GPL v2 or later; LGPL v2.1 or later
@@ -309,10 +334,10 @@
%post -n libffi41
-%run_ldconfig
+/sbin/ldconfig
%postun -n libffi41
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -328,10 +353,10 @@
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
%post -n libffi41-32bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libffi41-32bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -347,10 +372,10 @@
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
%post -n libffi41-64bit
-%run_ldconfig
+/sbin/ldconfig
%postun -n libffi41-64bit
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
@@ -570,6 +595,8 @@
%patch2
%patch5
%patch7
+%patch8
+%patch9
%patch10
%if !%{build_nof}
%patch12
@@ -593,17 +620,23 @@
%patch97
%patch98 -p1
%patch100
+%patch101
+%patch102 -p1
+%patch103
+%patch104
%patch105
-%patch106
%patch107
%patch108
+%patch109
%patch110
+%patch111
%patch123
%patch51
%patch55
%patch57
%patch54
%patch50
+%patch52
%patch53
cd libstdc++-v3
%patch60
@@ -622,6 +655,12 @@
%patch73
%patch74
%patch75
+%patch76
+%patch77
+%patch78
+%patch79
+%patch80
+%patch81
%patch200
%patch201
%patch202
@@ -635,7 +674,12 @@
%patch210
%patch211
%patch212
+%patch213 -p1
+%patch214
+%patch215
%patch300
+%patch301 -p1
+%patch302 -p1
%if "%{gcc_target_arch}" == "avr"
%patch1000
%patch1001
@@ -723,11 +767,22 @@
# to install a cross glibc, which we don't, or make the whole
# thing point to the native glibc, which is in /, hence the
# --with-sysroot=/
-CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
-TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
%if %{build_ada}
-CC="gcc%{binsuffix}" GNATBIND="gnatbind%{binsuffix}" \
+# Using the host gnatmake like
+# CC="gcc%{hostsuffix}" GNATBIND="gnatbind%{hostsuffix}"
+# GNATMAKE="gnatmake%{hostsuffix}"
+# doesn't work due to PR33857, so an un-suffixed gnatmake has to be
+# available
+mkdir -p host-tools/bin
+cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake
+cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink
+cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind
+cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc
+ln -sf /usr/%{_lib} host-tools/%{_lib}
+export PATH="`pwd`/host-tools/bin:$PATH"
%endif
+CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
+TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
../configure \
%if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
%else
@@ -793,17 +848,21 @@
--host=%{GCCDIST}
# COMMON-END
# Only run profiled bootstrap on archs where it works
-%ifarch %ix86 x86_64 ppc ppc64 ia64
-make profiledbootstrap BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
-%else
+#%ifarch %ix86 x86_64 ppc ppc64 ia64
+#make profiledbootstrap BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
+#%else
make bootstrap-lean BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
-%endif
+#%endif
#make -C gcc proto
make info
%if %{run_tests}
echo "Run testsuite"
-make -k check $PARALLEL || true
(make -C %{GCCDIST}/libstdc++-v3 check-abi || true)
+mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.log %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.log
+mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.sum %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.sum
+make -k check $PARALLEL || true
+mkdir ../testresults
+../contrib/test_summary > ../testresults/test_summary.txt
%endif
%install
@@ -870,18 +929,7 @@
%endif
done
%endif
-#ln -sf gcc%{binsuffix} $RPM_BUILD_ROOT%{_prefix}/bin/cc%{binsuffix}
-#ln -sf g++%{binsuffix} $RPM_BUILD_ROOT%{_prefix}/bin/c++%{binsuffix}
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/c++%{binsuffix}
-#mkdir -p $RPM_BUILD_ROOT/lib
-#%if !%{gcc_for_opt}
-#cat <<\EOF > $RPM_BUILD_ROOT/lib/cpp
-##!/bin/sh
-## Traditionally, /lib/cpp only knew about C
-#exec %{_prefix}/bin/cpp -xc "$@"
-#EOF
-#chmod 755 $RPM_BUILD_ROOT/lib/cpp
-#%endif
%if %{biarch}
%if %{build_primary_64bit}
# move around some libs that end in wrong paths
@@ -935,7 +983,6 @@
%endif
%endif
%if %{run_tests}
-mkdir ../testresults
cp `find . -name "*.sum"` ../testresults/
cp `find . -name "*.log" \! -name "config.log" |grep -v 'acats/tests' ` ../testresults/
chmod 644 ../testresults/*
@@ -1163,11 +1210,20 @@
%files -n gcc41-testresults
%defattr(-,root,root)
+%doc testresults/test_summary.txt
%doc testresults/*.sum
%doc testresults/*.log
%endif
%changelog
+* Mon Apr 20 2009 rguenther(a)suse.de
+- Downgrade to SLE10 head version plus patches that accumulated
+ in STABLE. May serve as a base for fixing bnc#485521.
+- Add patch to fix makeinfo detection.
+- Add patch to fix ld version detection.
+- Fix ldconfig calls.
+* Sat Apr 18 2009 rguenther(a)suse.de
+- Adjust Ada BuildRequires check.
* Thu Apr 16 2009 ro(a)suse.de
- buildfix: refresh patch gcc41-ia64-stack-protector.patch
* Mon Mar 16 2009 rguenther(a)suse.de
++++++ barcelona.patch ++++++
Index: gcc/config/i386/i386.c
===================================================================
--- gcc/config/i386/i386.c.orig
+++ gcc/config/i386/i386.c
@@ -1650,6 +1650,10 @@ override_options (void)
{"amdfam10", PROCESSOR_AMDFAM10, PTA_MMX | PTA_PREFETCH_SSE | PTA_3DNOW | PTA_64BIT
| PTA_3DNOW_A | PTA_SSE | PTA_SSE2| PTA_SSE3 | PTA_SSE4A
| PTA_POPCNT | PTA_ABM},
+ {"barcelona", PROCESSOR_AMDFAM10, PTA_MMX | PTA_PREFETCH_SSE | PTA_3DNOW
+ | PTA_64BIT | PTA_3DNOW_A | PTA_SSE
+ | PTA_SSE2 | PTA_SSE3 | PTA_POPCNT
+ | PTA_ABM | PTA_SSE4A},
};
int const pta_size = ARRAY_SIZE (processor_alias_table);
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc.orig
+++ gcc/config.gcc
@@ -2396,7 +2396,7 @@ if test x$with_cpu = x ; then
;;
i686-*-* | i786-*-*)
case ${target_noncanonical} in
- amdfam10-*)
+ amdfam10-*|barcelona-*)
with_cpu=amdfam10
;;
k8-*|opteron-*|athlon_64-*)
@@ -2436,7 +2436,7 @@ if test x$with_cpu = x ; then
;;
x86_64-*-*)
case ${target_noncanonical} in
- amdfam10-*)
+ amdfam10-*|barcelona-*)
with_cpu=amdfam10
;;
k8-*|opteron-*|athlon_64-*)
@@ -2668,7 +2668,7 @@ case "${target}" in
esac
# OK
;;
- "" | k8 | opteron | athlon64 | athlon-fx | nocona | generic | amdfam10 )
+ "" | k8 | opteron | athlon64 | athlon-fx | nocona | generic | amdfam10 | barcelona )
# OK
;;
*)
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi.orig
+++ gcc/doc/invoke.texi
@@ -9074,7 +9074,7 @@ instruction set support.
@item k8, opteron, athlon64, athlon-fx
AMD K8 core based CPUs with x86-64 instruction set support. (This supersets
MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and 64-bit instruction set extensions.)
-@item amdfam10
+@item amdfam10, barcelona
AMD Family 10 core based CPUs with x86-64 instruction set support. (This supersets
MMX, SSE, SSE2, SSE4A, 3dNOW!, enhanced 3dNOW!, ABM and 64-bit instruction set
extensions.)
++++++ gcc-4.1.3-20080612.tar.bz2 -> gcc-4.1.2-20070115.tar.bz2 ++++++
gcc41/gcc-4.1.3-20080612.tar.bz2 gcc41/gcc-4.1.2-20070115.tar.bz2 differ: byte 11, line 1
++++++ gcc41-binutils-version.patch ++++++
2007-04-23 Matthias Klose <doko(a)debian.org>
Backport from mainline:
2007-02-27 Richard Guenther <rguenther(a)suse.de>
* acinclude.m4: Adjust regular expression for ld version extraction.
* configure: Regenerate.
2007-09-13 H.J. Lu <hongjiu.lu(a)intel.com>
PR bootstrap/33418
* configure.ac (ld_vers): Support Linux linker.
* configure: Regenerated.
2007-09-23 H.J. Lu <hongjiu.lu(a)intel.com>
* configure.ac (ld_vers): Support GNU linker version xx.xx.*
* configure: Regenerated.
Index: libstdc++-v3/configure
===================================================================
--- libstdc++-v3/configure.orig 2009-04-21 14:26:28.000000000 +0200
+++ libstdc++-v3/configure 2009-04-21 14:33:06.000000000 +0200
@@ -8282,7 +8282,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -53011,7 +53011,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -74289,7 +74289,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -75730,7 +75730,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -77047,7 +77047,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -79151,7 +79151,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -79970,7 +79970,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -81289,7 +81289,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -83000,7 +83000,7 @@ echo "${ECHO_T}$glibcxx_cv_WRITEV" >&6
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -84161,7 +84161,7 @@ _ACEOF
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -85106,7 +85106,7 @@ done
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
Index: libstdc++-v3/acinclude.m4
===================================================================
--- libstdc++-v3/acinclude.m4.orig 2009-04-21 14:26:28.000000000 +0200
+++ libstdc++-v3/acinclude.m4 2009-04-21 14:33:06.000000000 +0200
@@ -225,7 +225,7 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES]
if test x"$with_gnu_ld" = x"yes"; then
changequote(,)
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\3/'`
changequote([,])
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
Index: gcc/configure
===================================================================
--- gcc/configure.orig 2009-04-21 14:33:05.000000000 +0200
+++ gcc/configure 2009-04-21 14:33:06.000000000 +0200
@@ -14138,9 +14138,7 @@ else
ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
if echo "$ld_ver" | grep GNU > /dev/null; then
ld_vers=`echo $ld_ver | sed -n \
- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
+ -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p' \
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
Index: gcc/configure.ac
===================================================================
--- gcc/configure.ac.orig 2009-04-21 14:33:05.000000000 +0200
+++ gcc/configure.ac 2009-04-21 14:33:06.000000000 +0200
@@ -1994,9 +1994,7 @@ else
if echo "$ld_ver" | grep GNU > /dev/null; then
changequote(,)dnl
ld_vers=`echo $ld_ver | sed -n \
- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
+ -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p' \
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
++++++ gcc41-makeinfo.patch ++++++
2007-09-23 Jakub Jelinek <jakub(a)redhat.com>
* configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
* configure: Regenerated.
2007-09-15 Alan Modra <amodra(a)bigpond.net.au>
* configure.in: Correct makeinfo version check.
* configure: Regenerate.
Index: configure
===================================================================
--- configure (revision 128694)
+++ configure (revision 128695)
@@ -3549,7 +3549,7 @@ case " $build_configdirs " in
# For an installed makeinfo, we require it to be from texinfo 4.2 or
# higher, else we use the "missing" dummy.
if ${MAKEINFO} --version \
- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
+ | egrep 'texinfo[^0-9]*(4\.([2-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
:
else
MAKEINFO="$MISSING makeinfo"
Index: gcc/configure
===================================================================
--- gcc/configure (revision 128694)
+++ gcc/configure (revision 128695)
@@ -7495,7 +7495,7 @@ else
echo "configure:7495: version of makeinfo is $ac_prog_version" >&5
case $ac_prog_version in
'') gcc_cv_prog_makeinfo_modern=no;;
- 4.[2-9]*)
+ 4.[2-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*)
gcc_cv_prog_makeinfo_modern=yes;;
*) gcc_cv_prog_makeinfo_modern=no;;
esac
Index: gcc/configure.ac
===================================================================
--- gcc/configure.ac (revision 128694)
+++ gcc/configure.ac (revision 128695)
@@ -833,7 +833,7 @@ MISSING="${CONFIG_SHELL-/bin/sh} $srcdir
# that we can use it.
gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
[GNU texinfo.* \([0-9][0-9.]*\)],
- [4.[2-9]*])
+ [4.[2-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
if test $gcc_cv_prog_makeinfo_modern = no; then
MAKEINFO="$MISSING makeinfo"
AC_MSG_WARN([
Index: configure.in
===================================================================
--- configure.in (revision 128694)
+++ configure.in (revision 128695)
@@ -2134,7 +2134,7 @@ changequote(,)
# For an installed makeinfo, we require it to be from texinfo 4.2 or
# higher, else we use the "missing" dummy.
if ${MAKEINFO} --version \
- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
+ | egrep 'texinfo[^0-9]*(4\.([2-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
:
else
MAKEINFO="$MISSING makeinfo"
++++++ gcc4-ppc64-m32-m64-multilib-only.patch ++++++
--- /var/tmp/diff_new_pack.NA7724/_old 2009-05-01 02:08:06.000000000 +0200
+++ /var/tmp/diff_new_pack.NA7724/_new 2009-05-01 02:08:06.000000000 +0200
@@ -1,10 +1,8 @@
-Index: gcc/config/rs6000/t-linux64
-===================================================================
---- gcc/config/rs6000/t-linux64.orig 2007-10-02 15:05:30.000000000 +0200
-+++ gcc/config/rs6000/t-linux64 2007-10-02 15:17:55.000000000 +0200
-@@ -14,11 +14,11 @@ TARGET_LIBGCC2_CFLAGS += -mno-minimal-to
- # it doesn't tell anything about the 32bit libraries on those systems. Set
- # MULTILIB_OSDIRNAMES according to what is found on the target.
+--- gcc/config/rs6000/t-linux64 2003-06-03 05:11:45.000000000 -0400
++++ gcc/config/rs6000/t-linux64 2003-06-11 17:07:16.000000000 -0400
+@@ -4,13 +4,13 @@ LIB2FUNCS_EXTRA = tramp.S $(srcdir)/conf
+ # Modify the shared lib version file
+ SHLIB_MKMAP_OPTS = -v dotsyms=1
-MULTILIB_OPTIONS = m64/m32 msoft-float
-MULTILIB_DIRNAMES = 64 32 nof
@@ -13,8 +11,12 @@
MULTILIB_EXTRA_OPTS = fPIC mstrict-align
-MULTILIB_EXCEPTIONS = m64/msoft-float
-MULTILIB_EXCLUSIONS = m64/!m32/msoft-float
+-MULTILIB_OSDIRNAMES = ../lib64 ../lib nof
+-MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT)
+MULTILIB_EXCEPTIONS =
+MULTILIB_EXCLUSIONS =
- MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof
- MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT)
++MULTILIB_OSDIRNAMES = ../lib64 ../lib
++MULTILIB_MATCHES =
+
+ TARGET_LIBGCC2_CFLAGS = -mno-minimal-toc -fPIC
++++++ gcc-amdfam10-alignloop.diff ++++++
Index: gcc-4.1.2-20070115/gcc/config/i386/i386.c
===================================================================
--- gcc-4.1.2-20070115.orig/gcc/config/i386/i386.c
+++ gcc-4.1.2-20070115/gcc/config/i386/i386.c
@@ -1583,7 +1583,7 @@ override_options (void)
{&nocona_cost, 0, 0, 0, 0, 0, 0, 0},
{&generic32_cost, 0, 0, 16, 7, 16, 7, 16},
{&generic64_cost, 0, 0, 16, 7, 16, 7, 16},
- {&amdfam10_cost, 0, 0, 32, 7, 32, 7, 32}
+ {&amdfam10_cost, 0, 0, 32, 24, 32, 7, 32}
};
static const char * const cpu_names[] = TARGET_CPU_DEFAULT_NAMES;
++++++ gcc.spec.in ++++++
--- /var/tmp/diff_new_pack.NA7724/_old 2009-05-01 02:08:06.000000000 +0200
+++ /var/tmp/diff_new_pack.NA7724/_new 2009-05-01 02:08:06.000000000 +0200
@@ -57,10 +57,16 @@
Name: gcc@base_ver@@gcc_suffix@
BuildRequires: bison flex gettext-devel glibc-devel-32bit perl texinfo zlib-devel
%if %{build_ada}
-BuildRequires: gcc-ada gcc@base_ver@-ada
+%if %{suse_version} > 1010
+%define hostsuffix -4.1
+BuildRequires: gcc41-ada
+%else
+%define hostsuffix %{nil}
+BuildRequires: gcc-ada
+%endif
%endif
%if %{build_libjava}
-BuildRequires: gtk2-devel libart_lgpl-devel update-desktop-files unzip
+BuildRequires: gtk2-devel libart_lgpl-devel unzip
%endif
%if %{build_fortran}
BuildRequires: mpfr-devel
@@ -133,7 +139,7 @@
URL: http://gcc.gnu.org/
License: GPL
-Version: 4.1.3_20080612
+Version: 4.1.2_20070115
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
@@ -165,6 +171,8 @@
Patch2: gcc-noalias-warn.diff
Patch5: boehm-gc-strict-aliasing.patch
Patch7: acats-timeout.patch
+Patch8: gcc41-makeinfo.patch
+Patch9: gcc41-binutils-version.patch
Patch10: program-transform-name.diff
Patch12: gcc4-ppc64-m32-m64-multilib-only.patch
Patch23: libjava-no-multilib.diff
@@ -186,11 +194,16 @@
Patch97: nov189571-2.diff
Patch98: nvl199137.patch
Patch100: pr28755.patch
-Patch105: pr29166.diff
-Patch106: fix-ada-build.diff
-Patch107: pr20218.patch
-Patch108: pr29558.patch
+Patch101: pr30113.patch
+Patch102: ia64-bad-prologue-generation.patch
+Patch103: pr34130.patch
+Patch104: nov480052.diff
+Patch105: pr34641.patch
+Patch107: fix-ada-build.diff
+Patch108: pr20218.patch
+Patch109: pr29558.patch
Patch110: pr29512.patch
+Patch111: nov495844.diff
Patch123: gcc41-no-unwind-tables.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
@@ -198,6 +211,7 @@
Patch57: gcc41-ppc32-retaddr.patch
Patch54: gcc41-ldbl-default.patch
Patch50: gcc41-ldbl-default-libstdc++.patch
+Patch52: note-gnu-stack.diff
Patch53: gcc41-strncat-chk.patch
# general improvement patches
Patch60: pr25626.patch
@@ -212,9 +226,15 @@
Patch69: gcc41-ssse3.patch
Patch70: pr27880.diff
Patch72: Wprofile-mismatch.patch
-Patch73: parentheses-mathematical-5.diff
-Patch74: Wuninitialized.patch
-Patch75: fpreserve-function-arguments4.patch
+Patch73: fpreserve-function-arguments4.patch
+Patch74: warn-enum.diff
+Patch75: nov277135.diff
+Patch76: nov376357.diff
+Patch77: nov394409.diff
+Patch78: nov354405.diff
+Patch79: nov494022.diff
+Patch80: parentheses-mathematical-5.diff
+Patch81: Wuninitialized.patch
# Greyhound (aka AMD Family 10h) support
Patch200: gcc-amdfam10-suse-1.patch
Patch201: gcc-amdfam10-suse-2.patch
@@ -229,8 +249,13 @@
Patch210: gcc-amdfam10-suse-11.patch
Patch211: gcc-amdfam10-suse-12.patch
Patch212: gcc-amdfam10-suse-20.patch
+Patch213: gcc-amdfam10-alignloop.diff
+Patch214: barcelona.patch
+Patch215: sse5-suse.patch01
# POWER6 support
Patch300: gcc-4.1.0-power6.diff
+Patch301: nov341254-pic.diff
+Patch302: nov341254-altivec.diff
%if "%{gcc_target_arch}" == "avr"
@@ -334,10 +359,10 @@
Libgcc is needed for dynamically linked C programs.
%post -n libgcc@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgcc@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
@@ -362,10 +387,10 @@
et.al.
%post -n libstdc++@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
%postun -n libstdc++@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
@@ -413,10 +438,10 @@
The library for the GNU Objective C compiler.
%post -n libobjc@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
%postun -n libobjc@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
%package obj-c++
@@ -475,10 +500,10 @@
1003.5 Binding (Florist).
%post -n libada@base_ver@@gcc_suffix@
-%run_ldconfig
+/sbin/ldconfig
%postun -n libada@base_ver@@gcc_suffix@
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-BEGIN
%package fortran@variant@
@@ -511,10 +536,10 @@
of the GNU Compiler Collection (GCC).
%post -n libgfortran@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgfortran@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
@@ -534,10 +559,10 @@
This is the Mudflap Extension Runtime Library.
%post -n libmudflap@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
%postun -n libmudflap@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
@@ -569,10 +594,10 @@
Source code for this package is in gcc.
%post -n libgcj@base_ver@@gcc_suffix@
-%run_ldconfig
+/sbin/ldconfig
%postun -n libgcj@base_ver@@gcc_suffix@
-%run_ldconfig
+/sbin/ldconfig
%package -n libgcj@base_ver@-devel@gcc_suffix@
Summary: Include Files and Libraries mandatory for Development.
@@ -614,10 +639,10 @@
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
%post -n libffi@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
%postun -n libffi@base_ver@@gcc_suffix@@variant@
-%run_ldconfig
+/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
@@ -824,6 +849,8 @@
%patch2
%patch5
%patch7
+%patch8
+%patch9
%patch10
%if !%{build_nof}
%patch12
@@ -847,17 +874,23 @@
%patch97
%patch98 -p1
%patch100
+%patch101
+%patch102 -p1
+%patch103
+%patch104
%patch105
-%patch106
%patch107
%patch108
+%patch109
%patch110
+%patch111
%patch123
%patch51
%patch55
%patch57
%patch54
%patch50
+%patch52
%patch53
cd libstdc++-v3
%patch60
@@ -876,6 +909,12 @@
%patch73
%patch74
%patch75
+%patch76
+%patch77
+%patch78
+%patch79
+%patch80
+%patch81
%patch200
%patch201
%patch202
@@ -889,7 +928,12 @@
%patch210
%patch211
%patch212
+%patch213 -p1
+%patch214
+%patch215
%patch300
+%patch301 -p1
+%patch302 -p1
%if "%{gcc_target_arch}" == "avr"
@@ -989,11 +1033,22 @@
# thing point to the native glibc, which is in /, hence the
# --with-sysroot=/
-CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
-TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
%if %{build_ada}
-CC="gcc%{binsuffix}" GNATBIND="gnatbind%{binsuffix}" \
+# Using the host gnatmake like
+# CC="gcc%{hostsuffix}" GNATBIND="gnatbind%{hostsuffix}"
+# GNATMAKE="gnatmake%{hostsuffix}"
+# doesn't work due to PR33857, so an un-suffixed gnatmake has to be
+# available
+mkdir -p host-tools/bin
+cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake
+cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink
+cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind
+cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc
+ln -sf /usr/%{_lib} host-tools/%{_lib}
+export PATH="`pwd`/host-tools/bin:$PATH"
%endif
+CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
+TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
../configure \
%if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
%else
@@ -1061,17 +1116,21 @@
# COMMON-END
# Only run profiled bootstrap on archs where it works
-%ifarch %ix86 x86_64 ppc ppc64 ia64
-make profiledbootstrap BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
-%else
+#%ifarch %ix86 x86_64 ppc ppc64 ia64
+#make profiledbootstrap BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
+#%else
make bootstrap-lean BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
-%endif
+#%endif
#make -C gcc proto
make info
%if %{run_tests}
echo "Run testsuite"
-make -k check $PARALLEL || true
(make -C %{GCCDIST}/libstdc++-v3 check-abi || true)
+mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.log %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.log
+mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.sum %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.sum
+make -k check $PARALLEL || true
+mkdir ../testresults
+../contrib/test_summary > ../testresults/test_summary.txt
%endif
%install
@@ -1236,18 +1295,7 @@
# LIBJAVA-DELETE-END
%endif
-#ln -sf gcc%{binsuffix} $RPM_BUILD_ROOT%{_prefix}/bin/cc%{binsuffix}
-#ln -sf g++%{binsuffix} $RPM_BUILD_ROOT%{_prefix}/bin/c++%{binsuffix}
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/c++%{binsuffix}
-#mkdir -p $RPM_BUILD_ROOT/lib
-#%if !%{gcc_for_opt}
-#cat <<\EOF > $RPM_BUILD_ROOT/lib/cpp
-##!/bin/sh
-## Traditionally, /lib/cpp only knew about C
-#exec %{_prefix}/bin/cpp -xc "$@"
-#EOF
-#chmod 755 $RPM_BUILD_ROOT/lib/cpp
-#%endif
%if %{biarch}
%if %{build_primary_64bit}
@@ -1304,7 +1352,6 @@
%endif
%if %{run_tests}
-mkdir ../testresults
cp `find . -name "*.sum"` ../testresults/
cp `find . -name "*.log" \! -name "config.log" |grep -v 'acats/tests' ` ../testresults/
chmod 644 ../testresults/*
@@ -1499,11 +1546,13 @@
%{libsubdir}/include/mm3dnow.h
%{libsubdir}/include/mmintrin.h
%{libsubdir}/include/ammintrin.h
+%{libsubdir}/include/bmmintrin.h
%{libsubdir}/include/emmintrin.h
%{libsubdir}/include/pmmintrin.h
%{libsubdir}/include/xmmintrin.h
%{libsubdir}/include/tmmintrin.h
%{libsubdir}/include/mm_malloc.h
+%{libsubdir}/include/mmintrin-common.h
%endif
%{libsubdir}/include/mf-runtime.h
%versmainlib *crt*.o
@@ -1877,6 +1926,7 @@
%if %{run_tests}
%files -n gcc@base_ver@@gcc_suffix@-testresults
%defattr(-,root,root)
+%doc testresults/test_summary.txt
%doc testresults/*.sum
%doc testresults/*.log
%endif
++++++ ia64-bad-prologue-generation.patch ++++++
From: Andreas Schwab <andreas(a)suse.de>
Subject: Fix bad prologue generation on ia64
References: 201157 PR29166
This fixes the prologue generation on ia64. The problem is that the
return pointer is saved between the general registers and the branch
registers, causing it to wind up in the middle of the gr/br/fr spill area
when it is saved to memory. When any of the preserved general registers
need to be spilled as well the location of these regsisters is off-by-8
compared to the location described by the unwind information.
:ADDPATCH target/ia64:
Andreas.
2006-11-24 Andreas Schwab <schwab(a)suse.de>
PR target/29166
* config/ia64/ia64.c (ia64_compute_frame_size): Account space for
save of BR0 in extra_spill_size instead of spill_size.
(ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
area.
(ia64_expand_epilogue): Restore BR0 from its new location.
testsuite/:
* g++.dg/eh/pr29166.C: New test.
Index: gcc-4.1.0/gcc/config/ia64/ia64.c
===================================================================
--- gcc-4.1.0.orig/gcc/config/ia64/ia64.c
+++ gcc-4.1.0/gcc/config/ia64/ia64.c
@@ -2398,7 +2398,7 @@ ia64_compute_frame_size (HOST_WIDE_INT s
current_frame_info.reg_save_b0 = find_gr_spill (1);
if (current_frame_info.reg_save_b0 == 0)
{
- spill_size += 8;
+ extra_spill_size += 8;
n_spilled += 1;
}
@@ -2427,7 +2427,7 @@ ia64_compute_frame_size (HOST_WIDE_INT s
if (regs_ever_live[BR_REG (0)] && ! call_used_regs[BR_REG (0)])
{
SET_HARD_REG_BIT (mask, BR_REG (0));
- spill_size += 8;
+ extra_spill_size += 8;
n_spilled += 1;
}
@@ -3107,6 +3107,31 @@ ia64_expand_prologue (void)
}
}
+ /* Save the return pointer. */
+ if (TEST_HARD_REG_BIT (current_frame_info.mask, BR_REG (0)))
+ {
+ reg = gen_rtx_REG (DImode, BR_REG (0));
+ if (current_frame_info.reg_save_b0 != 0)
+ {
+ alt_reg = gen_rtx_REG (DImode, current_frame_info.reg_save_b0);
+ insn = emit_move_insn (alt_reg, reg);
+ RTX_FRAME_RELATED_P (insn) = 1;
+
+ /* Even if we're not going to generate an epilogue, we still
+ need to save the register so that EH works. */
+ if (! epilogue_p)
+ emit_insn (gen_prologue_use (alt_reg));
+ }
+ else
+ {
+ alt_regno = next_scratch_gr_reg ();
+ alt_reg = gen_rtx_REG (DImode, alt_regno);
+ emit_move_insn (alt_reg, reg);
+ do_spill (gen_movdi_x, alt_reg, cfa_off, reg);
+ cfa_off -= 8;
+ }
+ }
+
if (current_frame_info.reg_save_gp)
{
insn = emit_move_insn (gen_rtx_REG (DImode,
@@ -3133,32 +3158,6 @@ ia64_expand_prologue (void)
cfa_off -= 8;
}
- /* Handle BR0 specially -- it may be getting stored permanently in
- some GR register. */
- if (TEST_HARD_REG_BIT (current_frame_info.mask, BR_REG (0)))
- {
- reg = gen_rtx_REG (DImode, BR_REG (0));
- if (current_frame_info.reg_save_b0 != 0)
- {
- alt_reg = gen_rtx_REG (DImode, current_frame_info.reg_save_b0);
- insn = emit_move_insn (alt_reg, reg);
- RTX_FRAME_RELATED_P (insn) = 1;
-
- /* Even if we're not going to generate an epilogue, we still
- need to save the register so that EH works. */
- if (! epilogue_p)
- emit_insn (gen_prologue_use (alt_reg));
- }
- else
- {
- alt_regno = next_scratch_gr_reg ();
- alt_reg = gen_rtx_REG (DImode, alt_regno);
- emit_move_insn (alt_reg, reg);
- do_spill (gen_movdi_x, alt_reg, cfa_off, reg);
- cfa_off -= 8;
- }
- }
-
/* Spill the rest of the BR registers. */
for (regno = BR_REG (1); regno <= BR_REG (7); ++regno)
if (TEST_HARD_REG_BIT (current_frame_info.mask, regno))
@@ -3292,6 +3291,22 @@ ia64_expand_epilogue (int sibcall_p)
emit_move_insn (reg, alt_reg);
}
+ /* Restore the return pointer. */
+ if (TEST_HARD_REG_BIT (current_frame_info.mask, BR_REG (0)))
+ {
+ if (current_frame_info.reg_save_b0 != 0)
+ alt_reg = gen_rtx_REG (DImode, current_frame_info.reg_save_b0);
+ else
+ {
+ alt_regno = next_scratch_gr_reg ();
+ alt_reg = gen_rtx_REG (DImode, alt_regno);
+ do_restore (gen_movdi_x, alt_reg, cfa_off);
+ cfa_off -= 8;
+ }
+ reg = gen_rtx_REG (DImode, BR_REG (0));
+ emit_move_insn (reg, alt_reg);
+ }
+
/* We should now be at the base of the gr/br/fr spill area. */
gcc_assert (cfa_off == (current_frame_info.spill_cfa_off
+ current_frame_info.spill_size));
@@ -3310,23 +3325,7 @@ ia64_expand_epilogue (int sibcall_p)
cfa_off -= 8;
}
- /* Restore the branch registers. Handle B0 specially, as it may
- have gotten stored in some GR register. */
- if (TEST_HARD_REG_BIT (current_frame_info.mask, BR_REG (0)))
- {
- if (current_frame_info.reg_save_b0 != 0)
- alt_reg = gen_rtx_REG (DImode, current_frame_info.reg_save_b0);
- else
- {
- alt_regno = next_scratch_gr_reg ();
- alt_reg = gen_rtx_REG (DImode, alt_regno);
- do_restore (gen_movdi_x, alt_reg, cfa_off);
- cfa_off -= 8;
- }
- reg = gen_rtx_REG (DImode, BR_REG (0));
- emit_move_insn (reg, alt_reg);
- }
-
+ /* Restore the branch registers. */
for (regno = BR_REG (1); regno <= BR_REG (7); ++regno)
if (TEST_HARD_REG_BIT (current_frame_info.mask, regno))
{
Index: gcc-4.1.0/gcc/testsuite/g++.dg/eh/pr29166.C
===================================================================
--- /dev/null
+++ gcc-4.1.0/gcc/testsuite/g++.dg/eh/pr29166.C
@@ -0,0 +1,197 @@
+// PR 29166: r4-r7 corrupted when unwinding.
+// { dg-do run }
+
+class Ex
+{
+public:
+ int val;
+
+ Ex( int v )
+ : val( v )
+ { }
+
+};
+
+void doIt()
+{
+ int OFF( 1000 );
+ register int v1=OFF+1,v2=OFF+2,v3=OFF+3,v4=OFF+4,v5=OFF+5,v6=OFF+6,v7=OFF+7,v8=OFF+8,v9=OFF+9,v10=OFF+10;
+ register int v11=OFF+11,v12=OFF+12,v13=OFF+13,v14=OFF+14,v15=OFF+15,v16=OFF+16,v17=OFF+17,v18=OFF+18,v19=OFF+19,v20=OFF+20;
+ register int v21=OFF+21,v22=OFF+22,v23=OFF+23,v24=OFF+24,v25=OFF+25,v26=OFF+26,v27=OFF+27,v28=OFF+28,v29=OFF+29,v30=OFF+30;
+ register int v31=OFF+31,v32=OFF+32,v33=OFF+33,v34=OFF+34,v35=OFF+35,v36=OFF+36,v37=OFF+37,v38=OFF+38,v39=OFF+39,v40=OFF+40;
+ register int v41=OFF+41,v42=OFF+42,v43=OFF+43,v44=OFF+44,v45=OFF+45,v46=OFF+46,v47=OFF+47,v48=OFF+48,v49=OFF+49,v50=OFF+50;
+ register int v51=OFF+51,v52=OFF+52,v53=OFF+53,v54=OFF+54,v55=OFF+55,v56=OFF+56,v57=OFF+57,v58=OFF+58,v59=OFF+59,v60=OFF+60;
+ register int v61=OFF+61,v62=OFF+62,v63=OFF+63,v64=OFF+64,v65=OFF+65,v66=OFF+66,v67=OFF+67,v68=OFF+68,v69=OFF+69,v70=OFF+70;
+ register int v71=OFF+71,v72=OFF+72,v73=OFF+73,v74=OFF+74,v75=OFF+75,v76=OFF+76,v77=OFF+77,v78=OFF+78,v79=OFF+79,v80=OFF+80;
+ register int v81=OFF+81,v82=OFF+82,v83=OFF+83,v84=OFF+84,v85=OFF+85,v86=OFF+86,v87=OFF+87,v88=OFF+88,v89=OFF+89,v90=OFF+90;
+ register int v91=OFF+91,v92=OFF+92,v93=OFF+93,v94=OFF+94,v95=OFF+95,v96=OFF+96,v97=OFF+97,v98=OFF+98,v99=OFF+99,v100=OFF+100;
+ register int v101=OFF+101,v102=OFF+102,v103=OFF+103,v104=OFF+104,v105=OFF+105,v106=OFF+106,v107=OFF+107,v108=OFF+108,v109=OFF+109,v110=OFF+110;
+ register int v111=OFF+111,v112=OFF+112,v113=OFF+113,v114=OFF+114,v115=OFF+115,v116=OFF+116,v117=OFF+117,v118=OFF+118,v119=OFF+119,v120=OFF+120;
+ register int v121=OFF+121,v122=OFF+122,v123=OFF+123,v124=OFF+124,v125=OFF+125,v126=OFF+126,v127=OFF+127,v128=OFF+128,v129=OFF+129,v130=OFF+130;
+ register int v131=OFF+131,v132=OFF+132,v133=OFF+133,v134=OFF+134,v135=OFF+135,v136=OFF+136,v137=OFF+137,v138=OFF+138,v139=OFF+139,v140=OFF+140;
+ register int v141=OFF+141,v142=OFF+142,v143=OFF+143,v144=OFF+144,v145=OFF+145,v146=OFF+146,v147=OFF+147,v148=OFF+148,v149=OFF+149,v150=OFF+150;
+ register int v151=OFF+151,v152=OFF+152,v153=OFF+153,v154=OFF+154,v155=OFF+155,v156=OFF+156,v157=OFF+157,v158=OFF+158,v159=OFF+159,v160=OFF+160;
+ register int v161=OFF+161,v162=OFF+162,v163=OFF+163,v164=OFF+164,v165=OFF+165,v166=OFF+166,v167=OFF+167,v168=OFF+168,v169=OFF+169,v170=OFF+170;
+ register int v171=OFF+171,v172=OFF+172,v173=OFF+173,v174=OFF+174,v175=OFF+175,v176=OFF+176,v177=OFF+177,v178=OFF+178,v179=OFF+179,v180=OFF+180;
+ register int v181=OFF+181,v182=OFF+182,v183=OFF+183,v184=OFF+184,v185=OFF+185,v186=OFF+186,v187=OFF+187,v188=OFF+188,v189=OFF+189,v190=OFF+190;
+ register int v191=OFF+191,v192=OFF+192,v193=OFF+193,v194=OFF+194,v195=OFF+195,v196=OFF+196,v197=OFF+197,v198=OFF+198,v199=OFF+199,v200=OFF+200;
+ register int v201=OFF+201,v202=OFF+202,v203=OFF+203,v204=OFF+204,v205=OFF+205,v206=OFF+206,v207=OFF+207,v208=OFF+208,v209=OFF+209,v210=OFF+210;
+ register int v211=OFF+211,v212=OFF+212,v213=OFF+213,v214=OFF+214,v215=OFF+215,v216=OFF+216,v217=OFF+217,v218=OFF+218,v219=OFF+219,v220=OFF+220;
+ register int v231=OFF+231,v232=OFF+232,v233=OFF+233,v234=OFF+234,v235=OFF+235,v236=OFF+236,v237=OFF+237,v238=OFF+238,v239=OFF+239,v240=OFF+240;
+ register int v241=OFF+241,v242=OFF+242,v243=OFF+243,v244=OFF+244,v245=OFF+245,v246=OFF+246,v247=OFF+247,v248=OFF+248,v249=OFF+249,v250=OFF+250;
+ register int v251=OFF+251,v252=OFF+252,v253=OFF+253,v254=OFF+254,v255=OFF+255,v256=OFF+256,v257=OFF+257,v258=OFF+258,v259=OFF+259,v260=OFF+260;
+ register int v261=OFF+261,v262=OFF+262,v263=OFF+263,v264=OFF+264,v265=OFF+265,v266=OFF+266,v267=OFF+267,v268=OFF+268,v269=OFF+269,v270=OFF+270;
+ register int v271=OFF+271,v272=OFF+272,v273=OFF+273,v274=OFF+274,v275=OFF+275,v276=OFF+276,v277=OFF+277,v278=OFF+278,v279=OFF+279,v280=OFF+280;
+ register int v281=OFF+281,v282=OFF+282,v283=OFF+283,v284=OFF+284,v285=OFF+285,v286=OFF+286,v287=OFF+287,v288=OFF+288,v289=OFF+289,v290=OFF+290;
+ register int v291=OFF+291,v292=OFF+292,v293=OFF+293,v294=OFF+294,v295=OFF+295,v296=OFF+296,v297=OFF+297,v298=OFF+298,v299=OFF+299,v300=OFF+300;
+
+ register int sum = 0;
+ sum +=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10;
+ sum +=v11+v12+v13+v14+v15+v16+v17+v18+v19+v20;
+ sum +=v21+v22+v23+v24+v25+v26+v27+v28+v29+v30;
+ sum +=v31+v32+v33+v34+v35+v36+v37+v38+v39+v40;
+ sum +=v41+v42+v43+v44+v45+v46+v47+v48+v49+v50;
+ sum +=v51+v52+v53+v54+v55+v56+v57+v58+v59+v60;
+ sum +=v61+v62+v63+v64+v65+v66+v67+v68+v69+v70;
+ sum +=v71+v72+v73+v74+v75+v76+v77+v78+v79+v80;
+ sum +=v81+v82+v83+v84+v85+v86+v87+v88+v89+v90;
+ sum +=v91+v92+v93+v94+v95+v96+v97+v98+v99+v100;
+ sum +=v101+v102+v103+v104+v105+v106+v107+v108+v109+v110;
+ sum +=v111+v112+v113+v114+v115+v116+v117+v118+v119+v120;
+ sum +=v121+v122+v123+v124+v125+v126+v127+v128+v129+v130;
+ sum +=v131+v132+v133+v134+v135+v136+v137+v138+v139+v140;
+ sum +=v141+v142+v143+v144+v145+v146+v147+v148+v149+v150;
+ sum +=v151+v152+v153+v154+v155+v156+v157+v158+v159+v160;
+ sum +=v161+v162+v163+v164+v165+v166+v167+v168+v169+v170;
+ sum +=v171+v172+v173+v174+v175+v176+v177+v178+v179+v180;
+ sum +=v181+v182+v183+v184+v185+v186+v187+v188+v189+v190;
+ sum +=v191+v192+v193+v194+v195+v196+v197+v198+v199+v200;
+ sum +=v201+v202+v203+v204+v205+v206+v207+v208+v209+v210;
+ sum +=v211+v212+v213+v214+v215+v216+v217+v218+v219+v220;
+ sum +=v231+v232+v233+v234+v235+v236+v237+v238+v239+v240;
+ sum +=v241+v242+v243+v244+v245+v246+v247+v248+v249+v250;
+ sum +=v251+v252+v253+v254+v255+v256+v257+v258+v259+v260;
+ sum +=v261+v262+v263+v264+v265+v266+v267+v268+v269+v270;
+ sum +=v271+v272+v273+v274+v275+v276+v277+v278+v279+v280;
+ sum +=v281+v282+v283+v284+v285+v286+v287+v288+v289+v290;
+ sum +=v291+v292+v293+v294+v295+v296+v297+v298+v299+v300;
+
+ throw Ex( sum );
+}
+
+void test()
+{
+ try {
+ doIt();
+ } catch( Ex& ) { }
+}
+
+int main(int argc, char** argv)
+{
+ int OFF(0);
+ register int v1=OFF+1,v2=OFF+2,v3=OFF+3,v4=OFF+4,v5=OFF+5,v6=OFF+6,v7=OFF+7,v8=OFF+8,v9=OFF+9,v10=OFF+10;
+ register int v11=OFF+11,v12=OFF+12,v13=OFF+13,v14=OFF+14,v15=OFF+15,v16=OFF+16,v17=OFF+17,v18=OFF+18,v19=OFF+19,v20=OFF+20;
+ register int v21=OFF+21,v22=OFF+22,v23=OFF+23,v24=OFF+24,v25=OFF+25,v26=OFF+26,v27=OFF+27,v28=OFF+28,v29=OFF+29,v30=OFF+30;
+ register int v31=OFF+31,v32=OFF+32,v33=OFF+33,v34=OFF+34,v35=OFF+35,v36=OFF+36,v37=OFF+37,v38=OFF+38,v39=OFF+39,v40=OFF+40;
+ register int v41=OFF+41,v42=OFF+42,v43=OFF+43,v44=OFF+44,v45=OFF+45,v46=OFF+46,v47=OFF+47,v48=OFF+48,v49=OFF+49,v50=OFF+50;
+ register int v51=OFF+51,v52=OFF+52,v53=OFF+53,v54=OFF+54,v55=OFF+55,v56=OFF+56,v57=OFF+57,v58=OFF+58,v59=OFF+59,v60=OFF+60;
+ register int v61=OFF+61,v62=OFF+62,v63=OFF+63,v64=OFF+64,v65=OFF+65,v66=OFF+66,v67=OFF+67,v68=OFF+68,v69=OFF+69,v70=OFF+70;
+ register int v71=OFF+71,v72=OFF+72,v73=OFF+73,v74=OFF+74,v75=OFF+75,v76=OFF+76,v77=OFF+77,v78=OFF+78,v79=OFF+79,v80=OFF+80;
+ register int v81=OFF+81,v82=OFF+82,v83=OFF+83,v84=OFF+84,v85=OFF+85,v86=OFF+86,v87=OFF+87,v88=OFF+88,v89=OFF+89,v90=OFF+90;
+ register int v91=OFF+91,v92=OFF+92,v93=OFF+93,v94=OFF+94,v95=OFF+95,v96=OFF+96,v97=OFF+97,v98=OFF+98,v99=OFF+99,v100=OFF+100;
+ register int v101=OFF+101,v102=OFF+102,v103=OFF+103,v104=OFF+104,v105=OFF+105,v106=OFF+106,v107=OFF+107,v108=OFF+108,v109=OFF+109,v110=OFF+110;
+ register int v111=OFF+111,v112=OFF+112,v113=OFF+113,v114=OFF+114,v115=OFF+115,v116=OFF+116,v117=OFF+117,v118=OFF+118,v119=OFF+119,v120=OFF+120;
+ register int v121=OFF+121,v122=OFF+122,v123=OFF+123,v124=OFF+124,v125=OFF+125,v126=OFF+126,v127=OFF+127,v128=OFF+128,v129=OFF+129,v130=OFF+130;
+ register int v131=OFF+131,v132=OFF+132,v133=OFF+133,v134=OFF+134,v135=OFF+135,v136=OFF+136,v137=OFF+137,v138=OFF+138,v139=OFF+139,v140=OFF+140;
+ register int v141=OFF+141,v142=OFF+142,v143=OFF+143,v144=OFF+144,v145=OFF+145,v146=OFF+146,v147=OFF+147,v148=OFF+148,v149=OFF+149,v150=OFF+150;
+ register int v151=OFF+151,v152=OFF+152,v153=OFF+153,v154=OFF+154,v155=OFF+155,v156=OFF+156,v157=OFF+157,v158=OFF+158,v159=OFF+159,v160=OFF+160;
+ register int v161=OFF+161,v162=OFF+162,v163=OFF+163,v164=OFF+164,v165=OFF+165,v166=OFF+166,v167=OFF+167,v168=OFF+168,v169=OFF+169,v170=OFF+170;
+ register int v171=OFF+171,v172=OFF+172,v173=OFF+173,v174=OFF+174,v175=OFF+175,v176=OFF+176,v177=OFF+177,v178=OFF+178,v179=OFF+179,v180=OFF+180;
+ register int v181=OFF+181,v182=OFF+182,v183=OFF+183,v184=OFF+184,v185=OFF+185,v186=OFF+186,v187=OFF+187,v188=OFF+188,v189=OFF+189,v190=OFF+190;
+ register int v191=OFF+191,v192=OFF+192,v193=OFF+193,v194=OFF+194,v195=OFF+195,v196=OFF+196,v197=OFF+197,v198=OFF+198,v199=OFF+199,v200=OFF+200;
+ register int v201=OFF+201,v202=OFF+202,v203=OFF+203,v204=OFF+204,v205=OFF+205,v206=OFF+206,v207=OFF+207,v208=OFF+208,v209=OFF+209,v210=OFF+210;
+ register int v211=OFF+211,v212=OFF+212,v213=OFF+213,v214=OFF+214,v215=OFF+215,v216=OFF+216,v217=OFF+217,v218=OFF+218,v219=OFF+219,v220=OFF+220;
+ register int v231=OFF+231,v232=OFF+232,v233=OFF+233,v234=OFF+234,v235=OFF+235,v236=OFF+236,v237=OFF+237,v238=OFF+238,v239=OFF+239,v240=OFF+240;
+ register int v241=OFF+241,v242=OFF+242,v243=OFF+243,v244=OFF+244,v245=OFF+245,v246=OFF+246,v247=OFF+247,v248=OFF+248,v249=OFF+249,v250=OFF+250;
+ register int v251=OFF+251,v252=OFF+252,v253=OFF+253,v254=OFF+254,v255=OFF+255,v256=OFF+256,v257=OFF+257,v258=OFF+258,v259=OFF+259,v260=OFF+260;
+ register int v261=OFF+261,v262=OFF+262,v263=OFF+263,v264=OFF+264,v265=OFF+265,v266=OFF+266,v267=OFF+267,v268=OFF+268,v269=OFF+269,v270=OFF+270;
+ register int v271=OFF+271,v272=OFF+272,v273=OFF+273,v274=OFF+274,v275=OFF+275,v276=OFF+276,v277=OFF+277,v278=OFF+278,v279=OFF+279,v280=OFF+280;
+ register int v281=OFF+281,v282=OFF+282,v283=OFF+283,v284=OFF+284,v285=OFF+285,v286=OFF+286,v287=OFF+287,v288=OFF+288,v289=OFF+289,v290=OFF+290;
+ register int v291=OFF+291,v292=OFF+292,v293=OFF+293,v294=OFF+294,v295=OFF+295,v296=OFF+296,v297=OFF+297,v298=OFF+298,v299=OFF+299,v300=OFF+300;
+
+ int sum_before, sum_after;
+
+ {
+ int sum( 0 );
+ sum +=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10;
+ sum +=v11+v12+v13+v14+v15+v16+v17+v18+v19+v20;
+ sum +=v21+v22+v23+v24+v25+v26+v27+v28+v29+v30;
+ sum +=v31+v32+v33+v34+v35+v36+v37+v38+v39+v40;
+ sum +=v41+v42+v43+v44+v45+v46+v47+v48+v49+v50;
+ sum +=v51+v52+v53+v54+v55+v56+v57+v58+v59+v60;
+ sum +=v61+v62+v63+v64+v65+v66+v67+v68+v69+v70;
+ sum +=v71+v72+v73+v74+v75+v76+v77+v78+v79+v80;
+ sum +=v81+v82+v83+v84+v85+v86+v87+v88+v89+v90;
+ sum +=v91+v92+v93+v94+v95+v96+v97+v98+v99+v100;
+ sum +=v101+v102+v103+v104+v105+v106+v107+v108+v109+v110;
+ sum +=v111+v112+v113+v114+v115+v116+v117+v118+v119+v120;
+ sum +=v121+v122+v123+v124+v125+v126+v127+v128+v129+v130;
+ sum +=v131+v132+v133+v134+v135+v136+v137+v138+v139+v140;
+ sum +=v141+v142+v143+v144+v145+v146+v147+v148+v149+v150;
+ sum +=v151+v152+v153+v154+v155+v156+v157+v158+v159+v160;
+ sum +=v161+v162+v163+v164+v165+v166+v167+v168+v169+v170;
+ sum +=v171+v172+v173+v174+v175+v176+v177+v178+v179+v180;
+ sum +=v181+v182+v183+v184+v185+v186+v187+v188+v189+v190;
+ sum +=v191+v192+v193+v194+v195+v196+v197+v198+v199+v200;
+ sum +=v201+v202+v203+v204+v205+v206+v207+v208+v209+v210;
+ sum +=v211+v212+v213+v214+v215+v216+v217+v218+v219+v220;
+ sum +=v231+v232+v233+v234+v235+v236+v237+v238+v239+v240;
+ sum +=v241+v242+v243+v244+v245+v246+v247+v248+v249+v250;
+ sum +=v251+v252+v253+v254+v255+v256+v257+v258+v259+v260;
+ sum +=v261+v262+v263+v264+v265+v266+v267+v268+v269+v270;
+ sum +=v271+v272+v273+v274+v275+v276+v277+v278+v279+v280;
+ sum +=v281+v282+v283+v284+v285+v286+v287+v288+v289+v290;
+ sum +=v291+v292+v293+v294+v295+v296+v297+v298+v299+v300;
+
+ sum_before = sum;
+ }
+
+ test();
+
+ {
+ int sum( 0 );
+ sum +=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10;
+ sum +=v11+v12+v13+v14+v15+v16+v17+v18+v19+v20;
+ sum +=v21+v22+v23+v24+v25+v26+v27+v28+v29+v30;
+ sum +=v31+v32+v33+v34+v35+v36+v37+v38+v39+v40;
+ sum +=v41+v42+v43+v44+v45+v46+v47+v48+v49+v50;
+ sum +=v51+v52+v53+v54+v55+v56+v57+v58+v59+v60;
+ sum +=v61+v62+v63+v64+v65+v66+v67+v68+v69+v70;
+ sum +=v71+v72+v73+v74+v75+v76+v77+v78+v79+v80;
+ sum +=v81+v82+v83+v84+v85+v86+v87+v88+v89+v90;
+ sum +=v91+v92+v93+v94+v95+v96+v97+v98+v99+v100;
+ sum +=v101+v102+v103+v104+v105+v106+v107+v108+v109+v110;
+ sum +=v111+v112+v113+v114+v115+v116+v117+v118+v119+v120;
+ sum +=v121+v122+v123+v124+v125+v126+v127+v128+v129+v130;
+ sum +=v131+v132+v133+v134+v135+v136+v137+v138+v139+v140;
+ sum +=v141+v142+v143+v144+v145+v146+v147+v148+v149+v150;
+ sum +=v151+v152+v153+v154+v155+v156+v157+v158+v159+v160;
+ sum +=v161+v162+v163+v164+v165+v166+v167+v168+v169+v170;
+ sum +=v171+v172+v173+v174+v175+v176+v177+v178+v179+v180;
+ sum +=v181+v182+v183+v184+v185+v186+v187+v188+v189+v190;
+ sum +=v191+v192+v193+v194+v195+v196+v197+v198+v199+v200;
+ sum +=v201+v202+v203+v204+v205+v206+v207+v208+v209+v210;
+ sum +=v211+v212+v213+v214+v215+v216+v217+v218+v219+v220;
+ sum +=v231+v232+v233+v234+v235+v236+v237+v238+v239+v240;
+ sum +=v241+v242+v243+v244+v245+v246+v247+v248+v249+v250;
+ sum +=v251+v252+v253+v254+v255+v256+v257+v258+v259+v260;
+ sum +=v261+v262+v263+v264+v265+v266+v267+v268+v269+v270;
+ sum +=v271+v272+v273+v274+v275+v276+v277+v278+v279+v280;
+ sum +=v281+v282+v283+v284+v285+v286+v287+v288+v289+v290;
+ sum +=v291+v292+v293+v294+v295+v296+v297+v298+v299+v300;
+
+ sum_after = sum;
+ }
+
+ return sum_before != sum_after;
+}
++++++ note-gnu-stack.diff ++++++
http://gcc.gnu.org/viewcvs?view=rev&revision=107432
2005-05-04 Jakub Jelinek <jakub(a)redhat.com>
Revert:
2005-04-29 Alan Modra <amodra(a)bigpond.net.au>
PR target/21098
* config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
* config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use the above.
2004-09-20 Jakub Jelinek <jakub(a)redhat.com>
* config/rs6000/ppc-asm.h: Add .note.GNU-stack section also
on ppc64-linux.
* config/ia64/lib1funcs.asm: Add .note.GNU-stack section on
ia64-linux.
* config/ia64/crtbegin.asm: Likewise.
* config/ia64/crtend.asm: Likewise.
* config/ia64/crti.asm: Likewise.
* config/ia64/crtn.asm: Likewise.
2004-05-14 Jakub Jelinek <jakub(a)redhat.com>
* config/ia64/linux.h (TARGET_ASM_FILE_END): Define.
boehm-gc/
2005-02-08 Jakub Jelinek <jakub(a)redhat.com>
* ia64_save_regs_in_stack.s: Moved to...
* ia64_save_regs_in_stack.S: ... this. Add .note.GNU-stack
on Linux.
libffi/
2005-02-08 Jakub Jelinek <jakub(a)redhat.com>
* src/alpha/osf.S: Add .note.GNU-stack on Linux.
* src/s390/sysv.S: Likewise.
* src/powerpc/linux64.S: Likewise.
* src/powerpc/linux64_closure.S: Likewise.
* src/powerpc/ppc_closure.S: Likewise.
* src/powerpc/sysv.S: Likewise.
* src/x86/unix64.S: Likewise.
* src/x86/sysv.S: Likewise.
* src/sparc/v8.S: Likewise.
* src/sparc/v9.S: Likewise.
* src/m68k/sysv.S: Likewise.
* src/ia64/unix.S: Likewise.
* src/arm/sysv.S: Likewise.
Index: gcc/config/ia64/linux.h
===================================================================
--- gcc/config/ia64/linux.h (revision 107431)
+++ gcc/config/ia64/linux.h (revision 107432)
@@ -5,6 +5,8 @@
#define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
/* This is for -profile to use -lc_p instead of -lc. */
#undef CC1_SPEC
#define CC1_SPEC "%{profile:-p} %{G*}"
Index: gcc/config/ia64/lib1funcs.asm
===================================================================
--- gcc/config/ia64/lib1funcs.asm (revision 107431)
+++ gcc/config/ia64/lib1funcs.asm (revision 107432)
@@ -792,3 +792,7 @@ __floattitf:
}
.endp __floattitf
#endif
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
Index: gcc/config/ia64/crti.asm
===================================================================
--- gcc/config/ia64/crti.asm (revision 107431)
+++ gcc/config/ia64/crti.asm (revision 107432)
@@ -64,3 +64,7 @@ _fini:
.body
# end of crti.asm
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
Index: gcc/config/ia64/crtn.asm
===================================================================
--- gcc/config/ia64/crtn.asm (revision 107431)
+++ gcc/config/ia64/crtn.asm (revision 107432)
@@ -54,3 +54,7 @@
br.ret.sptk.many b0
# end of crtn.asm
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
Index: gcc/config/ia64/crtend.asm
===================================================================
--- gcc/config/ia64/crtend.asm (revision 107431)
+++ gcc/config/ia64/crtend.asm (revision 107432)
@@ -122,3 +122,7 @@ __do_global_ctors_aux:
br.ret.sptk.many rp
.endp __do_global_ctors_aux
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
Index: gcc/config/ia64/crtbegin.asm
===================================================================
--- gcc/config/ia64/crtbegin.asm (revision 107431)
+++ gcc/config/ia64/crtbegin.asm (revision 107432)
@@ -255,3 +255,7 @@ __do_jv_register_classes:
.weak __cxa_finalize
#endif
.weak _Jv_RegisterClasses
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
Index: gcc/config/rs6000/linux64.h
===================================================================
--- gcc/config/rs6000/linux64.h (revision 107431)
+++ gcc/config/rs6000/linux64.h (revision 107432)
@@ -543,7 +543,7 @@ while (0)
#undef DRAFT_V4_STRUCT_RET
#define DRAFT_V4_STRUCT_RET (!TARGET_64BIT)
-#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
#define TARGET_POSIX_IO
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c (revision 107431)
+++ gcc/config/rs6000/rs6000.c (revision 107432)
@@ -611,7 +611,6 @@ static void rs6000_file_start (void);
static unsigned int rs6000_elf_section_type_flags (tree, const char *, int);
static void rs6000_elf_asm_out_constructor (rtx, int);
static void rs6000_elf_asm_out_destructor (rtx, int);
-static void rs6000_elf_end_indicate_exec_stack (void) ATTRIBUTE_UNUSED;
static void rs6000_elf_select_section (tree, int, unsigned HOST_WIDE_INT);
static void rs6000_elf_unique_section (tree, int);
static void rs6000_elf_select_rtx_section (enum machine_mode, rtx,
@@ -18068,13 +18067,6 @@ rs6000_elf_declare_function_name (FILE *
}
ASM_OUTPUT_LABEL (file, name);
}
-
-static void
-rs6000_elf_end_indicate_exec_stack (void)
-{
- if (TARGET_32BIT)
- file_end_indicate_exec_stack ();
-}
#endif
#if TARGET_XCOFF
Index: gcc/config/rs6000/ppc-asm.h
===================================================================
--- gcc/config/rs6000/ppc-asm.h (revision 107431)
+++ gcc/config/rs6000/ppc-asm.h (revision 107432)
@@ -158,7 +158,7 @@ GLUE(.L,name): \
.size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name)
#endif
-#if defined __linux__ && !defined __powerpc64__
+#if defined __linux__
.section .note.GNU-stack
.previous
#endif
Index: boehm-gc/ia64_save_regs_in_stack.s
===================================================================
--- boehm-gc/ia64_save_regs_in_stack.s (revision 107431)
+++ boehm-gc/ia64_save_regs_in_stack.s (revision 107432)
@@ -1,12 +0,0 @@
- .text
- .align 16
- .global GC_save_regs_in_stack
- .proc GC_save_regs_in_stack
-GC_save_regs_in_stack:
- .body
- flushrs
- ;;
- mov r8=ar.bsp
- br.ret.sptk.few rp
- .endp GC_save_regs_in_stack
-
Index: boehm-gc/ia64_save_regs_in_stack.S
===================================================================
--- boehm-gc/ia64_save_regs_in_stack.S (revision 0)
+++ boehm-gc/ia64_save_regs_in_stack.S (revision 107432)
@@ -0,0 +1,15 @@
+ .text
+ .align 16
+ .global GC_save_regs_in_stack
+ .proc GC_save_regs_in_stack
+GC_save_regs_in_stack:
+ .body
+ flushrs
+ ;;
+ mov r8=ar.bsp
+ br.ret.sptk.few rp
+ .endp GC_save_regs_in_stack
+
+#ifdef __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/powerpc/ppc_closure.S
===================================================================
--- libffi/src/powerpc/ppc_closure.S (revision 107431)
+++ libffi/src/powerpc/ppc_closure.S (revision 107432)
@@ -326,3 +326,7 @@ END(ffi_closure_SYSV)
.LEFDE1:
#endif
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/powerpc/sysv.S
===================================================================
--- libffi/src/powerpc/sysv.S (revision 107431)
+++ libffi/src/powerpc/sysv.S (revision 107432)
@@ -209,3 +209,7 @@ END(ffi_call_SYSV)
.align 2
.LEFDE1:
#endif
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/powerpc/linux64_closure.S
===================================================================
--- libffi/src/powerpc/linux64_closure.S (revision 107431)
+++ libffi/src/powerpc/linux64_closure.S (revision 107432)
@@ -204,3 +204,7 @@ ffi_closure_LINUX64:
.align 3
.LEFDE1:
#endif
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/powerpc/linux64.S
===================================================================
--- libffi/src/powerpc/linux64.S (revision 107431)
+++ libffi/src/powerpc/linux64.S (revision 107432)
@@ -178,3 +178,7 @@ ffi_call_LINUX64:
.align 3
.LEFDE1:
#endif
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/arm/sysv.S
===================================================================
--- libffi/src/arm/sysv.S (revision 107431)
+++ libffi/src/arm/sysv.S (revision 107432)
@@ -207,3 +207,6 @@ LSYM(Lepilogue):
.ffi_call_SYSV_end:
.size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/m68k/sysv.S
===================================================================
--- libffi/src/m68k/sysv.S (revision 107431)
+++ libffi/src/m68k/sysv.S (revision 107432)
@@ -95,3 +95,7 @@ epilogue:
unlk %a6
rts
.size ffi_call_SYSV,.-ffi_call_SYSV
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/alpha/osf.S
===================================================================
--- libffi/src/alpha/osf.S (revision 107431)
+++ libffi/src/alpha/osf.S (revision 107432)
@@ -356,4 +356,8 @@ $LASFDE3:
.byte 16 # uleb128 offset 16*-8
.align 3
$LEFDE3:
+
+#ifdef __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
#endif
Index: libffi/src/x86/sysv.S
===================================================================
--- libffi/src/x86/sysv.S (revision 107431)
+++ libffi/src/x86/sysv.S (revision 107432)
@@ -376,3 +376,7 @@ ffi_closure_raw_SYSV:
#endif
#endif /* ifndef __x86_64__ */
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/x86/unix64.S
===================================================================
--- libffi/src/x86/unix64.S (revision 107431)
+++ libffi/src/x86/unix64.S (revision 107432)
@@ -410,3 +410,7 @@ ffi_closure_unix64:
.LEFDE3:
#endif /* __x86_64__ */
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/s390/sysv.S
===================================================================
--- libffi/src/s390/sysv.S (revision 107431)
+++ libffi/src/s390/sysv.S (revision 107432)
@@ -427,3 +427,6 @@ ffi_closure_SYSV:
#endif
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/ia64/unix.S
===================================================================
--- libffi/src/ia64/unix.S (revision 107431)
+++ libffi/src/ia64/unix.S (revision 107432)
@@ -553,3 +553,7 @@ ffi_closure_unix:
data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT
data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE
data8 @pcrel(.Lld_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/sparc/v9.S
===================================================================
--- libffi/src/sparc/v9.S (revision 107431)
+++ libffi/src/sparc/v9.S (revision 107432)
@@ -300,3 +300,7 @@ longdouble1:
.align 8
.LLEFDE2:
#endif
+
+#ifdef __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
Index: libffi/src/sparc/v8.S
===================================================================
--- libffi/src/sparc/v8.S (revision 107431)
+++ libffi/src/sparc/v8.S (revision 107432)
@@ -265,3 +265,7 @@ done2:
.byte 0x1f ! uleb128 0x1f
.align WS
.LLEFDE2:
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
++++++ nov189571-2.diff ++++++
++++ 1368 lines (skipped)
++++ between gcc41/nov189571-2.diff
++++ and gcc41/nov189571-2.diff
++++++ nov277135.diff ++++++
2007-05-08 Andreas Krebbel <krebbel1(a)de.ibm.com>
* loop.c (move_movables): Remove REG_EQUAL notes for conditional
invariants as well.
* gcc.dg/20070507-1.c: New testcase.
Index: gcc/loop.c
===================================================================
--- gcc/loop.c (revision 124546)
+++ gcc/loop.c (revision 124547)
@@ -2561,7 +2561,7 @@ move_movables (struct loop *loop, struct
like this as a result of record_jump_cond. */
if ((temp = find_reg_note (i1, REG_EQUAL, NULL_RTX))
- && ! loop_invariant_p (loop, XEXP (temp, 0)))
+ && loop_invariant_p (loop, XEXP (temp, 0)) != 1)
remove_note (i1, temp);
}
Index: gcc/testsuite/gcc.dg/20070507-1.c
===================================================================
--- gcc/testsuite/gcc.dg/20070507-1.c (revision 0)
+++ gcc/testsuite/gcc.dg/20070507-1.c (revision 124547)
@@ -0,0 +1,103 @@
+/* This failed on s390x due to bug in loop.c.
+ loop.c failed to remove a REG_EQUAL note when
+ hoisting an insn from a loop body. */
+
+/* { dg-options "-O3 -fPIC" } */
+/* { dg-do run } */
+
+typedef __SIZE_TYPE__ size_t;
+int memcmp(const void *s1, const void *s2, size_t n);
+
+typedef struct
+{
+ char name[30];
+ int a;
+} LOCAL;
+
+int global = 0;
+int sy = 1;
+int subroutine_offset;
+
+LOCAL local = { "local", 0 };
+LOCAL keywords = { "keywords", 1 };
+int local_table = 0;
+int keywords_table = 0;
+
+void __attribute__((noinline)) bar (char *p_buffer)
+{
+ p_buffer[255] = 1;
+}
+
+int __attribute__((noinline)) foo (char *p_str1)
+{
+ global = 1;
+ return 1;
+}
+
+int __attribute__((noinline)) loop_next (int *p_table, char *p_table_head)
+{
+ static loop_next = 0;
+
+ if (loop_next == 1)
+ return 1;
+
+ loop_next = 1;
+ return 0;
+}
+
+int
+main ()
+{
+ char buffer[256];
+ int ende = 0;
+ int index;
+ int local_base = 2;
+
+ keywords.a = 1;
+ for (sy = 0;; sy++)
+ {
+ for (index = 1;;)
+ {
+ bar (buffer);
+ if (buffer[sy] != 0)
+ {
+ ende = 1;
+ break;
+ };
+ if (foo (buffer))
+ {
+ keywords.a += index - 1;
+ break;
+ }
+ index++;
+ }
+ if (ende)
+ break;
+ }
+
+ subroutine_offset = 0;
+
+ for (;;)
+ {
+ if (loop_next (&keywords_table, (char*)&keywords))
+ break;
+
+ if ((!memcmp (keywords.name, "+++", 3)))
+ local_base = 100;
+ else
+ local_base = 0;
+
+ if ((!memcmp (keywords.name, "+++", 3)))
+ subroutine_offset += local_table;
+
+ for (;;)
+ {
+ if (loop_next (&local_table, (char*)&local))
+ break;;
+ if ((local.a == 0))
+ continue;;
+ foo (local.name);
+ }
+ }
+ return 0;
+}
++++++ nov341254-altivec.diff ++++++
--- gcc-4.1.2-20070115/gcc/reload1.c.orig 2006-06-22 21:41:03.000000000 +0530
+++ gcc-4.1.2-20070115/gcc/reload1.c 2007-11-10 13:59:25.000000000 +0530
@@ -880,16 +880,8 @@ reload (rtx first, int global)
{
int something_changed;
int did_spill;
-
HOST_WIDE_INT starting_frame_size;
- /* Round size of stack frame to stack_alignment_needed. This must be done
- here because the stack size may be a part of the offset computation
- for register elimination, and there might have been new stack slots
- created in the last iteration of this loop. */
- if (cfun->stack_alignment_needed)
- assign_stack_local (BLKmode, 0, cfun->stack_alignment_needed);
-
starting_frame_size = get_frame_size ();
set_initial_elim_offsets ();
@@ -956,6 +948,20 @@ reload (rtx first, int global)
/* If we allocated another stack slot, redo elimination bookkeeping. */
if (starting_frame_size != get_frame_size ())
continue;
+ if (starting_frame_size && cfun->stack_alignment_needed)
+ {
+ /* If we have a stack frame, we must align it now. The
+ stack size may be a part of the offset computation for
+ register elimination. So if this changes the stack size,
+ then repeat the elimination bookkeeping. We don't
+ realign when there is no stack, as that will cause a
+ stack frame when none is needed should
+ STARTING_FRAME_OFFSET not be already aligned to
+ STACK_BOUNDARY. */
+ assign_stack_local (BLKmode, 0, cfun->stack_alignment_needed);
+ if (starting_frame_size != get_frame_size ())
+ continue;
+ }
if (caller_save_needed)
{
++++++ nov341254-pic.diff ++++++
--- gcc-4.1.2-20070115/gcc/config/rs6000/rs6000.c.orig 2007-11-10 13:33:29.000000000 +0530
+++ gcc-4.1.2-20070115/gcc/config/rs6000/rs6000.c 2007-11-10 13:51:40.000000000 +0530
@@ -12842,6 +12842,7 @@ rs6000_stack_info (void)
int reg_size = TARGET_32BIT ? 4 : 8;
int ehrd_size;
int save_align;
+ int first_gp;
HOST_WIDE_INT non_fixed_size;
/* Zero all fields portably. */
@@ -12862,14 +12863,19 @@ rs6000_stack_info (void)
/* Calculate which registers need to be saved & save area size. */
info_ptr->first_gp_reg_save = first_reg_to_save ();
/* Assume that we will have to save RS6000_PIC_OFFSET_TABLE_REGNUM,
- even if it currently looks like we won't. */
+ even if it currently looks like we won't. Reload may need it to
+ get at a constant; if so, it will have already created a constant
+ pool entry for it. */
if (((TARGET_TOC && TARGET_MINIMAL_TOC)
|| (flag_pic == 1 && DEFAULT_ABI == ABI_V4)
|| (flag_pic && DEFAULT_ABI == ABI_DARWIN))
+ && current_function_uses_const_pool
&& info_ptr->first_gp_reg_save > RS6000_PIC_OFFSET_TABLE_REGNUM)
- info_ptr->gp_size = reg_size * (32 - RS6000_PIC_OFFSET_TABLE_REGNUM);
+ first_gp = RS6000_PIC_OFFSET_TABLE_REGNUM;
else
- info_ptr->gp_size = reg_size * (32 - info_ptr->first_gp_reg_save);
+ first_gp = info_ptr->first_gp_reg_save;
+
+ info_ptr->gp_size = reg_size * (32 - first_gp);
/* For the SPE, we have an additional upper 32-bits on each GPR.
Ideally we should save the entire 64-bits only when the upper
@@ -12957,7 +12963,7 @@ rs6000_stack_info (void)
+ info_ptr->parm_size);
if (TARGET_SPE_ABI && info_ptr->spe_64bit_regs_used != 0)
- info_ptr->spe_gp_size = 8 * (32 - info_ptr->first_gp_reg_save);
+ info_ptr->spe_gp_size = 8 * (32 - first_gp);
else
info_ptr->spe_gp_size = 0;
++++++ nov354405.diff ++++++
2007-04-29 Bernd Schmidt <bernd.schmidt(a)analog.com>
* reload.c (combine_reloads): When trying to use a dying register,
check whether it's uninitialized and don't use if so.
Index: gcc/reload.c
===================================================================
--- gcc/reload.c (revision 124267)
+++ gcc/reload.c (working copy)
@@ -1867,7 +1867,12 @@
|| ! (TEST_HARD_REG_BIT
(reg_class_contents[(int) rld[secondary_out].class],
REGNO (XEXP (note, 0)))))))
- && ! fixed_regs[REGNO (XEXP (note, 0))])
+ && ! fixed_regs[REGNO (XEXP (note, 0))]
+ /* Check that we don't use a hardreg for an uninitialized
+ pseudo. See also find_dummy_reload(). */
+ && (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER
+ || ! bitmap_bit_p (ENTRY_BLOCK_PTR->il.rtl->global_live_at_end,
+ ORIGINAL_REGNO (XEXP (note, 0)))))
{
rld[output_reload].reg_rtx
= gen_rtx_REG (rld[output_reload].outmode,
++++++ nov376357.diff ++++++
See also http://gcc.gnu.org/ml/gcc-patches/2006-12/msg01769.html .
2007-01-03 Jakub Jelinek <jakub(a)redhat.com>
* unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
(struct _Unwind_Context): Rename args_size to flags, remove
signal_frame field, add a new args_size field and version field.
(_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
_Unwind_IsExtendedContext): New inline functions.
(_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
Assume by_value array is only present if _Unwind_IsExtendedContext.
(_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
_Unwind_IsSignalFrame.
(__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
(uw_update_context_1): Use _Unwind_SetSignalFrame.
(uw_init_context_1): Initialize context->flags to
EXTENDED_CONTEXT_BIT.
* config/rs6000/linux-unwind.h (frob_update_context): Use
_Unwind_SetSignalFrame.
Index: gcc/unwind-dw2.c
===================================================================
--- gcc/unwind-dw2.c (revision 120406)
+++ gcc/unwind-dw2.c (revision 120407)
@@ -70,8 +70,15 @@ struct _Unwind_Context
void *ra;
void *lsda;
struct dwarf_eh_bases bases;
+ /* Signal frame context. */
+#define SIGNAL_FRAME_BIT ((~(_Unwind_Word) 0 >> 1) + 1)
+ /* Context which has version/args_size/by_value fields. */
+#define EXTENDED_CONTEXT_BIT ((~(_Unwind_Word) 0 >> 2) + 1)
+ _Unwind_Word flags;
+ /* 0 for now, can be increased when further fields are added to
+ struct _Unwind_Context. */
+ _Unwind_Word version;
_Unwind_Word args_size;
- char signal_frame;
char by_value[DWARF_FRAME_REGISTERS+1];
};
@@ -123,6 +130,27 @@ read_8u (const void *p) { const union un
static inline unsigned long
read_8s (const void *p) { const union unaligned *up = p; return up->s8; }
+static inline _Unwind_Word
+_Unwind_IsSignalFrame (struct _Unwind_Context *context)
+{
+ return (context->flags & SIGNAL_FRAME_BIT) ? 1 : 0;
+}
+
+static inline void
+_Unwind_SetSignalFrame (struct _Unwind_Context *context, int val)
+{
+ if (val)
+ context->flags |= SIGNAL_FRAME_BIT;
+ else
+ context->flags &= ~SIGNAL_FRAME_BIT;
+}
+
+static inline _Unwind_Word
+_Unwind_IsExtendedContext (struct _Unwind_Context *context)
+{
+ return context->flags & EXTENDED_CONTEXT_BIT;
+}
+
/* Get the value of register INDEX as saved in CONTEXT. */
inline _Unwind_Word
@@ -141,7 +169,7 @@ _Unwind_GetGR (struct _Unwind_Context *c
size = dwarf_reg_size_table[index];
ptr = context->reg[index];
- if (context->by_value[index])
+ if (_Unwind_IsExtendedContext (context) && context->by_value[index])
return (_Unwind_Word) (_Unwind_Internal_Ptr) ptr;
/* This will segfault if the register hasn't been saved. */
@@ -180,7 +208,7 @@ _Unwind_SetGR (struct _Unwind_Context *c
gcc_assert (index < (int) sizeof(dwarf_reg_size_table));
size = dwarf_reg_size_table[index];
- if (context->by_value[index])
+ if (_Unwind_IsExtendedContext (context) && context->by_value[index])
{
context->reg[index] = (void *) (_Unwind_Internal_Ptr) val;
return;
@@ -203,7 +231,7 @@ static inline void *
_Unwind_GetGRPtr (struct _Unwind_Context *context, int index)
{
index = DWARF_REG_TO_UNWIND_COLUMN (index);
- if (context->by_value[index])
+ if (_Unwind_IsExtendedContext (context) && context->by_value[index])
return &context->reg[index];
return context->reg[index];
}
@@ -214,7 +242,8 @@ static inline void
_Unwind_SetGRPtr (struct _Unwind_Context *context, int index, void *p)
{
index = DWARF_REG_TO_UNWIND_COLUMN (index);
- context->by_value[index] = 0;
+ if (_Unwind_IsExtendedContext (context))
+ context->by_value[index] = 0;
context->reg[index] = p;
}
@@ -256,7 +285,7 @@ _Unwind_GetIP (struct _Unwind_Context *c
inline _Unwind_Ptr
_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
{
- *ip_before_insn = context->signal_frame != 0;
+ *ip_before_insn = _Unwind_IsSignalFrame (context);
return (_Unwind_Ptr) context->ra;
}
@@ -824,7 +853,8 @@ execute_cfa_program (const unsigned char
reflected at the point immediately before the call insn.
In signal frames, return address is after last completed instruction,
so we add 1 to return address to make the comparison <=. */
- while (insn_ptr < insn_end && fs->pc < context->ra + context->signal_frame)
+ while (insn_ptr < insn_end
+ && fs->pc < context->ra + _Unwind_IsSignalFrame (context))
{
unsigned char insn = *insn_ptr++;
_Unwind_Word reg, utmp;
@@ -1063,7 +1093,7 @@ uw_frame_state_for (struct _Unwind_Conte
if (context->ra == 0)
return _URC_END_OF_STACK;
- fde = _Unwind_Find_FDE (context->ra + context->signal_frame - 1,
+ fde = _Unwind_Find_FDE (context->ra + _Unwind_IsSignalFrame (context) - 1,
&context->bases);
if (fde == NULL)
{
@@ -1142,6 +1172,7 @@ __frame_state_for (void *pc_target, stru
int reg;
memset (&context, 0, sizeof (struct _Unwind_Context));
+ context.flags = EXTENDED_CONTEXT_BIT;
context.ra = pc_target + 1;
if (uw_frame_state_for (&context, &fs) != _URC_NO_REASON)
@@ -1306,7 +1337,7 @@ uw_update_context_1 (struct _Unwind_Cont
break;
}
- context->signal_frame = fs->signal_frame;
+ _Unwind_SetSignalFrame (context, fs->signal_frame);
#ifdef MD_FROB_UPDATE_CONTEXT
MD_FROB_UPDATE_CONTEXT (context, fs);
@@ -1366,6 +1397,7 @@ uw_init_context_1 (struct _Unwind_Contex
memset (context, 0, sizeof (struct _Unwind_Context));
context->ra = ra;
+ context->flags = EXTENDED_CONTEXT_BIT;
code = uw_frame_state_for (context, &fs);
gcc_assert (code == _URC_NO_REASON);
Index: gcc/config/rs6000/linux-unwind.h
===================================================================
--- gcc/config/rs6000/linux-unwind.h (revision 120406)
+++ gcc/config/rs6000/linux-unwind.h (revision 120407)
@@ -319,7 +319,7 @@ frob_update_context (struct _Unwind_Cont
if (pc[0] == 0x38210000 + SIGNAL_FRAMESIZE
&& (pc[1] == 0x38000077 || pc[1] == 0x380000AC)
&& pc[2] == 0x44000002)
- context->signal_frame = 1;
+ _Unwind_SetSignalFrame (context, 1);
#else
/* li r0, 0x7777; sc (sigreturn old) */
/* li r0, 0x0077; sc (sigreturn new) */
@@ -328,7 +328,7 @@ frob_update_context (struct _Unwind_Cont
if ((pc[0] == 0x38007777 || pc[0] == 0x38000077
|| pc[0] == 0x38006666 || pc[0] == 0x380000AC)
&& pc[1] == 0x44000002)
- context->signal_frame = 1;
+ _Unwind_SetSignalFrame (context, 1);
#endif
#ifdef __powerpc64__
++++++ nov394409.diff ++++++
Date: Thu, 2 Aug 2007 10:13:08 +0200
From: Andreas Krebbel <Andreas dot Krebbel at de dot ibm dot com>
To: gcc-patches at gcc dot gnu dot org
Subject: [Committed 4.1 4.2 mainline] S/390: Fix xordi3_cconly pattern
Message-ID: <20070802081308.GA25193(a)blc4eb430604175.ibm.com>
Hi,
I've applied the attached trivial fix to 4.1 4.2 and mainline.
The problem occured first with 4.2 but I think it is safe for 4.1
as well.
Bootstrapped with GCC 4.2 on s390x.
Bye,
-Andreas-
2007-08-02 Andreas Krebbel <krebbel1(a)de.ibm.com>
* config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
Index: gcc/config/s390/s390.md
===================================================================
--- gcc/config/s390/s390.md.orig
+++ gcc/config/s390/s390.md
@@ -5902,7 +5902,7 @@
"s390_match_ccmode(insn, CCTmode) && TARGET_64BIT"
"@
xgr\t%0,%2
- xr\t%0,%2"
+ xg\t%0,%2"
[(set_attr "op_type" "RRE,RXY")])
(define_insn "*xordi3_extimm"
++++++ nov480052.diff ++++++
2007-06-28 Jakub Jelinek <jakub(a)redhat.com>
* config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
decl is non-external for AIX ABI.
2007-06-28 David Edelsohn <edelsohn(a)gnu.org>
* config/rs6000/predicates.md (current_file_function_operand):
Ensure the symbol is non-external for AIX ABI.
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c (revision 126077)
+++ gcc/config/rs6000/rs6000.c (revision 126078)
@@ -13327,7 +13327,8 @@ rs6000_function_ok_for_sibcall (tree dec
}
}
if (DEFAULT_ABI == ABI_DARWIN
- || (*targetm.binds_local_p) (decl))
+ || ((*targetm.binds_local_p) (decl)
+ && (DEFAULT_ABI != ABI_AIX || !DECL_EXTERNAL (decl))))
{
tree attr_list = TYPE_ATTRIBUTES (TREE_TYPE (decl));
Index: gcc/config/rs6000/predicates.md
===================================================================
--- gcc/config/rs6000/predicates.md (revision 126077)
+++ gcc/config/rs6000/predicates.md (revision 126078)
@@ -691,7 +691,9 @@ (define_predicate "call_operand"
(define_predicate "current_file_function_operand"
(and (match_code "symbol_ref")
(match_test "(DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))
- && (SYMBOL_REF_LOCAL_P (op)
+ && ((SYMBOL_REF_LOCAL_P (op)
+ && (DEFAULT_ABI != ABI_AIX
+ || !SYMBOL_REF_EXTERNAL_P (op)))
|| (op == XEXP (DECL_RTL (current_function_decl),
0)))")))
++++++ nov494022.diff ++++++
2008-08-12 Jakub Jelinek <jakub(a)redhat.com>
PR middle-end/37014
* expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
and TRUTH_ORIF_EXPR.
* dojump.c (do_jump): Likewise.
PR middle-end/37014
* gcc.c-torture/compile/20080812-1.c: New test.
Index: gcc/dojump.c
===================================================================
--- gcc/dojump.c (revision 145698)
+++ gcc/dojump.c (working copy)
@@ -306,8 +306,6 @@ do_jump (tree exp, rtx if_false_label, r
break;
}
- case TRUTH_ANDIF_EXPR:
- case TRUTH_ORIF_EXPR:
case COMPOUND_EXPR:
/* Lowered by gimplify.c. */
gcc_unreachable ();
@@ -517,6 +515,7 @@ do_jump (tree exp, rtx if_false_label, r
if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
goto normal;
+ case TRUTH_ANDIF_EXPR:
if (if_false_label == NULL_RTX)
{
drop_through_label = gen_label_rtx ();
@@ -537,6 +536,7 @@ do_jump (tree exp, rtx if_false_label, r
if (BRANCH_COST >= 4 || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1)))
goto normal;
+ case TRUTH_ORIF_EXPR:
if (if_true_label == NULL_RTX)
{
drop_through_label = gen_label_rtx ();
Index: gcc/expr.c
===================================================================
--- gcc/expr.c (revision 145698)
+++ gcc/expr.c (working copy)
@@ -8264,7 +8264,10 @@ expand_expr_real_1 (tree exp, rtx target
/* If no set-flag instruction, must generate a conditional store
into a temporary variable. Drop through and handle this
like && and ||. */
-
+ /* Although TRUTH_{AND,OR}IF_EXPR aren't present in GIMPLE, they
+ are occassionally created by folding during expansion. */
+ case TRUTH_ANDIF_EXPR:
+ case TRUTH_ORIF_EXPR:
if (! ignore
&& (target == 0
|| modifier == EXPAND_STACK_PARM
@@ -8465,8 +8468,6 @@ expand_expr_real_1 (tree exp, rtx target
case POSTDECREMENT_EXPR:
case LOOP_EXPR:
case EXIT_EXPR:
- case TRUTH_ANDIF_EXPR:
- case TRUTH_ORIF_EXPR:
/* Lowered by gimplify.c. */
gcc_unreachable ();
Index: gcc/testsuite/gcc.c-torture/compile/20080812-1.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/20080812-1.c (revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/20080812-1.c (revision 0)
@@ -0,0 +1,21 @@
+/* PR middle-end/37014 */
+
+void bar (signed char *);
+
+void
+foo (int x, int y)
+{
+ int i;
+ signed char a[123], b[123], c;
+ for (i = 0; i < 123; i++)
+ {
+ int e = y - x;
+ int d = e < 0 ? -e : e;
+ c = d < 75;
+ a[y] = c;
+ b[y] = c;
+ y--;
+ }
+ bar (b);
+ bar (a);
+}
++++++ nov495844.diff ++++++
2009-04-23 Richard Guenther <rguenther(a)suse.de>
* tree-ssa-loop-ivopts.c (iv_expression_expensive_p): New function.
(may_eliminate_iv): Use it.
* gcc.dg/tree-ssa/bnc495844.c: New testcase.
Index: gcc/tree-ssa-loop-ivopts.c
===================================================================
*** gcc/tree-ssa-loop-ivopts.c (revision 146521)
--- gcc/tree-ssa-loop-ivopts.c (working copy)
*************** iv_elimination_compare (struct ivopts_da
*** 3996,4001 ****
--- 3996,4045 ----
return (exit->flags & EDGE_TRUE_VALUE ? EQ_EXPR : NE_EXPR);
}
+ /* Returns true if the expression EXPR is considered to be too expensive
+ for induction variable elimination. */
+
+ static bool
+ iv_expression_expensive_p (tree expr)
+ {
+ enum tree_code code;
+
+ if (is_gimple_val (expr))
+ return false;
+
+ code = TREE_CODE (expr);
+ if (code == TRUNC_DIV_EXPR
+ || code == CEIL_DIV_EXPR
+ || code == FLOOR_DIV_EXPR
+ || code == ROUND_DIV_EXPR
+ || code == TRUNC_MOD_EXPR
+ || code == CEIL_MOD_EXPR
+ || code == FLOOR_MOD_EXPR
+ || code == ROUND_MOD_EXPR
+ || code == EXACT_DIV_EXPR)
+ {
+ /* Division by power of two is usually cheap, so we allow it.
+ Forbid anything else. */
+ if (!integer_pow2p (TREE_OPERAND (expr, 1)))
+ return true;
+ }
+
+ switch (TREE_CODE_CLASS (code))
+ {
+ case tcc_binary:
+ case tcc_comparison:
+ if (iv_expression_expensive_p (TREE_OPERAND (expr, 1)))
+ return true;
+
+ /* Fallthru. */
+ case tcc_unary:
+ return iv_expression_expensive_p (TREE_OPERAND (expr, 0));
+
+ default:
+ return true;
+ }
+ }
+
/* Check whether it is possible to express the condition in USE by comparison
of candidate CAND. If so, store the value compared with to BOUND. */
*************** may_eliminate_iv (struct ivopts_data *da
*** 4053,4058 ****
--- 4097,4106 ----
return false;
*bound = cand_value_at (loop, cand, use->stmt, nit);
+ /* It is unlikely that computing the number of iterations using division
+ would be more profitable than keeping the original induction variable. */
+ if (iv_expression_expensive_p (*bound))
+ return false;
return true;
}
Index: gcc/testsuite/gcc.dg/tree-ssa/bnc495844.c
===================================================================
*** gcc/testsuite/gcc.dg/tree-ssa/bnc495844.c (revision 0)
--- gcc/testsuite/gcc.dg/tree-ssa/bnc495844.c (revision 0)
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+
+ unsigned long
+ foo (const char *d, int len, char *dict, unsigned long o)
+ {
+ int point_me;
+ for (point_me = 0; point_me < len; point_me += 3)
+ o += dict[point_me];
+ return o;
+ }
+
+ /* { dg-final { scan-tree-dump-not "/\\\[fl\\\] 3" "optimized" } } */
+ /* { dg-final { cleanup-tree-dump "optimized" } } */
++++++ pr30113.patch ++++++
Subject: Bug 30113
Author: rakdver
Date: Mon Dec 11 21:29:44 2006
New Revision: 119748
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=119748
Log:
PR rtl-optimization/30113
* loop-iv.c (implies_p): Require the mode of the operands to be
scalar.
Index: gcc/loop-iv.c
===================================================================
*** gcc/loop-iv.c (revision 120791)
--- gcc/loop-iv.c (working copy)
*************** implies_p (rtx a, rtx b)
*** 1497,1503 ****
mode = VOIDmode;
}
! if (mode != VOIDmode
&& rtx_equal_p (op1, opb1)
&& simplify_gen_binary (MINUS, mode, opb0, op0) == const1_rtx)
return true;
--- 1497,1503 ----
mode = VOIDmode;
}
! if (SCALAR_INT_MODE_P (mode)
&& rtx_equal_p (op1, opb1)
&& simplify_gen_binary (MINUS, mode, opb0, op0) == const1_rtx)
return true;
++++++ pr34130.patch ++++++
2007-11-17 Richard Guenther <rguenther(a)suse.de>
PR middle-end/34130
* fold-const.c (extract_muldiv_1): Do not move negative
constants inside ABS_EXPR.
* gcc.c-torture/execute/pr34130.c: New testcase.
Index: gcc/fold-const.c
===================================================================
*** gcc/fold-const.c (revision 130238)
--- gcc/fold-const.c (working copy)
*************** extract_muldiv_1 (tree t, tree c, enum t
*** 6095,6100 ****
--- 6095,6103 ----
}
break;
}
+ /* If the constant is negative, we cannot simplify this. */
+ if (tree_int_cst_sgn (c) == -1)
+ break;
/* FALLTHROUGH */
case NEGATE_EXPR:
if ((t1 = extract_muldiv (op0, c, code, wide_type, strict_overflow_p))
Index: gcc/testsuite/gcc.c-torture/execute/pr34130.c
===================================================================
*** gcc/testsuite/gcc.c-torture/execute/pr34130.c (revision 0)
--- gcc/testsuite/gcc.c-torture/execute/pr34130.c (revision 0)
***************
*** 0 ****
--- 1,12 ----
+ extern void abort (void);
+ int foo (int i)
+ {
+ return -2 * __builtin_abs(i - 2);
+ }
+ int main()
+ {
+ if (foo(1) != -2
+ || foo(3) != -2)
+ abort ();
+ return 0;
+ }
++++++ pr34641.patch ++++++
Subject: GCC 4.1 Fix für GCC Bugzilla 34641
Hallo,
ich musste gerade feststellen, dass wir mit 4.1 beim Kernelbuild
neuerdings in das gleiche Problem laufen. Ich hatte dazu ulkigerweise
schon einen 4.1 Patch auf der Platte rumliegen, also vermute ich, dass
ich euch das schoneinmal angetragen hatte. Ich konnte allerdings keinen
passenden Bugzilla für Sles 10 finden. Könntest du kurz checken, ob der
für Sles 10 SP 3 eingeplant ist?
Dank
-Andreas-
Index: gcc/reload.c
===================================================================
*** gcc/reload.c.orig 2008-07-31 14:03:10.000000000 +0200
--- gcc/reload.c 2008-07-31 16:49:52.000000000 +0200
*************** push_reload (rtx in, rtx out, rtx *inloc
*** 943,971 ****
if (outmode == VOIDmode && out != 0)
outmode = GET_MODE (out);
! /* If IN is a pseudo register everywhere-equivalent to a constant, and
! it is not in a hard register, reload straight from the constant,
! since we want to get rid of such pseudo registers.
! Often this is done earlier, but not always in find_reloads_address. */
if (in != 0 && REG_P (in))
{
int regno = REGNO (in);
! if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] < 0
! && reg_equiv_constant[regno] != 0)
! in = reg_equiv_constant[regno];
}
! /* Likewise for OUT. Of course, OUT will never be equivalent to
! an actual constant, but it might be equivalent to a memory location
! (in the case of a parameter). */
if (out != 0 && REG_P (out))
{
int regno = REGNO (out);
! if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] < 0
! && reg_equiv_constant[regno] != 0)
! out = reg_equiv_constant[regno];
}
/* If we have a read-write operand with an address side-effect,
--- 943,975 ----
if (outmode == VOIDmode && out != 0)
outmode = GET_MODE (out);
! /* If find_reloads and friends until now missed to replace a pseudo
! with a constant of reg_equiv_constant something went wrong
! beforehand.
! Note that it can't simply be done here if we missed it earlier
! since the constant might need to be pushed into the literal pool
! and the resulting memref would probably need further
! reloading. */
if (in != 0 && REG_P (in))
{
int regno = REGNO (in);
! gcc_assert (regno < FIRST_PSEUDO_REGISTER
! || reg_renumber[regno] >= 0
! || reg_equiv_constant[regno] == NULL_RTX);
}
! /* reg_equiv_constant only contains constants which are obviously
! not appropriate as destination. So if we would need to replace
! the destination pseudo with a constant we are in real
! trouble. */
if (out != 0 && REG_P (out))
{
int regno = REGNO (out);
! gcc_assert (regno < FIRST_PSEUDO_REGISTER
! || reg_renumber[regno] >= 0
! || reg_equiv_constant[regno] == NULL_RTX);
}
/* If we have a read-write operand with an address side-effect,
*************** find_reloads_address (enum machine_mode
*** 4751,4765 ****
{
regno = REGNO (ad);
! /* If the register is equivalent to an invariant expression, substitute
! the invariant, and eliminate any eliminable register references. */
! tem = reg_equiv_constant[regno];
! if (tem != 0
! && (tem = eliminate_regs (tem, mode, insn))
! && strict_memory_address_p (mode, tem))
{
! *loc = ad = tem;
! return 0;
}
tem = reg_equiv_memory_loc[regno];
--- 4755,4766 ----
{
regno = REGNO (ad);
! if (reg_equiv_constant[regno] != 0)
{
! find_reloads_address_part (reg_equiv_constant[regno], loc,
! BASE_REG_CLASS,
! GET_MODE (ad), opnum, type, ind_levels);
! return 1;
}
tem = reg_equiv_memory_loc[regno];
++++++ sse5-suse.patch01 ++++++
++++ 6215 lines (skipped)
++++++ warn-enum.diff ++++++
This is for fate #300955, which puts the warning under -Wconversion control.
Index: gcc/cp/call.c
===================================================================
--- gcc/cp/call.c.orig
+++ gcc/cp/call.c
@@ -3841,7 +3841,7 @@ build_new_op (enum tree_code code, int f
&& (TYPE_MAIN_VARIANT (TREE_TYPE (arg1))
!= TYPE_MAIN_VARIANT (TREE_TYPE (arg2))))
{
- warning (0, "comparison between %q#T and %q#T",
+ warning (OPT_Wconversion, "comparison between %q#T and %q#T",
TREE_TYPE (arg1), TREE_TYPE (arg2));
}
break;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package kdesdk3 for openSUSE:Factory
checked in at Fri May 1 02:05:54 CEST 2009.
--------
--- KDE/kdesdk3/kdesdk3.changes 2009-02-13 13:56:57.000000000 +0100
+++ kdesdk3/kdesdk3.changes 2009-04-29 10:06:12.000000000 +0200
@@ -1,0 +2,5 @@
+Wed Apr 29 10:05:51 CEST 2009 - coolo(a)suse.de
+
+- update 3.5 branch diff to fix compilation with gcc 4.4
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdesdk3.spec ++++++
--- /var/tmp/diff_new_pack.jA2433/_old 2009-05-01 02:04:49.000000000 +0200
+++ /var/tmp/diff_new_pack.jA2433/_new 2009-05-01 02:04:49.000000000 +0200
@@ -38,7 +38,7 @@
Group: System/GUI/KDE
Summary: The KDE Software Development Kit
Version: 3.5.10
-Release: 13
+Release: 14
Url: http://www.kde.org/
Requires: kdelibs3 >= %( echo `rpm -q --queryformat '%{VERSION}' kdelibs3`)
Requires: cvs
@@ -353,6 +353,8 @@
/opt/kde3/include/repository_stub.h
%changelog
+* Wed Apr 29 2009 coolo(a)suse.de
+- update 3.5 branch diff to fix compilation with gcc 4.4
* Fri Feb 13 2009 coolo(a)suse.de
- remove the dependency on kdepim3-devel, kbugbuster stopped working
with new bugs.kde.org anyway
@@ -594,7 +596,7 @@
- update to snapshot 2004011309
* Mon Dec 01 2003 adrian(a)suse.de
- update to 3.1.94 ( KDE 3.2 beta 2 )
-* Thu Nov 13 2003 adrian(a)suse.de
+* Fri Nov 14 2003 adrian(a)suse.de
- update to new snapshot from 2003102409
* Wed Oct 29 2003 adrian(a)suse.de
- update to KDE 3.2 beta1
@@ -690,7 +692,7 @@
- update to 3.0 final :)
* Thu Mar 21 2002 adrian(a)suse.de
- update to 3.0rc3
-* Sun Mar 10 2002 adrian(a)suse.de
+* Mon Mar 11 2002 adrian(a)suse.de
- update to 3.0rc2
* Mon Mar 04 2002 adrian(a)suse.de
- update to 3.0rc1
@@ -738,9 +740,9 @@
- neededforbuild fix
* Tue Mar 27 2001 ro(a)suse.de
- changed neededforbuild <docbkdsl> to <docbook-dsssl-stylesheets>
-* Tue Mar 20 2001 adrian(a)suse.de
+* Wed Mar 21 2001 adrian(a)suse.de
- update to final 2.1.1
-* Sun Mar 18 2001 ro(a)suse.de
+* Mon Mar 19 2001 ro(a)suse.de
- fixed neededforbuild
* Tue Mar 13 2001 ro(a)suse.de
- removed second occurence of docbk30 from neededforbuild
@@ -758,7 +760,7 @@
- fixed neededforbuild: += libmng-devel
* Tue Oct 17 2000 adrian(a)suse.de
- update to 2.0.0
-* Mon Sep 18 2000 adrian(a)suse.de
+* Tue Sep 19 2000 adrian(a)suse.de
- switch to -O0 for axp
* Sun Sep 17 2000 adrian(a)suse.de
- update to post final beta
@@ -770,5 +772,5 @@
- snapshot from 17.07.2000
* Sun Jul 09 2000 adrian(a)suse.de
- snapshot from 06.07.2000
-* Thu Jul 06 2000 adrian(a)suse.de
+* Fri Jul 07 2000 adrian(a)suse.de
- Spec file created from kdesdk-1.91.20000706.tar.gz by autospec
++++++ 3_5_BRANCH.diff ++++++
--- /var/tmp/diff_new_pack.jA2433/_old 2009-05-01 02:04:49.000000000 +0200
+++ /var/tmp/diff_new_pack.jA2433/_new 2009-05-01 02:04:49.000000000 +0200
@@ -3,13 +3,151 @@
--- BRANCH_STATUS
+++ BRANCH_STATUS
@@ -0,0 +1,2 @@
-+current HEAD:
++current HEAD: 957058
+svn di between //tags/KDE/3.5.10/kdesdk and //branches/KDE/3.5/kdesdk
+--- poxml/antlr/antlr/CharScanner.hpp
++++ poxml/antlr/antlr/CharScanner.hpp
+@@ -42,6 +42,7 @@
+ #include "antlr/BitSet.hpp"
+ #include "antlr/LexerSharedInputState.hpp"
+ #include <map>
++#include <cstdio>
+
+ ANTLR_BEGIN_NAMESPACE(antlr)
+
+--- kcachegrind/kcachegrind/callgraphview.cpp
++++ kcachegrind/kcachegrind/callgraphview.cpp
+@@ -2073,13 +2073,12 @@
+ continue;
+ }
+
+- // artifical calls should be blue
+- bool isArtifical = false;
+- TraceFunction* caller = e->fromNode()->function();
+- TraceFunction* called = e->toNode()->function();
+- if (caller->cycle() == caller) isArtifical = true;
+- if (called->cycle() == called) isArtifical = true;
+- QColor arrowColor = isArtifical ? Qt::blue : Qt::black;
++ // calls into/out of cycles are special: make them blue
++ QColor arrowColor = Qt::black;
++ TraceFunction* caller = e->fromNode() ? e->fromNode()->function() : 0;
++ TraceFunction* called = e->toNode() ? e->toNode()->function() : 0;
++ if ( (caller && (caller->cycle() == caller)) ||
++ (called && (called->cycle() == called)) ) arrowColor = Qt::blue;
+
+ sItem = new CanvasEdge(e, _canvas);
+ e->setCanvasEdge(sItem);
+--- cervisia/repositories.cpp
++++ cervisia/repositories.cpp
+@@ -29,17 +29,29 @@
+ #include "cervisiapart.h"
+
+
++static QString fileNameCvs()
++{
++ return QDir::homeDirPath() + "/.cvspass";
++}
++
++
++static QString fileNameCvsnt()
++{
++ return QDir::homeDirPath() + "/.cvs/cvspass";
++}
++
++
+ // old .cvspass format:
+ // user@host:/path Acleartext_password
+ //
+ // new .cvspass format (since cvs 1.11.1):
+ // /1 user@host:port/path Aencoded_password
+ //
+-QStringList Repositories::readCvsPassFile()
++static QStringList readCvsPassFile()
+ {
+ QStringList list;
+-
+- QFile f(QDir::homeDirPath() + "/.cvspass");
++
++ QFile f(fileNameCvs());
+ if (f.open(IO_ReadOnly))
+ {
+ QTextStream stream(&f);
+@@ -55,13 +67,46 @@
+ list.append(line.section(' ', 1, 1));
+ }
+ }
+- f.close();
+ }
+
+ return list;
+ }
+
+
++// .cvs/cvspass format
++// user@host:port/path=Aencoded_password
++//
++static QStringList readCvsntPassFile()
++{
++ QStringList list;
++
++ QFile file(fileNameCvsnt());
++ if (file.open(IO_ReadOnly))
++ {
++ QTextStream stream(&file);
++ while (!stream.atEnd())
++ {
++ const QString line(stream.readLine());
++
++ const int pos(line.find("=A"));
++ if (pos >= 0)
++ list.append(line.left(pos));
++ }
++ }
++
++ return list;
++}
++
++
++QStringList Repositories::readCvsPassFile()
++{
++ return (QFileInfo(fileNameCvs()).lastModified()
++ < QFileInfo(fileNameCvsnt()).lastModified())
++ ? readCvsntPassFile()
++ : ::readCvsPassFile();
++}
++
++
+ QStringList Repositories::readConfigFile()
+ {
+ QStringList list;
+--- cervisia/ChangeLog
++++ cervisia/ChangeLog
+@@ -1,3 +1,8 @@
++2008-08-15 André Wöbbeking <Woebbeking(a)kde.org>
++
++ * Fix BR #162523:
++ Allow cvsnt users to login to repositories.
++
+ 2008-06-18 André Wöbbeking <Woebbeking(a)kde.org>
+
+ * Fix BR #164216:
+--- cervisia/cvsservice/cvsloginjob.cpp
++++ cervisia/cvsservice/cvsloginjob.cpp
+@@ -104,7 +104,8 @@
+ }
+
+ // process asks for the password
+- if( line.contains(PASS_PHRASE) )
++ // search case insensitive as cvs and cvsnt use different capitalization
++ if( line.contains(PASS_PHRASE, false) )
+ {
+ kdDebug(8051) << "process waits for the password." << endl;
+
-Eigenschaftsänderungen: .
+Property changes on: .
___________________________________________________________________
-Gelöscht: svn:mergeinfo
-Hinzugefügt: svn:externals
+Deleted: svn:mergeinfo
+Added: svn:externals
+ admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package icecream for openSUSE:Factory
checked in at Fri May 1 02:04:36 CEST 2009.
--------
--- icecream/icecream.changes 2009-02-15 14:59:22.000000000 +0100
+++ icecream/icecream.changes 2009-04-30 14:50:19.000000000 +0200
@@ -1,0 +2,9 @@
+Thu Apr 30 14:49:13 CEST 2009 - coolo(a)suse.de
+
+- Update to 0.9.4
+ - don't leak file descriptor to create-env
+ - don't use the shell to call simple commands
+ - make a special exception for - in rest args (bnc#495786)
+ - Fix way icecream changes permissions of /var/cache/icecream
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
icecc-0.9.3.tar.bz2
New:
----
icecc-0.9.4.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ icecream.spec ++++++
--- /var/tmp/diff_new_pack.e12338/_old 2009-05-01 01:59:29.000000000 +0200
+++ /var/tmp/diff_new_pack.e12338/_new 2009-05-01 01:59:29.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package icecream (Version 0.9.3)
+# spec file for package icecream (Version 0.9.4)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -31,7 +31,7 @@
%endif
PreReq: /usr/sbin/useradd /usr/sbin/groupadd
Requires: gcc-c++
-Version: 0.9.3
+Version: 0.9.4
Release: 1
Source0: ftp://ftp.suse.com/pub/projects/icecream/icecc-%{version}.tar.bz2
Source1: %name-manpages.tar.bz2
@@ -148,6 +148,12 @@
%_libdir/pkgconfig/icecc.pc
%changelog
+* Thu Apr 30 2009 coolo(a)suse.de
+- Update to 0.9.4
+ - don't leak file descriptor to create-env
+ - don't use the shell to call simple commands
+ - make a special exception for - in rest args (bnc#495786)
+ - Fix way icecream changes permissions of /var/cache/icecream
* Sun Feb 15 2009 coolo(a)suse.de
- update to 0.9.3 to fix compilation with gcc 4.4
* Sun Nov 02 2008 coolo(a)suse.de
++++++ icecc-0.9.3.tar.bz2 -> icecc-0.9.4.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/client/arg.cpp new/icecc-0.9.4/client/arg.cpp
--- old/icecc-0.9.3/client/arg.cpp 2008-10-21 12:40:13.000000000 +0200
+++ new/icecc-0.9.4/client/arg.cpp 2009-04-30 14:35:23.000000000 +0200
@@ -300,6 +300,10 @@
string ifile;
for ( ArgumentsList::iterator it = args.begin();
it != args.end(); ) {
+ if ( it->first == "-") {
+ always_local = true;
+ break;
+ }
if ( it->second != Arg_Rest || it->first.at( 0 ) == '-' )
++it;
else if ( ifile.empty() ) {
@@ -364,7 +368,7 @@
}
struct stat st;
- if ( ofile.empty() || (!stat( ofile.c_str(), &st ) && !S_ISREG( st.st_mode)))
+ if ( ofile.empty() || (!stat( ofile.c_str(), &st ) && !S_ISREG( st.st_mode )))
always_local = true;
job.setFlags( args );
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/client/local.cpp new/icecc-0.9.4/client/local.cpp
--- old/icecc-0.9.3/client/local.cpp 2009-02-15 14:31:00.000000000 +0100
+++ new/icecc-0.9.4/client/local.cpp 2009-04-30 11:48:35.000000000 +0200
@@ -244,7 +244,7 @@
}
if (r == 0)
break;
- if ( r < 0 && errno != EINTR)
+ if ( r < 0 && errno != EINTR && errno != EAGAIN )
break;
}
colorify_output(s_ccout);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/client/main.cpp new/icecc-0.9.4/client/main.cpp
--- old/icecc-0.9.3/client/main.cpp 2008-10-21 12:40:13.000000000 +0200
+++ new/icecc-0.9.4/client/main.cpp 2009-04-30 11:48:35.000000000 +0200
@@ -81,6 +81,7 @@
" ICECC_VERSION use a specific icecc environment, see create-env\n"
" ICECC_DEBUG [info | warnings | debug]\n"
" sets verboseness of icecream client.\n"
+" ICECC_LOGFILE if set, additional debug information is logged to the specified file\n"
" ICECC_REPEAT_RATE the number of jobs out of 1000 that should be\n"
" compiled on multiple hosts to ensure that they're\n"
" producing the same output. The default is 10.\n"
@@ -182,7 +183,10 @@
debug_level |= Info|Debug|Warning;
}
- setup_debug(debug_level, string(), "ICECC");
+ std::string logfile;
+ if (const char* logfileEnv = getenv("ICECC_LOGFILE"))
+ logfile = logfileEnv;
+ setup_debug(debug_level, logfile, "ICECC");
CompileJob job;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/client/remote.cpp new/icecc-0.9.4/client/remote.cpp
--- old/icecc-0.9.3/client/remote.cpp 2008-05-12 19:52:37.000000000 +0200
+++ new/icecc-0.9.4/client/remote.cpp 2009-04-30 11:48:35.000000000 +0200
@@ -672,7 +672,7 @@
dcc_make_tmpnam( "icecc", ".o", buffer, 0 );
jobs[i].setOutputFile( buffer );
} else
- sprintf( buffer, job.outputFile().c_str() );
+ sprintf( buffer, "%s", job.outputFile().c_str() );
umsgs[i] = get_server( local_daemon );
remote_daemon = umsgs[i]->hostname;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/client/util.cpp new/icecc-0.9.4/client/util.cpp
--- old/icecc-0.9.3/client/util.cpp 2008-05-12 19:52:37.000000000 +0200
+++ new/icecc-0.9.4/client/util.cpp 2009-04-30 11:48:35.000000000 +0200
@@ -225,7 +225,7 @@
else
fprintf(stderr, "%s\n", cline.c_str());
}
- fprintf(stderr, s_ccout.c_str());
+ fprintf(stderr, "%s", s_ccout.c_str());
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/configure new/icecc-0.9.4/configure
--- old/icecc-0.9.3/configure 2009-02-15 14:43:53.000000000 +0100
+++ new/icecc-0.9.4/configure 2009-04-30 14:43:40.000000000 +0200
@@ -2370,7 +2370,7 @@
# Define the identity of the package.
PACKAGE=icecc
- VERSION="0.9.3"
+ VERSION="0.9.4"
cat >>confdefs.h <<_ACEOF
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/configure.in new/icecc-0.9.4/configure.in
--- old/icecc-0.9.3/configure.in 2009-02-15 14:39:38.000000000 +0100
+++ new/icecc-0.9.4/configure.in 2009-04-30 14:43:07.000000000 +0200
@@ -4,7 +4,7 @@
AC_INIT(client/main.cpp)
-AM_INIT_AUTOMAKE(icecc, "0.9.3")
+AM_INIT_AUTOMAKE(icecc, "0.9.4")
AM_CONFIG_HEADER(config.h)
AC_CANONICAL_HOST
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/daemon/environment.cpp new/icecc-0.9.4/daemon/environment.cpp
--- old/icecc-0.9.3/daemon/environment.cpp 2009-02-15 14:31:00.000000000 +0100
+++ new/icecc-0.9.4/daemon/environment.cpp 2009-04-30 14:39:28.000000000 +0200
@@ -142,40 +142,46 @@
closedir( envdir );
}
-bool cleanup_cache( const string &basedir )
+/* Returns true if the child exited with success */
+static bool exec_and_wait( const char *const argv[] )
{
- flush_debug();
pid_t pid = fork();
- if ( pid )
- {
- int status = 0;
+ if ( pid == -1 ) {
+ log_perror("fork");
+ return false;
+ }
+ if ( pid ) {
+ // parent
+ int status;
while ( waitpid( pid, &status, 0 ) < 0 && errno == EINTR )
;
+ return WIFEXITED(status) && WEXITSTATUS(status) == 0;
+ }
+ // child
+ _exit(execv(argv[0], const_cast<char *const *>(argv)));
+}
- if ( mkdir( basedir.c_str(), 0755 ) && errno != EEXIST ) {
- if ( errno == EPERM )
- log_error() << "permission denied on mkdir " << basedir << endl;
- else
- log_perror( "mkdir in cleanup_cache() failed" );
- return false;
- }
- chown( basedir.c_str(), 0, 0 );
- chmod( basedir.c_str(), 0755 );
+bool cleanup_cache( const string &basedir )
+{
+ flush_debug();
- return WIFEXITED(status);
- }
- // else
- char **argv;
- argv = new char*[5];
- argv[0] = strdup( "/bin/rm" );
- argv[1] = strdup( "-rf" );
- argv[2] = strdup( "--" );
// make sure it ends with '/' to not fall into symlink traps
string bdir = basedir + '/';
- argv[3] = strdup( bdir.c_str() );
- argv[4] = NULL;
+ const char *const argv[] = {
+ "/bin/rm", "-rf", "--", bdir.c_str(), NULL
+ };
- _exit(execv(argv[0], argv));
+ bool ret = exec_and_wait( argv );
+
+ if ( mkdir( basedir.c_str(), 0755 ) && errno != EEXIST ) {
+ if ( errno == EPERM )
+ log_error() << "permission denied on mkdir " << basedir << endl;
+ else
+ log_perror( "mkdir in cleanup_cache() failed" );
+ return false;
+ }
+
+ return ret;
}
Environments available_environmnents(const string &basedir)
@@ -211,14 +217,14 @@
if ( ::access( "/usr/bin/gcc", X_OK ) || ::access( "/usr/bin/g++", X_OK ) )
return 0;
- if ( mkdir( nativedir.c_str(), 0755 ) )
+ if ( mkdir( nativedir.c_str(), 0775 ) )
return 0;
- if ( chown( nativedir.c_str(), nobody_uid, nobody_gid) ) {
+ if ( chown( nativedir.c_str(), 0, nobody_gid ) ||
+ chmod( nativedir.c_str(), 0775 ) ) {
rmdir( nativedir.c_str() );
return 0;
}
- chmod( nativedir.c_str(), 0755 );
flush_debug();
pid_t pid = fork();
@@ -243,7 +249,6 @@
}
}
// else
- umask(022);
if ( setgid( nobody_gid ) < 0) {
log_perror("setgid failed");
@@ -259,7 +264,10 @@
_exit(1);
}
- if ( system( BINDIR "/icecc --build-native" ) ) {
+ const char *const argv[] = {
+ BINDIR "/icecc", "--build-native", NULL
+ };
+ if ( !exec_and_wait( argv ) ) {
log_error() << BINDIR "/icecc --build-native failed\n";
_exit(1);
}
@@ -302,30 +310,28 @@
compression = BZip2;
}
- if( ::access( basename.c_str(), W_OK ) ) {
- log_error() << "access for basename " << basename.c_str() << " gives " << strerror(errno) << endl;
- return 0;
- }
-
- chown( basename.c_str(), 0, nobody_gid );
- chmod( basename.c_str(), 0770 );
-
- if ( mkdir( dirname.c_str(), 0755 ) && errno != EEXIST ) {
+ if ( mkdir( dirname.c_str(), 0770 ) && errno != EEXIST ) {
log_perror( "mkdir target" );
return 0;
}
- chown( dirname.c_str(), 0, nobody_gid );
- chmod( dirname.c_str(), 0770 );
+ if ( chown( dirname.c_str(), 0, nobody_gid ) ||
+ chmod( dirname.c_str(), 0770 ) ) {
+ log_perror( "chown,chmod target" );
+ return 0;
+ }
dirname = dirname + "/" + name;
- if ( mkdir( dirname.c_str(), 0700 ) ) {
+ if ( mkdir( dirname.c_str(), 0770 ) ) {
log_perror( "mkdir name" );
return 0;
}
- chown( dirname.c_str(), 0, nobody_gid );
- chmod( dirname.c_str(), 0770 );
+ if ( chown( dirname.c_str(), 0, nobody_gid ) ||
+ chmod( dirname.c_str(), 0770 ) ) {
+ log_perror( "chown,chmod name" );
+ return 0;
+ }
int fds[2];
if ( pipe( fds ) )
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/daemon/load.cpp new/icecc-0.9.4/daemon/load.cpp
--- old/icecc-0.9.3/daemon/load.cpp 2008-05-12 19:51:46.000000000 +0200
+++ new/icecc-0.9.4/daemon/load.cpp 2009-02-16 12:06:29.000000000 +0100
@@ -203,7 +203,7 @@
#ifndef USE_SYSCTL
static unsigned long int scan_one( const char* buff, const char *key )
{
- char *b = strstr( buff, key );
+ const char *b = strstr( buff, key );
if ( !b )
return 0;
unsigned long int val = 0;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/daemon/main.cpp new/icecc-0.9.4/daemon/main.cpp
--- old/icecc-0.9.3/daemon/main.cpp 2008-10-21 12:40:12.000000000 +0200
+++ new/icecc-0.9.4/daemon/main.cpp 2009-04-30 14:39:28.000000000 +0200
@@ -619,7 +619,7 @@
#ifdef HAVE_SYS_VFS_H
struct statfs buf;
int ret = statfs(envbasedir.c_str(), &buf);
- if (!ret && buf.f_bavail < (max_kids + 1 - current_kids) * 4 * 1024 * 1024 / buf.f_bsize)
+ if (!ret && long(buf.f_bavail) < long(max_kids + 1 - current_kids) * 4 * 1024 * 1024 / buf.f_bsize)
msg.load = 1000;
#endif
@@ -777,6 +777,7 @@
string current = client->outfile;
client->outfile.clear();
client->child_pid = -1;
+ assert( current_kids > 0 );
current_kids--;
log_error() << "installed_size: " << installed_size << endl;
@@ -1158,7 +1159,7 @@
off_t off = 0;
while ( len ) {
ssize_t bytes = write( client->pipe_to_child, fcmsg->buffer + off, len );
- if ( bytes < 0 && errno == EINTR )
+ if ( bytes < 0 && ( errno == EINTR || errno == EAGAIN ) )
continue;
if ( bytes == -1 ) {
@@ -1597,6 +1598,8 @@
}
}
+ umask(022);
+
if ( !logfile.length() && detach)
logfile = "/var/log/iceccd";
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/daemon/serve.cpp new/icecc-0.9.4/daemon/serve.cpp
--- old/icecc-0.9.3/daemon/serve.cpp 2008-05-12 19:51:46.000000000 +0200
+++ new/icecc-0.9.4/daemon/serve.cpp 2009-04-30 11:48:35.000000000 +0200
@@ -214,7 +214,7 @@
ssize_t bytes = read(obj_fd, buffer, sizeof(buffer));
if ( bytes < 0 )
{
- if ( errno == EINTR )
+ if ( errno == EINTR || errno == EAGAIN )
continue;
throw myexception( EXIT_DISTCC_FAILED );
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/daemon/workit.cpp new/icecc-0.9.4/daemon/workit.cpp
--- old/icecc-0.9.3/daemon/workit.cpp 2008-05-12 19:51:46.000000000 +0200
+++ new/icecc-0.9.4/daemon/workit.cpp 2009-04-30 11:48:35.000000000 +0200
@@ -316,7 +316,7 @@
off_t off = 0;
while ( len ) {
ssize_t bytes = write( sock_in[1], fcmsg->buffer + off, len );
- if ( bytes < 0 && errno == EINTR )
+ if ( bytes < 0 && ( errno == EINTR || errno == EAGAIN ) )
continue;
write(job_in_fd, fcmsg->buffer + off, bytes);
@@ -370,7 +370,7 @@
{
char resultByte;
ssize_t n = ::read(main_sock[0], &resultByte, 1);
- if (n == -1 && errno == EINTR)
+ if (n == -1 && ( errno == EINTR || errno == EAGAIN ) )
continue; // Ignore
if (n == 1)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/NEWS new/icecc-0.9.4/NEWS
--- old/icecc-0.9.3/NEWS 2009-02-15 14:39:51.000000000 +0100
+++ new/icecc-0.9.4/NEWS 2009-04-30 14:42:54.000000000 +0200
@@ -1,4 +1,15 @@
-0.9.3 (926473):
+0.9.4 (961598):
+- fix compilation warnings
+- don't leak file descriptor to create-env
+- don't use the shell to call simple commands
+- assert current_kids is > 0 before decrementing (it's unsigned)
+- also check for EAGAIN (needed on OS X)
+- add ICECC_LOGFILE to get trace() output into a file
+- Fix compilation when using -Wformat -Werror=format-security flags
+- make a special exception for - in rest args (bnc#495786)
+- Fix way icecream changes permissions of /var/cache/icecream
+
+0.9.3 (926474):
- Fix FTBFS with GCC 4.4
- Explicitly set group ownership and permissions on the base cache
dir and target dir in case root has a umask of e.g. 0077.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/services/comm.cpp new/icecc-0.9.4/services/comm.cpp
--- old/icecc-0.9.3/services/comm.cpp 2008-05-12 19:52:37.000000000 +0200
+++ new/icecc-0.9.4/services/comm.cpp 2009-03-02 10:42:01.000000000 +0100
@@ -987,6 +987,12 @@
return -1;
}
+ if (fcntl (ask_fd, F_SETFD, FD_CLOEXEC) < 0)
+ {
+ log_perror("open_send_broadcast fcntl");
+ close (ask_fd);
+ return -1;
+ }
int optval = 1;
if (setsockopt (ask_fd, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) < 0)
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/icecc-0.9.3/services/scheduler.cpp new/icecc-0.9.4/services/scheduler.cpp
--- old/icecc-0.9.3/services/scheduler.cpp 2008-05-12 19:52:18.000000000 +0200
+++ new/icecc-0.9.4/services/scheduler.cpp 2009-04-30 11:48:34.000000000 +0200
@@ -2114,7 +2114,7 @@
<< ":" << ntohs (broad_addr.sin_port) << "\n";
buf[0]++;
memset (buf + 1, 0, sizeof (buf) - 1);
- snprintf (buf + 1, sizeof (buf) - 1, netname);
+ snprintf (buf + 1, sizeof (buf) - 1, "%s", netname);
buf[sizeof (buf) - 1] = 0;
if (sendto (broad_fd, buf, sizeof (buf), 0,
(struct sockaddr*)&broad_addr, broad_len) != sizeof (buf))
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0