Fix build of Boost.Context on ppc64, future-proof the linker script

This commit is contained in:
Petr Machata 2013-02-11 20:06:45 +01:00
parent bcaac65465
commit 91de02f8db
3 changed files with 51 additions and 4 deletions

View File

@ -0,0 +1,38 @@
diff -up boost_1_53_0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S\~ boost_1_53_0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S
--- boost_1_53_0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S~ 2012-11-30 08:38:52.000000000 +0100
+++ boost_1_53_0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S 2013-02-11 19:14:45.179845740 +0100
@@ -89,7 +89,7 @@ make_fcontext:
.quad .make_fcontext,.TOC.@tocbase,0
.previous
.size make_fcontext,24
-.type .make_fcontext,@function
+.type make_fcontext,@function
.globl .make_fcontext
.make_fcontext:
mflr %r6 # save return address into R6
@@ -99,13 +99,13 @@ make_fcontext:
# call align_stack, R3 contains address at 16 byte boundary after return
# == pointer to fcontext_t and address of context stack
- rlwinm %r3, %r3, 0, 0, 59
+ rldicr %r3, %r3, 0, 59
std %r0, 184(%r3) # save address of context stack (base) in fcontext_t
std %r4, 192(%r3) # save context stack size in fcontext_t
std %r5, 176(%r3) # save address of context function in fcontext_t
- subf %r0, %r3, 64 # 64 bytes on stack for parameter area (== 8 registers)
+ addi %r0, %r3, -64 # 64 bytes on stack for parameter area (== 8 registers)
std %r0, 152(%r3) # save the stack base
mflr %r0 # load LR
@@ -128,5 +128,6 @@ finish:
stwu %r1, -32(%r1) # allocate stack space, SP % 16 == 0
li %r3, 0 # set return value to zero
- bl _exit@plt # exit application
+ bl _exit # exit application
+ nop # padding for R_PPC64_REL24
.size .make_fcontext, .-.make_fcontext
Diff finished. Mon Feb 11 19:15:05 2013

View File

@ -25,7 +25,7 @@ Name: boost
Summary: The free peer-reviewed portable C++ source libraries
Version: 1.53.0
%define version_enc 1_53_0
Release: 2%{?dist}
Release: 3%{?dist}
License: Boost and MIT and Python
%define toplev_dirname %{name}_%{version_enc}
@ -101,6 +101,9 @@ Patch10: boost-1.50.0-long-double-1.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=828857
Patch15: boost-1.50.0-pool.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=909888
Patch16: boost-1.53.0-context.patch
%bcond_with tests
%bcond_with docs_generated
@ -496,6 +499,7 @@ a number of significant features and is now developed independently
%patch9 -p1
%patch10 -p1
%patch15 -p0
%patch16 -p1
# At least python2_version needs to be a macro so that it's visible in
# %%install as well.
@ -522,6 +526,7 @@ using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{pyth
EOF
./bootstrap.sh --with-toolset=gcc --with-icu
sed 's/%%{version}/%{version}/g' %{SOURCE2} > $(basename %{SOURCE2})
# N.B. When we build the following with PCH, parts of boost (math
# library in particular) end up being built second time during
@ -640,7 +645,7 @@ echo ============================= install serial ==================
# itself for details of why we need to do this.
[ -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread-mt.so ] # Must be present
rm -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread-mt.so
install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/
install -p -m 644 $(basename %{SOURCE2}) $RPM_BUILD_ROOT%{_libdir}/
echo ============================= install Boost.Build ==================
(cd tools/build/v2
@ -1011,6 +1016,10 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/bjam.1*
%changelog
* Mon Feb 11 2013 Petr Machata <pmachata@redhat.com> - 1.53.0-3
- Fix Boost.Context on ppc64
- Future-proof the linker script boost_thread-mt.so
* Sun Feb 10 2013 Denis Arnaud <denis.arnaud_fedora@m4x.org> - 1.53.0-2
- Fixed the libboost_thread-mt.so script (which wrongly referred to Boost-1.50)

View File

@ -8,5 +8,5 @@
transitive one. Hence this linker script, which brings in the
Boost.System DSO. */
INPUT(libboost_thread-mt.so.1.53.0)
INPUT(libboost_system-mt.so.1.53.0)
INPUT(libboost_thread-mt.so.%{version})
INPUT(libboost_system-mt.so.%{version})