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>