Compare commits
37 Commits
Author | SHA1 | Date |
---|---|---|
Jakub Jelinek | e561c431ae | |
Jakub Jelinek | a93f055e77 | |
Jakub Jelinek | acf847e63a | |
Jakub Jelinek | f9c8fd47c4 | |
Jakub Jelinek | a83ade956a | |
Jakub Jelinek | ecda783286 | |
Jakub Jelinek | 7b60096ebe | |
Jakub Jelinek | f6c097666b | |
Jakub Jelinek | 6a5d24a797 | |
Jakub Jelinek | 7d7f40f869 | |
Jakub Jelinek | f2035a7497 | |
Jakub Jelinek | 63542a2cf0 | |
Jakub Jelinek | cdd0c8207a | |
Jakub Jelinek | ff85664008 | |
Jakub Jelinek | 45a8b12105 | |
Jakub Jelinek | 858292bd84 | |
Jakub Jelinek | 3e27f9e68c | |
Jakub Jelinek | 1ae9553d28 | |
Jakub Jelinek | 72874fb2ad | |
Jakub Jelinek | 1fa5f2b290 | |
Jakub Jelinek | 4b85ac0fcc | |
Jakub Jelinek | de7ef8959a | |
Jakub Jelinek | 689e85cc53 | |
Jakub Jelinek | 3d859ddd85 | |
Jakub Jelinek | 020c04d784 | |
Jakub Jelinek | 8d5e77f9e5 | |
Jakub Jelinek | 88f5aeebda | |
Jakub Jelinek | ea637ffe98 | |
Jakub Jelinek | 49ad19ee12 | |
Jakub Jelinek | 678b6aa3f0 | |
Jakub Jelinek | 8738e8b3d4 | |
Jakub Jelinek | 4bac5086a8 | |
Jakub Jelinek | b5a49205ba | |
Jakub Jelinek | 4bf11691c3 | |
Jakub Jelinek | cc5df407aa | |
Jakub Jelinek | 2bbb85d9bd | |
Jakub Jelinek | 753dd73e32 |
|
@ -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
656
gcc.spec
|
@ -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
|
||||
|
|
|
@ -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: ;
|
||||
+}
|
||||
+
|
|
@ -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";
|
|
@ -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" }
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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 @@
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
|
@ -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
|
|
@ -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);
|
|
@ -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*)
|
||||
|
|
|
@ -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.
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue