Fixing USE_GCC for LibreOffice on i386
Tijl Coosemans
tijl at coosemans.org
Sun May 12 19:40:25 UTC 2013
On 2013-05-12 17:28, Gabor Pali wrote:
> On Sun, May 12, 2013 at 12:45 PM, Tijl Coosemans <tijl at coosemans.org> wrote:
>> Can you test if creating /etc/libmap.conf helps?
>
> No, it does not help. Note that soffice.bin uses the right version of
> libstdc++ from base:
>
> $ ldd /usr/local/lib/libreoffice/program/soffice.bin
> /usr/local/lib/libreoffice/program/soffice.bin:
> ..
> libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x28138000)
> ..
>
> This is quite sensible to me as poudriere did not pull anything that
> would depend on lang/gcc* while building the packages. (I started
> from scratch.)
>
> The application dies at the same place as before (excerpt from gdbtrace.log):
Ok. One other thing I thought of is this patch:
http://llvm.org/viewvc/llvm-project?view=revision&revision=175057
It has been applied to base system llvm, but not port llvm:
http://svnweb.freebsd.org/base?view=revision&revision=246858
Can you put the attached patch in devel/llvm/files/ and rebuild
llvm, clang and libreoffice?
-------------- next part --------------
--- lib/Target/X86/X86SelectionDAGInfo.cpp.orig
+++ lib/Target/X86/X86SelectionDAGInfo.cpp
@@ -202,6 +202,14 @@
SrcPtrInfo.getAddrSpace() >= 256)
return SDValue();
+ // ESI might be used as a base pointer, in that case we can't simply overwrite
+ // the register. Fall back to generic code.
+ const X86RegisterInfo *TRI =
+ static_cast<const X86RegisterInfo *>(DAG.getTarget().getRegisterInfo());
+ if (TRI->hasBasePointer(DAG.getMachineFunction()) &&
+ TRI->getBaseRegister() == X86::ESI)
+ return SDValue();
+
MVT AVT;
if (Align & 1)
AVT = MVT::i8;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-office/attachments/20130512/14744256/attachment.sig>
More information about the freebsd-office
mailing list