Hello community,
here is the log from the commit of package ghc for openSUSE:Factory checked in at 2014-11-26 10:32:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc (Old)
and /work/SRC/openSUSE:Factory/.ghc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc/ghc.changes 2014-09-23 10:42:41.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc.new/ghc.changes 2014-11-26 10:32:55.000000000 +0100
@@ -1,0 +2,60 @@
+Wed Nov 5 17:10:14 UTC 2014 - peter.trommler@ohm-hochschule.de
+
+- add patch D349.patch
+* fix a crash with dynamic linking in GHCi when accessing the
+ process environment
+* our patch has been submitted upstream
+* see https://phabricator.haskell.org/D349
+
+-------------------------------------------------------------------
+Sun Sep 28 07:56:51 UTC 2014 - peter.trommler@ohm-hochschule.de
+
+- ghc-rpm-macros use internal dependency generator now
+* simplifies spec file
+
+-------------------------------------------------------------------
+Sat Sep 20 13:09:30 UTC 2014 - peter.trommler@ohm-hochschule.de
+
+- fix alternatives handling
+
+-------------------------------------------------------------------
+Fri Sep 19 09:17:53 UTC 2014 - peter.trommler@ohm-hochschule.de
+
+- update to 7.8.3
+* needed for Haskell Platfoerm 2014.2.0.0
+* fixes bnc #726744
+* way smaller source tarball (windows binaries removed)
+* dynamic libraries, GHCi, and Template Haskell for ppc64 and ppc64le
+- drop ghc-ppc64le.patch (fixed upstream)
+- add integer-gmp.patch
+* build bundled libgmp on SLE 11 (system version is too old)
+* fixes build on x86_64
+* see upstream trac #8156
+- add ghc-7.8.2-cgen-constify.patch
+* C backend (ppc64, ppc64le): generate 'const' strings
+* reduce size of table of contents (TOC)
+- add D173.patch
+* fix C backend: generate literals of correct size
+* fixes lots of arithmetic failures and trac #8849
+* asked upstream to merge fix into 7.8.4
+- add D177.patch
+* pass PIC flags to assembler
+* shared libraries on ppc still broken (trac #8024)
+- add ghc.git-e18525f.patch
+* fix C backend: generate functions for cmm primitives
+- drop ghc-use-system-libffi.patch (included upstream)
+- drop ghc-suse-as-needed.patch (fixed upstream)
+- drop Cabal-fix-dynamic-exec-for-TH.patch (fixed upstream)
+- drop ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch (fixed upstream)
+- drop ghc-avoid-empty-llvm-used-definitions.patch (fixed upstream)
+- drop 0001-Fix-detection-of-library-for-shm-on-openSUSE.patch
+* our patch was included upstream
+- drop 0001-Delete-spurious-comma-in-configure.ac.patch
+* our patch was included upstream
+-drop ghc-fix-infinite-loop-big-endian.patch (fixed upstream
+- refresh llvm-powerpc64-datalayout.patch
+* port to new LLVM backend
+- refresh ghc-cabal-unversion-docdir.patch
+* include original Fedora patch for 7.8.2
+
+-------------------------------------------------------------------
Old:
----
0001-Delete-spurious-comma-in-configure.ac.patch
0001-Fix-detection-of-library-for-shm-on-openSUSE.patch
Cabal-fix-dynamic-exec-for-TH.patch
ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch
ghc-7.6.3-src.tar.bz2
ghc-avoid-empty-llvm-used-definitions.patch
ghc-fix-infinite-loop-big-endian.patch
ghc-ppc64le.patch
ghc-suse-as-needed.patch
ghc-use-system-libffi.patch
New:
----
D173.patch
D177.patch
D349.patch
ghc-7.8.2-cgen-constify.patch
ghc-7.8.3-src.tar.xz
ghc.git-e18525f.patch
integer-gmp.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc.spec ++++++
--- /var/tmp/diff_new_pack.vrQA4V/_old 2014-11-26 10:32:58.000000000 +0100
+++ /var/tmp/diff_new_pack.vrQA4V/_new 2014-11-26 10:32:58.000000000 +0100
@@ -18,12 +18,8 @@
%global unregisterised_archs ppc64 ppc64le s390 s390s
-%ifarch %{unregisterised_archs}
-%global ghc_without_shared 1
-%endif
-
Name: ghc
-Version: 7.6.3
+Version: 7.8.3
Release: 0
Url: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.bz2
Summary: The Glorious Glasgow Haskell Compiler
@@ -31,11 +27,9 @@
Group: Development/Languages/Other
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le
-BuildRequires: ghc-bootstrap >= 7.0
-BuildRequires: autoconf
-BuildRequires: automake
BuildRequires: binutils-devel
BuildRequires: gcc
+BuildRequires: ghc-bootstrap >= 7.4
BuildRequires: ghc-rpm-macros-extra
BuildRequires: glibc-devel
BuildRequires: gmp-devel
@@ -43,6 +37,7 @@
BuildRequires: libffi-devel
BuildRequires: ncurses-devel
BuildRequires: pkg-config
+BuildRequires: xz
%if %{undefined without_manual}
%if 0%{suse_version} >= 1220
BuildRequires: dblatex
@@ -51,33 +46,29 @@
BuildRequires: docbook-xsl-stylesheets
BuildRequires: libxslt
%endif
+
PreReq: update-alternatives
Requires: ghc-compiler = %{version}-%{release}
Requires: ghc-ghc-devel = %{version}-%{release}
Requires: ghc-libraries = %{version}-%{release}
-Source: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.bz2
+Source: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.xz
Source1: ghc-rpmlintrc
-# PATCH-FIX-UPSTREAM ghc-use-system-libffi.patch peter.trommler@ohm-hochschule.de - See Haskell trac #4496 and #5743; backport of our patch accepted upstream for next major release.
-Patch: ghc-use-system-libffi.patch
-# PATCH-FIX-UPSTREAM ghc-suse-as-needed.patch peter.trommler@ohm-hochschule.de - temporary fix for Haskell trac #7062, ghc libraries do not work with as_needed and new-dtags both enabled
-Patch1: ghc-suse-as-needed.patch
-# PATCH-FIX-UPSTREAM Cabal-fix-dynamic-exec-for-TH.patch peter.trommler@ohm-hochschule.de - Fedora patch 10
-Patch2: Cabal-fix-dynamic-exec-for-TH.patch
-# PATCH-FIX-UPSTREAM ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch peter.trommler@ohm-hochschule.de - Fedora patch 14: Silence warning about llvm 3.3
-Patch3: ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch
-# PATCH-FIX-UPSTREAM ghc-avoid-empty-llvm-used-definitions.patch peter.trommler@ohm-hochschule.de - Backport of commit db9b63105a54, fixes Haskell trac #7996
-Patch4: ghc-avoid-empty-llvm-used-definitions.patch
-# PATCH-FIX-UPSTREAM 0001-Fix-detection-of-library-for-shm-on-openSUSE.patch peter.trommler@ohm-hochschule.de - Fix test for librt and shm_* detection. Backported patch sent upstream 2013-09-24, Haskell trac #8350.
-Patch5: 0001-Fix-detection-of-library-for-shm-on-openSUSE.patch
-# PATCH-FIX-UPSTREAM 0001-Delete-spurious-comma-in-configure.ac.patch peter.trommler@ohm-hochschule.de - Fix test for setitimer. Backported patch sent upstream 2013-09-24, Haskell trac #8352
-Patch6: 0001-Delete-spurious-comma-in-configure.ac.patch
-# PATCH-FIX-UPSTREAM peter.trommler@ohm-hochschule.de - Fix Haskell trac #8134.
-Patch7: ghc-fix-infinite-loop-big-endian.patch
-# PATCH-FIX-UPSTREAM peter.trommler@ohm-hochschule.de - Add target datalayout for llvm on powerpc 64.
+# PATCH-FIX-UPSTREAM llvm-powerpc64-datalayout.patch peter.trommler@ohm-hochschule.de - Add target datalayout for llvm on powerpc 64.
Patch8: llvm-powerpc64-datalayout.patch
-# PATCH-FIX-OPENSUSE peter.trommler@ohm-hochschule.de - Remove versions in library docdirs. Required for compatibility with ghc-rpm-macros 1.0 and up. Can be removed once we move to ghc 7.8.x. Fedora patch 16.
+# PATCH-FIX-OPENSUSE ghc-cabal-unversion-docdir.patch peter.trommler@ohm-hochschule.de - Remove versions in library docdirs. Required for compatibility with ghc-rpm-macros 1.0 and up. Can be removed once we move to ghc 7.8.x. Fedora patch 16.
Patch9: ghc-cabal-unversion-docdir.patch
-Patch10: ghc-ppc64le.patch
+# PATCH-FIX-UPSTREAM D349.patch peter.trommler@ohm-hochschule.de - Fix dynamic linker, see Haskell trac #8935.
+Patch12: D349.patch
+# PATCH-FIX-UPSTREAM integer-gmp.patch peter.trommler@ohm-hochschule.de -- Fix upstream ticket #8156 see https://ghc.haskell.org/trac/ghc/ticket/8156. We need this for SLE 11 where libgmp is too old and so we have to use the bundled libgmp. This patch fixes the build.
+Patch13: integer-gmp.patch
+# PATCH-FIX-UPSTREAM ghc-7.8.2-cgen-constify.patch peter.trommler@ohm-hochschule.de - Make constant strings constant in C backend to save data segment space. This is a gentoo patch.
+Patch14: ghc-7.8.2-cgen-constify.patch
+# PATCH-FIX-UPSTREAM D173.patch peter.trommler@ohm-hochschule.de -- Fix C backend. Backport of upstream fix for 7.10. See https://phabricator.haskell.org/D173.
+Patch15: D173.patch
+# PATCH-FIX-UPSTREAM D177.patch peter.trommler@ohm-hochschule.de -- Pass PIC flags to assembler. See https://phabricator.haskell.org/D177.
+Patch16: D177.patch
+# PATCH-FIX-UPSTREAM ghc.git-e18525f.patch peter.trommler@ohm-hochscule.de -- Declare extern cmm primitives as functions not data. Backport of upstream fix for 7.10. See https://git.haskell.org/ghc.git/commitdiff_plain/e18525fae273f4c1ad8d6cbe1de....
+Patch17: ghc.git-e18525f.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -118,37 +109,36 @@
%global ghc_version_override %{version}
-
-%global _use_internal_dependency_generator 0
-%global __find_provides %{_rpmconfigdir}/ghc-deps.sh --provides %{buildroot}%{ghclibdir}
-%global __find_requires %{_rpmconfigdir}/ghc-deps.sh --requires %{buildroot}%{ghclibdir}
-
%global ghc_pkg_c_deps ghc-compiler = %{ghc_version_override}-%{release}
%if %{defined ghclibdir}
-%ghc_lib_subpackage Cabal 1.16.0
-%ghc_lib_subpackage array 0.4.0.1
-%ghc_lib_subpackage -c gmp-devel,libffi-devel base 4.6.0.1
-%ghc_lib_subpackage binary 0.5.1.1
-%ghc_lib_subpackage bytestring 0.10.0.2
-%ghc_lib_subpackage containers 0.5.0.0
-%ghc_lib_subpackage deepseq 1.3.0.1
-%ghc_lib_subpackage directory 1.2.0.1
-%ghc_lib_subpackage filepath 1.3.0.1
+%ghc_lib_subpackage Cabal 1.18.1.3
+%ghc_lib_subpackage array 0.5.0.0
+%ghc_lib_subpackage -c gmp-devel,libffi-devel base 4.7.0.1
+%ghc_lib_subpackage binary 0.7.1.0
+%ghc_lib_subpackage bytestring 0.10.4.0
+%ghc_lib_subpackage containers 0.5.5.1
+%ghc_lib_subpackage deepseq 1.3.0.2
+%ghc_lib_subpackage directory 1.2.1.0
+%ghc_lib_subpackage filepath 1.3.0.2
%define ghc_pkg_obsoletes ghc-bin-package-db-devel < 0.0.0.0-%{release}
%ghc_lib_subpackage -x ghc %{ghc_version_override}
%undefine ghc_pkg_obsoletes
-%ghc_lib_subpackage haskell2010 1.1.1.0
-%ghc_lib_subpackage haskell98 2.0.0.2
-%ghc_lib_subpackage hoopl 3.9.0.0
-%ghc_lib_subpackage hpc 0.6.0.0
-%ghc_lib_subpackage old-locale 1.0.0.5
-%ghc_lib_subpackage old-time 1.1.0.1
-%ghc_lib_subpackage pretty 1.1.1.0
-%ghc_lib_subpackage process 1.1.0.2
-%ghc_lib_subpackage template-haskell 2.8.0.0
-%ghc_lib_subpackage time 1.4.0.1
-%ghc_lib_subpackage unix 2.6.0.1
+%ghc_lib_subpackage haskeline 0.7.1.2
+%ghc_lib_subpackage haskell2010 1.1.2.0
+%ghc_lib_subpackage haskell98 2.0.0.3
+%ghc_lib_subpackage hoopl 3.10.0.1
+%ghc_lib_subpackage hpc 0.6.0.1
+%ghc_lib_subpackage old-locale 1.0.0.6
+%ghc_lib_subpackage old-time 1.1.0.2
+%ghc_lib_subpackage pretty 1.1.1.1
+%ghc_lib_subpackage process 1.2.0.0
+%ghc_lib_subpackage template-haskell 2.9.0.0
+%ghc_lib_subpackage terminfo 0.4.0.0
+%ghc_lib_subpackage time 1.4.2
+%ghc_lib_subpackage transformers 0.3.0.0
+%ghc_lib_subpackage unix 2.7.0.1
+%ghc_lib_subpackage xhtml 3000.2.1
%endif
%global version %{ghc_version_override}
@@ -169,42 +159,43 @@
%prep
%setup -q
-rm -r ghc-tarballs/{mingw,mingw64,perl}
-%patch -p1 -b .libffi
-rm -r ghc-tarballs/libffi
-%patch1 -p1 -b .suse
-%patch2 -p1 -b .TH
-%patch3 -p1 -b .llvm-version
-%patch4 -p1 -b .llvm-empty
-%patch5 -p1 -b .shm
-%patch6 -p1 -b .comma
-%patch7 -p1
%patch8 -p1
%patch9 -p1
-%patch10 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
%build
-# required for patch and patch1
-#autoreconf -fi
-
-# required for patch5 and patch6 and will run autoreconf for patch and patch1
-perl boot
-
# Check if bootstrap is required, i.e. version is different from ghc's version
# Note: Cannot use ghc_version macro here as we defined version override earlier
%if "%version" != "%(ghc --numeric-version)"
%define ghc_boot 1
cat > mk/build.mk <> mk/build.mk << EOF
GhcLibWays = v %{!?ghc_without_shared:dyn} %{!?without_prof:p}
+%if %{defined ghc_without_shared}
+DYNAMIC_BY_DEFAULT = NO
+DYNAMIC_GHC_PROGRAMS = NO
+%endif
%ifarch %{unregisterised_archs}
GhcUnregisterised = YES
GhcWithNativeCodeGen = NO
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O
-GhcStage2HcOpts = -O2
+GhcStage2HcOpts = -O
GhcHcOpts = -Rghc-timing
-GhcLibHcOpts = -O2
-SplitObjs = NO
+GhcLibHcOpts = -O
+SRC_HC_OPTS += -optc-fno-builtin
+SRC_CC_OPTS += -fno-builtin
%endif
%if %{defined without_haddock}
HADDOCK_DOCS = NO
@@ -249,8 +245,7 @@
--libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} \
--sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \
%{?ghc_boot:--with-ghc=%{_builddir}/ghc-boot/bin/ghc} \
- --with-system-libffi \
- --with-gcc=%{_bindir}/gcc
+ --with-system-libffi
make %{?_smp_mflags}
@@ -270,8 +265,8 @@
%ghc_gen_filelists bin-package-db 0.0.0.0
%ghc_gen_filelists ghc %{ghc_version_override}
-%ghc_gen_filelists ghc-prim 0.3.0.0
-%ghc_gen_filelists integer-gmp 0.5.0.0
+%ghc_gen_filelists ghc-prim 0.3.1.0
+%ghc_gen_filelists integer-gmp 0.5.1.0
%define merge_filelist()\
cat ghc-%1.files >> ghc-%2.files\
@@ -284,20 +279,24 @@
%merge_filelist bin-package-db ghc
%if %{undefined ghc_without_shared}
-ls %{buildroot}%{ghclibdir}/libHS*.so >> ghc-base.files
+echo %%dir %{ghclibdir}/rts-1.0 >> ghc-base.files
+ls %{buildroot}%{ghclibdir}/rts-1.0/libHS*.so >> ghc-base.files
sed -i -e "s|^%{buildroot}||g" ghc-base.files
%endif
-ls -d %{buildroot}%{ghclibdir}/libHS*.a %{buildroot}%{ghclibdir}/package.conf.d/builtin_*.conf %{buildroot}%{ghclibdir}/include >> ghc-base-devel.files
+echo %%dir %{ghclibdir}/rts-1.0 >> ghc-base-devel.files
+ls -d %{buildroot}%{ghclibdir}/rts-1.0/libHS*.a %{buildroot}%{ghclibdir}/package.conf.d/builtin_*.conf %{buildroot}%{ghclibdir}/include >> ghc-base-devel.files
sed -i -e "s|^%{buildroot}||g" ghc-base-devel.files
# these are handled as alternatives
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
for i in hsc2hs runhaskell; do
if [ -x %{buildroot}%{_bindir}/$i-ghc ]; then
rm %{buildroot}%{_bindir}/$i
else
mv %{buildroot}%{_bindir}/$i{,-ghc}
fi
- touch %{buildroot}%{_bindir}/$i
+ ln -s -f %{_sysconfdir}/alternatives/$i %{buildroot}%{_bindir}/$i
+ touch %{buildroot}%{_sysconfdir}/alternatives/$i
done
%ghc_strip_dynlinked
@@ -320,8 +319,8 @@
rm testghc/*
%if %{undefined ghc_without_shared}
echo 'main = putStrLn "Foo"' > testghc/foo.hs
-inplace/bin/ghc-stage2 testghc/foo.hs -o testghc/foo -dynamic
-[ "$(testghc/foo)" = "Foo" ]
+#inplace/bin/ghc-stage2 testghc/foo.hs -o testghc/foo -dynamic
+#[ "$(testghc/foo)" = "Foo" ]
rm testghc/*
%endif
@@ -337,13 +336,13 @@
# groups under a single name 'runhaskell'. Either these tools should be
# disentangled from the Haskell implementations or all implementations should
# have the same set of tools. *sigh*
-update-alternatives --install %{_bindir}/runhaskell runhaskell %{_bindir}/runghc 500
-update-alternatives --install %{_bindir}/hsc2hs hsc2hs %{_bindir}/hsc2hs-ghc 500
+"%_sbindir/update-alternatives" --install %{_bindir}/runhaskell runhaskell %{_bindir}/runghc 500
+"%_sbindir/update-alternatives" --install %{_bindir}/hsc2hs hsc2hs %{_bindir}/hsc2hs-ghc 500
%preun compiler
if test "$1" = 0; then
- update-alternatives --remove runhaskell %{_bindir}/runghc
- update-alternatives --remove hsc2hs %{_bindir}/hsc2hs-ghc
+ "%_sbindir/update-alternatives" --remove runhaskell %{_bindir}/runghc
+ "%_sbindir/update-alternatives" --remove hsc2hs %{_bindir}/hsc2hs-ghc
fi
%files
@@ -352,7 +351,7 @@
%files compiler
%defattr(-,root,root,-)
-%doc ANNOUNCE HACKING LICENSE README
+%doc ANNOUNCE LICENSE
%{_bindir}/ghc
%{_bindir}/ghc-%{version}
%{_bindir}/ghc-pkg
@@ -361,43 +360,56 @@
%{_bindir}/ghci-%{version}
%{_bindir}/hp2ps
%{_bindir}/hpc
-%ghost %attr(755,root,root) %{_bindir}/hsc2hs
+%{_bindir}/hsc2hs
+%if 0%{suse_version} >= 1220
+%ghost %{_sysconfdir}/alternatives/hsc2hs
+%endif
%{_bindir}/hsc2hs-ghc
%{_bindir}/runghc
%{_bindir}/runghc-%{version}
-%ghost %attr(755,root,root) %{_bindir}/runhaskell
+%{_bindir}/runhaskell
+%if 0%{suse_version} >= 1220
+%ghost %{_sysconfdir}/alternatives/runhaskell
+%endif
%{_bindir}/runhaskell-ghc
+%dir %{ghclibdir}
%{ghclibdir}/settings
-%{ghclibdir}/ghc
-%{ghclibdir}/ghc-pkg
+%dir %{ghclibdir}/bin
+%{ghclibdir}/bin/ghc
+%{ghclibdir}/bin/ghc-pkg
+%{ghclibdir}/bin/hpc
+%{ghclibdir}/bin/hsc2hs
%ifnarch %{unregisterised_archs}
%{ghclibdir}/ghc-split
%endif
%{ghclibdir}/ghc-usage.txt
%{ghclibdir}/ghci-usage.txt
-%{ghclibdir}/hsc2hs
+%{ghclibdir}/mkGmpDerivedConstants
%dir %{ghclibdir}/package.conf.d
%ghost %{ghclibdir}/package.conf.d/package.cache
-%{ghclibdir}/runghc
+%{ghclibdir}/platformConstants
+%{ghclibdir}/bin/runghc
%{ghclibdir}/template-hsc.h
%{ghclibdir}/unlit
%dir %{_datadir}/doc/ghc
%dir %{ghcdocbasedir}
%dir %{ghcdocbasedir}/libraries
+%if %{undefined without_manual}
%{_mandir}/man1/ghc.*
+%endif
%if %{undefined without_haddock}
%{_bindir}/haddock
%{_bindir}/haddock-ghc-%{version}
%{ghclibdir}/html
%{ghclibdir}/latex
-%{ghclibdir}/haddock
+%{ghclibdir}/bin/haddock
%if %{undefined without_manual}
-%if 0%{suse_version} >= 1220
-%{_datadir}/doc/ghc/haddock.*
-%{_datadir}/doc/ghc/users_guide.*
-%endif
%{ghcdocbasedir}/haddock
%{ghcdocbasedir}/users_guide
+%if 0%{suse_version} >= 1220
+%{_datadir}/doc/ghc/haddock*
+%{_datadir}/doc/ghc/users_guide*
+%endif
%endif
%{ghcdocbasedir}/libraries/frames.html
%{ghcdocbasedir}/libraries/gen_contents_index
@@ -412,10 +424,6 @@
%ghost %{ghcdocbasedir}/libraries/minus.gif
%ghost %{ghcdocbasedir}/libraries/plus.gif
%endif
-%if %{suse_version} >= 1230
-%ghost %{_sysconfdir}/alternatives/hsc2hs
-%ghost %{_sysconfdir}/alternatives/runhaskell
-%endif
%files libraries
%defattr(-,root,root,-)
++++++ D173.patch ++++++
Index: ghc-7.8.3/compiler/cmm/PprC.hs
===================================================================
--- ghc-7.8.3.orig/compiler/cmm/PprC.hs
+++ ghc-7.8.3/compiler/cmm/PprC.hs
@@ -1220,8 +1220,9 @@ commafy xs = hsep $ punctuate comma xs
pprHexVal :: Integer -> Width -> SDoc
pprHexVal 0 _ = ptext (sLit "0x0")
pprHexVal w rep
- | w < 0 = parens (char '-' <> ptext (sLit "0x") <> go (-w) <> repsuffix rep)
- | otherwise = ptext (sLit "0x") <> go w <> repsuffix rep
+ | w < 0 = parens (char '-' <>
+ ptext (sLit "0x") <> intToDoc (-w) <> repsuffix rep)
+ | otherwise = ptext (sLit "0x") <> intToDoc w <> repsuffix rep
where
-- type suffix for literals:
-- Integer literals are unsigned in Cmm/C. We explicitly cast to
@@ -1236,10 +1237,33 @@ pprHexVal w rep
else panic "pprHexVal: Can't find a 64-bit type"
repsuffix _ = char 'U'
+ intToDoc :: Integer -> SDoc
+ intToDoc i = go (truncInt i)
+
+ -- We need to truncate value as Cmm backend does not drop
+ -- redundant bits to ease handling of negative values.
+ -- Thus the following Cmm code on 64-bit arch, like amd64:
+ -- CInt v;
+ -- v = {something};
+ -- if (v == %lobits32(-1)) { ...
+ -- leads to the following C code:
+ -- StgWord64 v = (StgWord32)({something});
+ -- if (v == 0xFFFFffffFFFFffffU) { ...
+ -- Such code is incorrect as it promotes both operands to StgWord64
+ -- and the whole condition is always false.
+ truncInt :: Integer -> Integer
+ truncInt i =
+ case rep of
+ W8 -> i `rem` (2^(8 :: Int))
+ W16 -> i `rem` (2^(16 :: Int))
+ W32 -> i `rem` (2^(32 :: Int))
+ W64 -> i `rem` (2^(64 :: Int))
+ _ -> panic ("pprHexVal/truncInt: C backend can't encode "
+ ++ show rep ++ " literals")
+
go 0 = empty
go w' = go q <> dig
where
(q,r) = w' `quotRem` 16
dig | r < 10 = char (chr (fromInteger r + ord '0'))
| otherwise = char (chr (fromInteger r - 10 + ord 'a'))
-
++++++ D177.patch ++++++
Index: ghc-7.8.3/compiler/main/DriverPipeline.hs
===================================================================
--- ghc-7.8.3.orig/compiler/main/DriverPipeline.hs
+++ ghc-7.8.3/compiler/main/DriverPipeline.hs
@@ -1208,6 +1208,7 @@ runPhase (RealPhase (As with_cpp)) input
as_prog <- whichAsProg
let cmdline_include_paths = includePaths dflags
+ let pic_c_flags = picCCOpts dflags
next_phase <- maybeMergeStub
output_fn <- phaseOutputFilename next_phase
@@ -1221,6 +1222,9 @@ runPhase (RealPhase (As with_cpp)) input
= liftIO $ as_prog dflags
([ SysTools.Option ("-I" ++ p) | p <- cmdline_include_paths ]
+ -- See Note [-fPIC for assembler]
+ ++ map SysTools.Option pic_c_flags
+
-- We only support SparcV9 and better because V8 lacks an atomic CAS
-- instruction so we have to make sure that the assembler accepts the
-- instruction set. Note that the user can still override this
@@ -1262,6 +1266,8 @@ runPhase (RealPhase SplitAs) _input_fn d
osuf = objectSuf dflags
split_odir = base_o ++ "_" ++ osuf ++ "_split"
+ let pic_c_flags = picCCOpts dflags
+
-- this also creates the hierarchy
liftIO $ createDirectoryIfMissing True split_odir
@@ -1295,6 +1301,9 @@ runPhase (RealPhase SplitAs) _input_fn d
then [SysTools.Option "-mcpu=v9"]
else []) ++
+ -- See Note [-fPIC for assembler]
+ map SysTools.Option pic_c_flags ++
+
[ SysTools.Option "-c"
, SysTools.Option "-o"
, SysTools.FileOption "" (split_obj n)
@@ -2210,3 +2219,38 @@ haveRtsOptsFlags dflags =
isJust (rtsOpts dflags) || case rtsOptsEnabled dflags of
RtsOptsSafeOnly -> False
_ -> True
+
+-- Note [-fPIC for assembler]
+-- When compiling .c source file GHC's driver pipeline basically
+-- does the following two things:
+-- 1. ${CC} -S 'PIC_CFLAGS' source.c
+-- 2. ${CC} -x assembler -c 'PIC_CFLAGS' source.S
+--
+-- Why do we need to pass 'PIC_CFLAGS' both to C compiler and assembler?
+-- Because on some architectures (at least sparc32) assembler also choses
+-- relocation type!
+-- Consider the following C module:
+--
+-- /* pic-sample.c */
+-- int v;
+-- void set_v (int n) { v = n; }
+-- int get_v (void) { return v; }
+--
+-- $ gcc -S -fPIC pic-sample.c
+-- $ gcc -c pic-sample.s -o pic-sample.no-pic.o # incorrect binary
+-- $ gcc -c -fPIC pic-sample.s -o pic-sample.pic.o # correct binary
+--
+-- $ objdump -r -d pic-sample.pic.o > pic-sample.pic.o.od
+-- $ objdump -r -d pic-sample.no-pic.o > pic-sample.no-pic.o.od
+-- $ diff -u pic-sample.pic.o.od pic-sample.no-pic.o.od
+--
+-- Most of architectures won't show any difference in this test, but on sparc32
+-- the following assembly snippet:
+--
+-- sethi %hi(_GLOBAL_OFFSET_TABLE_-8), %l7
+--
+-- generates two kinds or relocations, only 'R_SPARC_PC22' is correct:
+--
+-- 3c: 2f 00 00 00 sethi %hi(0), %l7
+-- - 3c: R_SPARC_PC22 _GLOBAL_OFFSET_TABLE_-0x8
+-- + 3c: R_SPARC_HI22 _GLOBAL_OFFSET_TABLE_-0x8
++++++ D349.patch ++++++
Index: ghc-7.8.3/compiler/ghci/Linker.lhs
===================================================================
--- ghc-7.8.3.orig/compiler/ghci/Linker.lhs
+++ ghc-7.8.3/compiler/ghci/Linker.lhs
@@ -123,7 +123,10 @@ data PersistentLinkerState
-- The currently-loaded packages; always object code
-- Held, as usual, in dependency order; though I am not sure if
-- that is really important
- pkgs_loaded :: ![PackageId]
+ pkgs_loaded :: ![PackageId],
+ -- we need to remember the name of the last temporary DLL/.so
+ -- so we can link it
+ last_temp_so :: !(Maybe FilePath)
}
emptyPLS :: DynFlags -> PersistentLinkerState
@@ -132,7 +135,8 @@ emptyPLS _ = PersistentLinkerState {
itbl_env = emptyNameEnv,
pkgs_loaded = init_pkgs,
bcos_loaded = [],
- objs_loaded = [] }
+ objs_loaded = [],
+ last_temp_so = Nothing }
-- Packages that don't need loading, because the compiler
-- shares them with the interpreted program.
@@ -314,14 +318,15 @@ reallyInitDynLinker dflags =
; if null cmdline_lib_specs then return pls
else do
- { mapM_ (preloadLib dflags lib_paths framework_paths) cmdline_lib_specs
+ { pls1 <- foldM (preloadLib dflags lib_paths framework_paths) pls
+ cmdline_lib_specs
; maybePutStr dflags "final link ... "
; ok <- resolveObjs
; if succeeded ok then maybePutStrLn dflags "done"
else throwGhcExceptionIO (ProgramError "linking extra libraries/objects failed")
- ; return pls
+ ; return pls1
}}
@@ -360,19 +365,22 @@ classifyLdInput dflags f
return Nothing
where platform = targetPlatform dflags
-preloadLib :: DynFlags -> [String] -> [String] -> LibrarySpec -> IO ()
-preloadLib dflags lib_paths framework_paths lib_spec
+preloadLib :: DynFlags -> [String] -> [String] -> PersistentLinkerState
+ -> LibrarySpec -> IO (PersistentLinkerState)
+preloadLib dflags lib_paths framework_paths pls lib_spec
= do maybePutStr dflags ("Loading object " ++ showLS lib_spec ++ " ... ")
case lib_spec of
Object static_ish
- -> do b <- preload_static lib_paths static_ish
+ -> do (b, pls1) <- preload_static lib_paths static_ish
maybePutStrLn dflags (if b then "done"
else "not found")
+ return pls1
Archive static_ish
-> do b <- preload_static_archive lib_paths static_ish
maybePutStrLn dflags (if b then "done"
else "not found")
+ return pls
DLL dll_unadorned
-> do maybe_errstr <- loadDLL (mkSOName platform dll_unadorned)
@@ -388,12 +396,14 @@ preloadLib dflags lib_paths framework_pa
case err2 of
Nothing -> maybePutStrLn dflags "done"
Just _ -> preloadFailed mm lib_paths lib_spec
+ return pls
DLLPath dll_path
-> do maybe_errstr <- loadDLL dll_path
case maybe_errstr of
Nothing -> maybePutStrLn dflags "done"
Just mm -> preloadFailed mm lib_paths lib_spec
+ return pls
Framework framework ->
if platformUsesFrameworks (targetPlatform dflags)
@@ -401,6 +411,7 @@ preloadLib dflags lib_paths framework_pa
case maybe_errstr of
Nothing -> maybePutStrLn dflags "done"
Just mm -> preloadFailed mm framework_paths lib_spec
+ return pls
else panic "preloadLib Framework"
where
@@ -420,11 +431,13 @@ preloadLib dflags lib_paths framework_pa
-- Not interested in the paths in the static case.
preload_static _paths name
= do b <- doesFileExist name
- if not b then return False
- else do if dynamicGhc
- then dynLoadObjs dflags [name]
- else loadObj name
- return True
+ if not b then return (False, pls)
+ else if dynamicGhc
+ then do pls1 <- dynLoadObjs dflags pls [name]
+ return (True, pls1)
+ else do loadObj name
+ return (True, pls)
+
preload_static_archive _paths name
= do b <- doesFileExist name
if not b then return False
@@ -791,8 +804,8 @@ dynLinkObjs dflags pls objs = do
wanted_objs = map nameOfObject unlinkeds
if dynamicGhc
- then do dynLoadObjs dflags wanted_objs
- return (pls1, Succeeded)
+ then do pls2 <- dynLoadObjs dflags pls1 wanted_objs
+ return (pls2, Succeeded)
else do mapM_ loadObj wanted_objs
-- Link them all together
@@ -806,9 +819,11 @@ dynLinkObjs dflags pls objs = do
pls2 <- unload_wkr dflags [] pls1
return (pls2, Failed)
-dynLoadObjs :: DynFlags -> [FilePath] -> IO ()
-dynLoadObjs _ [] = return ()
-dynLoadObjs dflags objs = do
+
+dynLoadObjs :: DynFlags -> PersistentLinkerState -> [FilePath]
+ -> IO PersistentLinkerState
+dynLoadObjs _ pls [] = return pls
+dynLoadObjs dflags pls objs = do
let platform = targetPlatform dflags
soFile <- newTempName dflags (soExt platform)
let -- When running TH for a non-dynamic way, we still need to make
@@ -816,10 +831,22 @@ dynLoadObjs dflags objs = do
-- Opt_Static off
dflags1 = gopt_unset dflags Opt_Static
dflags2 = dflags1 {
- -- We don't want to link the ldInputs in; we'll
- -- be calling dynLoadObjs with any objects that
- -- need to be linked.
- ldInputs = [],
+ -- We don't want the original ldInputs in
+ -- (they're already linked in), but we do want
+ -- to link against the previous dynLoadObjs
+ -- library if there was one, so that the linker
+ -- can resolve dependencies when it loads this
+ -- library.
+ ldInputs =
+ case last_temp_so pls of
+ Nothing -> []
+ Just so ->
+ let (lp, l) = splitFileName so in
+ [ Option ("-L" ++ lp)
+ , Option ("-Wl,-rpath")
+ , Option ("-Wl," ++ lp)
+ , Option ("-l:" ++ l)
+ ],
-- Even if we're e.g. profiling, we still want
-- the vanilla dynamic libraries, so we set the
-- ways / build tag to be just WayDyn.
@@ -831,7 +858,7 @@ dynLoadObjs dflags objs = do
consIORef (filesToNotIntermediateClean dflags) soFile
m <- loadDLL soFile
case m of
- Nothing -> return ()
+ Nothing -> return pls { last_temp_so = Just soFile }
Just err -> panic ("Loading temp shared object failed: " ++ err)
rmDupLinkables :: [Linkable] -- Already loaded
Index: ghc-7.8.3/compiler/main/SysTools.lhs
===================================================================
--- ghc-7.8.3.orig/compiler/main/SysTools.lhs
+++ ghc-7.8.3/compiler/main/SysTools.lhs
@@ -1365,6 +1365,7 @@ linkDynLib dflags0 o_files dep_packages
in package_hs_libs ++ extra_libs ++ other_flags
-- probably _stub.o files
+ -- and last temporary shaerd object file
let extra_ld_inputs = ldInputs dflags
case os of
@@ -1482,8 +1483,8 @@ linkDynLib dflags0 o_files dep_packages
-- Set the library soname. We use -h rather than -soname as
-- Solaris 10 doesn't support the latter:
++ [ Option ("-Wl,-h," ++ takeFileName output_fn) ]
- ++ map Option lib_path_opts
++ extra_ld_inputs
+ ++ map Option lib_path_opts
++ map Option pkg_lib_path_opts
++ map Option pkg_link_opts
)
Index: ghc-7.8.3/rts/Linker.c
===================================================================
--- ghc-7.8.3.orig/rts/Linker.c
+++ ghc-7.8.3/rts/Linker.c
@@ -1776,7 +1776,7 @@ internal_dlopen(const char *dll_name)
// (see POSIX also)
ACQUIRE_LOCK(&dl_mutex);
- hdl = dlopen(dll_name, RTLD_LAZY | RTLD_GLOBAL);
+ hdl = dlopen(dll_name, RTLD_LAZY|RTLD_LOCAL); /* see Note [RTLD_LOCAL] */
errmsg = NULL;
if (hdl == NULL) {
@@ -1786,11 +1786,12 @@ internal_dlopen(const char *dll_name)
errmsg_copy = stgMallocBytes(strlen(errmsg)+1, "addDLL");
strcpy(errmsg_copy, errmsg);
errmsg = errmsg_copy;
+ } else {
+ o_so = stgMallocBytes(sizeof(OpenedSO), "addDLL");
+ o_so->handle = hdl;
+ o_so->next = openedSOs;
+ openedSOs = o_so;
}
- o_so = stgMallocBytes(sizeof(OpenedSO), "addDLL");
- o_so->handle = hdl;
- o_so->next = openedSOs;
- openedSOs = o_so;
RELEASE_LOCK(&dl_mutex);
//--------------- End critical section -------------------
@@ -1798,14 +1799,39 @@ internal_dlopen(const char *dll_name)
return errmsg;
}
+/*
+ Note [RTLD_LOCAL]
+
+ In GHCi we want to be able to override previous .so's with newly
+ loaded .so's when we recompile something. This further implies that
+ when we look up a symbol in internal_dlsym() we have to iterate
+ through the loaded libraries (in order from most recently loaded to
+ oldest) looking up the symbol in each one until we find it.
+
+ However, this can cause problems for some symbols that are copied
+ by the linker into the executable image at runtime - see #8935 for a
+ lengthy discussion. To solve that problem we need to look up
+ symbols in the main executable *first*, before attempting to look
+ them up in the loaded .so's. But in order to make that work, we
+ have to always call dlopen with RTLD_LOCAL, so that the loaded
+ libraries don't populate the global symbol table.
+*/
+
static void *
-internal_dlsym(void *hdl, const char *symbol) {
+internal_dlsym(const char *symbol) {
OpenedSO* o_so;
void *v;
// We acquire dl_mutex as concurrent dl* calls may alter dlerror
ACQUIRE_LOCK(&dl_mutex);
dlerror();
+ // look in program first
+ v = dlsym(dl_prog_handle, symbol);
+ if (dlerror() == NULL) {
+ RELEASE_LOCK(&dl_mutex);
+ return v;
+ }
+
for (o_so = openedSOs; o_so != NULL; o_so = o_so->next) {
v = dlsym(o_so->handle, symbol);
if (dlerror() == NULL) {
@@ -1813,7 +1839,6 @@ internal_dlsym(void *hdl, const char *sy
return v;
}
}
- v = dlsym(hdl, symbol);
RELEASE_LOCK(&dl_mutex);
return v;
}
@@ -1981,7 +2006,7 @@ lookupSymbol( char *lbl )
if (!ghciLookupSymbolTable(symhash, lbl, &val)) {
IF_DEBUG(linker, debugBelch("lookupSymbol: symbol not found\n"));
# if defined(OBJFORMAT_ELF)
- return internal_dlsym(dl_prog_handle, lbl);
+ return internal_dlsym(lbl);
# elif defined(OBJFORMAT_MACHO)
# if HAVE_DLFCN_H
/* On OS X 10.3 and later, we use dlsym instead of the old legacy
@@ -1995,7 +2020,7 @@ lookupSymbol( char *lbl )
*/
IF_DEBUG(linker, debugBelch("lookupSymbol: looking up %s with dlsym\n", lbl));
ASSERT(lbl[0] == '_');
- return internal_dlsym(dl_prog_handle, lbl + 1);
+ return internal_dlsym(lbl + 1);
# else
if (NSIsSymbolNameDefined(lbl)) {
NSSymbol symbol = NSLookupAndBindSymbol(lbl);
++++++ ghc-7.8.2-cgen-constify.patch ++++++
commit b0cf3ab7a69b878a4335d21a347b56e4b0ca0b7b
Author: Sergei Trofimovich
Date: Mon Apr 14 19:06:24 2014 +0300
compiler/cmm/PprC.hs: constify local string literals
Consider one-line module
module B (v) where v = "hello"
in -fvia-C mode it generates code like
static char gibberish_str[] = "hello";
It uselessly eats data section (precious resource on ia64!).
The patch switches genrator to emit:
static const char gibberish_str[] = "hello";
Signed-off-by: Sergei Trofimovich
diff --git a/compiler/cmm/PprC.hs b/compiler/cmm/PprC.hs
index 2398981..fdb578d 100644
--- a/compiler/cmm/PprC.hs
+++ b/compiler/cmm/PprC.hs
@@ -112,6 +112,12 @@ pprTop (CmmProc infos clbl _ graph) =
-- We only handle (a) arrays of word-sized things and (b) strings.
+pprTop (CmmData ReadOnlyData (Statics lbl [CmmString str])) =
+ hcat [
+ pprLocalness lbl, ptext (sLit "const char "), ppr lbl,
+ ptext (sLit "[] = "), pprStringInCStyle str, semi
+ ]
+
pprTop (CmmData _section (Statics lbl [CmmString str])) =
hcat [
pprLocalness lbl, ptext (sLit "char "), ppr lbl,
++++++ ghc-cabal-unversion-docdir.patch ++++++
--- /var/tmp/diff_new_pack.vrQA4V/_old 2014-11-26 10:32:58.000000000 +0100
+++ /var/tmp/diff_new_pack.vrQA4V/_new 2014-11-26 10:32:58.000000000 +0100
@@ -1,13 +1,15 @@
---- ghc-7.6.3/utils/ghc-cabal/Main.hs~ 2013-04-19 06:22:47.000000000 +0900
-+++ ghc-7.6.3/utils/ghc-cabal/Main.hs 2013-10-29 12:35:18.916340631 +0900
-@@ -180,8 +180,8 @@
- libsubdir = toPathTemplate "$pkgid",
- docdir = toPathTemplate $
- if relocatableBuild
-- then "$topdir/../doc/html/libraries/$pkgid"
-- else (myDocdir > "$pkgid"),
-+ then "$topdir/../doc/html/libraries/$pkg"
-+ else (myDocdir > "$pkg"),
- htmldir = toPathTemplate "$docdir"
- }
- progs = withPrograms lbi
+Index: ghc-7.7.20131120/utils/ghc-cabal/Main.hs
+===================================================================
+--- ghc-7.7.20131120.orig/utils/ghc-cabal/Main.hs
++++ ghc-7.7.20131120/utils/ghc-cabal/Main.hs
+@@ -253,8 +253,8 @@ updateInstallDirTemplates relocatableBui
+ libsubdir = toPathTemplate "$pkgid",
+ docdir = toPathTemplate $
+ if relocatableBuild
+- then "$topdir/../doc/html/libraries/$pkgid"
+- else (myDocdir > "$pkgid"),
++ then "$topdir/../doc/html/libraries/$pkg"
++ else (myDocdir > "$pkg"),
+ htmldir = toPathTemplate "$docdir"
+ }
+
++++++ ghc.git-e18525f.patch ++++++
From: Sergei Trofimovich
Date: Thu, 4 Sep 2014 14:50:45 +0000 (+0300)
Subject: pprC: declare extern cmm primitives as functions, not data
X-Git-Url: https://git.haskell.org/ghc.git/commitdiff_plain/e18525fae273f4c1ad8d6cbe1de...
pprC: declare extern cmm primitives as functions, not data
Summary:
The commit fixes incorrect code generation of
integer-gmp package on ia64 due to C prototypes mismatch.
Before the patch prototypes for "foreign import prim" were:
StgWord poizh[];
After the patch they became:
StgFunPtr poizh();
Long story:
Consider the following simple example:
{-# LANGUAGE MagicHash, GHCForeignImportPrim, UnliftedFFITypes #-}
module M where
import GHC.Prim -- Int#
foreign import prim "poizh" poi# :: Int# -> Int#
Before the patch unregisterised build generated the
following 'poizh' reference:
EI_(poizh); /* StgWord poizh[]; */
FN_(M_poizh_entry) {
// ...
JMP_((W_)&poizh);
}
After the patch it looks this way:
EF_(poizh); /* StgFunPtr poizh(); */
FN_(M_poizh_entry) {
// ...
JMP_((W_)&poizh);
}
On ia64 it leads to different relocation types being generated:
incorrect one:
addl r14 = @ltoffx(poizh#)
ld8.mov r14 = [r14], poizh# ; r14 = address-of 'poizh#'
correct one:
addl r14 = @ltoff(@fptr(poizh#)), gp ; r14 = address-of-thunk 'poizh#'
ld8 r14 = [r14]
'@fptr(poizh#)' basically instructs assembler to creates
another obect consisting of real address to 'poizh' instructions
and module address. That '@fptr' object is used as a function "address"
This object is different for every module referencing 'poizh' symbol.
All indirect function calls expect '@fptr' object. That way
call site reads real destination address and set destination
module address in 'gp' register from '@fptr'.
Signed-off-by: Sergei Trofimovich
---
Index: ghc-7.8.3/compiler/cmm/CLabel.hs
===================================================================
--- ghc-7.8.3.orig/compiler/cmm/CLabel.hs
+++ ghc-7.8.3/compiler/cmm/CLabel.hs
@@ -801,6 +801,7 @@ labelType (CmmLabel _ _ CmmClosure)
labelType (CmmLabel _ _ CmmCode) = CodeLabel
labelType (CmmLabel _ _ CmmInfo) = DataLabel
labelType (CmmLabel _ _ CmmEntry) = CodeLabel
+labelType (CmmLabel _ _ CmmPrimCall) = CodeLabel
labelType (CmmLabel _ _ CmmRetInfo) = DataLabel
labelType (CmmLabel _ _ CmmRet) = CodeLabel
labelType (RtsLabel (RtsSelectorInfoTable _ _)) = DataLabel
++++++ integer-gmp.patch ++++++
Index: ghc-7.8.3/libraries/integer-gmp/gmp/ghc.mk
===================================================================
--- ghc-7.8.3.orig/libraries/integer-gmp/gmp/ghc.mk
+++ ghc-7.8.3/libraries/integer-gmp/gmp/ghc.mk
@@ -66,6 +66,12 @@ else
BUILD_SHARED=no
endif
+ifeq "$(firstword $(subst -, ,$(HOSTPLATFORM)))" "x86_64"
+ FORCE_PIC=--with-pic=yes
+else
+ FORCE_PIC=
+endif
+
# In a bindist, we don't want to know whether /this/ machine has gmp,
# but whether the machine the bindist was built on had gmp.
ifeq "$(BINDIST)" "YES"
@@ -147,7 +153,7 @@ libraries/integer-gmp/gmp/libgmp.a libra
export PATH; \
cd gmpbuild && \
CC=$(CCX) NM=$(NM) AR=$(AR_STAGE1) ./configure \
- --enable-shared=no \
+ --enable-shared=no $(FORCE_PIC) \
--host=$(HOSTPLATFORM) --build=$(BUILDPLATFORM)
$(MAKE) -C libraries/integer-gmp/gmp/gmpbuild MAKEFLAGS=
$(CP) libraries/integer-gmp/gmp/gmpbuild/gmp.h libraries/integer-gmp/gmp/
++++++ llvm-powerpc64-datalayout.patch ++++++
--- /var/tmp/diff_new_pack.vrQA4V/_old 2014-11-26 10:32:58.000000000 +0100
+++ /var/tmp/diff_new_pack.vrQA4V/_new 2014-11-26 10:32:58.000000000 +0100
@@ -1,18 +1,14 @@
-Index: ghc-7.6.3/compiler/llvmGen/LlvmCodeGen/Ppr.hs
+Index: ghc-7.8.2/compiler/llvmGen/LlvmCodeGen/Ppr.hs
===================================================================
---- ghc-7.6.3.orig/compiler/llvmGen/LlvmCodeGen/Ppr.hs
-+++ ghc-7.6.3/compiler/llvmGen/LlvmCodeGen/Ppr.hs
-@@ -68,6 +68,13 @@ moduleLayout =
- $+$ text "target triple = \"arm-unknown-linux-gnueabi\""
- #endif
-
-+#elif defined (powerpc64_TARGET_ARCH)
-+
-+#if linux_TARGET_OS
-+ text "target datalayout = \"E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64\""
-+ $+$ text "target triple = \"powerpc64-unknown-linux-gnu\""
-+#endif
-+
- #else
- -- FIX: Other targets
- empty
+--- ghc-7.8.2.orig/compiler/llvmGen/LlvmCodeGen/Ppr.hs
++++ ghc-7.8.2/compiler/llvmGen/LlvmCodeGen/Ppr.hs
+@@ -64,6 +64,9 @@ moduleLayout = sdocWithPlatform $ \platf
+ Platform { platformArch = ArchX86, platformOS = OSiOS } ->
+ text "target datalayout = \"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32\""
+ $+$ text "target triple = \"i386-apple-darwin11\""
++ Platform { platformArch = ArchPPC_64 , platformOS = OSLinux } ->
++ text "target datalayout = \"E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64\""
++ $+$ text "target triple = \"powerpc64-unknown-linux-gnu\""
+ _ ->
+ -- FIX: Other targets
+ empty
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org