Compare commits

...

37 Commits
master ... f15

Author SHA1 Message Date
Jakub Jelinek e561c431ae 4.6.3-2 2012-03-06 17:51:59 +01:00
Jakub Jelinek a93f055e77 4.6.3-1 2012-03-06 12:50:21 +01:00
Jakub Jelinek acf847e63a 4.6.1-9 2011-09-08 10:50:35 +02:00
Jakub Jelinek f9c8fd47c4 4.6.1-8 2011-08-24 09:47:03 +02:00
Jakub Jelinek a83ade956a 4.6.1-7 2011-08-04 21:01:44 +02:00
Jakub Jelinek ecda783286 4.6.1-5 2011-07-31 13:39:44 +02:00
Jakub Jelinek 7b60096ebe 4.6.1-4 2011-07-27 19:53:57 +02:00
Jakub Jelinek f6c097666b 4.6.1-4 2011-07-27 19:53:36 +02:00
Jakub Jelinek 6a5d24a797 4.6.1-3 2011-07-15 13:07:05 +02:00
Jakub Jelinek 7d7f40f869 4.6.1-2 2011-07-08 10:25:23 +02:00
Jakub Jelinek f2035a7497 gcc-4.6.1-1.fc16 2011-06-28 07:41:07 +02:00
Jakub Jelinek 63542a2cf0 4.6.0-10 2011-06-03 15:21:16 +02:00
Jakub Jelinek cdd0c8207a 4.6.0-9 2011-05-30 19:52:35 +02:00
Jakub Jelinek ff85664008 4.6.0-8 2011-05-25 11:07:52 +02:00
Jakub Jelinek 45a8b12105 4.6.0-8 2011-05-25 10:42:55 +02:00
Jakub Jelinek 858292bd84 4.6.0-7 2011-05-09 14:53:16 +02:00
Jakub Jelinek 3e27f9e68c 4.6.0-7 2011-05-09 13:25:02 +02:00
Jakub Jelinek 1ae9553d28 4.6.0-6 2011-04-28 16:05:59 +02:00
Jakub Jelinek 72874fb2ad 4.6.0-5 2011-04-19 19:27:26 +02:00
Jakub Jelinek 1fa5f2b290 4.6.0-4 2011-04-13 18:35:01 +02:00
Jakub Jelinek 4b85ac0fcc 4.6.0-3 2011-04-08 10:31:08 +02:00
Jakub Jelinek de7ef8959a 4.6.0-3 2011-04-08 09:54:32 +02:00
Jakub Jelinek 689e85cc53 4.6.0-3 2011-04-08 09:48:07 +02:00
Jakub Jelinek 3d859ddd85 4.6.0-2.fc15 2011-03-31 11:16:50 +02:00
Jakub Jelinek 020c04d784 4.6.0-1 2011-03-29 09:04:52 +02:00
Jakub Jelinek 8d5e77f9e5 4.6.0-0.15 2011-03-21 20:50:44 +01:00
Jakub Jelinek 88f5aeebda 4.6.0-0.14 2011-03-18 20:37:48 +01:00
Jakub Jelinek ea637ffe98 4.6.0-0.13 2011-03-15 18:35:47 +01:00
Jakub Jelinek 49ad19ee12 4.6.0-0.13 2011-03-15 18:24:43 +01:00
Jakub Jelinek 678b6aa3f0 4.6.0-0.12 2011-03-04 10:00:59 +01:00
Jakub Jelinek 8738e8b3d4 4.6.0-0.12 2011-03-04 09:29:25 +01:00
Jakub Jelinek 4bac5086a8 4.6.0-0.11 2011-03-01 12:16:22 +01:00
Jakub Jelinek b5a49205ba 4.6.0-0.10 2011-02-23 22:25:15 +01:00
Jakub Jelinek 4bf11691c3 4.6.0-0.9 2011-02-23 10:33:13 +01:00
Jakub Jelinek cc5df407aa 4.6.0-0.8 2011-02-20 08:51:52 +01:00
Jakub Jelinek 2bbb85d9bd 4.6.0-0.7 2011-02-12 22:35:15 +01:00
Jakub Jelinek 753dd73e32 4.6.0-0.7 2011-02-12 22:14:49 +01:00
16 changed files with 883 additions and 963 deletions

15
.gitignore vendored
View File

@ -1,3 +1,18 @@
/fastjar-0.97.tar.gz
/gcc-4.6.0-20110128.tar.bz2
/gcc-4.6.0-20110205.tar.bz2
/gcc-4.6.0-20110525.tar.bz2
/gcc-4.6.0-20110530.tar.bz2
/gcc-4.6.0-20110603.tar.bz2
/gcc-4.6.1-20110627.tar.bz2
/gcc-4.6.1-20110708.tar.bz2
/gcc-4.6.1-20110715.tar.bz2
/gcc-4.6.1-20110727.tar.bz2
/gcc-4.6.1-20110731.tar.bz2
/gcc-4.6.1-20110802.tar.bz2
/gcc-4.6.1-20110804.tar.bz2
/gcc-4.6.1-20110824.tar.bz2
/gcc-4.6.1-20110908.tar.bz2
/gcc-4.6.1-20111002.tar.bz2
/gcc-4.6.2-20111027.tar.bz2
/gcc-4.6.3-20120306.tar.bz2

656
gcc.spec
View File

