Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 May 2012 06:20:06 GMT
From:      Don Lewis <truckman@FreeBSD.org>
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/167853: editors/apache-openoffice-3.4.0 fails to build
Message-ID:  <201205180620.q4I6K6sg097234@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/167853; it has been noted by GNATS.

From: Don Lewis <truckman@FreeBSD.org>
To: bug-followup@FreeBSD.org, scottsshort@gmail.com
Cc:  
Subject: Re: ports/167853: editors/apache-openoffice-3.4.0 fails to build
Date: Thu, 17 May 2012 23:17:45 -0700 (PDT)

 I ran into the same problem here.
 
 There is a function definition vs. prototype error earlier in the log
 file.  It appears that this error is specific to FreeBSD i386.  It
 appears that a change was made to the addLocalFunctions() interface, but
 this change was never made to the gcc3_freebsd_intel version of this
 file.  The upstream probably hasn't been testing on FreeBSD i386.
 
 The following patch modifies
 bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx to be identical to
 the Linux i386 version of this file, which seems to be the correct thing
 to do.  Compilation gets much further for me now, but I'm seeing build
 errors in the apr and coinmp modules, which I also saw before this patch
 in addition to the bridges problem.
 
 Index: files/patch-bridges
 ===================================================================
 RCS file: /home/ncvs/ports/editors/openoffice-3/files/patch-bridges,v
 retrieving revision 1.3
 diff -u -r1.3 patch-bridges
 --- files/patch-bridges	9 May 2012 03:48:16 -0000	1.3
 +++ files/patch-bridges	18 May 2012 00:17:33 -0000
 @@ -10,3 +10,76 @@
   
   #include <stdio.h>
   #include <string.h>
 +--- bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx.orig	2012-01-10 02:40:18.000000000 -0800
 ++++ bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx	2012-05-17 17:14:35.000000000 -0700
 +@@ -355,7 +355,7 @@
 + int const codeSnippetSize = 16;
 + 
 + unsigned char * codeSnippet(
 +-    unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset,
 ++    unsigned char * code, sal_PtrDiff writetoexecdiff, sal_Int32 functionIndex, sal_Int32 vtableOffset,
 +     typelib_TypeClass returnTypeClass)
 + {
 +     if (!bridges::cpp_uno::shared::isSimpleType(returnTypeClass)) {
 +@@ -401,7 +401,7 @@
 +     // jmp privateSnippetExecutor:
 +     *p++ = 0xE9;
 +     *reinterpret_cast< sal_Int32 * >(p)
 +-        = ((unsigned char *) exec) - p - sizeof (sal_Int32);
 ++        = ((unsigned char *) exec) - p - sizeof (sal_Int32) - writetoexecdiff;
 +     p += sizeof (sal_Int32);
 +     OSL_ASSERT(p - code <= codeSnippetSize);
 +     return code + codeSnippetSize;
 +@@ -412,8 +412,7 @@
 + struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
 + 
 + bridges::cpp_uno::shared::VtableFactory::Slot *
 +-bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
 +-{
 ++bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) {
 +     return static_cast< Slot * >(block) + 2;
 + }
 + 
 +@@ -434,7 +433,7 @@
 + }
 + 
 + unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
 +-    Slot ** slots, unsigned char * code,
 ++    Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff,
 +     typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
 +     sal_Int32 functionCount, sal_Int32 vtableOffset)
 + {
 +@@ -447,9 +446,9 @@
 +         switch (member->eTypeClass) {
 +         case typelib_TypeClass_INTERFACE_ATTRIBUTE:
 +             // Getter:
 +-            (s++)->fn = code;
 ++            (s++)->fn = code + writetoexecdiff;
 +             code = codeSnippet(
 +-                code, functionOffset++, vtableOffset,
 ++                code, writetoexecdiff, functionOffset++, vtableOffset,
 +                 reinterpret_cast< typelib_InterfaceAttributeTypeDescription * >(
 +                     member)->pAttributeTypeRef->eTypeClass);
 +             // Setter:
 +@@ -457,17 +456,17 @@
 +                 typelib_InterfaceAttributeTypeDescription * >(
 +                     member)->bReadOnly)
 +             {
 +-                (s++)->fn = code;
 ++                (s++)->fn = code + writetoexecdiff;
 +                 code = codeSnippet(
 +-                    code, functionOffset++, vtableOffset,
 ++                    code, writetoexecdiff, functionOffset++, vtableOffset,
 +                     typelib_TypeClass_VOID);
 +             }
 +             break;
 + 
 +         case typelib_TypeClass_INTERFACE_METHOD:
 +-            (s++)->fn = code;
 ++            (s++)->fn = code + writetoexecdiff;
 +             code = codeSnippet(
 +-                code, functionOffset++, vtableOffset,
 ++                code, writetoexecdiff, functionOffset++, vtableOffset,
 +                 reinterpret_cast< typelib_InterfaceMethodTypeDescription * >(
 +                     member)->pReturnTypeRef->eTypeClass);
 +             break;
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201205180620.q4I6K6sg097234>