@ -1,9 +1,9 @@
%global DATE 20110205
%global SVNREV 169849
%global gcc_version 4.6.0
%global DATE 20120306
%global SVNREV 185003
%global gcc_version 4.6.3
# Note, gcc_release must be integer, if you want to add suffixes to
# %{release}, append them after %{gcc_release} on Release: line.
%global gcc_release 0.6
%global gcc_release 2
%global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@ -25,9 +25,9 @@
%global build_cloog 1
%global build_libstdcxx_docs 1
# If you don't have already a usable gcc-java and libgcj for your arch,
# do on some arch which has it rpmbuild -bc --with java_tar gcc41.spec
# do on some arch which has it rpmbuild -bc --with java_tar gcc.spec
# which creates libjava-classes-%{version}-%{release}.tar.bz2
# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc41.spec
# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc.spec
%global bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0}
%global build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0}
%ifarch s390x
@ -45,7 +45,7 @@
Summary: Various compilers (C, C++, Objective-C, Java, ...)
Name: gcc
Version: %{gcc_version}
Release: %{gcc_release}%{?dist}.1
Release: %{gcc_release}%{?dist}
# libgcc, libgfortran, libmudflap, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@ -55,7 +55,6 @@ Group: Development/Languages
# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_6-branch@%{SVNREV} gcc-%{version}-%{DATE}
# tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
Source0: gcc-%{version}-%{DATE}.tar.bz2
Source1: libgcc_post_upgrade.c
%global fastjar_ver 0.97
Source4: http://download.savannah.nongnu.org/releases/fastjar/fastjar-%{fastjar_ver}.tar.gz
URL: http://gcc.gnu.org
@ -108,7 +107,12 @@ BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
BuildRequires: libunwind >= 0.98
%endif
%if %{build_cloog}
BuildRequires: ppl >= 0.10, ppl-devel >= 0.10, cloog-ppl >= 0.15, cloog-ppl-devel >= 0.15
%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
BuildRequires: ppl >= 0.11.2, ppl-devel >= 0.11.2
%else
BuildRequires: ppl >= 0.10, ppl-devel >= 0.10
%endif
BuildRequires: cloog-ppl >= 0.15, cloog-ppl-devel >= 0.15
%endif
%if %{build_libstdcxx_docs}
BuildRequires: doxygen >= 1.7.1
@ -163,11 +167,8 @@ Patch12: gcc46-cloog-dl.patch
Patch14: gcc46-pr38757.patch
Patch15: gcc46-libstdc++-docs.patch
Patch17: gcc46-no-add-needed.patch
Patch18: gcc46-unwind-debughook-sdt.patch
Patch19: gcc46-ppl-0.10.patch
Patch20: gcc46-Woverlength-string.patch
Patch21: gcc46-Woverlength-string-asm.patch
Patch22: gcc46-pr47610.patch
Patch18: gcc46-ppl-0.10.patch
Patch19: gcc46-pr47858.patch
Patch1000: fastjar-0.97-segfault.patch
Patch1001: fastjar-0.97-len1.patch
@ -571,12 +572,50 @@ This package contains static Go libraries.
Summary: Support for compiling GCC plugins
Group: Development/Languages
Requires: gcc = %{version}-%{release}
Requires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
%description plugin-devel
This package contains header files and other support files
for compiling GCC plugins. The GCC plugin ABI is currently
not stable, so plugins must be rebuilt any time GCC is updated.
%if 0%{?_enable_debug_packages}
%define debug_package %{nil}
%global __debug_package 1
%global __debug_install_post \
%{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_opts} "%{_builddir}/gcc-%{version}-%{DATE}"\
%{_builddir}/gcc-%{version}-%{DATE}/split-debuginfo.sh\
%{nil}
%package debuginfo
Summary: Debug information for package %{name}
Group: Development/Debug
AutoReqProv: 0
Requires: gcc-base-debuginfo = %{version}-%{release}
%description debuginfo
This package provides debug information for package %{name}.
Debug information is useful when developing applications that use this
package or when debugging this package.
%files debuginfo -f debugfiles.list
%defattr(-,root,root)
%package base-debuginfo
Summary: Debug information for libraries from package %{name}
Group: Development/Debug
AutoReqProv: 0
%description base-debuginfo
This package provides debug information for libgcc_s, libgomp and
libstdc++ libraries from package %{name}.
Debug information is useful when developing applications that use this
package or when debugging this package.
%files base-debuginfo -f debugfiles-base.list
%defattr(-,root,root)
%endif
%prep
%setup -q -n gcc-%{version}-%{DATE}
%patch0 -p0 -b .hack~
@ -597,11 +636,57 @@ not stable, so plugins must be rebuilt any time GCC is updated.
%patch15 -p0 -b .libstdc++-docs~
%endif
%patch17 -p0 -b .no-add-needed~
%patch18 -p0 -b .unwind-debughook-sdt~
%patch19 -p0 -b .ppl-0.10~
%patch20 -p0 -b .Woverlength-string~
%patch21 -p0 -b .Woverlength-string-asm~
%patch22 -p0 -b .pr47610~
%if 0%{?fedora} < 15 || 0%{?rhel} < 7
%patch18 -p0 -b .ppl-0.10~
%endif
%patch19 -p0 -b .pr47858~
%if 0%{?_enable_debug_packages}
cat > split-debuginfo.sh <<\EOF
#!/bin/sh
BUILDDIR="%{_builddir}/gcc-%{version}-%{DATE}"
if [ -f "${BUILDDIR}"/debugfiles.list \
-a -f "${BUILDDIR}"/debuglinks.list ]; then
> "${BUILDDIR}"/debugsources-base.list
> "${BUILDDIR}"/debugfiles-base.list
cd "${RPM_BUILD_ROOT}"
for f in `find usr/lib/debug -name \*.debug \
| egrep 'lib[0-9]*/lib(gcc|gomp|stdc)'`; do
echo "/$f" >> "${BUILDDIR}"/debugfiles-base.list
if [ -f "$f" -a ! -L "$f" ]; then
cp -a "$f" "${BUILDDIR}"/test.debug
/usr/lib/rpm/debugedit -b "${RPM_BUILD_DIR}" -d /usr/src/debug \
-l "${BUILDDIR}"/debugsources-base.list \
"${BUILDDIR}"/test.debug
rm -f "${BUILDDIR}"/test.debug
fi
done
for f in `find usr/lib/debug/.build-id -type l`; do
ls -l "$f" | egrep -q -- '->.*lib[0-9]*/lib(gcc|gomp|stdc)' \
&& echo "/$f" >> "${BUILDDIR}"/debugfiles-base.list
done
grep -v -f "${BUILDDIR}"/debugfiles-base.list \
"${BUILDDIR}"/debugfiles.list > "${BUILDDIR}"/debugfiles.list.new
mv -f "${BUILDDIR}"/debugfiles.list.new "${BUILDDIR}"/debugfiles.list
for f in `LC_ALL=C sort -z -u "${BUILDDIR}"/debugsources-base.list \
| grep -E -v -z '(<internal>|<built-in>)$' \
| xargs --no-run-if-empty -n 1 -0 echo \
| sed 's,^,usr/src/debug/,'`; do
if [ -f "$f" ]; then
echo "/$f" >> "${BUILDDIR}"/debugfiles-base.list
echo "%%exclude /$f" >> "${BUILDDIR}"/debugfiles.list
fi
done
mv -f "${BUILDDIR}"/debugfiles-base.list{,.old}
echo "%%dir /usr/lib/debug" > "${BUILDDIR}"/debugfiles-base.list
awk 'BEGIN{FS="/"}(NF>4&&$NF){d="%%dir /"$2"/"$3"/"$4;for(i=5;i<NF;i++){d=d"/"$i;if(!v[d]){v[d]=1;print d}}}' \
"${BUILDDIR}"/debugfiles-base.list.old >> "${BUILDDIR}"/debugfiles-base.list
cat "${BUILDDIR}"/debugfiles-base.list.old >> "${BUILDDIR}"/debugfiles-base.list
rm -f "${BUILDDIR}"/debugfiles-base.list.old
fi
EOF
chmod 755 split-debuginfo.sh
%endif
# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
@ -618,12 +703,23 @@ tar xzf %{SOURCE4}
tar xjf %{SOURCE10}
%endif
sed -i -e 's/4\.6\.0/4.6.0/' gcc/BASE-VER
sed -i -e 's/4\.6\.4/4.6.3/' gcc/BASE-VER
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
# Default to -gdwarf-4 -fno-debug-types-section rather than -gdwarf-2
sed -i '/UInteger Var(dwarf_version)/s/Init(2)/Init(4)/' gcc/common.opt
sed -i '/flag_debug_types_section/s/Init(1)/Init(0)/' gcc/common.opt
sed -i '/dwarf_record_gcc_switches/s/Init(0)/Init(1)/' gcc/common.opt
sed -i 's/\(may be either 2, 3 or 4; the default version is \)2\./\14./' gcc/doc/invoke.texi
%else
# Default to -gdwarf-3 rather than -gdwarf-2
sed -i '/UInteger Var(dwarf_version)/s/Init(2)/Init(3)/' gcc/common.opt
sed -i 's/\(may be either 2, 3 or 4; the default version is \)2\./\13./' gcc/doc/invoke.texi
sed -i 's/#define[[:blank:]]*EMIT_ENTRY_VALUE[[:blank:]].*$/#define EMIT_ENTRY_VALUE 0/' gcc/{var-tracking,dwarf2out}.c
sed -i 's/#define[[:blank:]]*EMIT_TYPED_DWARF_STACK[[:blank:]].*$/#define EMIT_TYPED_DWARF_STACK 0/' gcc/dwarf2out.c
sed -i 's/#define[[:blank:]]*EMIT_DEBUG_MACRO[[:blank:]].*$/#define EMIT_DEBUG_MACRO 0/' gcc/dwarf2out.c
%endif
cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
@ -811,6 +907,10 @@ CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`echo $OPT_FLAGS | sed 's/ -Wall / /g'`"
%ifarch s390 s390x
--with-arch=z9-109 --with-tune=z10 --enable-decimal-float \
%endif
%ifarch armv7hl
--with-cpu=cortex-a8 --with-tune=cortex-a8 --with-arch=armv7-a \
--with-float=hard --with-fpu=vfpv3-d16 --with-abi=aapcs-linux \
%endif
%ifnarch sparc sparcv9 ppc
--build=%{gcc_target_platform}
%endif
@ -1049,6 +1149,14 @@ echo '/* GNU ld script
OUTPUT_FORMAT(elf32-powerpc)
GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/32/libgcc_s.so
%endif
%ifarch %{arm}
rm -f $FULLPATH/libgcc_s.so
echo '/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf32-littlearm)
GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/libgcc_s.so
%endif
mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
@ -1075,6 +1183,7 @@ if [ "%{_lib}" != "lib" ]; then
sed '/^libdir/s/lib$/%{_lib}/' %{buildroot}%{_prefix}/lib/pkgconfig/libgcj-*.pc \
> %{buildroot}%{_prefix}/%{_lib}/pkgconfig/`basename %{buildroot}%{_prefix}/lib/pkgconfig/libgcj-*.pc`
fi
%endif
mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}
@ -1379,10 +1488,6 @@ exec gcc $fl ${1+"$@"}
EOF
chmod 755 %{buildroot}%{_prefix}/bin/c?9
mkdir -p %{buildroot}%{_prefix}/sbin
gcc -static -Os %{SOURCE1} -o %{buildroot}%{_prefix}/sbin/libgcc_post_upgrade
strip %{buildroot}%{_prefix}/sbin/libgcc_post_upgrade
cd ..
%find_lang %{name}
%find_lang cpplib
@ -1393,7 +1498,6 @@ rm -f %{buildroot}%{_prefix}/%{_lib}/{libffi*,libiberty.a}
rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a
rm -f %{buildroot}%{_prefix}/%{_lib}/libssp*
rm -f %{buildroot}%{_prefix}/bin/gnative2ascii
rm -f %{buildroot}%{_prefix}/bin/gappletviewer || :
rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-%{version} || :
rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || :
@ -1431,6 +1535,9 @@ touch %{buildroot}%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
rm -f %{buildroot}%{mandir}/man3/ffi*
# Help plugins find out nvra.
echo gcc-%{version}-%{release}.%{_arch} > $FULLPATH/rpmver
%check
cd obj-%{gcc_target_platform}
@ -1528,7 +1635,25 @@ fi
# Because glibc Prereq's libgcc and /sbin/ldconfig
# comes from glibc, it might not exist yet when
# libgcc is installed
%post -n libgcc -p %{_prefix}/sbin/libgcc_post_upgrade
%post -n libgcc -p <lua>
if posix.access ("/sbin/ldconfig", "x") then
local pid = posix.fork ()
if pid == 0 then
posix.exec ("/sbin/ldconfig")
elseif pid ~= -1 then
posix.wait (pid)
end
end
%postun -n libgcc -p <lua>
if posix.access ("/sbin/ldconfig", "x") then
local pid = posix.fork ()
if pid == 0 then
posix.exec ("/sbin/ldconfig")
elseif pid ~= -1 then
posix.wait (pid)
end
end
%post -n libstdc++ -p /sbin/ldconfig
@ -1633,6 +1758,7 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/lto1
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/lto-wrapper
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/liblto_plugin.so*
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/rpmver
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdfix.h
@ -1743,7 +1869,7 @@ fi
%endif
%dir %{_prefix}/libexec/getconf
%{_prefix}/libexec/getconf/default
%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING*
%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING* COPYING.RUNTIME
%files -n cpp -f cpplib.lang
%defattr(-,root,root,-)
@ -1760,8 +1886,7 @@ fi
%defattr(-,root,root,-)
/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
/%{_lib}/libgcc_s.so.1
%{_prefix}/sbin/libgcc_post_upgrade
%doc gcc/COPYING.LIB
%doc gcc/COPYING* COPYING.RUNTIME
%files c++
%defattr(-,root,root,-)
@ -1806,7 +1931,8 @@ fi
%dir %{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/
%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/libstdc*gdb.py*
%dir %{_prefix}/share/gcc-%{gcc_version}
%{_prefix}/share/gcc-%{gcc_version}/python
%dir %{_prefix}/share/gcc-%{gcc_version}/python
%{_prefix}/share/gcc-%{gcc_version}/python/libstdcxx
%files -n libstdc++-devel
%defattr(-,root,root,-)
@ -1995,6 +2121,7 @@ fi
%{_prefix}/bin/gij
%{_prefix}/bin/gjar
%{_prefix}/bin/fastjar
%{_prefix}/bin/gnative2ascii
%{_prefix}/bin/grepjar
%{_prefix}/bin/grmic
%{_prefix}/bin/grmid
@ -2011,6 +2138,7 @@ fi
%{_mandir}/man1/gjarsigner.1*
%{_mandir}/man1/jv-convert.1*
%{_mandir}/man1/gij.1*
%{_mandir}/man1/gnative2ascii.1*
%{_mandir}/man1/grmic.1*
%{_mandir}/man1/grmiregistry.1*
%{_mandir}/man1/gcj-dbtool.1*
@ -2083,7 +2211,8 @@ fi
%if %{build_ada}
%files gnat
%defattr(-,root,root,-)
%{_prefix}/bin/gnat*
%{_prefix}/bin/gnat
%{_prefix}/bin/gnat[^i]*
%{_infodir}/gnat*
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@ -2337,8 +2466,469 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
%changelog
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.6.0-0.6.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Tue Mar 6 2012 Jakub Jelinek <jakub@redhat.com> 4.6.3-2
- backport PLUGIN_FINISH_DECL event support
- adjust 22_locale/num_put/put/char/9780-2.cc testcase for recent
locale data changes in glibc
* Tue Mar 6 2012 Jakub Jelinek <jakub@redhat.com> 4.6.3-1
- update from the 4.6 branch
- GCC 4.6.3 release
- PRs ada/46192, boehm-gc/48514, boehm-gc/52179, bootstrap/49907,
bootstrap/50888, bootstrap/51686, bootstrap/51969, c++/50608,
c++/50870, c++/50901, c++/51150, c++/51161, c++/51248, c++/51265,
c++/51331, c++/51344, c++/51406, c++/51416, c++/51669, c++/51854,
c++/51868, c++/52247, c/51339, c/51360, c/52181, c/52290, debug/48190,
debug/49951, debug/51410, debug/51517, debug/51695, debug/51950,
debug/52260, driver/48306, fortran/47545, fortran/49050,
fortran/50408, fortran/50684, fortran/50923, fortran/51075,
fortran/51218, fortran/51310, fortran/51338, fortran/51435,
fortran/51448, fortran/51502, fortran/51550, fortran/51800,
fortran/51904, fortran/51913, fortran/51948, fortran/51966,
fortran/52012, fortran/52022, fortran/52093, fortran/52151,
fortran/52335, fortran/52386, libjava/48512, libmudflap/40778,
libstdc++/50862, libstdc++/50880, libstdc++/51083, libstdc++/51133,
libstdc++/51142, libstdc++/51540, libstdc++/51626, libstdc++/51711,
libstdc++/51795, libstdc++/52300, libstdc++/52309, libstdc++/52317,
lto/41159, middle-end/44777, middle-end/45678, middle-end/48071,
middle-end/48660, middle-end/50074, middle-end/51077,
middle-end/51323, middle-end/51510, middle-end/51768,
middle-end/51994, middle-end/52074, middle-end/52140,
middle-end/52230, rtl-opt/37451, rtl-opt/37782,
rtl-optimization/38644, rtl-optimization/47918,
rtl-optimization/48721, rtl-optimization/49720,
rtl-optimization/50396, rtl-optimization/51187,
rtl-optimization/51374, rtl-optimization/51469,
rtl-optimization/51767, rtl-optimization/51821,
rtl-optimization/52060, rtl-optimization/52139, target/30282,
target/40068, target/45233, target/48108, target/48743,
target/49641, target/49992, target/50313, target/50493,
target/50678, target/50691, target/50875, target/50906,
target/50945, target/50979, target/51002, target/51106,
target/51287, target/51345, target/51393, target/51408,
target/51623, target/51643, target/51756, target/51835,
target/51921, target/51934, target/52006, target/52107,
target/52129, target/52199, target/52205, target/52238,
target/52294, target/52330, target/52408, target/52425,
testsuite/51511, testsuite/52296, tree-optimization/46886,
tree-optimization/49536, tree-optimization/49642,
tree-optimization/50031, tree-optimization/50078,
tree-optimization/50569, tree-optimization/50622,
tree-optimization/50969, tree-optimization/51042,
tree-optimization/51070, tree-optimization/51118,
tree-optimization/51315, tree-optimization/51466,
tree-optimization/51485, tree-optimization/51583,
tree-optimization/51624, tree-optimization/51759,
tree-optimization/52286
- don't look for lto plugin/lto-wrapper if -E/-S/-c or in cpp (#787345)
- debuginfo related backports from trunk (PRs pch/51722, debug/52165,
debug/52132)
- fix up ccp from optimizing away non-pure/const builtin passthrough calls
with constant first argument (PR tree-optimization/51683)
* Thu Oct 27 2011 Jakub Jelinek <jakub@redhat.com> 4.6.2-1
- update from the 4.6 branch
- GCC 4.6.2 release
- PRs c++/44473, c++/49216, c++/49855, c++/49896, c++/50531, c++/50611,
c++/50618, c++/50787, c++/50793, c/50565, debug/50816, fortran/47023,
fortran/48706, fortran/50016, fortran/50273, fortran/50570,
fortran/50585, fortran/50625, fortran/50659, fortran/50718,
libobjc/49883, libobjc/50002, libstdc++/48698, middle-end/49801,
middle-end/50326, middle-end/50386, obj-c++/48275, objc-++/48275,
target/49049, target/49824, target/49965, target/49967, target/50106,
target/50350, target/50652, target/50737, target/50788, target/50820,
tree-optimization/49279, tree-optimization/50189,
tree-optimization/50700, tree-optimization/50712,
tree-optimization/50723
- add armv7hl configury options (#746843)
- add `gcc -print-file-name=rpmver` file with gcc NVRA for plugins
(#744922)
- fix build against current glibc, ctype.h changes broke libjava compilation
* Mon Oct 2 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-10
- update from the 4.6 branch
- PRs c++/20039, c++/40831, c++/42844, c++/46105, c++/48320, c++/50424,
c++/50442, c++/50491, c++/50508, inline-asm/50571, libstdc++/49559,
libstdc++/50509, libstdc++/50510, libstdc++/50529, middle-end/49886,
target/50091, target/50341, target/50464, testsuite/50487,
tree-optimization/49518, tree-optimization/49628,
tree-optimization/49911, tree-optimization/50162,
tree-optimization/50412, tree-optimization/50413,
tree-optimization/50472
- recognize IVs with REFERENCE_TYPE in simple_iv similarly to
IVs with POINTER_TYPE (#528578)
- return larger types for odd-sized precision in Fortran type_for_size
langhook if possible
* Thu Sep 8 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-9
- update from the 4.6 branch
- PRs c++/49267, c++/50089, c++/50157, c++/50207, c++/50220, c++/50224,
c++/50234, c++/50255, c++/50309, c/50179, fortran/50163,
libffi/49594, libfortran/50192, libstdc++/50268, middle-end/50116,
middle-end/50266, target/50090, target/50202, target/50289,
target/50310, tree-optimization/50178
- debug info related backports from the trunk
- PRs debug/50191, debug/50215
- fix call site debug info on big endian targets (PR debug/50299)
- put libgcc.a into libgcc_s.so linker script also on arm (#733549)
- use %%{?fedora} instead of %%{fedora}, handle 0%%{?rhel} >= 7 like
0%%{?fedora} >= 16
* Wed Aug 24 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-8
- update from the 4.6 branch
- PRs c++/46862, c++/48993, c++/49669, c++/49921, c++/49988, c++/50024,
c++/50054, c++/50086, fortran/49792, fortran/50050, fortran/50109,
fortran/50129, fortran/50130, middle-end/49923, target/50001,
target/50092, tree-optimization/48739
- build EH_SPEC_BLOCK with the same location as current function
to help gcov (#732802, PR c++/50055)
- support used attribute on template class methods and static data
members for forced instantiation (#722587)
- fix up location copying in the vectorizer (PR tree-optimization/50133)
- unshare CALL_INSN_FUNCTION_USAGE (PR middle-end/48722)
- fix up gthr*.h for -E -C (#713800)
* Thu Aug 4 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-7
- update from the 4.6 branch
- PRs c++/43886, c++/49593, c++/49803, fortran/49885,
tree-optimization/49948
- add self_spec support to specs
- add COPYING.RUNTIME to gcc and libgcc docs (#727809)
- SPARC entry_value fixes (PRs target/48220, debug/49815)
- fix up c-family headers in gcc-plugin-devel (#728011, PRs plugins/45348,
plugins/46577, plugins/48425)
* Tue Aug 2 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-6
- update from the 4.6 branch
- PRs c++/49260, c++/49924, libstdc++/49925, target/47908, target/49920
- fix libquadmath on i686 (#726909)
- OpenMP 3.1 support (PR fortran/42041, PR fortran/46752)
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
- make -grecord-gcc-switches the default
%endif
* Sun Jul 31 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-5
- update from the 4.6 branch
- PRs debug/49871, fortran/48876, fortran/49791, middle-end/49897,
middle-end/49898, rtl-optimization/49799, target/47364
- don't attempt to size optimize -gdwarf-2 DW_AT_data_member_location
from DW_OP_plus_uconst form
* Wed Jul 27 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-4
- update from the 4.6 branch
- PRs ada/49819, c++/49785, debug/47393, fortran/49648, fortran/49708,
middle-end/49675, middle-end/49732, target/39386, target/49600,
target/49723, target/49746, testsuite/49753, tree-opt/49671,
tree-optimization/45819, tree-optimization/49309,
tree-optimization/49725, tree-optimization/49768
- require gmp-devel, mpfr-devel and libmpc-devel in gcc-plugin-devel
(#725569)
- backport -grecord-gcc-switches (#507759, PR other/32998)
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
- more compact debug macro info for -g3 - .debug_macro section
- improve call site debug info for some floating point parameters
passed on the stack (PR debug/49846)
%endif
- fix -mcmodel=large call constraints (PR target/49866, #725516)
* Fri Jul 15 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-3
- update from the 4.6 branch
- PRs ada/46350, ada/48711, c++/49672, fortran/48926, fortran/49562,
fortran/49690, fortran/49698, target/39633, target/46779,
target/49487, target/49541, target/49621, tree-opt/49309,
tree-optimization/49094, tree-optimization/49651
- backport -march=bdver2 and -mtune=bdver2 support
%if 0%{?fedora} < 16 || 0%{?rhel} >= 7
- use ENTRY_VALUE RTLs internally to improve generated debug info,
just make sure to remove it from possible options before emitting
var-tracking notes
%endif
* Fri Jul 8 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-2
- update from the 4.6 branch
- PRs ada/49511, bootstrap/23656, bootstrap/49247, c++/48157, c/48825,
c++/49418, c++/49440, c++/49528, c++/49598, c/49644, debug/49262,
debug/49522, fortran/49466, fortran/49479, fortran/49623,
libffi/46660, libfortran/49296, middle-end/49640, other/47733,
regression/47836, rtl-optimization/49014, rtl-optimization/49472,
rtl-optimization/49619, target/34734, target/47997, target/48273,
target/49089, target/49335, target/49660, testsuite/49643,
tree-optimization/38752, tree-optimization/49516,
tree-optimization/49539, tree-optimization/49572,
tree-optimization/49615, tree-optimization/49618
- decrease compiler memory and time requirements on Fortran DATA
with many times repeated initializers (#716721, PR fortran/49540)
- backport some debuginfo improvements and fixes
- PRs debug/49364, debug/49602
- fix typed DWARF stack ICE (#717240, PR49567)
- backport __builtin_assume_aligned support (#713586)
- backport further C++ FE improvements for heavy overloading use
(#651098, PR c++/48481)
* Mon Jun 27 2011 Jakub Jelinek <jakub@redhat.com> 4.6.1-1
- update from the 4.6 branch
- GCC 4.6.1 release
- PRs c++/33840, c++/49117, c++/49134, c++/49229, c++/49251, c++/49264,
c++/49276, c++/49290, c++/49298, c++/49369, c++/49482, c++/49507,
debug/47590, debug/48459, fortran/47601, fortran/48699,
fortran/49074, fortran/49103, fortran/49112, fortran/49268,
fortran/49324, fortran/49417, gcov-profile/49299, middle-end/49191,
rtl-optimization/48542, rtl-optimization/49235, target/44618,
target/48454, target/49186, target/49238, target/49307, target/49411,
target/49461, testsuite/49432, tree-optimization/48613,
tree-optimization/48702, tree-optimization/49038,
tree-optimization/49115, tree-optimization/49243,
tree-optimization/49419
- fix GCSE (#712480, PR rtl-optimization/49390)
- use rm -f and mv -f in split-debuginfo.sh (#716664)
- backport some debuginfo improvements and bugfixes
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
- improve debug info for IPA-SRA through DW_OP_GNU_parameter_ref
(PR debug/47858)
- emit DW_OP_GNU_convert <0> as convert to untyped
%endif
- emit .debug_loc empty ranges for parameters that are
modified even before first insn in a function (PR debug/49382)
- fix debug ICE on s390x (PR debug/49544)
- VTA ICE fix (PR middle-end/49308)
- balance work in #pragma omp for schedule(static) better (PR libgomp/49490)
* Fri Jun 3 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-10
- update from the 4.6 branch
- PRs fortran/45786, fortran/49265, middle-end/48953, middle-end/48985,
tree-optimization/49093
- backport some debuginfo improvements
- PRs debug/47919, debug/47994, debug/49250
- decrease C++ FE memory usage on code with heavy overloading
(#651098, PR c++/48481)
* Mon May 30 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-9
- update from the 4.6 branch
- PRs c++/44311, c++/44994, c++/45080, c++/45401, c++/45418, c++/45698,
c++/46005, c++/46245, c++/46696, c++/47049, c++/47184, c++/47277,
c++/48284, c++/48292, c++/48424, c++/48935, c++/49156, c++/49165,
c++/49176, c++/49223, fortran/48955, libobjc/48177, libstdc++/49141,
target/43700, target/43995, target/44643, target/45263,
tree-optimization/44897, tree-optimization/49161,
tree-optimization/49217, tree-optimization/49218
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
- default to -gdwarf-4 -fno-debug-types-section instead of -gdwarf-3
- backport DW_OP_GNU_entry_value support
(PRs rtl-optimization/48826, debug/48902, bootstrap/48148,
debug/48203, bootstrap/48168, debug/48023, debug/48178,
debug/48163, debug/48160, bootstrap/48153, middle-end/48152,
bootstrap/48148, debug/45882)
- backport DW_OP_GNU_{{const,regval,deref}_type,convert,reinterpret}
support (PRs debug/48928, debug/48853)
%endif
- split off debuginfo for libgcc_s, libstdc++ and libgomp into
gcc-base-debuginfo subpackage (#706973)
- run ldconfig in libgcc %%postun, drop libcc_post_upgrade,
instead write the script in <lua> (#705832)
* Wed May 25 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-8
- update from the 4.6 branch
- PRs bootstrap/49086, c++/47263, c++/47336, c++/47544, c++/48522,
c++/48617, c++/48647, c++/48736, c++/48745, c++/48780, c++/48859,
c++/48869, c++/48873, c++/48884, c++/48945, c++/48948, c++/49042,
c++/49043, c++/49066, c++/49082, c++/49105, c++/49136, c/49120,
debug/48159, debug/49032, fortran/48889, libstdc++/49058, lto/48207,
lto/48703, lto/49123, middle-end/48973, middle-end/49029,
preprocessor/48677, target/48986, target/49002, target/49104,
target/49128, target/49133, tree-optimization/48172,
tree-optimization/48794, tree-optimization/48822,
tree-optimization/48975, tree-optimization/49000,
tree-optimization/49018, tree-optimization/49039,
tree-optimization/49073, tree-optimization/49079
- ppc V2DImode ABI fix (#705764, PR target/48857)
- fix ppc var-tracking ICE (#703888, PR debug/48967)
* Mon May 9 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-7
- update from the 4.6 branch
- PRs ada/48844, c++/40975, c++/48089, c++/48446, c++/48656, c++/48749,
c++/48838, c++/48909, c++/48911, fortran/48112, fortran/48279,
fortran/48462, fortran/48720, fortran/48746, fortran/48788,
fortran/48800, fortran/48810, fortran/48894, libgfortran/48030,
libstdc++/48750, libstdc++/48760, lto/48846, middle-end/48597,
preprocessor/48192, target/48226, target/48252, target/48262,
target/48774, target/48900, tree-optimization/48809
- fix ICE with references in templates (PR c++/48574)
- disable tail call optimization if tail recursion needs accumulators
(PR PR tree-optimization/48837)
* Thu Apr 28 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-6
- update from the 4.6 branch
- PRs c++/42687, c++/46304, c++/48046, c++/48657, c++/48707, c++/48726,
c/48685, c/48716, c/48742, debug/48768, fortran/47976,
fortran/48588, libstdc++/48521, lto/48148, lto/48492,
middle-end/48695, other/48748, preprocessor/48740, target/48288,
target/48708, target/48723, tree-optimization/48611,
tree-optimization/48717, tree-optimization/48731,
tree-optimization/48734
* Tue Apr 19 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-5
- update from the 4.6 branch
- PRs c++/48537, c++/48632, fortran/48360, fortran/48456,
libfortran/47571, libstdc++/48476, libstdc++/48631,
libstdc++/48635, lto/48538, middle-end/46364, middle-end/48661,
preprocessor/48248, target/48366, target/48605, target/48614,
target/48678, testsuite/48675, tree-optimization/48616
- fix calling functor or non-pointer-to-member through
overloaded pointer-to-member operator (#695567, PR c++/48594)
* Wed Apr 13 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-4
- update from the 4.6 branch
- PRs c++/48450, c++/48452, c++/48468, c++/48500, c++/48523, c++/48528,
c++/48534, c++/48570, c++/48574, c/48517, libstdc++/48465,
libstdc++/48541, libstdc++/48566, target/47829, target/48090,
testsuite/48506, tree-optimization/48195, tree-optimization/48377
- fix combiner with -g (#695019, PR rtl-optimization/48549)
- fix OpenMP atomic __float128 handling on i?86 (#696129,
PR middle-end/48591)
* Fri Apr 8 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-3
- update from the 4.6 branch
- PRs bootstrap/48431, c++/48280, debug/48343, debug/48466, fortran/48117,
fortran/48291, libstdc++/48398, middle-end/48335,
rtl-optimization/48143, rtl-optimization/48144, target/16292,
target/48142
- don't ICE because of empty partitions during LTO (#688767, PR lto/48246)
- don't emit DW_AT_*_pc for CUs without any code
* Thu Mar 31 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-2
- update from the 4.6 branch
- PRs c++/47504, c++/47570, c++/47999, c++/48166, c++/48212, c++/48265,
c++/48281, c++/48289, c++/48296, c++/48313, c++/48319, c++/48369,
debug/48041, debug/48253, preprocessor/48248, target/48349
- add -fno-debug-types-section switch
- don't emit .debug_abbrev section if it is empty and unused
* Tue Mar 29 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-1
- update from the 4.6 branch
- GCC 4.6.0 release
- PRs c/42544, c/48197, debug/48204, middle-end/48031,
middle-end/48134, middle-end/48269, other/48179, other/48221,
other/48234, rtl-optimization/48156, target/47553,
target/48237, testsuite/48251, tree-optimization/48228
- improve RTL DSE speed with large number of stores (#684900,
PR rtl-optimization/48141)
- add gnative2ascii binary and man page to libgcj
* Mon Mar 21 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.15
- update from the 4.6 branch
- PRs bootstrap/45381, bootstrap/48135
- fix s390 ICE during address delegitimization (PR target/48213, #689266)
* Fri Mar 18 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.14
- update from the 4.6 branch
- PRs bootstrap/48161, c++/48113, c++/48115, c++/48132, debug/47510,
debug/48176, libstdc++/48123, middle-end/47405, middle-end/48165,
target/46778, target/46788, target/48171
- update libstdc++ pretty printers from trunk
* Tue Mar 15 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.13
- update from trunk and the 4.6 branch
- PRs bootstrap/48000, bootstrap/48102, c++/44629, c++/45651, c++/46220,
c++/46803, c++/47125, c++/47144, c++/47198, c++/47488, c++/47705,
c++/47808, c++/47957, c++/47971, c++/48003, c++/48008, c++/48015,
c++/48029, c++/48035, c++/48069, c/47786, debug/47881, debug/48043,
fortran/47552, fortran/47850, fortran/48054, fortran/48059,
libfortran/48066, libgfortran/48047, libstdc++/48038, libstdc++/48114,
lto/47497, lto/48073, lto/48086, middle-end/47968, middle-end/47975,
middle-end/48044, middle-end/48098, rtl-optimization/47866,
rtl-optimization/47899, target/45413, target/47719, target/47862,
target/47986, target/48032, target/48053, testsuite/47954,
tree-optimization/47127, tree-optimization/47278,
tree-optimization/47714, tree-optimization/47967,
tree-optimization/48022, tree-optimization/48063,
tree-optimization/48067
- fix var-tracking ICE on s390x (#682410, PR debug/47991)
* Fri Mar 4 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.12
- update from trunk
- PRs c++/46159, c++/46282, c++/47200, c++/47774, c++/47851, c++/47950,
c++/47974, c/47963, libstdc++/47913, middle-end/47283,
rtl-optimization/47925, target/47935, tree-optimization/47890
- rebuilt against ppl 0.11.2, reenable cloog-ppl Requires
* Tue Mar 1 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.11
- update from trunk
- PRs c++/46466, c++/47873, c++/47897, c++/47906, debug/28047,
fortran/40850, fortran/47839, fortran/47846, fortran/47872,
fortran/47878, fortran/47886, fortran/47894, libfortran/45165,
libfortran/47802, libgfortran/47778, libgfortran/47933,
libobjc/47922, libstdc++/42622, libstdc++/47921, lto/46911,
lto/47924, middle-end/46790, middle-end/47903, target/42240,
target/45261, target/46898, testsuite/47801, tree-optimization/45470
- fix stack slot padding reusal (#679924, PR middle-end/47893)
- fix ICE on DECL_PARM_INDEX in cp_tree_equal (#680603, PR c++/47904)
- disable IPA-SRA at -O2/-Os (#668489, PR debug/47858)
- temporarily disable cloog-ppl Requires, so that ppl and cloog-ppl can
be bumped
* Wed Feb 22 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.10
- update from trunk
- PRs c++/46868, tree-optimization/47838, tree-optimization/47849
- don't ship aotcompile.py* and classfile.py* in libstdc++ (#678982)
* Wed Feb 22 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.9
- update from trunk
- PRs bootstrap/47827, c++/44118, c++/46394, c++/46472, c++/46831,
c++/47199, c++/47207, c++/47242, c++/47666, c++/47703, c++/47833,
doc/47848, fortran/41359, fortran/44945, fortran/45077,
fortran/45743, fortran/46818, fortran/47797, libfortran/47694,
libfortran/47830, libgomp/47854, lto/47820, lto/47822,
objc++/47711, objc/47784, rtl-optimization/46002,
rtl-optimization/47763, target/47822, target/47840,
tree-optimization/47835
- fix handling of ObjC pointer to struct with flexible array member
in interfaces (#678928, PR objc/47832)
- temporarily BuildRequire urw-fonts until graphviz is fixed (#677114)
* Sun Feb 20 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.8
- update from trunk
- PRs ada/41929, bootstrap/47736, bootstrap/47807, c++/46807,
c++/47172, c++/47208, c++/47326, c++/47482, c++/47503,
c++/47704, c++/47783, c++/47795, c/47809, debug/47630,
debug/47780, driver/45731, driver/47390, driver/47787,
fortran/47348, fortran/47349, fortran/47569, fortran/47633,
fortran/47642, fortran/47648, fortran/47716, fortran/47728,
fortran/47730, fortran/47745, fortran/47750, fortran/47767,
fortran/47768, fortran/47775, fortran/47789, libfortran/47757,
libgfortran/47667, libgomp/47731, libgomp/47758, libgomp/47804,
libjava/47484, libstdc++/47709, libstdc++/47724, libstdc++/47773,
libstdc++/47776, lto/47647, lto/47798, middle-end/47581,
middle-end/47725, middle-end/47788, pch/14940,
rtl-optimization/46178, target/43653, target/45808, target/47696,
target/47755, target/47792, tree-optimization/46494,
tree-optimization/46620, tree-optimization/47737,
tree-optimization/47738, tree-optimization/47743
- fix i?86 shift + plus peephole2 (#678530, PR target/47800)
* Sat Feb 12 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.7
- update from trunk
- PRs binutils/12283, c++/47511, debug/42631, debug/47684, driver/47678,
fortran/42434, fortran/45290, fortran/45586, fortran/47352,
fortran/47463, fortran/47550, fortran/47574, fortran/47583,
fortran/47592, fortran/47637, libffi/46661, libfortran/47571,
libgfortran/47567, libstdc++/43863, libstdc++/47433,
libstdc++/47628, libstdc++/47668, lto/47225, lto/47241,
middle-end/45505, middle-end/47610, middle-end/47639,
middle-end/47646, target/42333, target/44606, target/45701,
target/46481, target/46610, target/46997, target/47032,
target/47324, target/47534, target/47548, target/47558,
target/47629, target/47636, target/47665, target/47683,
testsuite/47400, testsuite/47622, tree-optimization/42893,
tree-optimization/46834, tree-optimization/46994,
tree-optimization/46995, tree-optimization/47420,
tree-optimization/47615, tree-optimization/47621,
tree-optimization/47632, tree-optimization/47641,
tree-optimization/47664, tree-optimization/47707
- fix postreload on auto inc/decrement instructions (#675787,
PR rtl-optimization/47614)
- fix a hang in VRP (#676473, PR tree-optimization/47677)
- fix STL headers with -fno-operator-names (#676910, PR libstdc++/47662)
- fix scheduling of debug insns (#675711, PR debug/47620)
* Sat Feb 5 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-0.6
- update from trunk

View File

@ -1,180 +0,0 @@
2011-02-02 Tom Tromey <tromey@redhat.com>
* c-parser.c (c_parser_asm_string_literal): Clear
warn_overlength_strings.
* gcc.dg/Woverlength-strings-pedantic-c90-asm.c: New file.
* gcc.dg/Woverlength-strings-pedantic-c89-asm.c: New file.
* gcc.dg/Woverlength-strings-pedantic-c99-asm.c: New file.
--- gcc/c-parser.c
+++ gcc/c-parser.c
@@ -3264,6 +3264,8 @@ static tree
c_parser_asm_string_literal (c_parser *parser)
{
tree str;
+ int save_flag = warn_overlength_strings;
+ warn_overlength_strings = 0;
if (c_parser_next_token_is (parser, CPP_STRING))
{
str = c_parser_peek_token (parser)->value;
@@ -3281,6 +3283,7 @@ c_parser_asm_string_literal (c_parser *parser)
c_parser_error (parser, "expected string literal");
str = NULL_TREE;
}
+ warn_overlength_strings = save_flag;
return str;
}
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-asm.c
@@ -0,0 +1,47 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c89 -pedantic" } */
+
+#define TEN " "
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095. */
+__asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+
+void
+f (void)
+{
+ /* C89's minimum-maximum is 509. */
+ __asm__ (HUN HUN HUN HUN HUN TEN);
+ __asm__ (HUN HUN HUN HUN HUN TEN : : );
+ __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+ /* C99's minimum-maximum is 4095. */
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : : );
+ __asm__ goto (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : : : : label);
+
+ label: ;
+}
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-asm.c
@@ -0,0 +1,48 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c90 -pedantic" } */
+
+#define TEN " "
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095. */
+__asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+
+void
+f (void)
+{
+ /* C89's minimum-maximum is 509. */
+ __asm__ (HUN HUN HUN HUN HUN TEN);
+ __asm__ (HUN HUN HUN HUN HUN TEN : :);
+ __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+ /* C99's minimum-maximum is 4095. */
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : :);
+ __asm__ goto (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : : : : label);
+
+ label: ;
+}
+
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-asm.c
@@ -0,0 +1,48 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c99 -pedantic" } */
+
+#define TEN " "
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+__asm__ (HUN HUN HUN HUN HUN TEN);
+
+/* C99's minimum-maximum is 4095. */
+__asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+
+void
+f (void)
+{
+ /* C89's minimum-maximum is 509. */
+ __asm__ (HUN HUN HUN HUN HUN TEN);
+ __asm__ (HUN HUN HUN HUN HUN TEN : :);
+ __asm__ goto (HUN HUN HUN HUN HUN TEN : : : : label);
+
+ /* C99's minimum-maximum is 4095. */
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456");
+ __asm__ (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : :);
+ __asm__ goto (
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456" : : : : label);
+
+ label: ;
+}
+

View File

@ -1,103 +0,0 @@
2011-01-18 Tom Tromey <tromey@redhat.com>
* c-parser.c (disable_extension_diagnostics): Save
warn_overlength_strings.
(restore_extension_diagnostics): Restore warn_overlength_strings.
* gcc.dg/Woverlength-strings-pedantic-c89-ext.c: New file.
* gcc.dg/Woverlength-strings-pedantic-c90-ext.c: New file.
* gcc.dg/Woverlength-strings-pedantic-c99-ext.c: New file.
--- gcc/c-parser.c (revision 168933)
+++ gcc/c-parser.c (working copy)
@@ -1045,13 +1045,15 @@
| (warn_traditional << 2)
| (flag_iso << 3)
| (warn_long_long << 4)
- | (warn_cxx_compat << 5));
+ | (warn_cxx_compat << 5)
+ | (warn_overlength_strings << 6));
cpp_opts->cpp_pedantic = pedantic = 0;
warn_pointer_arith = 0;
cpp_opts->cpp_warn_traditional = warn_traditional = 0;
flag_iso = 0;
cpp_opts->cpp_warn_long_long = warn_long_long = 0;
warn_cxx_compat = 0;
+ warn_overlength_strings = 0;
return ret;
}
@@ -1067,6 +1069,7 @@
flag_iso = (flags >> 3) & 1;
cpp_opts->cpp_warn_long_long = warn_long_long = (flags >> 4) & 1;
warn_cxx_compat = (flags >> 5) & 1;
+ warn_overlength_strings = (flags >> 6) & 1;
}
/* Possibly kinds of declarator to parse. */
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-ext.c (revision 0)
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c89-ext.c (revision 0)
@@ -0,0 +1,19 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c89 -pedantic" } */
+
+#define TEN "xxxxxxxxxx"
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+const char x510[] = __extension__ HUN HUN HUN HUN HUN TEN;
+
+/* C99's minimum-maximum is 4095. */
+const char x4096[] = __extension__
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456";
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-ext.c (revision 0)
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c90-ext.c (revision 0)
@@ -0,0 +1,19 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c90 -pedantic" } */
+
+#define TEN "xxxxxxxxxx"
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+const char x510[] = __extension__ HUN HUN HUN HUN HUN TEN;
+
+/* C99's minimum-maximum is 4095. */
+const char x4096[] = __extension__
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456";
--- gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-ext.c (revision 0)
+++ gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-ext.c (revision 0)
@@ -0,0 +1,19 @@
+/* -Woverlength-strings complains about string constants which are too long
+ for the C standard's "minimum maximum" limits. It is off by default,
+ but implied by -pedantic. */
+
+/* { dg-options "-std=c99 -pedantic" } */
+
+#define TEN "xxxxxxxxxx"
+#define HUN TEN TEN TEN TEN TEN TEN TEN TEN TEN TEN
+#define THO HUN HUN HUN HUN HUN HUN HUN HUN HUN HUN
+
+/* C89's minimum-maximum is 509. */
+const char x510[] = HUN HUN HUN HUN HUN TEN;
+
+/* C99's minimum-maximum is 4095. */
+const char x4096[] = __extension__
+ THO THO THO THO /* 4000 */
+ TEN TEN TEN TEN TEN /* 4050 */
+ TEN TEN TEN TEN /* 4090 */
+ "123456";

View File

@ -4,8 +4,8 @@
keep the merged decl builtin whenever types match, even if new
decl defines a function.
* gcc.dg/builtins-65.c: New test.
* g++.dg/ext/builtin10.C: New test.
* gcc.dg/builtins-85.c: New test.
* g++.dg/ext/builtin30.C: New test.
--- gcc/cp/decl.c.jj 2007-10-01 22:11:09.000000000 +0200
+++ gcc/cp/decl.c 2007-10-02 11:39:46.000000000 +0200
@ -42,8 +42,8 @@
DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
/* Don't clear out the arguments if we're just redeclaring a
function. */
--- gcc/testsuite/gcc.dg/builtins-65.c.jj 2007-10-02 11:23:51.000000000 +0200
+++ gcc/testsuite/gcc.dg/builtins-65.c 2007-10-02 11:24:12.000000000 +0200
--- gcc/testsuite/gcc.dg/builtins-85.c.jj 2007-10-02 11:23:51.000000000 +0200
+++ gcc/testsuite/gcc.dg/builtins-85.c 2007-10-02 11:24:12.000000000 +0200
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
@ -70,8 +70,8 @@
+
+/* { dg-final { scan-assembler "mysnprintf" } } */
+/* { dg-final { scan-assembler-not "__chk_fail" } } */
--- gcc/testsuite/g++.dg/ext/builtin10.C.jj 2007-10-02 11:19:45.000000000 +0200
+++ gcc/testsuite/g++.dg/ext/builtin10.C 2007-10-02 11:23:26.000000000 +0200
--- gcc/testsuite/g++.dg/ext/builtin30.C.jj 2007-10-02 11:19:45.000000000 +0200
+++ gcc/testsuite/g++.dg/ext/builtin30.C 2007-10-02 11:23:26.000000000 +0200
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// { dg-options "-O2" }

View File

@ -102,12 +102,20 @@
$(LINKER) $(LINKERFLAGS) $(LDFLAGS) -o $@ \
--- gcc/graphite-cloog-compat.h.jj 2011-01-03 12:53:05.000000000 +0100
+++ gcc/graphite-cloog-compat.h 2011-01-04 17:34:09.857757544 +0100
@@ -272,4 +272,263 @@ static inline int cloog_matrix_nrows (Cl
@@ -272,4 +272,277 @@ static inline int cloog_matrix_nrows (Cl
return m->NbRows;
}
#endif /* CLOOG_ORG */
+
+#include <dlfcn.h>
+#if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11
+#define DYNSYMS_PPL11
+#else
+#define DYNSYMS_PPL11 \
+ DYNSYM (ppl_new_PIP_Problem_from_constraints); \
+ DYNSYM (ppl_PIP_Problem_is_satisfiable); \
+ DYNSYM (ppl_delete_PIP_Problem);
+#endif
+#define DYNSYMS \
+ DYNSYM (cloog_block_alloc); \
+ DYNSYM (cloog_block_list_free); \
@ -217,7 +225,8 @@
+ DYNSYM (ppl_new_Constraint_System_from_Constraint); \
+ DYNSYM (ppl_new_C_Polyhedron_from_Constraint_System); \
+ DYNSYM (ppl_Polyhedron_affine_image); \
+ DYNSYM (ppl_io_fprint_Pointset_Powerset_C_Polyhedron);
+ DYNSYM (ppl_io_fprint_Pointset_Powerset_C_Polyhedron); \
+ DYNSYMS_PPL11
+extern struct
+{
+ bool inited;
@ -360,7 +369,12 @@
+#define ppl_new_Constraint_System_from_Constraint (*cloog_pointers__.p_ppl_new_Constraint_System_from_Constraint)
+#define ppl_new_C_Polyhedron_from_Constraint_System (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_Constraint_System)
+#define ppl_Polyhedron_affine_image (*cloog_pointers__.p_ppl_Polyhedron_affine_image)
+#define ppl_io_fprint_Pointset_Powerset_C_Polyhedron (cloog_pointers__.p_ppl_io_fprint_Pointset_Powerset_C_Polyhedron)
+#define ppl_io_fprint_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_io_fprint_Pointset_Powerset_C_Polyhedron)
+#if !(PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11)
+#define ppl_new_PIP_Problem_from_constraints (*cloog_pointers__.p_ppl_new_PIP_Problem_from_constraints)
+#define ppl_PIP_Problem_is_satisfiable (*cloog_pointers__.p_ppl_PIP_Problem_is_satisfiable)
+#define ppl_delete_PIP_Problem (*cloog_pointers__.p_ppl_delete_PIP_Problem)
+#endif
+
+#define cloog_finalize (*cloog_pointers__.p_ppl_finalize)
+
@ -368,9 +382,9 @@
#endif /* GRAPHITE_CLOOG_COMPAT_H */
--- gcc/graphite.c.jj 2011-01-03 12:53:05.194056513 +0100
+++ gcc/graphite.c 2011-01-04 16:18:32.385007767 +0100
@@ -54,6 +54,35 @@ along with GCC; see the file COPYING3.
#include "graphite-clast-to-gimple.h"
#include "graphite-sese-to-poly.h"
@@ -56,6 +56,35 @@ along with GCC; see the file COPYING3.
CloogState *cloog_state;
+__typeof (cloog_pointers__) cloog_pointers__;
+
@ -404,7 +418,7 @@
/* Print global statistics to FILE. */
static void
@@ -199,6 +228,12 @@ graphite_initialize (void)
@@ -201,6 +230,12 @@ graphite_initialize (void)
return false;
}

View File

@ -1,8 +1,8 @@
--- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
+++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
@@ -69,18 +69,40 @@ version := $(shell cat $(srcdir)/../gcc/
libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
@@ -72,18 +72,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
+DEFAULTMULTIFLAGS :=
+ifeq ($(MULTISUBDIR),)
@ -45,7 +45,7 @@
"TARGET_LIBGCC2_CFLAGS=$(TARGET_LIBGCC2_CFLAGS)" \
"THREAD_KIND=$(THREAD_KIND)" \
"TRACE=$(TRACE)" \
@@ -91,7 +113,7 @@ LIBADA_FLAGS_TO_PASS = \
@@ -94,7 +116,7 @@ LIBADA_FLAGS_TO_PASS = \
"exeext=.exeext.should.not.be.used " \
'CC=the.host.compiler.should.not.be.needed' \
"GCC_FOR_TARGET=$(CC)" \
@ -53,7 +53,7 @@
+ "CFLAGS=$(strip $(CFLAGS) $(DEFAULTMULTIFLAGS) $(WARN_CFLAGS))"
# Rules to build gnatlib.
.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared oscons
.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
--- gcc/ada/sem_util.adb (revision 161677)
+++ gcc/ada/sem_util.adb (working copy)
@@ -2246,7 +2246,11 @@

View File

@ -13,13 +13,13 @@
--- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100
+++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100
@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>API Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk02.html" title="" /><link rel="prev" href="bk02.html" title="" /><link rel="next" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">API Documentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr></table><hr /></div><div class="article" title="API Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="api"></a>API Documentation</h2></div><div><p class="copyright">Copyright ©
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>The GNU C++ Library API Reference</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="bk02.html" title=""/><link rel="prev" href="bk02.html" title=""/><link rel="next" href="bk03.html" title=""/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library API Reference</th></tr><tr><td align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><th width="60%" align="center"/><td align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr></table><hr/></div><div class="article" title="The GNU C++ Library API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="api"/>The GNU C++ Library API Reference</h2></div><div><p class="copyright">Copyright ©
2008
,
- 2010
+ 2010, 2011
<a class="ulink" href="http://www.fsf.org/" target="_top">FSF
<a class="link" href="http://www.fsf.org/">FSF
</a>
@@ -19,8 +19,11 @@
member functions for the library classes, finding out what is in a
@ -27,10 +27,10 @@
</p><p>
- The API documentation, rendered into HTML, can be viewed online:
+ The API documentation, rendered into HTML, can be viewed here:
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+ <a class="ulink" href="api/index.html" target="_top">for the 4.6 release, local
</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>
+ <a class="ulink" href="api/index.html">for the 4.6 release, local
+ </a>
+ </p></li><li class="listitem"><p>
<a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
<a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release
</a>
</p></li><li class="listitem"><p>

View File

@ -49,39 +49,39 @@ gcc/
#endif
--- configure.ac (revision 169207)
+++ configure.ac (revision 169206)
@@ -1668,9 +1668,9 @@ ENABLE_PPL_CHECK=yes)
if test "x$with_ppl" != "xno" -a "${ENABLE_PPL_CHECK}" = "yes"; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $pplinc $gmpinc"
- AC_MSG_CHECKING([for version 0.11 (or later revision) of PPL])
+ AC_MSG_CHECKING([for version 0.10 (or later revision) of PPL])
AC_TRY_COMPILE([#include "ppl_c.h"],[
- #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 11
+ #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 10
choke me
#endif
], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ; with_ppl=no ])
@@ -1688,9 +1688,9 @@ if test "x$with_ppl" != xno; then
if test "$enable_ppl_version_check" != no; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $pplinc $gmpinc"
- AC_MSG_CHECKING([for version 0.11 (revision 0 or later) of PPL])
+ AC_MSG_CHECKING([for version 0.10 (revision 0 or later) of PPL])
AC_TRY_COMPILE([#include "ppl_c.h"],[
- #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 11
+ #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 10
choke me
#endif
], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ; with_ppl=no ])
--- configure (revision 169207)
+++ configure (revision 169206)
@@ -5716,8 +5716,8 @@ fi
if test "x$with_ppl" != "xno" -a "${ENABLE_PPL_CHECK}" = "yes"; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $pplinc $gmpinc"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.11 (or later revision) of PPL" >&5
-$as_echo_n "checking for version 0.11 (or later revision) of PPL... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.10 (or later revision) of PPL" >&5
+$as_echo_n "checking for version 0.10 (or later revision) of PPL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5775,8 +5775,8 @@ fi
if test "$enable_ppl_version_check" != no; then
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $pplinc $gmpinc"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.11 (revision 0 or later) of PPL" >&5
-$as_echo_n "checking for version 0.11 (revision 0 or later) of PPL... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.10 (revision 0 or later) of PPL" >&5
+$as_echo_n "checking for version 0.10 (revision 0 or later) of PPL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include "ppl_c.h"
@@ -5725,7 +5725,7 @@ int
@@ -5784,7 +5784,7 @@ int
main ()
{
- #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 11
+ #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 10
choke me
#endif
- #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 11
+ #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 10
choke me
#endif
--- gcc/testsuite/gcc.dg/graphite/interchange-11.c.jj 2011-01-28 09:38:11.000000000 +0100
+++ gcc/testsuite/gcc.dg/graphite/interchange-11.c 2011-01-28 11:06:56.461429848 +0100

View File

@ -1,23 +0,0 @@
2011-02-05 Jakub Jelinek <jakub@redhat.com>
PR middle-end/47610
* varasm.c (default_section_type_flags): If decl is NULL,
and name is .data.rel.ro or .data.rel.ro.local, set SECTION_RELRO
bit.
--- gcc/varasm.c.jj 2011-02-03 20:09:38.000000000 +0100
+++ gcc/varasm.c 2011-02-05 00:01:59.911796344 +0100
@@ -6060,7 +6060,12 @@ default_section_type_flags (tree decl, c
flags = SECTION_WRITE;
}
else
- flags = SECTION_WRITE;
+ {
+ flags = SECTION_WRITE;
+ if (strcmp (name, ".data.rel.ro") == 0
+ || strcmp (name, ".data.rel.ro.local") == 0)
+ flags |= SECTION_RELRO;
+ }
if (decl && DECL_ONE_ONLY (decl))
flags |= SECTION_LINKONCE;

23
gcc46-pr47858.patch Normal file
View File

@ -0,0 +1,23 @@
2011-03-01 Jakub Jelinek <jakub@redhat.com>
PR debug/47858
* opts.c (default_options_table): Enable -fipa-sra by default
only for -O3, not for -O2 and -Os.
--- gcc/opts.c.jj 2011-02-20 08:36:59.888390890 +0100
+++ gcc/opts.c 2011-03-01 12:04:38.680558351 +0100
@@ -487,13 +487,13 @@ static const struct default_options defa
{ OPT_LEVELS_2_PLUS, OPT_ftree_switch_conversion, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_fipa_cp, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_fdevirtualize, NULL, 1 },
- { OPT_LEVELS_2_PLUS, OPT_fipa_sra, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_falign_loops, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_falign_jumps, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_falign_labels, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_falign_functions, NULL, 1 },
/* -O3 optimizations. */
+ { OPT_LEVELS_3_PLUS, OPT_fipa_sra, NULL, 1 },
{ OPT_LEVELS_3_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 },
{ OPT_LEVELS_3_PLUS, OPT_fpredictive_commoning, NULL, 1 },
/* Inlining of functions reducing size is a good idea with -Os

155
gcc46-pr50299.patch Normal file
View File

@ -0,0 +1,155 @@
2011-09-06 Jakub Jelinek <jakub@redhat.com>
PR debug/50299
* calls.c (load_register_parameters): Use use_reg_mode instead
of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
entry.
(expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
for stack CALL_INSN_FUNCTION_USAGE uses.
* expr.h (use_reg_mode): New prototype.
(use_reg): Changed into inline around use_reg_mode.
* expr.c (use_reg): Renamed to...
(use_reg_mode): ... this. Added MODE argument, set EXPR_LIST
mode to that mode instead of VOIDmode.
* var-tracking.c (prepare_call_arguments): Don't track parameters
whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
to it using lowpart_subreg. Convert VALUE and REG/MEM to the
EXPR_LIST mode.
--- gcc/calls.c.jj 2011-08-22 08:17:07.000000000 +0200
+++ gcc/calls.c 2011-09-05 19:47:47.000000000 +0200
@@ -1756,7 +1756,8 @@ load_register_parameters (struct arg_dat
if (GET_CODE (reg) == PARALLEL)
use_group_regs (call_fusage, reg);
else if (nregs == -1)
- use_reg (call_fusage, reg);
+ use_reg_mode (call_fusage, reg,
+ TYPE_MODE (TREE_TYPE (args[i].tree_value)));
else if (nregs > 0)
use_regs (call_fusage, REGNO (reg), nregs);
}
@@ -2815,10 +2816,10 @@ expand_call (tree exp, rtx target, int i
}
if (args[i].stack)
- call_fusage = gen_rtx_EXPR_LIST (VOIDmode,
- gen_rtx_USE (VOIDmode,
- args[i].stack),
- call_fusage);
+ call_fusage
+ = gen_rtx_EXPR_LIST (TYPE_MODE (TREE_TYPE (args[i].tree_value)),
+ gen_rtx_USE (VOIDmode, args[i].stack),
+ call_fusage);
}
/* If we have a parm that is passed in registers but not in memory
--- gcc/expr.h.jj 2011-07-27 23:25:36.000000000 +0200
+++ gcc/expr.h 2011-09-05 18:05:31.000000000 +0200
@@ -321,8 +321,16 @@ extern void emit_group_store (rtx, rtx,
/* Copy BLKmode object from a set of registers. */
extern rtx copy_blkmode_from_reg (rtx, rtx, tree);
+/* Mark REG as holding a parameter for the next CALL_INSN.
+ Mode is TYPE_MODE of the non-promoted parameter, or VOIDmode. */
+extern void use_reg_mode (rtx *, rtx, enum machine_mode);
+
/* Mark REG as holding a parameter for the next CALL_INSN. */
-extern void use_reg (rtx *, rtx);
+static inline void
+use_reg (rtx *fusage, rtx reg)
+{
+ use_reg_mode (fusage, reg, VOIDmode);
+}
/* Mark NREGS consecutive regs, starting at REGNO, as holding parameters
for the next CALL_INSN. */
--- gcc/expr.c.jj 2011-09-02 16:29:39.000000000 +0200
+++ gcc/expr.c 2011-09-05 19:47:32.000000000 +0200
@@ -2184,13 +2184,12 @@ copy_blkmode_from_reg (rtx tgtblk, rtx s
to by CALL_FUSAGE. REG must denote a hard register. */
void
-use_reg (rtx *call_fusage, rtx reg)
+use_reg_mode (rtx *call_fusage, rtx reg, enum machine_mode mode)
{
gcc_assert (REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER);
*call_fusage
- = gen_rtx_EXPR_LIST (VOIDmode,
- gen_rtx_USE (VOIDmode, reg), *call_fusage);
+ = gen_rtx_EXPR_LIST (mode, gen_rtx_USE (VOIDmode, reg), *call_fusage);
}
/* Add USE expressions to *CALL_FUSAGE for each of NREGS consecutive regs,
--- gcc/var-tracking.c.jj 2011-08-30 10:52:41.000000000 +0200
+++ gcc/var-tracking.c 2011-09-05 19:48:10.000000000 +0200
@@ -5730,11 +5730,18 @@ prepare_call_arguments (basic_block bb,
{
rtx item = NULL_RTX;
x = XEXP (XEXP (link, 0), 0);
- if (REG_P (x))
+ if (GET_MODE (link) == VOIDmode
+ || GET_MODE (link) == BLKmode
+ || (GET_MODE (link) != GET_MODE (x)
+ && (GET_MODE_CLASS (GET_MODE (link)) != MODE_INT
+ || GET_MODE_CLASS (GET_MODE (x)) != MODE_INT)))
+ /* Can't do anything for these, if the original type mode
+ isn't known or can't be converted. */;
+ else if (REG_P (x))
{
cselib_val *val = cselib_lookup (x, GET_MODE (x), 0, VOIDmode);
if (val && cselib_preserved_value_p (val))
- item = gen_rtx_CONCAT (GET_MODE (x), x, val->val_rtx);
+ item = val->val_rtx;
else if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
{
enum machine_mode mode = GET_MODE (x);
@@ -5749,10 +5756,7 @@ prepare_call_arguments (basic_block bb,
val = cselib_lookup (reg, mode, 0, VOIDmode);
if (val && cselib_preserved_value_p (val))
{
- item = gen_rtx_CONCAT (GET_MODE (x), x,
- lowpart_subreg (GET_MODE (x),
- val->val_rtx,
- mode));
+ item = val->val_rtx;
break;
}
}
@@ -5776,7 +5780,7 @@ prepare_call_arguments (basic_block bb,
}
val = cselib_lookup (mem, GET_MODE (mem), 0, VOIDmode);
if (val && cselib_preserved_value_p (val))
- item = gen_rtx_CONCAT (GET_MODE (x), copy_rtx (x), val->val_rtx);
+ item = val->val_rtx;
else if (GET_MODE_CLASS (GET_MODE (mem)) != MODE_INT)
{
/* For non-integer stack argument see also if they weren't
@@ -5787,15 +5791,22 @@ prepare_call_arguments (basic_block bb,
val = cselib_lookup (adjust_address_nv (mem, imode, 0),
imode, 0, VOIDmode);
if (val && cselib_preserved_value_p (val))
- item = gen_rtx_CONCAT (GET_MODE (x), copy_rtx (x),
- lowpart_subreg (GET_MODE (x),
- val->val_rtx,
- imode));
+ item = lowpart_subreg (GET_MODE (x), val->val_rtx,
+ imode);
}
}
}
if (item)
- call_arguments = gen_rtx_EXPR_LIST (VOIDmode, item, call_arguments);
+ {
+ rtx x2 = x;
+ if (GET_MODE (item) != GET_MODE (link))
+ item = lowpart_subreg (GET_MODE (link), item, GET_MODE (item));
+ if (GET_MODE (x2) != GET_MODE (link))
+ x2 = lowpart_subreg (GET_MODE (link), x2, GET_MODE (x2));
+ item = gen_rtx_CONCAT (GET_MODE (link), x2, item);
+ call_arguments
+ = gen_rtx_EXPR_LIST (VOIDmode, item, call_arguments);
+ }
if (t && t != void_list_node)
{
tree argtype = TREE_VALUE (t);

View File

@ -1,7 +1,7 @@
--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
@@ -2483,7 +2483,7 @@ sparc-*-rtems*)
tmake_file="sparc/t-elf sparc/t-crtfm t-rtems"
@@ -2530,7 +2530,7 @@ sparc-*-rtems*)
tmake_file="sparc/t-elf sparc/t-crtin sparc/t-crtfm t-rtems"
extra_parts="crtbegin.o crtend.o"
;;
-sparc-*-linux*)
@ -9,8 +9,8 @@
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
case ${target} in
@@ -2577,7 +2577,7 @@ sparc64-*-rtems*)
tmake_file="${tmake_file} sparc/t-crtfm t-rtems"
@@ -2624,7 +2624,7 @@ sparc64-*-rtems*)
tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm t-rtems"
extra_parts="crtbegin.o crtend.o"
;;
-sparc64-*-linux*)

View File

@ -1,88 +0,0 @@
2011-01-14 Tom Tromey <tromey@redhat.com>
* unwind-dw2.c: Include sys/sdt.h if it exists.
(_Unwind_DebugHook): Use STAP_PROBE2.
* config.in, configure: Rebuild.
* configure.ac: Check for sys/sdt.h.
--- gcc/configure.ac
+++ gcc/configure.ac
@@ -4313,6 +4313,16 @@ if test x$gcc_cv_libc_provides_ssp = xyes; then
[Define if your target C library provides stack protector support])
fi
+# Test for <sys/sdt.h> on the target.
+GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
+AC_MSG_CHECKING(sys/sdt.h in the target C library)
+have_sys_sdt_h=no
+if test -f $target_header_dir/sys/sdt.h; then
+ AC_DEFINE(HAVE_SYS_SDT_H, 1,
+ [Define if your target C library provides sys/sdt.h])
+fi
+AC_MSG_RESULT($have_sys_sdt_h)
+
# Check if TFmode long double should be used by default or not.
# Some glibc targets used DFmode long double, but with glibc 2.4
# and later they can use TFmode.
--- gcc/unwind-dw2.c
+++ gcc/unwind-dw2.c
@@ -37,6 +37,10 @@
#include "gthr.h"
#include "unwind-dw2.h"
+#ifdef HAVE_SYS_SDT_H
+#include <sys/sdt.h>
+#endif
+
#ifndef __USING_SJLJ_EXCEPTIONS__
#ifndef STACK_GROWS_DOWNWARD
@@ -1493,7 +1497,13 @@ static void
_Unwind_DebugHook (void *cfa __attribute__ ((__unused__)),
void *handler __attribute__ ((__unused__)))
{
+ /* We only want to use stap probes starting with v3. Earlier
+ versions added too much startup cost. */
+#if defined (HAVE_SYS_SDT_H) && defined (STAP_PROBE2) && _SDT_NOTE_TYPE >= 3
+ STAP_PROBE2 (libgcc, unwind, cfa, handler);
+#else
asm ("");
+#endif
}
/* Install TARGET into CURRENT so that we can return to it. This is a
--- gcc/config.in.jj 2011-01-22 10:21:47.000000000 +0100
+++ gcc/config.in 2011-01-22 11:10:39.000000000 +0100
@@ -1405,6 +1407,9 @@
#endif
+/* Define if your target C library provides sys/sdt.h */
+#undef HAVE_SYS_SDT_H
+
/* Define to 1 if you have the <sys/stat.h> header file. */
#ifndef USED_FOR_TARGET
#undef HAVE_SYS_STAT_H
--- gcc/configure.jj 2011-01-22 10:20:55.000000000 +0100
+++ gcc/configure 2011-01-22 11:10:34.990648298 +0100
@@ -25757,6 +25757,19 @@ $as_echo "#define TARGET_LIBC_PROVIDES_S
fi
+# Test for <sys/sdt.h> on the target.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the target C library" >&5
+$as_echo_n "checking sys/sdt.h in the target C library... " >&6; }
+have_sys_sdt_h=no
+if test -f $target_header_dir/sys/sdt.h; then
+
+$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
+$as_echo "$have_sys_sdt_h" >&6; }
+
# Check if TFmode long double should be used by default or not.
# Some glibc targets used DFmode long double, but with glibc 2.4
# and later they can use TFmode.

View File

@ -1,483 +0,0 @@
#ifdef __sparc__
register void *__thread_self __asm ("g7");
#endif
#include <unistd.h>
#include <fcntl.h>
#include <syscall.h>
#if defined __i386__
# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
# define INTERNAL_SYSCALL(name, err, nr, args...) \
({ \
register unsigned int resultvar; \
asm volatile ( \
"movl %1, %%eax\n\t" \
"int $0x80\n\t" \
: "=a" (resultvar) \
: "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \
(int) resultvar; })
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned int) (val) >= 0xfffff001u)
# define ASMFMT_0()
# define ASMFMT_1(arg1) \
, "b" (arg1)
# define ASMFMT_2(arg1, arg2) \
, "b" (arg1), "c" (arg2)
# define ASMFMT_3(arg1, arg2, arg3) \
, "b" (arg1), "c" (arg2), "d" (arg3)
#elif defined __x86_64__
# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
({ \
unsigned long resultvar; \
LOAD_ARGS_##nr (args) \
LOAD_REGS_##nr \
asm volatile ( \
"syscall\n\t" \
: "=a" (resultvar) \
: "0" (name) ASM_ARGS_##nr : "memory", "cc", "r11", "cx"); \
(long) resultvar; })
# define INTERNAL_SYSCALL(name, err, nr, args...) \
INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args)
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned long) (val) >= -4095L)
# define LOAD_ARGS_0()
# define LOAD_REGS_0
# define ASM_ARGS_0
# define LOAD_ARGS_1(a1) \
long int __arg1 = (long) (a1); \
LOAD_ARGS_0 ()
# define LOAD_REGS_1 \
register long int _a1 asm ("rdi") = __arg1; \
LOAD_REGS_0
# define ASM_ARGS_1 ASM_ARGS_0, "r" (_a1)
# define LOAD_ARGS_2(a1, a2) \
long int __arg2 = (long) (a2); \
LOAD_ARGS_1 (a1)
# define LOAD_REGS_2 \
register long int _a2 asm ("rsi") = __arg2; \
LOAD_REGS_1
# define ASM_ARGS_2 ASM_ARGS_1, "r" (_a2)
# define LOAD_ARGS_3(a1, a2, a3) \
long int __arg3 = (long) (a3); \
LOAD_ARGS_2 (a1, a2)
# define LOAD_REGS_3 \
register long int _a3 asm ("rdx") = __arg3; \
LOAD_REGS_2
# define ASM_ARGS_3 ASM_ARGS_2, "r" (_a3)
#elif defined __powerpc__
# define INTERNAL_SYSCALL_DECL(err) long int err
# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
({ \
register long int r0 __asm__ ("r0"); \
register long int r3 __asm__ ("r3"); \
register long int r4 __asm__ ("r4"); \
register long int r5 __asm__ ("r5"); \
register long int r6 __asm__ ("r6"); \
register long int r7 __asm__ ("r7"); \
register long int r8 __asm__ ("r8"); \
LOADARGS_##nr(name, args); \
__asm__ __volatile__ \
("sc\n\t" \
"mfcr %0\n\t" \
: "=&r" (r0), \
"=&r" (r3), "=&r" (r4), "=&r" (r5), \
"=&r" (r6), "=&r" (r7), "=&r" (r8) \
: ASM_INPUT_##nr \
: "r9", "r10", "r11", "r12", \
"cr0", "ctr", "memory"); \
err = r0; \
(int) r3; \
})
# define INTERNAL_SYSCALL(name, err, nr, args...) \
INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args)
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((void) (val), __builtin_expect ((err) & (1 << 28), 0))
# define LOADARGS_0(name, dummy) \
r0 = name
# define LOADARGS_1(name, __arg1) \
long int arg1 = (long int) (__arg1); \
LOADARGS_0(name, 0); \
r3 = arg1
# define LOADARGS_2(name, __arg1, __arg2) \
long int arg2 = (long int) (__arg2); \
LOADARGS_1(name, __arg1); \
r4 = arg2
# define LOADARGS_3(name, __arg1, __arg2, __arg3) \
long int arg3 = (long int) (__arg3); \
LOADARGS_2(name, __arg1, __arg2); \
r5 = arg3
# define ASM_INPUT_0 "0" (r0)
# define ASM_INPUT_1 ASM_INPUT_0, "1" (r3)
# define ASM_INPUT_2 ASM_INPUT_1, "2" (r4)
# define ASM_INPUT_3 ASM_INPUT_2, "3" (r5)
#elif defined __ia64__
# define DO_INLINE_SYSCALL_NCS(name, nr, args...) \
LOAD_ARGS_##nr (args) \
register long _r8 asm ("r8"); \
register long _r10 asm ("r10"); \
register long _r15 asm ("r15") = name; \
long _retval; \
LOAD_REGS_##nr \
__asm __volatile ("break 0x100000;;" \
: "=r" (_r8), "=r" (_r10), "=r" (_r15) \
ASM_OUTARGS_##nr \
: "2" (_r15) ASM_ARGS_##nr \
: "memory" ASM_CLOBBERS_##nr); \
_retval = _r8;
# define INTERNAL_SYSCALL_DECL(err) long int err
# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
({ \
DO_INLINE_SYSCALL_NCS (name, nr, args) \
err = _r10; \
_retval; })
# define INTERNAL_SYSCALL(name, err, nr, args...) \
INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args)
# define INTERNAL_SYSCALL_ERROR_P(val, err) (err == -1)
# define LOAD_ARGS_0()
# define LOAD_REGS_0
# define LOAD_ARGS_1(a1) \
long _arg1 = (long) (a1); \
LOAD_ARGS_0 ()
# define LOAD_REGS_1 \
register long _out0 asm ("out0") = _arg1; \
LOAD_REGS_0
# define LOAD_ARGS_2(a1, a2) \
long _arg2 = (long) (a2); \
LOAD_ARGS_1 (a1)
# define LOAD_REGS_2 \
register long _out1 asm ("out1") = _arg2; \
LOAD_REGS_1
# define LOAD_ARGS_3(a1, a2, a3) \
long _arg3 = (long) (a3); \
LOAD_ARGS_2 (a1, a2)
# define LOAD_REGS_3 \
register long _out2 asm ("out2") = _arg3; \
LOAD_REGS_2
# define ASM_OUTARGS_0
# define ASM_OUTARGS_1 ASM_OUTARGS_0, "=r" (_out0)
# define ASM_OUTARGS_2 ASM_OUTARGS_1, "=r" (_out1)
# define ASM_OUTARGS_3 ASM_OUTARGS_2, "=r" (_out2)
# define ASM_ARGS_0
# define ASM_ARGS_1 ASM_ARGS_0, "3" (_out0)
# define ASM_ARGS_2 ASM_ARGS_1, "4" (_out1)
# define ASM_ARGS_3 ASM_ARGS_2, "5" (_out2)
# define ASM_CLOBBERS_0 ASM_CLOBBERS_1, "out0"
# define ASM_CLOBBERS_1 ASM_CLOBBERS_2, "out1"
# define ASM_CLOBBERS_2 ASM_CLOBBERS_3, "out2"
# define ASM_CLOBBERS_3 ASM_CLOBBERS_4, "out3"
# define ASM_CLOBBERS_4 ASM_CLOBBERS_5, "out4"
# define ASM_CLOBBERS_5 ASM_CLOBBERS_6, "out5"
# define ASM_CLOBBERS_6_COMMON , "out6", "out7", \
/* Non-stacked integer registers, minus r8, r10, r15. */ \
"r2", "r3", "r9", "r11", "r12", "r13", "r14", "r16", "r17", "r18", \
"r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", \
"r28", "r29", "r30", "r31", \
/* Predicate registers. */ \
"p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", \
/* Non-rotating fp registers. */ \
"f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
/* Branch registers. */ \
"b6"
# define ASM_CLOBBERS_6 ASM_CLOBBERS_6_COMMON , "b7"
#elif defined __s390__
# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
# define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \
({ \
DECLARGS_##nr(args) \
register long _ret asm("2"); \
asm volatile ( \
"svc %b1\n\t" \
: "=d" (_ret) \
: "i" (__NR_##name) ASMFMT_##nr \
: "memory" ); \
_ret; })
# define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \
({ \
DECLARGS_##nr(args) \
register unsigned long _nr asm("1") = (unsigned long)(__NR_##name); \
register long _ret asm("2"); \
asm volatile ( \
"svc 0\n\t" \
: "=d" (_ret) \
: "d" (_nr) ASMFMT_##nr \
: "memory" ); \
_ret; })
# define INTERNAL_SYSCALL(name, err, nr, args...) \
(((__NR_##name) < 256) ? \
INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \
INTERNAL_SYSCALL_SVC0(name, err,nr, args))
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned long) (val) >= -4095UL)
# define DECLARGS_0()
# define DECLARGS_1(arg1) \
register unsigned long gpr2 asm ("2") = (unsigned long)(arg1);
# define DECLARGS_2(arg1, arg2) \
DECLARGS_1(arg1) \
register unsigned long gpr3 asm ("3") = (unsigned long)(arg2);
# define DECLARGS_3(arg1, arg2, arg3) \
DECLARGS_2(arg1, arg2) \
register unsigned long gpr4 asm ("4") = (unsigned long)(arg3);
# define ASMFMT_0
# define ASMFMT_1 , "0" (gpr2)
# define ASMFMT_2 , "0" (gpr2), "d" (gpr3)
# define ASMFMT_3 , "0" (gpr2), "d" (gpr3), "d" (gpr4)
#elif defined __sparc__
# ifndef __arch64__
# define __INTERNAL_SYSCALL_STRING \
"ta 0x10;" \
"bcs,a 1f;" \
" sub %%g0, %%o0, %%o0;" \
"1:"
# define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g6", \
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \
"f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \
"cc", "memory"
# else
# define __INTERNAL_SYSCALL_STRING \
"ta 0x6d;" \
"bcs,a,pt %%xcc, 1f;" \
" sub %%g0, %%o0, %%o0;" \
"1:"
# define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g6", \
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \
"f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \
"f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46", \
"f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62", \
"cc", "memory"
# endif
#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
#define INTERNAL_SYSCALL(name, err, nr, args...) \
inline_syscall##nr(__INTERNAL_SYSCALL_STRING, __NR_##name, args)
#define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned long) (val) >= -515L)
# define inline_syscall0(string,name,dummy...) \
({ \
register long __o0 __asm__ ("o0"); \
register long __g1 __asm__ ("g1") = name; \
__asm __volatile (string : "=r" (__g1), "=r" (__o0) : \
"0" (__g1) : \
__SYSCALL_CLOBBERS); \
__o0; \
})
# define inline_syscall1(string,name,arg1) \
({ \
register long __o0 __asm__ ("o0") = (long)(arg1); \
register long __g1 __asm__ ("g1") = name; \
__asm __volatile (string : "=r" (__g1), "=r" (__o0) : \
"0" (__g1), "1" (__o0) : \
__SYSCALL_CLOBBERS); \
__o0; \
})
# define inline_syscall2(string,name,arg1,arg2) \
({ \
register long __o0 __asm__ ("o0") = (long)(arg1); \
register long __o1 __asm__ ("o1") = (long)(arg2); \
register long __g1 __asm__ ("g1") = name; \
__asm __volatile (string : "=r" (__g1), "=r" (__o0) : \
"0" (__g1), "1" (__o0), "r" (__o1) : \
__SYSCALL_CLOBBERS); \
__o0; \
})
# define inline_syscall3(string,name,arg1,arg2,arg3) \
({ \
register long __o0 __asm__ ("o0") = (long)(arg1); \
register long __o1 __asm__ ("o1") = (long)(arg2); \
register long __o2 __asm__ ("o2") = (long)(arg3); \
register long __g1 __asm__ ("g1") = name; \
__asm __volatile (string : "=r" (__g1), "=r" (__o0) : \
"0" (__g1), "1" (__o0), "r" (__o1), \
"r" (__o2) : \
__SYSCALL_CLOBBERS); \
__o0; \
})
#elif defined __alpha__
# define INTERNAL_SYSCALL(name, err_out, nr, args...) \
INTERNAL_SYSCALL1(name, err_out, nr, args)
# define INTERNAL_SYSCALL1(name, err_out, nr, args...) \
INTERNAL_SYSCALL_NCS(__NR_##name, err_out, nr, args)
# define INTERNAL_SYSCALL_NCS(name, err_out, nr, args...) \
({ \
long _sc_ret, _sc_err; \
inline_syscall##nr(name, args); \
err_out = _sc_err; \
_sc_ret; \
})
# define INTERNAL_SYSCALL_DECL(err) long int err
# define INTERNAL_SYSCALL_ERROR_P(val, err) err
# define inline_syscall_clobbers \
"$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", \
"$22", "$23", "$24", "$25", "$27", "$28", "memory"
# define inline_syscall_r0_asm
# define inline_syscall_r0_out_constraint "=v"
# define inline_syscall0(name, args...) \
{ \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_19 __asm__("$19"); \
\
_sc_0 = name; \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2" \
: inline_syscall_r0_out_constraint (_sc_0), \
"=r"(_sc_19) \
: "0"(_sc_0) \
: inline_syscall_clobbers, \
"$16", "$17", "$18", "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
# define inline_syscall1(name,arg1) \
{ \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_16 __asm__("$16"); \
register long _sc_19 __asm__("$19"); \
\
_sc_0 = name; \
_sc_16 = (long) (arg1); \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3" \
: inline_syscall_r0_out_constraint (_sc_0), \
"=r"(_sc_19), "=r"(_sc_16) \
: "0"(_sc_0), "2"(_sc_16) \
: inline_syscall_clobbers, \
"$17", "$18", "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
# define inline_syscall2(name,arg1,arg2) \
{ \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_16 __asm__("$16"); \
register long _sc_17 __asm__("$17"); \
register long _sc_19 __asm__("$19"); \
\
_sc_0 = name; \
_sc_16 = (long) (arg1); \
_sc_17 = (long) (arg2); \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4" \
: inline_syscall_r0_out_constraint (_sc_0), \
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17) \
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17) \
: inline_syscall_clobbers, \
"$18", "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
# define inline_syscall3(name,arg1,arg2,arg3) \
{ \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_16 __asm__("$16"); \
register long _sc_17 __asm__("$17"); \
register long _sc_18 __asm__("$18"); \
register long _sc_19 __asm__("$19"); \
\
_sc_0 = name; \
_sc_16 = (long) (arg1); \
_sc_17 = (long) (arg2); \
_sc_18 = (long) (arg3); \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4 %5" \
: inline_syscall_r0_out_constraint (_sc_0), \
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
"=r"(_sc_18) \
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
"4"(_sc_18) \
: inline_syscall_clobbers, "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
#elif defined __arm__ && defined __ARM_EABI__
# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
# define INTERNAL_SYSCALL(name, err, nr, args...) \
({ \
register int _r0 __asm__("r0"); \
register int _nr __asm__("r7"); \
LOAD_ARGS_##nr(args) \
_nr = __NR_##name; \
asm volatile ("swi\t0\t@ syscall " #name "\n\t" \
: "=r" (_r0) \
: "r" (_nr) ASM_ARGS_##nr \
: "memory"); \
_r0; })
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned int) (val) >= 0xfffff001u)
# define ASM_ARGS_0
# define ASM_ARGS_1 , "r" (_r0)
# define ASM_ARGS_2 , "r" (_r0), "r" (_r1)
# define ASM_ARGS_3 , "r" (_r0), "r" (_r1), "r" (_r2)
# define LOAD_ARGS_0()
# define LOAD_ARGS_1(r0) \
_r0 = (int)r0;
# define LOAD_ARGS_2(r0, r1) \
_r0 = (int)r0; \
register int _r1 __asm__("r1") = (int)r1;
# define LOAD_ARGS_3(r0, r1, r2) \
_r0 = (int)r0; \
register int _r1 __asm__("r1") = (int)r1; \
register int _r2 __asm__("r2") = (int)r2;
#endif
int main (int argc, char **argv)
{
const char *arg[] = { "/sbin/ldconfig", 0 };
long ret;
INTERNAL_SYSCALL_DECL (err);
ret = INTERNAL_SYSCALL (access, err, 2, arg[0], X_OK);
if (INTERNAL_SYSCALL_ERROR_P (ret, err))
INTERNAL_SYSCALL (exit, err, 1, 0);
INTERNAL_SYSCALL (execve, err, 3, arg[0], arg, &argv[argc + 1]);
INTERNAL_SYSCALL (exit, err, 1, 110);
return 110;
}
int __libc_multiple_threads __attribute__((nocommon));
int __libc_enable_asynccancel (void) { return 0; }
void __libc_disable_asynccancel (int x) { }
void __libc_csu_init (void) { }
void __libc_csu_fini (void) { }
pid_t __fork (void) { return -1; }
char thr_buf[65536];
#ifndef __powerpc__
int __libc_start_main (int (*main) (int argc, char **argv),
int argc, char **argv,
void (*init) (void), void (*fini) (void),
void (*rtld_fini) (void), void * stack_end)
#else
struct startup_info
{
void *sda_base;
int (*main) (int, char **, char **, void *);
int (*init) (int, char **, char **, void *);
void (*fini) (void);
};
int __libc_start_main (int argc, char **argv, char **ev,
void *auxvec, void (*rtld_fini) (void),
struct startup_info *stinfo,
char **stack_on_entry)
#endif
{
#if defined __ia64__ || defined __powerpc64__
register void *r13 __asm ("r13") = thr_buf + 32768;
__asm ("" : : "r" (r13));
#elif defined __sparc__
register void *g6 __asm ("g6") = thr_buf + 32768;
__thread_self = thr_buf + 32768;
__asm ("" : : "r" (g6), "r" (__thread_self));
#elif defined __s390__ && !defined __s390x__
__asm ("sar %%a0,%0" : : "d" (thr_buf + 32768));
#elif defined __s390x__
__asm ("sar %%a1,%0; srlg 0,%0,32; sar %%a0,0" : : "d" (thr_buf + 32768) : "0");
#elif defined __powerpc__ && !defined __powerpc64__
register void *r2 __asm ("r2") = thr_buf + 32768;
__asm ("" : : "r" (r2));
#endif
#ifdef __powerpc__
argc = (long)*stack_on_entry;
argv = stack_on_entry + 1;
#endif
main (argc, argv);
return 110;
}

View File

@ -1,2 +1,2 @@
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
262b320051245fab671a5ec8429381cf gcc-4.6.0-20110205.tar.bz2
f9c7ca38fda4721cc78d4453237da1be gcc-4.6.3-20120306.tar.bz2