Index: branches/2020Q4/editors/openoffice-4/Makefile =================================================================== --- branches/2020Q4/editors/openoffice-4/Makefile (revision 554861) +++ branches/2020Q4/editors/openoffice-4/Makefile (revision 554862) @@ -1,517 +1,513 @@ # Created by: Martin Blapp # $FreeBSD$ PORTNAME= apache-openoffice PORTVERSION= ${AOOVERSION} -PORTREVISION= 3 CATEGORIES= editors java MASTER_SITES= APACHE/openoffice/${PORTVERSION}/source \ http://tools.openoffice.org/unowinreg_prebuild/680/:unoreg \ LOCAL/truckman/openoffice:extsrc \ SF/oooextras.mirror/:sf .if defined(LANG_PKGNAME) PKGNAMEPREFIX= ${LANG_PKGNAME}- .endif .if defined(LANG_SUFFIX) PKGNAMESUFFIX= -${LANG_SUFFIX} .endif DISTFILES= ${AOOSRC} ${EXTSRC}:extsrc ${PYTHON_DISTFILE}:sf DIST_SUBDIR= openoffice EXTRACT_ONLY= ${AOOSRC} MAINTAINER= office@FreeBSD.org #de facto maintainer is truckman@FreeBSD.org #Frequent Patch submitters should (optionally) sign the Apache iCLA COMMENT= Integrated wordprocessor/dbase/spreadsheet/drawing/chart/browser LICENSE= APACHE20 ADOBE BSD3CLAUSE BSD4CLAUSE BSL ICU MIT MPL10 \ MPL11 PSFL TWAIN W3C LICENSE_COMB= multi LICENSE_NAME_ADOBE= Adobe Systems Incorporated license LICENSE_NAME_ICU= ICU License LICENSE_NAME_TWAIN= TWAIN Working Group license LICENSE_NAME_W3C= W3C license LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE_ALv2 LICENSE_FILE_ADOBE= ${WRKSRC}/LICENSE_ADOBE LICENSE_FILE_BSD3CLAUSE= ${WRKSRC}/LICENSE_BSD3CLAUSE LICENSE_FILE_BSD4CLAUSE= ${WRKSRC}/LICENSE_BSD4CLAUSE LICENSE_FILE_BSL= ${WRKSRC}/LICENSE_BSL LICENSE_FILE_ICU= ${WRKSRC}/LICENSE_ICU LICENSE_FILE_MIT= ${WRKSRC}/LICENSE_MIT LICENSE_FILE_MPL10= ${WRKSRC}/LICENSE_MPL10 LICENSE_FILE_MPL11= ${WRKSRC}/LICENSE_MPL11 LICENSE_FILE_PSFL= ${WRKSRC}/LICENSE_PSFL LICENSE_FILE_TWAIN= ${WRKSRC}/LICENSE_TWAIN LICENSE_FILE_W3C= ${WRKSRC}/LICENSE_W3C LICENSE_PERMS_ADOBE= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept LICENSE_PERMS_ICU= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept LICENSE_PERMS_TWAIN= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept LICENSE_PERMS_W3C= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept ONLY_FOR_ARCHS= amd64 i386 powerpc64 BUILD_DEPENDS= \ p5-Archive-Zip>=0:archivers/p5-Archive-Zip \ ${LOCALBASE}/bin/unzip:archivers/unzip \ zip:archivers/zip \ ant:devel/apache-ant \ dmake:devel/dmake \ epm:devel/epm \ ${LOCALBASE}/bin/gperf:devel/gperf \ imake:devel/imake \ gpatch:devel/patch \ ${LOCALBASE}/include/sane/sane.h:graphics/sane-backends \ ${JAVALIBDIR}/commons-lang.jar:java/apache-commons-lang \ ${JAVALIBDIR}/junit.jar:java/junit \ ${JAVALIBDIR}/bsh.jar:lang/bsh \ bash:shells/bash \ ${JAVALIBDIR}/lucene-core-3.6.2.jar:textproc/lucene \ p5-XML-Parser>=0:textproc/p5-XML-Parser \ p5-libwww>=0:www/p5-libwww \ p5-LWP-Protocol-https>0:www/p5-LWP-Protocol-https LIB_DEPENDS= \ libapr-1.so:devel/apr1 \ libnspr4.so:devel/nspr \ libcurl.so:ftp/curl \ libcairo.so:graphics/cairo \ libpng.so:graphics/png \ libgraphite.so:graphics/silgraphite \ libCoinMP.so:math/coinmp \ libfreetype.so:print/freetype2 \ libnss3.so:security/nss \ libexpat.so:textproc/expat2 \ libhunspell-1.7.so:textproc/hunspell \ libhyphen.so:textproc/hyphen \ libtextcat.so:textproc/libtextcat \ libmythes-1.2.so:textproc/mythes \ librdf.so:textproc/redland \ libserf-1.so:www/serf \ libfontconfig.so:x11-fonts/fontconfig RUN_DEPENDS= \ ${LOCALBASE}/share/icons/hicolor/index.theme:misc/hicolor-icon-theme \ ${JAVALIBDIR}/commons-lang.jar:java/apache-commons-lang \ ${JAVALIBDIR}/bsh.jar:lang/bsh \ ${LOCALBASE}/share/fonts/Caladea/Caladea-Bold.ttf:x11-fonts/crosextrafonts-caladea-ttf \ ${LOCALBASE}/share/fonts/Carlito/Carlito-Bold.ttf:x11-fonts/crosextrafonts-carlito-ttf \ ${LOCALBASE}/share/fonts/ChromeOS/Arimo-Bold.ttf:x11-fonts/croscorefonts-fonts-ttf USES= autoreconf bison compiler:c++11-lib cpe desktop-file-utils \ gettext-runtime gl gmake gnome iconv jpeg perl5 pkgconfig \ shared-mime-info ssl tar:bzip2 xorg USE_GL= gl glu USE_GNOME= gtk20 libxslt libidl glib20 USE_JAVA= yes JAVA_BUILD= jdk JAVA_RUN= jdk JAVA_VENDOR= openjdk USE_PERL5= build USE_XORG= ice sm x11 xau xaw xcomposite xcursor xdamage xext xfixes xi \ xinerama xrandr xrender xt CONFLICTS_INSTALL= apache-openoffice-devel-* AOOVERSION1= 4 AOOVERSION2= 1 -AOOVERSION3= 7 +AOOVERSION3= 8 # From solenv/inc/minor.mk SOURCEREVISION LAST_MINOR BUILD -AOOTAG= AOO417m1\(Build:9800\) -GITREVISION= 46059c9192 +AOOTAG= AOO418m3\(Build:9803\) +GITREVISION= 18848f57b6 EXTSRC= ApacheOpenOffice.ext_sources.${AOOVERSION1}.x.x.20150707.tar.gz AOOVERSION= ${AOOVERSION1}.${AOOVERSION2}.${AOOVERSION3} AOOXXX= ${AOOVERSION1}${AOOVERSION2}${AOOVERSION3} AOOSUFFIX= ${PORTVERSION} AOOSRC= apache-openoffice-${AOOVERSION}-${GITREVISION}-src${EXTRACT_SUFX} AOOUDIR= .openoffice.org\/${AOOVERSION1} INSTALLATION_BASEDIR?= openoffice-${AOOSUFFIX} PRINSTALLATION_BASEDIR= ${PREFIX}/${INSTALLATION_BASEDIR} OOPATH= ${PRINSTALLATION_BASEDIR}/openoffice${AOOVERSION1} XDGDIR= ${OOPATH}/share/xdg XDGREL= ../../${INSTALLATION_BASEDIR}/openoffice${AOOVERSION1}/share/xdg EXECBASE?= openoffice-${AOOSUFFIX} INSTALLS_ICONS= yes WITHOUT_CPU_CFLAGS= true CPE_PRODUCT= ${PORTNAME:S|apache-||} CPE_VENDOR= apache -OPTIONS_DEFINE= CRASHDUMP CUPS DBGUTIL DEBUG GNOME GNOMEVFS MMEDIA \ +OPTIONS_DEFINE= CRASHDUMP CUPS DBGUTIL DEBUG GNOME GNOMEVFS \ SDK WIKI_PUBLISHER -OPTIONS_DEFAULT= CUPS GNOME GNOMEVFS MMEDIA WIKI_PUBLISHER +OPTIONS_DEFAULT= CUPS GNOME GNOMEVFS WIKI_PUBLISHER CRASHDUMP_DESC= Enable crashdumps, you also need to set WITH_DEBUG_PORTS+=${PKGORIGIN} DBGUTIL_DESC= Enable assertions, object counting. (non-production) DEBUG_DESC= Compile with -O0, you also need to set WITH_DEBUG_PORTS+=${PKGORIGIN} GNOME_DESC= GConf + screensaver presentation control via DBUS GNOMEVFS_DESC= GNOME Virtual File System -MMEDIA_DESC= Multimedia backend for impress SDK_DESC= Build and install software development kit WIKI_PUBLISHER_DESC= Build and install Wiki Publisher extension CRASHDUMP_CONFIGURE_ENABLE= crashdump CUPS_CONFIGURE_ENABLE= cups CUPS_LIB_DEPENDS= libcups.so:print/cups DBGUTIL_CONFIGURE_ENABLE= dbgutil DEBUG_CONFIGURE_ENABLE= debug GNOME_CONFIGURE_ENABLE= dbus gconf lockdown GNOME_LIB_DEPENDS= libdbus-1.so:devel/dbus \ libdbus-glib-1.so:devel/dbus-glib GNOME_USE= GNOME=gconf2 GNOMEVFS_CONFIGURE_ENABLE= gnome-vfs GNOMEVFS_CONFIGURE_OFF= --enable-gio GNOMEVFS_CONFIGURE_ON= --disable-gio GNOMEVFS_USE= GNOME=gnomevfs2 -MMEDIA_CONFIGURE_ENABLE= gstreamer -MMEDIA_LIB_DEPENDS= libgstreamer-0.10.so:multimedia/gstreamer -MMEDIA_USE= GSTREAMER=yes - SDK_CONFIGURE_ENABLE= odk SDK_DISTFILES= unowinreg.dll:unoreg WIKI_PUBLISHER_CONFIGURE_ENABLE= wiki-publisher WIKI_PUBLISHER_CONFIGURE_WITH= \ commons-codec-jar=${JAVALIBDIR}/commons-codec.jar \ commons-httpclient-jar=${JAVALIBDIR}/commons-httpclient.jar \ commons-logging-jar=${JAVALIBDIR}/commons-logging.jar WIKI_PUBLISHER_JAR_DEPENDS= \ ${JAVALIBDIR}/commons-codec.jar:java/apache-commons-codec \ ${JAVALIBDIR}/commons-httpclient.jar:java/apache-commons-httpclient \ ${JAVALIBDIR}/commons-logging.jar:java/apache-commons-logging WIKI_PUBLISHER_BUILD_DEPENDS= ${WIKI_PUBLISHER_JAR_DEPENDS} WIKI_PUBLISHER_RUN_DEPENDS= ${WIKI_PUBLISHER_JAR_DEPENDS} WIKI_PUBLISHER_VARS= BUNDLED_EXTENSIONS+=swext/wiki-publisher.oxt # Don't run gnome-post-icons until after post-install generates the plist TARGET_ORDER_OVERRIDE= 710:gnome-post-icons # Force the SDK option on for makesum to ensure that unowinreg.dll is # included in distinfo .if make(makesum) || make(distclean) WITH= SDK .endif .include .if defined(WITH_DEBUG) CONFIGURE_ARGS+= --enable-symbols .endif .include <${FILESDIR}/Makefile.localized> -PYTHON_DISTFILE= 1d8728eb0dfcac72a0fd99c17ec7f386-Python-2.7.6.tgz +PYTHON_DISTFILE= 38c84292658ed4456157195f1c9bcbe1-Python-2.7.18.tgz GCC_EXTRA_DISTFILES= d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2 \ d62650a6f908e85643e557a236ea989c-vigra1.6.0.tar.gz .if ${CHOSEN_COMPILER_TYPE} == clang CPPFLAGS+= -I${LOCALBASE}/include CONFIGURE_ARGS+= --with-system-boost --with-system-vigra BUILD_DEPENDS+= ${LOCALBASE}/include/boost/shared_ptr.hpp:devel/boost-libs \ ${LOCALBASE}/bin/vigra-config:graphics/vigra . if ${ARCH} == amd64 EXTRA_PATCHES+= ${FILESDIR}/extra-patch-align16 . endif .endif # These extra distfiles are needed to use the bundled versions of # boost and vigra for compatiblity with gcc. Also include them # for the makesum target so they are included in distinfo .if ${CHOSEN_COMPILER_TYPE} == gcc || make(makesum) || make(distclean) DISTFILES+= ${GCC_EXTRA_DISTFILES:C/.*/&:sf/g} .endif .if ${ARCH} == amd64 FREEBSD_ENV_SET= FreeBSDAMDEnv.Set.sh PACKAGE_MIDDLE= ${PORTVERSION}_${OPSYS}_x86-64 .elif ${ARCH} == i386 FREEBSD_ENV_SET= FreeBSDX86Env.Set.sh PACKAGE_MIDDLE= ${PORTVERSION}_${OPSYS}_x86 .elif ${ARCH} == powerpc64 FREEBSD_ENV_SET= FreeBSDPPC64Env.Set.sh PACKAGE_MIDDLE= ${PORTVERSION}_${OPSYS}_ppc64 .endif PACKAGE_PREFIX= Apache_OpenOffice LOCALIZED_LANG?= en-US -AOO_MAKE_ENV= ${MAKE_ENV:NCPPFLAGS=*:NCFLAGS=*:NCXXFLAGS=*} +AOO_MAKE_ENV= ${MAKE_ENV:NCPPFLAGS=*:NCFLAGS=*:NCXXFLAGS=*:NLDFLAGS=*} GNU_CONFIGURE= yes WRKSUBDIR= ${WRKDIR}/aoo-${AOOVERSION} WRKSRC?= ${WRKSUBDIR}/main SUB_FILES= pkg-message SUB_LIST= EXECBASE=${EXECBASE} AOOTAG=${AOOTAG} AOOUDIR=${AOOUDIR} \ PRINSTALLATION_BASEDIR=${PRINSTALLATION_BASEDIR} CONFIGURE_ARGS+= \ --with-unix-wrapper=${EXECBASE} \ --with-alloc=system \ --with-ant-home=${LOCALBASE}/share/java/apache-ant \ --with-system-apache-commons=yes \ --with-commons-lang-jar=${JAVALIBDIR}/commons-lang.jar \ --with-system-apr \ --with-system-apr-util \ --with-system-beanshell \ --with-beanshell-jar=${JAVALIBDIR}/bsh.jar \ --enable-category-b \ --with-system-cairo --enable-cairo \ --with-system-coinmp \ --with-system-curl \ --with-system-dicts \ --with-epm=${LOCALBASE}/bin/epm \ --with-system-expat \ --disable-fetch-external \ --without-fonts \ --with-gnu-patch=${LOCALBASE}/bin/gpatch \ --with-gperf=${LOCALBASE}/bin/gperf \ --with-system-graphite \ --enable-gtk \ --with-system-hunspell \ --with-external-dict-dir=${LOCALBASE}/share/hunspell \ --with-system-hyphen \ --with-external-hyph-dir=${LOCALBASE}/share/hyphen \ --with-jdk-home=${JAVA_HOME} \ --with-system-jpeg \ --with-junit=${JAVALIBDIR}/junit.jar \ --with-system-libtextcat \ --disable-kde \ --disable-kde4 \ --with-system-libxml \ --with-system-libxslt \ --with-system-lucene \ --with-lucene-core-jar=${JAVALIBDIR}/lucene-core-3.6.2.jar \ --with-lucene-analyzers-jar=${JAVALIBDIR}/lucene-analyzers-3.6.2.jar \ --with-system-mythes \ --with-external-thes-dir=${LOCALBASE}/share/mythes \ --with-system-nss \ --enable-opengl \ --with-system-openssl \ --with-package-format="archive" \ --without-system-python \ --with-system-redland \ --with-system-sane \ --with-system-serf \ --with-system-stdlibs \ --with-vendor="FreeBSD ports system" \ --with-build-version="PKGNAME: ${PKGNAME:S/,/@/g}" \ --enable-verbose \ --with-system-xrender \ --with-system-zlib .if defined (BUNDLED_EXTENSIONS) CONFIGURE_ARGS+= --with-bundled-prereg-extensions="${BUNDLED_EXTENSIONS}" .endif CREATE_TREE= ${WRKSRC}/sysui/desktop/share/create_tree.sh .include <${FILESDIR}/Makefile.knobs> pre-everything:: # really tweak, extremely useful when you build all localized language versions # needed after when you build with ALL_LOCALIZED_LANGS. .if defined(TWEAK_L10N) ${RM} ${WRKDIR}/.PLIST* ${RM} ${WRKDIR}/.install_done.* ${RM} ${WRKDIR}/.package_done.* ${RM} ${WRKDIR}/.extract_done.* ${RM} ${WRKDIR}/.patch_done.* ${RM} ${WRKDIR}/.configure_done.* ${RM} ${WRKDIR}/.build_done.* ${MKDIR} ${WRKDIR} ${TOUCH} ${EXTRACT_COOKIE} ${TOUCH} ${PATCH_COOKIE} ${TOUCH} ${CONFIGURE_COOKIE} ${TOUCH} ${BUILD_COOKIE} .endif do-extract-SDK-on: ${CP} ${DISTDIR}/${DIST_SUBDIR}/unowinreg.dll ${WRKSRC}/external/unowinreg/ post-extract: ${TAR} -C ${WRKSUBDIR} -xzf ${DISTDIR}/${DIST_SUBDIR}/${EXTSRC} ${CP} ${DISTDIR}/${DIST_SUBDIR}/${PYTHON_DISTFILE} ${WRKSUBDIR}/ext_sources/${PYTHON_DISTFILE} .if ${CHOSEN_COMPILER_TYPE} == gcc . for f in ${GCC_EXTRA_DISTFILES} ${CP} ${DISTDIR}/${DIST_SUBDIR}/${f} ${WRKSUBDIR}/ext_sources/${f} . endfor .endif ${CP} ${FILESDIR}/freebsd-aoo-intro.png \ ${WRKSRC}/default_images/introabout/intro.png ${CP} ${FILESDIR}/freebsd-aoo-about.png \ ${WRKSRC}/default_images/introabout/about.png ${RM} -r ${WRKSRC}/l10n ${LN} -sf ${UNZIP_CMD} ${WRKSRC}/solenv/bin/unzip ${SED} -e '\|^For main/vcl/unx/generic/fontmanager/parseAFM|,/^__/p' \ -e '\|^For PostScript(R) AFM|,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_ADOBE} ${SED} -e '\|^For main/unixODBC|,/^__/p' \ -e '\|^For main/connectivity|,/^__/p' \ -e '\|^For main/libtextcat/data|,/^__/p' \ -e '\|^For integration of HSQLDB|,/^__/p' \ -e '\|^For C preprocessor|,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_BSD3CLAUSE} ${SED} -e '\|^For ICC |,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_BSD4CLAUSE} ${SED} -e '\|^For integration of the C++ Boost |,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_BSL} ${SED} -e '\|^For main/i18npool/source/breakiterator|,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_ICU} ${SED} -e '\|^For Multi-Dimensional Data|,/^__/p' \ -e '\|^For XSLT MathML Library|,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_MIT} ${SED} -e '\|^For XMLSec Library|,/^__/p' \ -e d ${WRKSRC}/LICENSE_category_b >> ${LICENSE_FILE_MIT} ${SED} -e '\|^For Saxon|,/^__/p' \ -e d ${WRKSRC}/LICENSE_category_b > ${LICENSE_FILE_MPL10} - ${SED} -e '\|^For Saxon|,$$d' \ - ${WRKSRC}/LICENSE_category_b > ${LICENSE_FILE_MPL11} + ${SED} -e '\|^The following Licenses have some restrictions|,/^- For Network/p' \ + -e d ${WRKSRC}/LICENSE_category_b | \ + ${SED} -e :a -e '$d;N;2,3ba' -e 'P;D' > ${LICENSE_FILE_MPL11} ${SED} -e '\|^For main/filter/source/config/tools/merge/pyAltFCFGMerge|,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_PSFL} + ${ECHO} '' >> ${LICENSE_FILE_PSFL} + ${SED} -e '\|^For Python|,/^__/p' \ + -e d ${WRKSRC}/LICENSE >> ${LICENSE_FILE_PSFL} ${SED} -e '\|^For main/twain|,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_TWAIN} ${SED} -e '\|^For main/MathMLDTD|,/^__/p' \ -e d ${WRKSRC}/LICENSE > ${LICENSE_FILE_W3C} post-patch: ${REINPLACE_CMD} -e "/^ICONVERSION/s/=.*/= '${AOOVERSION1}'/" \ ${WRKSRC}/sysui/desktop/productversion.mk ${REINPLACE_CMD} -e "s|%%JAVA_HOME%%|${JAVA_HOME}|" \ ${WRKSRC}/desktop/scripts/soffice.sh - ${REINPLACE_CMD} -e "/#test/i\\${.newline} return '${GITREVISION}';" \ - ${WRKSRC}/solenv/bin/modules/SvnRevision.pm ${REINPLACE_CMD} -e '/^mkdir -p/,$$d' ${CREATE_TREE} .if ${CHOSEN_COMPILER_TYPE} == gcc # g++49 -Os sometimes leaves inline class methods undefined, # affects fmgridif.cxx and ColumnControl.cxx # See: if [ ${CXX} = g++49 ]; then \ ${REINPLACE_CMD} -e "s/ := -Os/ := -Os -fno-devirtualize -fno-devirtualize-speculatively/" ${WRKSRC}/solenv/gbuild/platform/freebsd.mk; \ ${REINPLACE_CMD} -e "s/=-Os /=-Os -fno-devirtualize -fno-devirtualize-speculatively /" ${WRKSRC}/solenv/inc/unxfbsdi.mk; \ fi .elif ${ARCH} == i386 && ${CHOSEN_COMPILER_TYPE} == clang # autodoc and uno (bridgetest) core dump when built with with -Os # on i386, affects file.cxx and bridgetest.cxx (at least). # Using -O2 optimiztion works, and -Os is essentially -O2 with out # loop unrolling. # Changing optimization in just unxfbsdi.mk is sufficient to get # a successful build, but change it in both places to avoid the # possibility of obscure runtime problems, which is likely # since this seems to be a generic bug in code generation for # exception handling. # See: ${REINPLACE_CMD} -e "s/=-Os /=-O2 -fno-unroll-loops /" ${WRKSRC}/solenv/inc/unxfbsdi.mk ${REINPLACE_CMD} -e "s/ := -Os/ := -O2 -fno-unroll-loops/" ${WRKSRC}/solenv/gbuild/platform/freebsd.mk .endif do-build: ${PRINTF} "[repositories]\nmain=active\nextras=active\n" > ${WRKSUBDIR}/source_config cd ${WRKSRC} ; ./bootstrap # # numproc controls the number of parallel makes. # # dmproc is passed to dmake and controls parallelization at that # level. # # dmproc > numproc seems to give shorter build times than # numproc > dmproc. # # Select values for numproc and dmproc such that: # * numproc*dmproc >= MAKE_JOBS_NUMBER # * minimize numproc*dmproc-MAKE_JOBS_NUMBER # * dmproc >= numproc # * dmproc <= 2*numproc if MAKE_JOBS_NUMBER <= 3 # if [ ${MAKE_JOBS_NUMBER} -le 3 ] ; then \ numproc=1 ; dmproc=${MAKE_JOBS_NUMBER} ; \ else \ a=1 ; \ while [ $$(( 2 * $${a} * $${a} )) -lt ${MAKE_JOBS_NUMBER} ]; do \ a=$$(( $${a} + 1 )) ; \ done ; \ b=$$(( $${a} + 1 )) ; \ ad=$$(( ( ${MAKE_JOBS_NUMBER} + $${a} - 1 ) / $${a} )) ; \ ap=$$(( $${a} * $${ad} )) ; \ bd=$$(( ( ${MAKE_JOBS_NUMBER} + $${b} - 1 ) / $${b} )) ; \ bp=$$(( $${b} * $${bd} )) ; \ if [ $${ap} -le $${bp} ]; then \ numproc=$${a} ; dmproc=$${ad} ; \ else \ numproc=$${b} ; dmproc=$${bd} ; \ fi ; \ fi ; \ cd ${WRKSRC}/instsetoo_native ; \ export ${AOO_MAKE_ENV} ; \ . ../${FREEBSD_ENV_SET} ; \ build.pl --all -P$${numproc} -- -P$${dmproc} do-install: @${MKDIR} ${STAGEDIR}${PRINSTALLATION_BASEDIR} \ ${STAGEDIR}${PREFIX}/share/mime/packages @cd ${WRKSRC} ; \ . ${FREEBSD_ENV_SET} ; \ cd instsetoo_native/$${INPATH}/Apache_OpenOffice/archive/install/${LOCALIZED_LANG}/ ; \ for i in *.tar.?z ; do \ ${ECHO_CMD} "extracting $$i" ; \ ${TAR} -s '|./[^/]*/||' -xz -f $$i \ -C ${STAGEDIR}${PRINSTALLATION_BASEDIR} ; \ done ${FIND} ${STAGEDIR}${PRINSTALLATION_BASEDIR} -type d -exec ${CHMOD} 755 {} \; ${REINPLACE_CMD} \ -e '/^UserInstallation/s/=.*/=$$SYSUSERCONFIG\/${AOOUDIR}/' \ ${STAGEDIR}${OOPATH}/program/bootstraprc @${RM} ${STAGEDIR}${OOPATH}/program/bootstraprc.bak @${ECHO_CMD} "adding wrapper scripts"; @${CP} ${FILESDIR}/openoffice-wrapper ${WRKDIR}/ @${REINPLACE_CMD} -e 's#%%OOPATH%%#${OOPATH}#g' \ -e 's#%%EXECBASE%%#${EXECBASE}#g' \ ${WRKDIR}/openoffice-wrapper ${INSTALL_SCRIPT} ${WRKDIR}/openoffice-wrapper \ ${STAGEDIR}${PREFIX}/bin/${EXECBASE} @cd ${STAGEDIR}${PREFIX}/bin; for i in printeradmin sbase scalc sdraw \ simpress smath spadmin swriter ; do \ ${LN} -f ${EXECBASE} ${EXECBASE}-$${i} ; \ done @${ECHO_CMD} "adding desktop support" @cd ${WRKSRC} ; \ . ${FREEBSD_ENV_SET} ; \ cd sysui/$${INPATH}/misc/openoffice ; \ DESTDIR=${STAGEDIR} \ GNOMEDIR=${PREFIX} \ ICON_PREFIX=openoffice${AOOVERSION1} \ ICON_SOURCE_DIR=${WRKSRC}/sysui/desktop/icons \ ICON_THEMES="hicolor/??x??" \ KDEMAINDIR=${PREFIX} \ PREFIX=openoffice${AOOVERSION1} \ ${SH} ${CREATE_TREE} ; \ ${INSTALL_DATA} apacheopenoffice.xml \ ${STAGEDIR}/${PREFIX}/share/mime/packages @cd ${STAGEDIR}${DESKTOPDIR}; for i in base calc draw impress \ javafilter math printeradmin qstart startcenter writer ; do \ ${LN} -sf ${XDGREL}/$${i}.desktop ${EXECBASE}-$${i}.desktop ; \ done do-install-SDK-on: ${TAR} -s '|./[^/]*/||' -xz -C ${STAGEDIR}${PRINSTALLATION_BASEDIR} \ -f ${WRKSRC}/instsetoo_native/unxfbsd*.pro/Apache_OpenOffice_SDK/archive/install/${LOCALIZED_LANG}/*.tar.gz @f=${STAGEDIR}${OOPATH}/sdk/bin/unoapploader ; \ ${CHMOD} 644 $${f} ; ${STRIP_CMD} $${f} ; ${CHMOD} 444 $${f} post-install: @${ECHO_CMD} "generating plist"; @cd ${STAGEDIR}${PREFIX} ; (\ ${FIND} -s bin -name "${EXECBASE}*" ; \ ${FIND} -s ${INSTALLATION_BASEDIR} share/applications \ share/application-registry share/icons \ share/mime-info share/mime share/mimelnk \! -type d ; \ ${FIND} ${INSTALLATION_BASEDIR} -type d -empty | ${SORT} -r | \ ${SED} -e 's/^/@dir /' ; \ ) >> ${TMPPLIST} .include <${FILESDIR}/Makefile.others> .include Index: branches/2020Q4/editors/openoffice-4/distinfo =================================================================== --- branches/2020Q4/editors/openoffice-4/distinfo (revision 554861) +++ branches/2020Q4/editors/openoffice-4/distinfo (revision 554862) @@ -1,13 +1,13 @@ -TIMESTAMP = 1589749652 -SHA256 (openoffice/apache-openoffice-4.1.7-46059c9192-src.tar.bz2) = 512952c78b3ec22b15bc1a444b4fa7e7c76c25c985a75b6977e62c6ddae2e3ed -SIZE (openoffice/apache-openoffice-4.1.7-46059c9192-src.tar.bz2) = 220014716 +TIMESTAMP = 1604092476 +SHA256 (openoffice/apache-openoffice-4.1.8-18848f57b6-src.tar.bz2) = 7ae5ef30dd931f369fff6d9d33a089ba749d019dce94403a1a7c9aeb4a100098 +SIZE (openoffice/apache-openoffice-4.1.8-18848f57b6-src.tar.bz2) = 228610492 SHA256 (openoffice/ApacheOpenOffice.ext_sources.4.x.x.20150707.tar.gz) = 966a8333c83a18ddd84401389006d6e0b52b8175924b808b54b88211669985fa SIZE (openoffice/ApacheOpenOffice.ext_sources.4.x.x.20150707.tar.gz) = 28957004 -SHA256 (openoffice/1d8728eb0dfcac72a0fd99c17ec7f386-Python-2.7.6.tgz) = 99c6860b70977befa1590029fae092ddb18db1d69ae67e8b9385b66ed104ba58 -SIZE (openoffice/1d8728eb0dfcac72a0fd99c17ec7f386-Python-2.7.6.tgz) = 14725931 +SHA256 (openoffice/38c84292658ed4456157195f1c9bcbe1-Python-2.7.18.tgz) = da3080e3b488f648a3d7a4560ddee895284c3380b11d6de75edb986526b9a814 +SIZE (openoffice/38c84292658ed4456157195f1c9bcbe1-Python-2.7.18.tgz) = 17539408 SHA256 (openoffice/unowinreg.dll) = f563e522922133db9340b0306711c2d8767cc3481dd9e7d9b0d059906d12653c SIZE (openoffice/unowinreg.dll) = 6144 SHA256 (openoffice/d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2) = fff00023dd79486d444c8e29922f4072e1d451fc5a4d2b6075852ead7f2b7b52 SIZE (openoffice/d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2) = 58146647 SHA256 (openoffice/d62650a6f908e85643e557a236ea989c-vigra1.6.0.tar.gz) = 1f188ac03a8aa4663223eca8c82f91a55293d066d67127082e29a7dba1a98c9f SIZE (openoffice/d62650a6f908e85643e557a236ea989c-vigra1.6.0.tar.gz) = 16525605 Index: branches/2020Q4/editors/openoffice-4/files/patch-vcl_source_glyphs_graphite__layout.cxx =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-vcl_source_glyphs_graphite__layout.cxx (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-vcl_source_glyphs_graphite__layout.cxx (nonexistent) @@ -1,14 +0,0 @@ ---- vcl/source/glyphs/graphite_layout.cxx.orig 2014-02-25 08:33:06 UTC -+++ vcl/source/glyphs/graphite_layout.cxx -@@ -107,9 +107,10 @@ namespace - typedef ext_std::pair glyph_range_t; - typedef ext_std::pair glyph_set_range_t; - -- inline long round(const float n) { -+ inline long round_(const float n) { - return long(n + (n < 0 ? -0.5 : 0.5)); - } -+#define round round_ - - - template Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-vcl_source_glyphs_graphite__layout.cxx ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-configure.in =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-configure.in (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-configure.in (nonexistent) @@ -1,32 +0,0 @@ ---- configure.in.orig 2019-11-12 05:10:21 UTC -+++ configure.in -@@ -367,11 +367,11 @@ AC_ARG_WITH(bundled-extension-blobs, - and comply with their distribution requirements by updating the - files LICENSE_aggregated and NOTICE_aggregated accordingly - ],,) --#AC_ARG_WITH(bundled-prereg-extensions, --#[ --with-bundled-prereg-extensions Whitespace seperated list of files in the tarball directory that --# are to be bundled as pre-registered extensions. Make sure to only bundle --# extensions which can be installed without requiring a license dialog --#],,) -+AC_ARG_WITH(bundled-prereg-extensions, -+[ --with-bundled-prereg-extensions Whitespace seperated list of files in the tarball directory that -+ are to be bundled as pre-registered extensions. Make sure to only bundle -+ extensions which can be installed without requiring a license dialog -+],,) - AC_ARG_ENABLE(bundled-dictionaries, - [ --enable-bundled-dictionaries Download dictionaries (spelling, hyphenation, thesaurus) - according to main/extensions.lst and bundle them. Make sure to -@@ -1538,9 +1538,9 @@ else - fi - AC_SUBST(BUNDLED_EXTENSION_BLOBS) - --#dnl =================================================================== --#dnl Check extensions that are to be bundled as pre-registerd --#dnl =================================================================== -+dnl =================================================================== -+dnl Check extensions that are to be bundled as pre-registerd -+dnl =================================================================== - if test -n "$with_bundled_prereg_extensions"; then - BUNDLED_PREREG_EXTENSIONS="$with_bundled_prereg_extensions" - else Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-configure.in ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-boost1.67 =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-boost1.67 (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-boost1.67 (nonexistent) @@ -1,36 +0,0 @@ -Index: basegfx/source/range/b2drangeclipper.cxx -=================================================================== ---- basegfx/source/range/b2drangeclipper.cxx (revision 1829412) -+++ basegfx/source/range/b2drangeclipper.cxx (working copy) -@@ -35,7 +35,12 @@ - - #include - #include --#include -+#include -+#if BOOST_VERSION < 106700 -+# include -+#else -+# include -+#endif - - #include - #include -Index: slideshow/source/inc/listenercontainer.hxx -=================================================================== ---- slideshow/source/inc/listenercontainer.hxx (revision 1829412) -+++ slideshow/source/inc/listenercontainer.hxx (working copy) -@@ -24,7 +24,12 @@ - #define INCLUDED_SLIDESHOW_LISTENERCONTAINER_HXX - - #include --#include -+#include -+#if BOOST_VERSION < 106700 -+# include -+#else -+# include -+#endif - #include - #include - Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-boost1.67 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-gmake43 =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-gmake43 (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-gmake43 (nonexistent) @@ -1,11 +0,0 @@ ---- solenv/gbuild/Tempfile.mk.orig 2019-09-17 22:55:21 UTC -+++ solenv/gbuild/Tempfile.mk -@@ -27,7 +27,7 @@ $(strip $(1) - $(eval gb_var2file_helpervar := $$(shell printf "%s" "" > $(1) ))\ - $(foreach item,$(3),$(eval gb_var2file_curblock += $(item) - ifeq ($$(words $$(gb_var2file_curblock)),$(2)) -- gb_var2file_helpervar := $$(shell printf "%s" "$$(gb_var2file_curblock)" >> $(1) ) -+ gb_var2file_helpervar := $$(shell printf " %s" "$$(gb_var2file_curblock)" >> $(1) ) - gb_var2file_curblock := - endif - ))\ Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-gmake43 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-lingucomponent_source_spellcheck_spell_sspellimp.cxx =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-lingucomponent_source_spellcheck_spell_sspellimp.cxx (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-lingucomponent_source_spellcheck_spell_sspellimp.cxx (nonexistent) @@ -1,14 +0,0 @@ -Minimal exceprt from upstream fix only to unbreak build - -https://cgit.freedesktop.org/libreoffice/core/commit/?id=072b32442e3f6f220936a93ad1fcbde57746b747 - ---- lingucomponent/source/spellcheck/spell/sspellimp.cxx.orig 2016-01-29 07:10:27 UTC -+++ lingucomponent/source/spellcheck/spell/sspellimp.cxx -@@ -37,7 +37,6 @@ - - #include - #include --#include - #include - - #include Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-lingucomponent_source_spellcheck_spell_sspellimp.cxx ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-nss =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-nss (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-nss (nonexistent) @@ -1,69 +0,0 @@ ---- extensions/source/mozbootstrap/MNSProfileDiscover.cxx.orig 2014-04-22 09:27:50 UTC -+++ extensions/source/mozbootstrap/MNSProfileDiscover.cxx -@@ -123,9 +123,14 @@ namespace connectivity - { - isRelative = sIsRelative.toInt32(); - } -+ if (isRelative) -+ { -+ // Make it absolute -+ profilePath = regDir + profilePath; -+ } - - ProfileStruct* profileItem = new ProfileStruct(product,profileName, -- regDir + profilePath); -+ profilePath); - m_Product.mProfileList[profileName] = profileItem; - - sal_Int32 isDefault = 0; ---- xmlsecurity/source/xmlsec/nss/makefile.mk.orig 2015-09-28 07:58:41 UTC -+++ xmlsecurity/source/xmlsec/nss/makefile.mk -@@ -42,6 +42,10 @@ CFLAGS+=-DSYSTEM_LIBXML $(LIBXML_CFLAGS) - @echo "No nss -> no libxmlsec -> no xmlsecurity/nss" - .ENDIF - -+.IF "$(SYSTEM_NSS)" == "YES" -+CFLAGS+=-DSYSTEM_NSS -+.ENDIF -+ - .IF "$(SYSTEM_NSS)" != "YES" - MOZ_INC = $(SOLARVERSION)$/$(INPATH)$/inc$(UPDMINOREXT)$/mozilla - NSS_CFLAGS = -I$(MOZ_INC)$/nss ---- xmlsecurity/source/xmlsec/nss/nssinitializer.cxx.orig 2015-09-24 07:42:09 UTC -+++ xmlsecurity/source/xmlsec/nss/nssinitializer.cxx -@@ -234,7 +234,7 @@ void deleteRootsModule() - //the location of the roots module to the profile, which makes FF2 and TB2 use - //it instead of there own module. - // --//When using SYSTEM_MOZILLA then the libnss3.so lib is typically found in -+//When using SYSTEM_NSS then the libnss3.so lib is typically found in - ///usr/lib. This folder may, however, NOT contain the roots certificate - //module. That is, just providing the library name in SECMOD_LoadUserModule or - //SECMOD_AddNewModule will FAIL to load the mozilla unless the LD_LIBRARY_PATH -@@ -289,7 +289,7 @@ bool nsscrypto_initialize( const css::un - out_nss_init = true; - - #ifdef XMLSEC_CRYPTO_NSS --#if defined SYSTEM_MOZILLA -+#if defined SYSTEM_NSS - if (!SECMOD_HasRootCerts()) - { - #endif -@@ -298,7 +298,7 @@ bool nsscrypto_initialize( const css::un - #if defined OS2 - // YD the nss system dlls names are ending with 'k' - OUString rootModule(RTL_CONSTASCII_USTRINGPARAM( "nssckbik" SAL_DLLEXTENSION)); --#elif defined SYSTEM_MOZILLA -+#elif defined SYSTEM_NSS - OUString rootModule(RTL_CONSTASCII_USTRINGPARAM( "libnssckbi" SAL_DLLEXTENSION)); - #else - OUString rootModule(RTL_CONSTASCII_USTRINGPARAM( "${OOO_BASE_DIR}/program/libnssckbi" SAL_DLLEXTENSION)); -@@ -352,7 +352,7 @@ bool nsscrypto_initialize( const css::un - xmlsec_trace("Adding new root certificate module failed."); - return_value = false; - } --#if SYSTEM_MOZILLA -+#if SYSTEM_NSS - } - #endif - #endif Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-nss ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-basebmp_inc_basebmp_packedpixeliterator.hxx =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-basebmp_inc_basebmp_packedpixeliterator.hxx (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-basebmp_inc_basebmp_packedpixeliterator.hxx (nonexistent) @@ -1,20 +0,0 @@ ---- basebmp/inc/basebmp/packedpixeliterator.hxx.orig 2019-08-14 17:37:07 UTC -+++ basebmp/inc/basebmp/packedpixeliterator.hxx -@@ -606,14 +606,17 @@ template< typename Valuetype, (public) - >> get_shift(remainder)); - } - -+/***** XXX - This appears to be unused and fails to compile with gcc9 - value_type get(difference_type const & d) const - { -+// XXX - should x(d.x) be (x + dx)? - const int remainder( x(d.x) % num_intraword_positions ); - - return (unsigned_cast(*current(d.x,d.y) & - get_mask(remainder)) - >> get_shift(remainder)); - } -+******/ - - void set( value_type v ) const - { Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-basebmp_inc_basebmp_packedpixeliterator.hxx ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-bridges_source_cpp__uno_gcc3__freebsd__x86-64_uno2cpp.cxx =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-bridges_source_cpp__uno_gcc3__freebsd__x86-64_uno2cpp.cxx (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-bridges_source_cpp__uno_gcc3__freebsd__x86-64_uno2cpp.cxx (nonexistent) @@ -1,12 +0,0 @@ ---- bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx.orig 2016-09-10 13:54:56 UTC -+++ bridges/source/cpp_uno/gcc3_freebsd_x86-64/uno2cpp.cxx -@@ -28,6 +28,9 @@ - #include - #include - #include -+#if OSL_DEBUG_LEVEL > 1 -+#include -+#endif - #include - #include - Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-bridges_source_cpp__uno_gcc3__freebsd__x86-64_uno2cpp.cxx ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-openoffice4_powerpc64 =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-openoffice4_powerpc64 (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-openoffice4_powerpc64 (nonexistent) @@ -1,3967 +0,0 @@ ---- bridges/prj/build.lst.orig -+++ bridges/prj/build.lst -@@ -9,6 +9,8 @@ - br bridges\source\cpp_uno\gcc3_freebsd_intel nmake - u br_gcc3fi br_cppuno_shared br_unotypes br_inc NULL - br bridges\source\cpp_uno\gcc3_linux_x86-64 nmake - u br_gcc3lx br_cppuno_shared br_unotypes br_inc NULL - br bridges\source\cpp_uno\gcc3_freebsd_x86-64 nmake - u br_gcc3fx br_cppuno_shared br_unotypes br_inc NULL -+br bridges\source\cpp_uno\gcc3_freebsd_powerpc nmake - u br_gcc3fp br_cppuno_shared br_unotypes br_inc NULL -+br bridges\source\cpp_uno\gcc3_freebsd_powerpc64 nmake - u br_gcc3fp_64 br_cppuno_shared br_unotypes br_inc NULL - br bridges\source\cpp_uno\gcc3_linux_powerpc nmake - u br_gcc3lp br_cppuno_shared br_unotypes br_inc NULL - br bridges\source\cpp_uno\gcc3_linux_powerpc64 nmake - u br_gcc3lp_64 br_cppuno_shared br_unotypes br_inc NULL - br bridges\source\cpp_uno\gcc3_linux_mips nmake - u br_gcc3lmips br_cppuno_shared br_unotypes br_inc NULL ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc/cpp2uno.cxx -@@ -0,0 +1,791 @@ -+/************************************************************** -+ * -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, -+ * software distributed under the License is distributed on an -+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+ * KIND, either express or implied. See the License for the -+ * specific language governing permissions and limitations -+ * under the License. -+ * -+ *************************************************************/ -+ -+ -+ -+// MARKER(update_precomp.py): autogen include statement, do not remove -+#include "precompiled_bridges.hxx" -+ -+#include -+ -+#include -+#include -+#include -+ -+#include "bridges/cpp_uno/shared/bridge.hxx" -+#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx" -+#include "bridges/cpp_uno/shared/types.hxx" -+#include "bridges/cpp_uno/shared/vtablefactory.hxx" -+ -+#include "share.hxx" -+// #include -+ -+ -+using namespace ::com::sun::star::uno; -+ -+namespace -+{ -+ -+//================================================================================================== -+static typelib_TypeClass cpp2uno_call( -+ bridges::cpp_uno::shared::CppInterfaceProxy * pThis, -+ const typelib_TypeDescription * pMemberTypeDescr, -+ typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return -+ sal_Int32 nParams, typelib_MethodParameter * pParams, -+ void ** gpreg, void ** fpreg, void ** ovrflw, -+ sal_Int64 * pRegisterReturn /* space for register return */ ) -+{ -+ int ng = 0; //number of gpr registers used -+#ifndef __NO_FPRS__ -+ int nf = 0; //number of fpr regsiters used -+#endif -+ void ** pCppStack; //temporary stack pointer -+ -+ // gpreg: [ret *], this, [gpr params] -+ // fpreg: [fpr params] -+ // ovrflw: [gpr or fpr params (properly aligned)] -+ -+ // return -+ typelib_TypeDescription * pReturnTypeDescr = 0; -+ if (pReturnTypeRef) -+ TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); -+ -+ void * pUnoReturn = 0; -+ void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need -+ -+ if (pReturnTypeDescr) -+ { -+ if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) -+ { -+ pUnoReturn = pRegisterReturn; // direct way for simple types -+ } -+ else // complex return via ptr (pCppReturn) -+ { -+ pCppReturn = *(void **)gpreg; -+ gpreg++; -+ ng++; -+ -+ pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) -+ ? alloca( pReturnTypeDescr->nSize ) -+ : pCppReturn); // direct way -+ } -+ } -+ // pop this -+ gpreg++; -+ ng++; -+ -+ // stack space -+ OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); -+ // parameters -+ void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); -+ void ** pCppArgs = pUnoArgs + nParams; -+ // indizes of values this have to be converted (interface conversion cpp<=>uno) -+ sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams)); -+ // type descriptions for reconversions -+ typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); -+ -+ sal_Int32 nTempIndizes = 0; -+ -+ for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) -+ { -+ const typelib_MethodParameter & rParam = pParams[nPos]; -+ typelib_TypeDescription * pParamTypeDescr = 0; -+ TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); -+ -+ if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) -+ // value -+ { -+ -+ switch (pParamTypeDescr->eTypeClass) -+ { -+ -+ case typelib_TypeClass_DOUBLE: -+#ifndef __NO_FPRS__ -+ if (nf < 8) { -+ pCppArgs[nPos] = fpreg; -+ pUnoArgs[nPos] = fpreg; -+ nf++; -+ fpreg += 2; -+#else -+ if (ng & 1) { -+ ng++; -+ gpreg++; -+ } -+ if (ng < 8) { -+ pCppArgs[nPos] = gpreg; -+ pUnoArgs[nPos] = gpreg; -+ ng += 2; -+ gpreg += 2; -+#endif -+ } else { -+ if (((long)ovrflw) & 4) ovrflw++; -+ pCppArgs[nPos] = ovrflw; -+ pUnoArgs[nPos] = ovrflw; -+ ovrflw += 2; -+ } -+ break; -+ -+ case typelib_TypeClass_FLOAT: -+ // fpreg are all double values so need to -+ // modify fpreg to be a single word float value -+#ifndef __NO_FPRS__ -+ if (nf < 8) { -+ float tmp = (float) (*((double *)fpreg)); -+ (*((float *) fpreg)) = tmp; -+ pCppArgs[nPos] = fpreg; -+ pUnoArgs[nPos] = fpreg; -+ nf++; -+ fpreg += 2; -+#else -+ if (ng < 8) { -+ pCppArgs[nPos] = gpreg; -+ pUnoArgs[nPos] = gpreg; -+ ng++; -+ gpreg++; -+#endif -+ } else { -+#if 0 /* abi is not being followed correctly */ -+ if (((long)ovrflw) & 4) ovrflw++; -+ float tmp = (float) (*((double *)ovrflw)); -+ (*((float *) ovrflw)) = tmp; -+ pCppArgs[nPos] = ovrflw; -+ pUnoArgs[nPos] = ovrflw; -+ ovrflw += 2; -+#else -+ pCppArgs[nPos] = ovrflw; -+ pUnoArgs[nPos] = ovrflw; -+ ovrflw += 1; -+#endif -+ } -+ break; -+ -+ case typelib_TypeClass_HYPER: -+ case typelib_TypeClass_UNSIGNED_HYPER: -+ if (ng & 1) { -+ ng++; -+ gpreg++; -+ } -+ if (ng < 8) { -+ pCppArgs[nPos] = gpreg; -+ pUnoArgs[nPos] = gpreg; -+ ng += 2; -+ gpreg += 2; -+ } else { -+ if (((long)ovrflw) & 4) ovrflw++; -+ pCppArgs[nPos] = ovrflw; -+ pUnoArgs[nPos] = ovrflw; -+ ovrflw += 2; -+ } -+ break; -+ -+ case typelib_TypeClass_BYTE: -+ case typelib_TypeClass_BOOLEAN: -+ if (ng < 8) { -+ pCppArgs[nPos] = (((char *)gpreg) + 3); -+ pUnoArgs[nPos] = (((char *)gpreg) + 3); -+ ng++; -+ gpreg++; -+ } else { -+ pCppArgs[nPos] = (((char *)ovrflw) + 3); -+ pUnoArgs[nPos] = (((char *)ovrflw) + 3); -+ ovrflw++; -+ } -+ break; -+ -+ -+ case typelib_TypeClass_CHAR: -+ case typelib_TypeClass_SHORT: -+ case typelib_TypeClass_UNSIGNED_SHORT: -+ if (ng < 8) { -+ pCppArgs[nPos] = (((char *)gpreg)+ 2); -+ pUnoArgs[nPos] = (((char *)gpreg)+ 2); -+ ng++; -+ gpreg++; -+ } else { -+ pCppArgs[nPos] = (((char *)ovrflw) + 2); -+ pUnoArgs[nPos] = (((char *)ovrflw) + 2); -+ ovrflw++; -+ } -+ break; -+ -+ -+ default: -+ if (ng < 8) { -+ pCppArgs[nPos] = gpreg; -+ pUnoArgs[nPos] = gpreg; -+ ng++; -+ gpreg++; -+ } else { -+ pCppArgs[nPos] = ovrflw; -+ pUnoArgs[nPos] = ovrflw; -+ ovrflw++; -+ } -+ break; -+ -+ } -+ // no longer needed -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ else // ptr to complex value | ref -+ { -+ -+ if (ng < 8) { -+ pCppArgs[nPos] = *(void **)gpreg; -+ pCppStack = gpreg; -+ ng++; -+ gpreg++; -+ } else { -+ pCppArgs[nPos] = *(void **)ovrflw; -+ pCppStack = ovrflw; -+ ovrflw++; -+ } -+ -+ if (! rParam.bIn) // is pure out -+ { -+ // uno out is unconstructed mem! -+ pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ); -+ pTempIndizes[nTempIndizes] = nPos; -+ // will be released at reconversion -+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; -+ } -+ // is in/inout -+ else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr )) -+ { -+ uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ), -+ *(void **)pCppStack, pParamTypeDescr, -+ pThis->getBridge()->getCpp2Uno() ); -+ pTempIndizes[nTempIndizes] = nPos; // has to be reconverted -+ // will be released at reconversion -+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; -+ } -+ else // direct way -+ { -+ pUnoArgs[nPos] = *(void **)pCppStack; -+ // no longer needed -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ } -+ } -+ -+ // ExceptionHolder -+ uno_Any aUnoExc; // Any will be constructed by callee -+ uno_Any * pUnoExc = &aUnoExc; -+ -+ // invoke uno dispatch call -+ (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc ); -+ -+ // in case an exception occured... -+ if (pUnoExc) -+ { -+ // destruct temporary in/inout params -+ for ( ; nTempIndizes--; ) -+ { -+ sal_Int32 nIndex = pTempIndizes[nTempIndizes]; -+ -+ if (pParams[nIndex].bIn) // is in/inout => was constructed -+ uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 ); -+ TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); -+ } -+ if (pReturnTypeDescr) -+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); -+ -+ CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() ); -+ // has to destruct the any -+ // is here for dummy -+ return typelib_TypeClass_VOID; -+ } -+ else // else no exception occured... -+ { -+ // temporary params -+ for ( ; nTempIndizes--; ) -+ { -+ sal_Int32 nIndex = pTempIndizes[nTempIndizes]; -+ typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; -+ -+ if (pParams[nIndex].bOut) // inout/out -+ { -+ // convert and assign -+ uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); -+ uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr, -+ pThis->getBridge()->getUno2Cpp() ); -+ } -+ // destroy temp uno param -+ uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); -+ -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ // return -+ if (pCppReturn) // has complex return -+ { -+ if (pUnoReturn != pCppReturn) // needs reconversion -+ { -+ uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr, -+ pThis->getBridge()->getUno2Cpp() ); -+ // destroy temp uno return -+ uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); -+ } -+ // complex return ptr is set to return reg -+ *(void **)pRegisterReturn = pCppReturn; -+ } -+ if (pReturnTypeDescr) -+ { -+ typelib_TypeClass eRet = (typelib_TypeClass)pReturnTypeDescr->eTypeClass; -+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); -+ return eRet; -+ } -+ else -+ return typelib_TypeClass_VOID; -+ } -+} -+ -+ -+//================================================================================================== -+static typelib_TypeClass cpp_mediate( -+ sal_Int32 nFunctionIndex, -+ sal_Int32 nVtableOffset, -+ void ** gpreg, void ** fpreg, void ** ovrflw, -+ sal_Int64 * pRegisterReturn /* space for register return */ ) -+{ -+ OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" ); -+ -+ // gpreg: [ret *], this, [other gpr params] -+ // fpreg: [fpr params] -+ // ovrflw: [gpr or fpr params (properly aligned)] -+ -+ void * pThis; -+ if (nFunctionIndex & 0x80000000 ) -+ { -+ nFunctionIndex &= 0x7fffffff; -+ pThis = gpreg[1]; -+ } -+ else -+ { -+ pThis = gpreg[0]; -+ } -+ -+ pThis = static_cast< char * >(pThis) - nVtableOffset; -+ bridges::cpp_uno::shared::CppInterfaceProxy * pCppI -+ = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( -+ pThis); -+ -+ typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr(); -+ -+ OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" ); -+ if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex) -+ { -+ throw RuntimeException( -+ rtl::OUString::createFromAscii("illegal vtable index!"), -+ (XInterface *)pThis ); -+ } -+ -+ // determine called method -+ sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex]; -+ OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" ); -+ -+ TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] ); -+ -+ typelib_TypeClass eRet; -+ switch (aMemberDescr.get()->eTypeClass) -+ { -+ case typelib_TypeClass_INTERFACE_ATTRIBUTE: -+ { -+ if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex) -+ { -+ // is GET method -+ eRet = cpp2uno_call( -+ pCppI, aMemberDescr.get(), -+ ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef, -+ 0, 0, // no params -+ gpreg, fpreg, ovrflw, pRegisterReturn ); -+ } -+ else -+ { -+ // is SET method -+ typelib_MethodParameter aParam; -+ aParam.pTypeRef = -+ ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef; -+ aParam.bIn = sal_True; -+ aParam.bOut = sal_False; -+ -+ eRet = cpp2uno_call( -+ pCppI, aMemberDescr.get(), -+ 0, // indicates void return -+ 1, &aParam, -+ gpreg, fpreg, ovrflw, pRegisterReturn ); -+ } -+ break; -+ } -+ case typelib_TypeClass_INTERFACE_METHOD: -+ { -+ // is METHOD -+ switch (nFunctionIndex) -+ { -+ case 1: // acquire() -+ pCppI->acquireProxy(); // non virtual call! -+ eRet = typelib_TypeClass_VOID; -+ break; -+ case 2: // release() -+ pCppI->releaseProxy(); // non virtual call! -+ eRet = typelib_TypeClass_VOID; -+ break; -+ case 0: // queryInterface() opt -+ { -+ typelib_TypeDescription * pTD = 0; -+ TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( gpreg[2] )->getTypeLibType() ); -+ if (pTD) -+ { -+ XInterface * pInterface = 0; -+ (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)( -+ pCppI->getBridge()->getCppEnv(), -+ (void **)&pInterface, pCppI->getOid().pData, -+ (typelib_InterfaceTypeDescription *)pTD ); -+ -+ if (pInterface) -+ { -+ ::uno_any_construct( -+ reinterpret_cast< uno_Any * >( gpreg[0] ), -+ &pInterface, pTD, cpp_acquire ); -+ pInterface->release(); -+ TYPELIB_DANGER_RELEASE( pTD ); -+ *(void **)pRegisterReturn = gpreg[0]; -+ eRet = typelib_TypeClass_ANY; -+ break; -+ } -+ TYPELIB_DANGER_RELEASE( pTD ); -+ } -+ } // else perform queryInterface() -+ default: -+ eRet = cpp2uno_call( -+ pCppI, aMemberDescr.get(), -+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef, -+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams, -+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams, -+ gpreg, fpreg, ovrflw, pRegisterReturn ); -+ } -+ break; -+ } -+ default: -+ { -+ throw RuntimeException( -+ rtl::OUString::createFromAscii("no member description found!"), -+ (XInterface *)pThis ); -+ // is here for dummy -+ eRet = typelib_TypeClass_VOID; -+ } -+ } -+ -+ return eRet; -+} -+ -+//================================================================================================== -+/** -+ * is called on incoming vtable calls -+ * (called by asm snippets) -+ */ -+static void cpp_vtable_call( int nFunctionIndex, int nVtableOffset, void** gpregptr, void** fpregptr, void** ovrflw) -+{ -+ sal_Int32 gpreg[8]; -+ memcpy( gpreg, gpregptr, 32); -+ -+#ifndef __NO_FPRS__ -+ double fpreg[8]; -+ memcpy( fpreg, fpregptr, 64); -+#endif -+ -+ volatile long nRegReturn[2]; -+ -+ // fprintf(stderr,"in cpp_vtable_call nFunctionIndex is %x\n",nFunctionIndex); -+ // fprintf(stderr,"in cpp_vtable_call nVtableOffset is %x\n",nVtableOffset); -+ // fflush(stderr); -+ -+ typelib_TypeClass aType = -+ cpp_mediate( nFunctionIndex, nVtableOffset, (void**)gpreg, -+#ifndef __NO_FPRS__ -+ (void**)fpreg, -+#else -+ NULL, -+#endif -+ ovrflw, (sal_Int64*)nRegReturn ); -+ -+ switch( aType ) -+ { -+ -+ // move return value into register space -+ // (will be loaded by machine code snippet) -+ -+ case typelib_TypeClass_BOOLEAN: -+ case typelib_TypeClass_BYTE: -+ __asm__( "lbz 3,%0\n\t" : : -+ "m"(nRegReturn[0]) ); -+ break; -+ -+ case typelib_TypeClass_CHAR: -+ case typelib_TypeClass_SHORT: -+ case typelib_TypeClass_UNSIGNED_SHORT: -+ __asm__( "lhz 3,%0\n\t" : : -+ "m"(nRegReturn[0]) ); -+ break; -+ -+ case typelib_TypeClass_FLOAT: -+#ifndef __NO_FPRS__ -+ __asm__( "lfs 1,%0\n\t" : : -+ "m" (*((float*)nRegReturn)) ); -+ #else -+ __asm__( "lwz 3,%0\n\t" : : -+ "m"(nRegReturn[0]) ); -+#endif -+ break; -+ -+ case typelib_TypeClass_DOUBLE: -+#ifndef __NO_FPRS__ -+ __asm__( "lfd 1,%0\n\t" : : -+ "m" (*((double*)nRegReturn)) ); -+#else -+ __asm__( "lwz 3,%0\n\t" : : -+ "m"(nRegReturn[0]) ); -+ __asm__( "lwz 4,%0\n\t" : : -+ "m"(nRegReturn[1]) ); -+#endif -+ break; -+ -+ case typelib_TypeClass_HYPER: -+ case typelib_TypeClass_UNSIGNED_HYPER: -+ __asm__( "lwz 4,%0\n\t" : : -+ "m"(nRegReturn[1]) ); // fall through -+ -+ default: -+ __asm__( "lwz 3,%0\n\t" : : -+ "m"(nRegReturn[0]) ); -+ break; -+ } -+} -+ -+ -+int const codeSnippetSize = 108; -+ -+unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset, -+ bool simpleRetType) -+{ -+ -+ // fprintf(stderr,"in codeSnippet functionIndex is %x\n", functionIndex); -+ // fprintf(stderr,"in codeSnippet vtableOffset is %x\n", vtableOffset); -+ // fflush(stderr); -+ -+ if (! simpleRetType ) -+ functionIndex |= 0x80000000; -+ -+ unsigned long * p = (unsigned long *) code; -+ -+ // OSL_ASSERT( sizeof (long) == 4 ); -+ OSL_ASSERT((((unsigned long)code) & 0x3) == 0 ); //aligned to 4 otherwise a mistake -+ -+ /* generate this code */ -+ // # so first save gpr 3 to gpr 10 (aligned to 4) -+ // stw r3,-2048(r1) -+ // stw r4,-2044(r1) -+ // stw r5,-2040(r1) -+ // stw r6,-2036(r1) -+ // stw r7,-2032(r1) -+ // stw r8,-2028(r1) -+ // stw r9,-2024(r1) -+ // stw r10,-2020(r1) -+ -+ -+ // # next save fpr 1 to fpr 8 (aligned to 8) -+ // if dedicated floating point registers are used -+ // stfd f1,-2016(r1) -+ // stfd f2,-2008(r1) -+ // stfd f3,-2000(r1) -+ // stfd f4,-1992(r1) -+ // stfd f5,-1984(r1) -+ // stfd f6,-1976(r1) -+ // stfd f7,-1968(r1) -+ // stfd f8,-1960(r1) -+ -+ // # now here is where cpp_vtable_call must go -+ // lis r3,-8531 -+ // ori r3,r3,48879 -+ // mtctr r3 -+ -+ // # now load up the functionIndex -+ // lis r3,-8531 -+ // ori r3,r3,48879 -+ -+ // # now load up the vtableOffset -+ // lis r4,-8531 -+ // ori r4,r4,48879 -+ -+ // #now load up the pointer to the saved gpr registers -+ // addi r5,r1,-2048 -+ -+ // #now load up the pointer to the saved fpr registers -+ // addi r6,r1,-2016 -+ // if no dedicated floating point registers are used than we have NULL -+ // pointer there -+ // li r6, 0 -+ // -+ -+ // #now load up the pointer to the overflow call stack -+ // addi r7,r1,8 -+ // bctr -+ -+ * p++ = 0x9061f800; -+ * p++ = 0x9081f804; -+ * p++ = 0x90a1f808; -+ * p++ = 0x90c1f80c; -+ * p++ = 0x90e1f810; -+ * p++ = 0x9101f814; -+ * p++ = 0x9121f818; -+ * p++ = 0x9141f81c; -+#ifndef __NO_FPRS__ -+ * p++ = 0xd821f820; -+ * p++ = 0xd841f828; -+ * p++ = 0xd861f830; -+ * p++ = 0xd881f838; -+ * p++ = 0xd8a1f840; -+ * p++ = 0xd8c1f848; -+ * p++ = 0xd8e1f850; -+ * p++ = 0xd901f858; -+#else -+ /* these nops could be replaced with a smaller codeSnippetSize - 8 * 4 */ -+ * p++ = 0x60000000; -+ * p++ = 0x60000000; -+ * p++ = 0x60000000; -+ * p++ = 0x60000000; -+ * p++ = 0x60000000; -+ * p++ = 0x60000000; -+ * p++ = 0x60000000; -+ * p++ = 0x60000000; -+#endif -+ * p++ = 0x3c600000 | (((unsigned long)cpp_vtable_call) >> 16); -+ * p++ = 0x60630000 | (((unsigned long)cpp_vtable_call) & 0x0000FFFF); -+ * p++ = 0x7c6903a6; -+ * p++ = 0x3c600000 | (((unsigned long)functionIndex) >> 16); -+ * p++ = 0x60630000 | (((unsigned long)functionIndex) & 0x0000FFFF); -+ * p++ = 0x3c800000 | (((unsigned long)vtableOffset) >> 16); -+ * p++ = 0x60840000 | (((unsigned long)vtableOffset) & 0x0000FFFF); -+ * p++ = 0x38a1f800; -+#ifndef __NO_FPRS__ -+ * p++ = 0x38c1f820; -+#else -+ * p++ = 0x38c00000; -+#endif -+ * p++ = 0x38e10008; -+ * p++ = 0x4e800420; -+ return (code + codeSnippetSize); -+ -+} -+ -+ -+} -+ -+void bridges::cpp_uno::shared::VtableFactory::flushCode(unsigned char const * bptr, unsigned char const * eptr) -+{ -+ int const lineSize = 32; -+ for (unsigned char const * p = bptr; p < eptr + lineSize; p += lineSize) { -+ __asm__ volatile ("dcbst 0, %0" : : "r"(p) : "memory"); -+ } -+ __asm__ volatile ("sync" : : : "memory"); -+ for (unsigned char const * p = bptr; p < eptr + lineSize; p += lineSize) { -+ __asm__ volatile ("icbi 0, %0" : : "r"(p) : "memory"); -+ } -+ __asm__ volatile ("isync" : : : "memory"); -+} -+ -+struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; -+ -+bridges::cpp_uno::shared::VtableFactory::Slot * -+bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) -+{ -+ return static_cast< Slot * >(block) + 2; -+} -+ -+sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize( -+ sal_Int32 slotCount) -+{ -+ return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize; -+} -+ -+bridges::cpp_uno::shared::VtableFactory::Slot * -+bridges::cpp_uno::shared::VtableFactory::initializeBlock( -+ void * block, sal_Int32 slotCount) -+{ -+ Slot * slots = mapBlockToVtable(block); -+ slots[-2].fn = 0; -+ slots[-1].fn = 0; -+ return slots + slotCount; -+} -+ -+unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( -+ Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff, -+ typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset, -+ sal_Int32 functionCount, sal_Int32 vtableOffset) -+{ -+ (*slots) -= functionCount; -+ Slot * s = *slots; -+ // fprintf(stderr, "in addLocalFunctions functionOffset is %x\n",functionOffset); -+ // fprintf(stderr, "in addLocalFunctions vtableOffset is %x\n",vtableOffset); -+ // fflush(stderr); -+ -+ for (sal_Int32 i = 0; i < type->nMembers; ++i) { -+ typelib_TypeDescription * member = 0; -+ TYPELIB_DANGER_GET(&member, type->ppMembers[i]); -+ OSL_ASSERT(member != 0); -+ switch (member->eTypeClass) { -+ case typelib_TypeClass_INTERFACE_ATTRIBUTE: -+ // Getter: -+ (s++)->fn = code + writetoexecdiff; -+ code = codeSnippet( -+ code, functionOffset++, vtableOffset, -+ bridges::cpp_uno::shared::isSimpleType( -+ reinterpret_cast< -+ typelib_InterfaceAttributeTypeDescription * >( -+ member)->pAttributeTypeRef)); -+ -+ // Setter: -+ if (!reinterpret_cast< -+ typelib_InterfaceAttributeTypeDescription * >( -+ member)->bReadOnly) -+ { -+ (s++)->fn = code + writetoexecdiff; -+ code = codeSnippet(code, functionOffset++, vtableOffset, true); -+ } -+ break; -+ -+ case typelib_TypeClass_INTERFACE_METHOD: -+ (s++)->fn = code + writetoexecdiff; -+ code = codeSnippet( -+ code, functionOffset++, vtableOffset, -+ bridges::cpp_uno::shared::isSimpleType( -+ reinterpret_cast< -+ typelib_InterfaceMethodTypeDescription * >( -+ member)->pReturnTypeRef)); -+ break; -+ -+ default: -+ OSL_ASSERT(false); -+ break; -+ } -+ TYPELIB_DANGER_RELEASE(member); -+ } -+ return code; -+} -+ ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc/except.cxx -@@ -0,0 +1,283 @@ -+/************************************************************** -+ * -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, -+ * software distributed under the License is distributed on an -+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+ * KIND, either express or implied. See the License for the -+ * specific language governing permissions and limitations -+ * under the License. -+ * -+ *************************************************************/ -+ -+ -+ -+// MARKER(update_precomp.py): autogen include statement, do not remove -+#include "precompiled_bridges.hxx" -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include "share.hxx" -+ -+ -+using namespace ::std; -+using namespace ::osl; -+using namespace ::rtl; -+using namespace ::com::sun::star::uno; -+using namespace ::__cxxabiv1; -+ -+ -+namespace CPPU_CURRENT_NAMESPACE -+{ -+ -+void dummy_can_throw_anything( char const * ) -+{ -+} -+ -+//================================================================================================== -+static OUString toUNOname( char const * p ) SAL_THROW( () ) -+{ -+#if OSL_DEBUG_LEVEL > 1 -+ char const * start = p; -+#endif -+ -+ // example: N3com3sun4star4lang24IllegalArgumentExceptionE -+ -+ OUStringBuffer buf( 64 ); -+ OSL_ASSERT( 'N' == *p ); -+ ++p; // skip N -+ -+ while ('E' != *p) -+ { -+ // read chars count -+ long n = (*p++ - '0'); -+ while ('0' <= *p && '9' >= *p) -+ { -+ n *= 10; -+ n += (*p++ - '0'); -+ } -+ buf.appendAscii( p, n ); -+ p += n; -+ if ('E' != *p) -+ buf.append( (sal_Unicode)'.' ); -+ } -+ -+#if OSL_DEBUG_LEVEL > 1 -+ OUString ret( buf.makeStringAndClear() ); -+ OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) ); -+ fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() ); -+ return ret; -+#else -+ return buf.makeStringAndClear(); -+#endif -+} -+ -+//================================================================================================== -+class RTTI -+{ -+ typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map; -+ -+ Mutex m_mutex; -+ t_rtti_map m_rttis; -+ t_rtti_map m_generatedRttis; -+ -+ void * m_hApp; -+ -+public: -+ RTTI() SAL_THROW( () ); -+ ~RTTI() SAL_THROW( () ); -+ -+ type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () ); -+}; -+//__________________________________________________________________________________________________ -+RTTI::RTTI() SAL_THROW( () ) -+ : m_hApp( dlopen( 0, RTLD_LAZY ) ) -+{ -+} -+//__________________________________________________________________________________________________ -+RTTI::~RTTI() SAL_THROW( () ) -+{ -+ dlclose( m_hApp ); -+} -+ -+//__________________________________________________________________________________________________ -+type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () ) -+{ -+ type_info * rtti; -+ -+ OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; -+ -+ MutexGuard guard( m_mutex ); -+ t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) ); -+ if (iRttiFind == m_rttis.end()) -+ { -+ // RTTI symbol -+ OStringBuffer buf( 64 ); -+ buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") ); -+ sal_Int32 index = 0; -+ do -+ { -+ OUString token( unoName.getToken( 0, '.', index ) ); -+ buf.append( token.getLength() ); -+ OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) ); -+ buf.append( c_token ); -+ } -+ while (index >= 0); -+ buf.append( 'E' ); -+ -+ OString symName( buf.makeStringAndClear() ); -+ rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); -+ -+ if (rtti) -+ { -+ pair< t_rtti_map::iterator, bool > insertion( -+ m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); -+ OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" ); -+ } -+ else -+ { -+ // try to lookup the symbol in the generated rtti map -+ t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) ); -+ if (iFind == m_generatedRttis.end()) -+ { -+ // we must generate it ! -+ // symbol and rtti-name is nearly identical, -+ // the symbol is prefixed with _ZTI -+ char const * rttiName = symName.getStr() +4; -+#if OSL_DEBUG_LEVEL > 1 -+ fprintf( stderr,"generated rtti for %s\n", rttiName ); -+#endif -+ if (pTypeDescr->pBaseTypeDescription) -+ { -+ // ensure availability of base -+ type_info * base_rtti = getRTTI( -+ (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription ); -+ rtti = new __si_class_type_info( -+ strdup( rttiName ), (__class_type_info *)base_rtti ); -+ } -+ else -+ { -+ // this class has no base class -+ rtti = new __class_type_info( strdup( rttiName ) ); -+ } -+ -+ pair< t_rtti_map::iterator, bool > insertion( -+ m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); -+ OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" ); -+ } -+ else // taking already generated rtti -+ { -+ rtti = iFind->second; -+ } -+ } -+ } -+ else -+ { -+ rtti = iRttiFind->second; -+ } -+ -+ return rtti; -+} -+ -+//-------------------------------------------------------------------------------------------------- -+static void deleteException( void * pExc ) -+{ -+ __cxa_exception const * header = ((__cxa_exception const *)pExc - 1); -+ typelib_TypeDescription * pTD = 0; -+ OUString unoName( toUNOname( header->exceptionType->name() ) ); -+ ::typelib_typedescription_getByName( &pTD, unoName.pData ); -+ OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" ); -+ if (pTD) -+ { -+ ::uno_destructData( pExc, pTD, cpp_release ); -+ ::typelib_typedescription_release( pTD ); -+ } -+} -+ -+//================================================================================================== -+void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ) -+{ -+ void * pCppExc; -+ type_info * rtti; -+ -+ { -+ // construct cpp exception object -+ typelib_TypeDescription * pTypeDescr = 0; -+ TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType ); -+ OSL_ASSERT( pTypeDescr ); -+ if (! pTypeDescr) -+ terminate(); -+ -+ pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); -+ ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); -+ -+ // destruct uno exception -+ ::uno_any_destruct( pUnoExc, 0 ); -+ // avoiding locked counts -+ static RTTI * s_rtti = 0; -+ if (! s_rtti) -+ { -+ MutexGuard guard( Mutex::getGlobalMutex() ); -+ if (! s_rtti) -+ { -+#ifdef LEAK_STATIC_DATA -+ s_rtti = new RTTI(); -+#else -+ static RTTI rtti_data; -+ s_rtti = &rtti_data; -+#endif -+ } -+ } -+ rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr ); -+ TYPELIB_DANGER_RELEASE( pTypeDescr ); -+ OSL_ENSURE( rtti, "### no rtti for throwing exception!" ); -+ if (! rtti) -+ terminate(); -+ } -+ -+ __cxa_throw( pCppExc, rtti, deleteException ); -+} -+ -+//================================================================================================== -+void fillUnoException( __cxa_exception * header, uno_Any * pExc, uno_Mapping * pCpp2Uno ) -+{ -+ OSL_ENSURE( header, "### no exception header!!!" ); -+ if (! header) -+ terminate(); -+ -+ typelib_TypeDescription * pExcTypeDescr = 0; -+ OUString unoName( toUNOname( header->exceptionType->name() ) ); -+ ::typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData ); -+ OSL_ENSURE( pExcTypeDescr, "### can not get type description for exception!!!" ); -+ if (! pExcTypeDescr) -+ terminate(); -+ -+ // construct uno exception any -+ ::uno_any_constructAndConvert( pExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno ); -+ ::typelib_typedescription_release( pExcTypeDescr ); -+} -+ -+} -+ ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc/makefile.mk -@@ -0,0 +1,76 @@ -+#************************************************************** -+# -+# Licensed to the Apache Software Foundation (ASF) under one -+# or more contributor license agreements. See the NOTICE file -+# distributed with this work for additional information -+# regarding copyright ownership. The ASF licenses this file -+# to you under the Apache License, Version 2.0 (the -+# "License"); you may not use this file except in compliance -+# with the License. You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, -+# software distributed under the License is distributed on an -+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+# KIND, either express or implied. See the License for the -+# specific language governing permissions and limitations -+# under the License. -+# -+#************************************************************** -+ -+ -+ -+PRJ=..$/..$/.. -+ -+PRJNAME=bridges -+TARGET=gcc3_uno -+LIBTARGET=no -+ENABLE_EXCEPTIONS=TRUE -+ -+# --- Settings ----------------------------------------------------- -+ -+.INCLUDE : settings.mk -+ -+# --- Files -------------------------------------------------------- -+.IF "$(COM)$(OS)$(CPU)$(COMNAME)$(CPUNAME)" == "GCCFREEBSDPgcc3POWERPC" -+ -+.IF "$(cppu_no_leak)" == "" -+CFLAGS += -DLEAK_STATIC_DATA -+.ENDIF -+ -+# In case someone enabled the non-standard -fomit-frame-pointer which does not -+# work with the .cxx sources in this directory: -+CFLAGSCXX += -fno-omit-frame-pointer -+ -+NOOPTFILES= \ -+ $(SLO)$/uno2cpp.obj -+ -+ -+CFLAGSNOOPT=-O0 -+ -+SLOFILES= \ -+ $(SLO)$/except.obj \ -+ $(SLO)$/cpp2uno.obj \ -+ $(SLO)$/uno2cpp.obj -+ -+SHL1TARGET= $(TARGET) -+ -+SHL1DEF=$(MISC)$/$(SHL1TARGET).def -+SHL1IMPLIB=i$(TARGET) -+SHL1VERSIONMAP=..$/..$/bridge_exports.map -+SHL1RPATH=URELIB -+ -+SHL1OBJS= $(SLOFILES) -+SHL1LIBS = $(SLB)$/cpp_uno_shared.lib -+ -+SHL1STDLIBS= \ -+ $(CPPULIB) \ -+ $(SALLIB) -+ -+.ENDIF -+ -+# --- Targets ------------------------------------------------------ -+ -+.INCLUDE : target.mk -+ ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc/share.hxx -@@ -0,0 +1,87 @@ -+/************************************************************** -+ * -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, -+ * software distributed under the License is distributed on an -+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+ * KIND, either express or implied. See the License for the -+ * specific language governing permissions and limitations -+ * under the License. -+ * -+ *************************************************************/ -+ -+ -+ -+#include "uno/mapping.h" -+ -+#include -+#include -+#include -+ -+namespace CPPU_CURRENT_NAMESPACE -+{ -+ -+ void dummy_can_throw_anything( char const * ); -+ -+ -+// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h -+ -+struct _Unwind_Exception -+{ -+ unsigned exception_class __attribute__((__mode__(__DI__))); -+ void * exception_cleanup; -+ unsigned private_1 __attribute__((__mode__(__word__))); -+ unsigned private_2 __attribute__((__mode__(__word__))); -+} __attribute__((__aligned__)); -+ -+struct __cxa_exception -+{ -+ ::std::type_info *exceptionType; -+ void (*exceptionDestructor)(void *); -+ -+ ::std::unexpected_handler unexpectedHandler; -+ ::std::terminate_handler terminateHandler; -+ -+ __cxa_exception *nextException; -+ -+ int handlerCount; -+ -+ int handlerSwitchValue; -+ const unsigned char *actionRecord; -+ const unsigned char *languageSpecificData; -+ void *catchTemp; -+ void *adjustedPtr; -+ -+ _Unwind_Exception unwindHeader; -+}; -+ -+extern "C" void *__cxa_allocate_exception( -+ std::size_t thrown_size ) throw(); -+extern "C" void __cxa_throw ( -+ void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); -+ -+struct __cxa_eh_globals -+{ -+ __cxa_exception *caughtExceptions; -+ unsigned int uncaughtExceptions; -+}; -+extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); -+ -+// ----- -+ -+//================================================================================================== -+void raiseException( -+ uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); -+//================================================================================================== -+void fillUnoException( -+ __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); -+} ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc/uno2cpp.cxx -@@ -0,0 +1,668 @@ -+/************************************************************** -+ * -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, -+ * software distributed under the License is distributed on an -+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+ * KIND, either express or implied. See the License for the -+ * specific language governing permissions and limitations -+ * under the License. -+ * -+ *************************************************************/ -+ -+ -+ -+// MARKER(update_precomp.py): autogen include statement, do not remove -+#include "precompiled_bridges.hxx" -+ -+#include -+ -+#include -+#include -+ -+#include "bridges/cpp_uno/shared/bridge.hxx" -+#include "bridges/cpp_uno/shared/types.hxx" -+#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx" -+#include "bridges/cpp_uno/shared/vtables.hxx" -+ -+#include "share.hxx" -+ -+ -+using namespace ::rtl; -+using namespace ::com::sun::star::uno; -+ -+namespace -+{ -+ -+ -+//================================================================================================== -+static void callVirtualMethod( -+ void * pAdjustedThisPtr, -+ sal_Int32 nVtableIndex, -+ void * pRegisterReturn, -+ typelib_TypeClass eReturnType, -+ char * pPT, -+ sal_Int32 * pStackLongs, -+ sal_Int32 nStackLongs) -+{ -+ -+ // parameter list is mixed list of * and values -+ // reference parameters are pointers -+ -+ // the basic idea here is to use gpr[8] as a storage area for -+ // the future values of registers r3 to r10 needed for the call, -+ // and similarly fpr[8] as a storage area for the future values -+ // of floating point registers f1 to f8 -+ -+ unsigned long * mfunc; // actual function to be invoked -+ void (*ptr)(); -+ int gpr[8]; // storage for gpregisters, map to r3-r10 -+ int off; // offset used to find function -+#ifndef __NO_FPRS__ -+ double fpr[8]; // storage for fpregisters, map to f1-f8 -+ int f; // number of fprs mapped so far -+ double dret; // temporary function return values -+#endif -+ int n; // number of gprs mapped so far -+ long *p; // pointer to parameter overflow area -+ int c; // character of parameter type being decoded -+ int iret, iret2; -+ -+ // Because of the Power PC calling conventions we could be passing -+ // parameters in both register types and on the stack. To create the -+ // stack parameter area we need we now simply allocate local -+ // variable storage param[] that is at least the size of the parameter stack -+ // (more than enough space) which we can overwrite the parameters into. -+ -+ // Note: This keeps us from having to decode the signature twice and -+ // prevents problems with later local variables. -+ -+ // Note: could require up to 2*nStackLongs words of parameter stack area -+ // if the call has many float parameters (i.e. floats take up only 1 -+ // word on the stack but double takes 2 words in parameter area in the -+ // stack frame . -+ -+ // Update! floats on the outgoing parameter stack only take up 1 word -+ // (stfs is used) which is not correct according to the ABI but we -+ // will match what the compiler does until this is figured out -+ -+ // this grows the current stack to the appropriate size -+ // and sets the outgoing stack pointer p to the right place -+ __asm__ __volatile__ ( -+ "rlwinm %0,%0,3,3,28\n\t" -+ "addi %0,%0,22\n\t" -+ "rlwinm %0,%0,0,4,28\n\t" -+ "lwz 0,0(1)\n\t" -+ "subf 1,%0,1\n\t" -+ "stw 0,0(1)\n\t" -+ : : "r" (nStackLongs) : "0" ); -+ -+ __asm__ __volatile__ ( "addi %0,1,8" : "=r" (p) : ); -+ -+ // never called -+ // if (! pAdjustedThisPtr ) dummy_can_throw_anything("xxx"); // address something -+ -+ -+ // now begin to load the C++ function arguments into storage -+ n = 0; -+#ifndef __NO_FPRS__ -+ f = 0; -+#endif -+ -+ // now we need to parse the entire signature string */ -+ // until we get the END indicator */ -+ -+ // treat complex return pointer like any other parameter // -+ -+#if 0 -+ /* Let's figure out what is really going on here*/ -+ fprintf(stderr,"callVirtualMethod paramters string is %s\n",pPT); -+ int k = nStackLongs; -+ long * q = (long *)pStackLongs; -+ while (k > 0) { -+ fprintf(stderr,"uno stack is: %x\n",*q); -+ k--; -+ q++; -+ } -+#endif -+ -+ /* parse the argument list up to the ending ) */ -+ while (*pPT != 'X') { -+ c = *pPT; -+ switch (c) { -+ case 'D': /* type is double */ -+#ifndef __NO_FPRS__ -+ if (f < 8) { -+ fpr[f++] = *((double *)pStackLongs); /* store in register */ -+#else -+ if (n & 1) -+ n++; -+ if (n < 8) { -+ gpr[n++] = *pStackLongs; -+ gpr[n++] = *(pStackLongs+1); -+#endif -+ } else { -+ if (((long) p) & 4) -+ p++; -+ *p++ = *pStackLongs; /* or on the parameter stack */ -+ *p++ = *(pStackLongs + 1); -+ } -+ pStackLongs += 2; -+ break; -+ -+ case 'F': /* type is float */ -+ /* this assumes that floats are stored as 1 32 bit word on param -+ stack and that if passed in parameter stack to C, should be -+ as double word. -+ -+ Whoops: the abi is not actually followed by gcc, need to -+ store floats as a *single* word on outgoing parameter stack -+ to match what gcc actually does -+ */ -+#ifndef __NO_FPRS__ -+ if (f < 8) { -+ fpr[f++] = *((float *)pStackLongs); -+#else -+ if (n < 8) { -+ gpr[n++] = *pStackLongs; -+#endif -+ } else { -+#if 0 /* if abi were followed */ -+ if (((long) p) & 4) -+ p++; -+ *((double *)p) = *((float *)pStackLongs); -+ p += 2; -+#else -+ *((float *)p) = *((float *)pStackLongs); -+ p += 1; -+#endif -+ } -+ pStackLongs += 1; -+ break; -+ -+ case 'H': /* type is long long */ -+ if (n & 1) n++; /* note even elements gpr[] will map to -+ odd registers*/ -+ if (n <= 6) { -+ gpr[n++] = *pStackLongs; -+ gpr[n++] = *(pStackLongs+1); -+ } else { -+ if (((long) p) & 4) -+ p++; -+ *p++ = *pStackLongs; -+ *p++ = *(pStackLongs+1); -+ } -+ pStackLongs += 2; -+ break; -+ -+ case 'S': -+ if (n < 8) { -+ gpr[n++] = *((unsigned short*)pStackLongs); -+ } else { -+ *p++ = *((unsigned short *)pStackLongs); -+ } -+ pStackLongs += 1; -+ break; -+ -+ case 'B': -+ if (n < 8) { -+ gpr[n++] = *((char *)pStackLongs); -+ } else { -+ *p++ = *((char *)pStackLongs); -+ } -+ pStackLongs += 1; -+ break; -+ -+ default: -+ if (n < 8) { -+ gpr[n++] = *pStackLongs; -+ } else { -+ *p++ = *pStackLongs; -+ } -+ pStackLongs += 1; -+ break; -+ } -+ pPT++; -+ } -+ -+ /* figure out the address of the function we need to invoke */ -+ off = nVtableIndex; -+ off = off * 4; // 4 bytes per slot -+ mfunc = *((unsigned long **)pAdjustedThisPtr); // get the address of the vtable -+ mfunc = (unsigned long *)((char *)mfunc + off); // get the address from the vtable entry at offset -+ mfunc = *((unsigned long **)mfunc); // the function is stored at the address -+ ptr = (void (*)())mfunc; -+ -+ /* Set up the machine registers and invoke the function */ -+ -+ __asm__ __volatile__ ( -+ "lwz 3, 0(%0)\n\t" -+ "lwz 4, 4(%0)\n\t" -+ "lwz 5, 8(%0)\n\t" -+ "lwz 6, 12(%0)\n\t" -+ "lwz 7, 16(%0)\n\t" -+ "lwz 8, 20(%0)\n\t" -+ "lwz 9, 24(%0)\n\t" -+ "lwz 10, 28(%0)\n\t" -+#ifndef __NO_FPRS__ -+ "lfd 1, 0(%1)\n\t" -+ "lfd 2, 8(%1)\n\t" -+ "lfd 3, 16(%1)\n\t" -+ "lfd 4, 24(%1)\n\t" -+ "lfd 5, 32(%1)\n\t" -+ "lfd 6, 40(%1)\n\t" -+ "lfd 7, 48(%1)\n\t" -+ "lfd 8, 56(%1)\n\t" -+ : : "r" (gpr), "r" (fpr) -+#else -+ : : "r" (gpr) -+#endif -+ : "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" -+ ); -+ -+ (*ptr)(); -+ -+ __asm__ __volatile__ ( -+ "mr %0, 3\n\t" -+ "mr %1, 4\n\t" -+#ifndef __NO_FPRS__ -+ "fmr %2, 1\n\t" -+ : "=r" (iret), "=r" (iret2), "=f" (dret) -+#else -+ : "=r" (iret), "=r" (iret2) -+#endif -+ : ); -+ -+ switch( eReturnType ) -+ { -+ case typelib_TypeClass_HYPER: -+ case typelib_TypeClass_UNSIGNED_HYPER: -+ ((long*)pRegisterReturn)[0] = iret; -+ ((long*)pRegisterReturn)[1] = iret2; -+ case typelib_TypeClass_LONG: -+ case typelib_TypeClass_UNSIGNED_LONG: -+ case typelib_TypeClass_ENUM: -+ ((long*)pRegisterReturn)[0] = iret; -+ break; -+ case typelib_TypeClass_CHAR: -+ case typelib_TypeClass_SHORT: -+ case typelib_TypeClass_UNSIGNED_SHORT: -+ *(unsigned short*)pRegisterReturn = (unsigned short)iret; -+ break; -+ case typelib_TypeClass_BOOLEAN: -+ case typelib_TypeClass_BYTE: -+ *(unsigned char*)pRegisterReturn = (unsigned char)iret; -+ break; -+ case typelib_TypeClass_FLOAT: -+#ifndef __NO_FPRS__ -+ *(float*)pRegisterReturn = (float)dret; -+#else -+ ((unsigned int*)pRegisterReturn)[0] = iret; -+#endif -+ break; -+ case typelib_TypeClass_DOUBLE: -+#ifndef __NO_FPRS__ -+ *(double*)pRegisterReturn = dret; -+#else -+ ((unsigned int*)pRegisterReturn)[0] = iret; -+ ((unsigned int*)pRegisterReturn)[1] = iret2; -+#endif -+ break; -+ default: -+ break; -+ } -+} -+ -+ -+//================================================================================================== -+static void cpp_call( -+ bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, -+ bridges::cpp_uno::shared::VtableSlot aVtableSlot, -+ typelib_TypeDescriptionReference * pReturnTypeRef, -+ sal_Int32 nParams, typelib_MethodParameter * pParams, -+ void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc ) -+{ -+ // max space for: [complex ret ptr], values|ptr ... -+ char * pCppStack = -+ (char *)alloca( sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) ); -+ char * pCppStackStart = pCppStack; -+ -+ // need to know parameter types for callVirtualMethod so generate a signature string -+ char * pParamType = (char *) alloca(nParams+2); -+ char * pPT = pParamType; -+ -+ // return -+ typelib_TypeDescription * pReturnTypeDescr = 0; -+ TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); -+ // OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" ); -+ -+ void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion -+ -+ if (pReturnTypeDescr) -+ { -+ if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) -+ { -+ pCppReturn = pUnoReturn; // direct way for simple types -+ } -+ else -+ { -+ // complex return via ptr -+ pCppReturn = *(void **)pCppStack = -+ (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) -+ ? alloca( pReturnTypeDescr->nSize ): pUnoReturn); // direct way -+ *pPT++ = 'I'; //signify that a complex return type on stack -+ pCppStack += sizeof(void *); -+ } -+ } -+ // push this -+ void* pAdjustedThisPtr = reinterpret_cast< void **>(pThis->getCppI()) + aVtableSlot.offset; -+ *(void**)pCppStack = pAdjustedThisPtr; -+ pCppStack += sizeof( void* ); -+ *pPT++ = 'I'; -+ -+ // stack space -+ // OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); -+ // args -+ void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); -+ // indizes of values this have to be converted (interface conversion cpp<=>uno) -+ sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams); -+ // type descriptions for reconversions -+ typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams)); -+ -+ sal_Int32 nTempIndizes = 0; -+ -+ for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) -+ { -+ const typelib_MethodParameter & rParam = pParams[nPos]; -+ typelib_TypeDescription * pParamTypeDescr = 0; -+ TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); -+ -+ if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) -+ { -+ uno_copyAndConvertData( pCppArgs[nPos] = pCppStack, pUnoArgs[nPos], pParamTypeDescr, -+ pThis->getBridge()->getUno2Cpp() ); -+ -+ switch (pParamTypeDescr->eTypeClass) -+ { -+ -+ // we need to know type of each param so that we know whether to use -+ // gpr or fpr to pass in parameters: -+ // Key: I - int, long, pointer, etc means pass in gpr -+ // B - byte value passed in gpr -+ // S - short value passed in gpr -+ // F - float value pass in fpr -+ // D - double value pass in fpr -+ // H - long long int pass in proper pairs of gpr (3,4) (5,6), etc -+ // X - indicates end of parameter description string -+ -+ case typelib_TypeClass_LONG: -+ case typelib_TypeClass_UNSIGNED_LONG: -+ case typelib_TypeClass_ENUM: -+ *pPT++ = 'I'; -+ break; -+ case typelib_TypeClass_SHORT: -+ case typelib_TypeClass_CHAR: -+ case typelib_TypeClass_UNSIGNED_SHORT: -+ *pPT++ = 'S'; -+ break; -+ case typelib_TypeClass_BOOLEAN: -+ case typelib_TypeClass_BYTE: -+ *pPT++ = 'B'; -+ break; -+ case typelib_TypeClass_FLOAT: -+ *pPT++ = 'F'; -+ break; -+ case typelib_TypeClass_DOUBLE: -+ *pPT++ = 'D'; -+ pCppStack += sizeof(sal_Int32); // extra long -+ break; -+ case typelib_TypeClass_HYPER: -+ case typelib_TypeClass_UNSIGNED_HYPER: -+ *pPT++ = 'H'; -+ pCppStack += sizeof(sal_Int32); // extra long -+ default: -+ break; -+ } -+ -+ // no longer needed -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ else // ptr to complex value | ref -+ { -+ if (! rParam.bIn) // is pure out -+ { -+ // cpp out is constructed mem, uno out is not! -+ uno_constructData( -+ *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), -+ pParamTypeDescr ); -+ pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call -+ // will be released at reconversion -+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; -+ } -+ // is in/inout -+ else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr )) -+ { -+ uno_copyAndConvertData( -+ *(void **)pCppStack = pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), -+ pUnoArgs[nPos], pParamTypeDescr, -+ pThis->getBridge()->getUno2Cpp() ); -+ -+ pTempIndizes[nTempIndizes] = nPos; // has to be reconverted -+ // will be released at reconversion -+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; -+ } -+ else // direct way -+ { -+ *(void **)pCppStack = pCppArgs[nPos] = pUnoArgs[nPos]; -+ // no longer needed -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ // KBH: FIXME: is this the right way to pass these -+ *pPT++='I'; -+ } -+ pCppStack += sizeof(sal_Int32); // standard parameter length -+ } -+ -+ // terminate the signature string -+ *pPT++='X'; -+ *pPT=0; -+ -+ try -+ { -+ OSL_ENSURE( !( (pCppStack - pCppStackStart ) & 3), "UNALIGNED STACK !!! (Please DO panic)" ); -+ callVirtualMethod( -+ pAdjustedThisPtr, aVtableSlot.index, -+ pCppReturn, pReturnTypeDescr->eTypeClass, pParamType, -+ (sal_Int32 *)pCppStackStart, (pCppStack - pCppStackStart) / sizeof(sal_Int32) ); -+ // NO exception occured... -+ *ppUnoExc = 0; -+ -+ // reconvert temporary params -+ for ( ; nTempIndizes--; ) -+ { -+ sal_Int32 nIndex = pTempIndizes[nTempIndizes]; -+ typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; -+ -+ if (pParams[nIndex].bIn) -+ { -+ if (pParams[nIndex].bOut) // inout -+ { -+ uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value -+ uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, -+ pThis->getBridge()->getCpp2Uno() ); -+ } -+ } -+ else // pure out -+ { -+ uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, -+ pThis->getBridge()->getCpp2Uno() ); -+ } -+ // destroy temp cpp param => cpp: every param was constructed -+ uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); -+ -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ // return value -+ if (pCppReturn && pUnoReturn != pCppReturn) -+ { -+ uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr, -+ pThis->getBridge()->getCpp2Uno() ); -+ uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release ); -+ } -+ } -+ catch (...) -+ { -+ // fill uno exception -+ fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, -+ *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); -+ -+ // temporary params -+ for ( ; nTempIndizes--; ) -+ { -+ sal_Int32 nIndex = pTempIndizes[nTempIndizes]; -+ // destroy temp cpp param => cpp: every param was constructed -+ uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release ); -+ TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); -+ } -+ // return type -+ if (pReturnTypeDescr) -+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); -+ } -+} -+ -+} -+ -+namespace bridges { namespace cpp_uno { namespace shared { -+ -+void unoInterfaceProxyDispatch( -+ uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr, -+ void * pReturn, void * pArgs[], uno_Any ** ppException ) -+{ -+ // is my surrogate -+ bridges::cpp_uno::shared::UnoInterfaceProxy * pThis -+ = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy *> (pUnoI); -+ -+ switch (pMemberDescr->eTypeClass) -+ { -+ case typelib_TypeClass_INTERFACE_ATTRIBUTE: -+ { -+ -+ VtableSlot aVtableSlot( -+ getVtableSlot( -+ reinterpret_cast< -+ typelib_InterfaceAttributeTypeDescription const * >( -+ pMemberDescr))); -+ -+ if (pReturn) -+ { -+ // dependent dispatch -+ cpp_call( -+ pThis, aVtableSlot, -+ ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef, -+ 0, 0, // no params -+ pReturn, pArgs, ppException ); -+ } -+ else -+ { -+ // is SET -+ typelib_MethodParameter aParam; -+ aParam.pTypeRef = -+ ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef; -+ aParam.bIn = sal_True; -+ aParam.bOut = sal_False; -+ -+ typelib_TypeDescriptionReference * pReturnTypeRef = 0; -+ OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") ); -+ typelib_typedescriptionreference_new( -+ &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData ); -+ -+ // dependent dispatch -+ aVtableSlot.index += 1; //get then set method -+ cpp_call( -+ pThis, aVtableSlot, -+ pReturnTypeRef, -+ 1, &aParam, -+ pReturn, pArgs, ppException ); -+ -+ typelib_typedescriptionreference_release( pReturnTypeRef ); -+ } -+ -+ break; -+ } -+ case typelib_TypeClass_INTERFACE_METHOD: -+ { -+ -+ VtableSlot aVtableSlot( -+ getVtableSlot( -+ reinterpret_cast< -+ typelib_InterfaceMethodTypeDescription const * >( -+ pMemberDescr))); -+ switch (aVtableSlot.index) -+ { -+ // standard calls -+ case 1: // acquire uno interface -+ (*pUnoI->acquire)( pUnoI ); -+ *ppException = 0; -+ break; -+ case 2: // release uno interface -+ (*pUnoI->release)( pUnoI ); -+ *ppException = 0; -+ break; -+ case 0: // queryInterface() opt -+ { -+ typelib_TypeDescription * pTD = 0; -+ TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() ); -+ if (pTD) -+ { -+ uno_Interface * pInterface = 0; -+ (*pThis->pBridge->getUnoEnv()->getRegisteredInterface)( -+ pThis->pBridge->getUnoEnv(), -+ (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD ); -+ -+ if (pInterface) -+ { -+ ::uno_any_construct( -+ reinterpret_cast< uno_Any * >( pReturn ), -+ &pInterface, pTD, 0 ); -+ (*pInterface->release)( pInterface ); -+ TYPELIB_DANGER_RELEASE( pTD ); -+ *ppException = 0; -+ break; -+ } -+ TYPELIB_DANGER_RELEASE( pTD ); -+ } -+ } // else perform queryInterface() -+ default: -+ // dependent dispatch -+ cpp_call( -+ pThis, aVtableSlot, -+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef, -+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams, -+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams, -+ pReturn, pArgs, ppException ); -+ } -+ break; -+ } -+ default: -+ { -+ ::com::sun::star::uno::RuntimeException aExc( -+ OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ), -+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() ); -+ -+ Type const & rExcType = ::getCppuType( &aExc ); -+ // binary identical null reference -+ ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 ); -+ } -+ } -+} -+ -+} } } ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc64/cpp2uno.cxx -@@ -0,0 +1,718 @@ -+/************************************************************** -+ * -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, -+ * software distributed under the License is distributed on an -+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+ * KIND, either express or implied. See the License for the -+ * specific language governing permissions and limitations -+ * under the License. -+ * -+ *************************************************************/ -+ -+ -+ -+// MARKER(update_precomp.py): autogen include statement, do not remove -+#include "precompiled_bridges.hxx" -+ -+#include -+#include -+#include -+ -+#include "bridges/cpp_uno/shared/bridge.hxx" -+#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx" -+#include "bridges/cpp_uno/shared/types.hxx" -+#include "bridges/cpp_uno/shared/vtablefactory.hxx" -+ -+#include "share.hxx" -+#include -+#include -+ -+ -+using namespace ::com::sun::star::uno; -+ -+namespace -+{ -+ -+//================================================================================================== -+static typelib_TypeClass cpp2uno_call( -+ bridges::cpp_uno::shared::CppInterfaceProxy * pThis, -+ const typelib_TypeDescription * pMemberTypeDescr, -+ typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return -+ sal_Int32 nParams, typelib_MethodParameter * pParams, -+ void ** gpreg, void ** fpreg, void ** ovrflw, -+ sal_Int64 * pRegisterReturn /* space for register return */ ) -+{ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "as far as cpp2uno_call\n"); -+#endif -+ -+ int ng = 0; //number of gpr registers used -+ int nf = 0; //number of fpr regsiters used -+ -+ // gpreg: [ret *], this, [gpr params] -+ // fpreg: [fpr params] -+ // ovrflw: [gpr or fpr params (properly aligned)] -+ -+ // return -+ typelib_TypeDescription * pReturnTypeDescr = 0; -+ if (pReturnTypeRef) -+ TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); -+ -+ void * pUnoReturn = 0; -+ void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need -+ -+ if (pReturnTypeDescr) -+ { -+ if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) -+ { -+ pUnoReturn = pRegisterReturn; // direct way for simple types -+ } -+ else // complex return via ptr (pCppReturn) -+ { -+ pCppReturn = *(void **)gpreg; -+ gpreg++; -+ ng++; -+ -+ pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) -+ ? alloca( pReturnTypeDescr->nSize ) -+ : pCppReturn); // direct way -+ } -+ } -+ // pop this -+ gpreg++; -+ ng++; -+ -+ // stack space -+ OSL_ENSURE( sizeof(void *) == sizeof(sal_Int64), "### unexpected size!" ); -+ // parameters -+ void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); -+ void ** pCppArgs = pUnoArgs + nParams; -+ // indizes of values this have to be converted (interface conversion cpp<=>uno) -+ sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams)); -+ // type descriptions for reconversions -+ typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); -+ -+ sal_Int32 nTempIndizes = 0; -+ bool bOverFlowUsed = false; -+ for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) -+ { -+ const typelib_MethodParameter & rParam = pParams[nPos]; -+ typelib_TypeDescription * pParamTypeDescr = 0; -+ TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "arg %d of %d\n", nPos, nParams); -+#endif -+ -+ if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) -+ { -+#ifdef CMC_DEBUG -+ fprintf(stderr, "simple\n"); -+#endif -+ -+ switch (pParamTypeDescr->eTypeClass) -+ { -+ case typelib_TypeClass_FLOAT: -+ case typelib_TypeClass_DOUBLE: -+ if (nf < ppc64::MAX_SSE_REGS) -+ { -+ if (pParamTypeDescr->eTypeClass == typelib_TypeClass_FLOAT) -+ { -+ float tmp = (float) (*((double *)fpreg)); -+ (*((float *) fpreg)) = tmp; -+ } -+ pCppArgs[nPos] = pUnoArgs[nPos] = fpreg++; -+ nf++; -+ } -+ else -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw; -+ bOverFlowUsed = true; -+ } -+ if (bOverFlowUsed) ovrflw++; -+ break; -+ case typelib_TypeClass_BYTE: -+ case typelib_TypeClass_BOOLEAN: -+ if (ng < ppc64::MAX_GPR_REGS) -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + (sizeof(void*)-1)); -+ ng++; -+ gpreg++; -+ } -+ else -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-1)); -+ bOverFlowUsed = true; -+ } -+ if (bOverFlowUsed) ovrflw++; -+ break; -+ case typelib_TypeClass_CHAR: -+ case typelib_TypeClass_SHORT: -+ case typelib_TypeClass_UNSIGNED_SHORT: -+ if (ng < ppc64::MAX_GPR_REGS) -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + (sizeof(void*)-2)); -+ ng++; -+ gpreg++; -+ } -+ else -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-2)); -+ bOverFlowUsed = true; -+ } -+ if (bOverFlowUsed) ovrflw++; -+ break; -+ case typelib_TypeClass_ENUM: -+ case typelib_TypeClass_LONG: -+ case typelib_TypeClass_UNSIGNED_LONG: -+ if (ng < ppc64::MAX_GPR_REGS) -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + (sizeof(void*)-4)); -+ ng++; -+ gpreg++; -+ } -+ else -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-4)); -+ bOverFlowUsed = true; -+ } -+ if (bOverFlowUsed) ovrflw++; -+ break; -+ default: -+ if (ng < ppc64::MAX_GPR_REGS) -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = gpreg++; -+ ng++; -+ } -+ else -+ { -+ pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw; -+ bOverFlowUsed = true; -+ } -+ if (bOverFlowUsed) ovrflw++; -+ break; -+ } -+ -+ // no longer needed -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ else // ptr to complex value | ref -+ { -+#ifdef CMC_DEBUG -+ fprintf(stderr, "complex, ng is %d\n", ng); -+#endif -+ void *pCppStack; //temporary stack pointer -+ -+ if (ng < ppc64::MAX_GPR_REGS) -+ { -+ pCppArgs[nPos] = pCppStack = *gpreg++; -+ ng++; -+ } -+ else -+ { -+ pCppArgs[nPos] = pCppStack = *ovrflw; -+ bOverFlowUsed = true; -+ } -+ if (bOverFlowUsed) ovrflw++; -+ -+ if (! rParam.bIn) // is pure out -+ { -+ // uno out is unconstructed mem! -+ pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ); -+ pTempIndizes[nTempIndizes] = nPos; -+ // will be released at reconversion -+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; -+ } -+ // is in/inout -+ else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr )) -+ { -+ uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ), -+ pCppStack, pParamTypeDescr, -+ pThis->getBridge()->getCpp2Uno() ); -+ pTempIndizes[nTempIndizes] = nPos; // has to be reconverted -+ // will be released at reconversion -+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; -+ } -+ else // direct way -+ { -+ pUnoArgs[nPos] = pCppStack; -+ // no longer needed -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ } -+ } -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "end of params\n"); -+#endif -+ -+ // ExceptionHolder -+ uno_Any aUnoExc; // Any will be constructed by callee -+ uno_Any * pUnoExc = &aUnoExc; -+ -+ // invoke uno dispatch call -+ (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc ); -+ -+ // in case an exception occurred... -+ if (pUnoExc) -+ { -+ // destruct temporary in/inout params -+ for ( ; nTempIndizes--; ) -+ { -+ sal_Int32 nIndex = pTempIndizes[nTempIndizes]; -+ -+ if (pParams[nIndex].bIn) // is in/inout => was constructed -+ uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 ); -+ TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); -+ } -+ if (pReturnTypeDescr) -+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); -+ -+ CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() ); -+ // has to destruct the any -+ // is here for dummy -+ return typelib_TypeClass_VOID; -+ } -+ else // else no exception occurred... -+ { -+ // temporary params -+ for ( ; nTempIndizes--; ) -+ { -+ sal_Int32 nIndex = pTempIndizes[nTempIndizes]; -+ typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; -+ -+ if (pParams[nIndex].bOut) // inout/out -+ { -+ // convert and assign -+ uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); -+ uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr, -+ pThis->getBridge()->getUno2Cpp() ); -+ } -+ // destroy temp uno param -+ uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); -+ -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ // return -+ if (pCppReturn) // has complex return -+ { -+ if (pUnoReturn != pCppReturn) // needs reconversion -+ { -+ uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr, -+ pThis->getBridge()->getUno2Cpp() ); -+ // destroy temp uno return -+ uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); -+ } -+ // complex return ptr is set to return reg -+ *(void **)pRegisterReturn = pCppReturn; -+ } -+ if (pReturnTypeDescr) -+ { -+ typelib_TypeClass eRet = (typelib_TypeClass)pReturnTypeDescr->eTypeClass; -+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); -+ return eRet; -+ } -+ else -+ return typelib_TypeClass_VOID; -+ } -+} -+ -+ -+//================================================================================================== -+static typelib_TypeClass cpp_mediate( -+ sal_uInt64 nOffsetAndIndex, -+ void ** gpreg, void ** fpreg, long sp, -+ sal_Int64 * pRegisterReturn /* space for register return */ ) -+{ -+ OSL_ENSURE( sizeof(sal_Int64)==sizeof(void *), "### unexpected!" ); -+ -+ sal_Int32 nVtableOffset = (nOffsetAndIndex >> 32); -+ sal_Int32 nFunctionIndex = (nOffsetAndIndex & 0xFFFFFFFF); -+ -+ long sf = *(long*)sp; -+ void ** ovrflw = (void**)(sf + 112); -+ -+ // gpreg: [ret *], this, [other gpr params] -+ // fpreg: [fpr params] -+ // ovrflw: [gpr or fpr params (properly aligned)] -+ -+ void * pThis; -+ if (nFunctionIndex & 0x80000000 ) -+ { -+ nFunctionIndex &= 0x7fffffff; -+ pThis = gpreg[1]; -+#ifdef CMC_DEBUG -+ fprintf(stderr, "pThis is gpreg[1]\n"); -+#endif -+ } -+ else -+ { -+ pThis = gpreg[0]; -+#ifdef CMC_DEBUG -+ fprintf(stderr, "pThis is gpreg[0]\n"); -+#endif -+ } -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "pThis is %lx\n", pThis); -+#endif -+ -+ pThis = static_cast< char * >(pThis) - nVtableOffset; -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "pThis is now %lx\n", pThis); -+#endif -+ -+ bridges::cpp_uno::shared::CppInterfaceProxy * pCppI -+ = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy( -+ pThis); -+ -+ typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr(); -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "indexes are %d %d\n", nFunctionIndex, pTypeDescr->nMapFunctionIndexToMemberIndex); -+#endif -+ -+ OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" ); -+ if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex) -+ { -+ throw RuntimeException( -+ rtl::OUString::createFromAscii("illegal vtable index!"), -+ (XInterface *)pThis ); -+ } -+ -+ // determine called method -+ sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex]; -+ OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" ); -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "members are %d %d\n", nMemberPos, pTypeDescr->nAllMembers); -+#endif -+ -+ TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] ); -+ -+ typelib_TypeClass eRet; -+ switch (aMemberDescr.get()->eTypeClass) -+ { -+ case typelib_TypeClass_INTERFACE_ATTRIBUTE: -+ { -+ if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex) -+ { -+ // is GET method -+ eRet = cpp2uno_call( -+ pCppI, aMemberDescr.get(), -+ ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef, -+ 0, 0, // no params -+ gpreg, fpreg, ovrflw, pRegisterReturn ); -+ } -+ else -+ { -+ // is SET method -+ typelib_MethodParameter aParam; -+ aParam.pTypeRef = -+ ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef; -+ aParam.bIn = sal_True; -+ aParam.bOut = sal_False; -+ -+ eRet = cpp2uno_call( -+ pCppI, aMemberDescr.get(), -+ 0, // indicates void return -+ 1, &aParam, -+ gpreg, fpreg, ovrflw, pRegisterReturn ); -+ } -+ break; -+ } -+ case typelib_TypeClass_INTERFACE_METHOD: -+ { -+ // is METHOD -+ switch (nFunctionIndex) -+ { -+ case 1: // acquire() -+ pCppI->acquireProxy(); // non virtual call! -+ eRet = typelib_TypeClass_VOID; -+ break; -+ case 2: // release() -+ pCppI->releaseProxy(); // non virtual call! -+ eRet = typelib_TypeClass_VOID; -+ break; -+ case 0: // queryInterface() opt -+ { -+ typelib_TypeDescription * pTD = 0; -+ TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( gpreg[2] )->getTypeLibType() ); -+ if (pTD) -+ { -+ XInterface * pInterface = 0; -+ (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)( -+ pCppI->getBridge()->getCppEnv(), -+ (void **)&pInterface, pCppI->getOid().pData, -+ (typelib_InterfaceTypeDescription *)pTD ); -+ -+ if (pInterface) -+ { -+ ::uno_any_construct( -+ reinterpret_cast< uno_Any * >( gpreg[0] ), -+ &pInterface, pTD, cpp_acquire ); -+ pInterface->release(); -+ TYPELIB_DANGER_RELEASE( pTD ); -+ *(void **)pRegisterReturn = gpreg[0]; -+ eRet = typelib_TypeClass_ANY; -+ break; -+ } -+ TYPELIB_DANGER_RELEASE( pTD ); -+ } -+ } // else perform queryInterface() -+ default: -+ eRet = cpp2uno_call( -+ pCppI, aMemberDescr.get(), -+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef, -+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams, -+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams, -+ gpreg, fpreg, ovrflw, pRegisterReturn ); -+ } -+ break; -+ } -+ default: -+ { -+#ifdef CMC_DEBUG -+ fprintf(stderr, "screwed\n"); -+#endif -+ -+ throw RuntimeException( -+ rtl::OUString::createFromAscii("no member description found!"), -+ (XInterface *)pThis ); -+ // is here for dummy -+ eRet = typelib_TypeClass_VOID; -+ } -+ } -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "end of cpp_mediate\n"); -+#endif -+ return eRet; -+} -+ -+extern "C" void privateSnippetExecutor( ... ) -+{ -+ volatile long nOffsetAndIndex; -+ -+ //mr %r3, %r11 # move into arg1 the 64bit value passed from OOo -+ __asm__ __volatile__ ( -+ "mr %0, 11\n\t" -+ : "=r" (nOffsetAndIndex) : ); -+ -+ sal_uInt64 gpreg[ppc64::MAX_GPR_REGS]; -+ double fpreg[ppc64::MAX_SSE_REGS]; -+ -+ __asm__ __volatile__ ( -+ "std 3, 0(%0)\t\n" -+ "std 4, 8(%0)\t\n" -+ "std 5, 16(%0)\t\n" -+ "std 6, 24(%0)\t\n" -+ "std 7, 32(%0)\t\n" -+ "std 8, 40(%0)\t\n" -+ "std 9, 48(%0)\t\n" -+ "std 10, 56(%0)\t\n" -+ "stfd 1, 0(%1)\t\n" -+ "stfd 2, 8(%1)\t\n" -+ "stfd 3, 16(%1)\t\n" -+ "stfd 4, 24(%1)\t\n" -+ "stfd 5, 32(%1)\t\n" -+ "stfd 6, 40(%1)\t\n" -+ "stfd 7, 48(%1)\t\n" -+ "stfd 8, 56(%1)\t\n" -+ "stfd 9, 64(%1)\t\n" -+ "stfd 10, 72(%1)\t\n" -+ "stfd 11, 80(%1)\t\n" -+ "stfd 12, 88(%1)\t\n" -+ "stfd 13, 96(%1)\t\n" -+ : : "r" (gpreg), "r" (fpreg) -+ : "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", -+ "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7", "fr8", "fr9", -+ "fr10", "fr11", "fr12", "fr13" -+ ); -+ -+ volatile long sp; -+ -+ //stack pointer -+ __asm__ __volatile__ ( -+ "mr %0, 1\n\t" -+ : "=r" (sp) : ); -+ -+ volatile long nRegReturn[1]; -+ -+ typelib_TypeClass aType = -+ cpp_mediate( nOffsetAndIndex, (void**)gpreg, (void**)fpreg, sp, (sal_Int64*)nRegReturn); -+ -+ switch( aType ) -+ { -+ case typelib_TypeClass_VOID: -+ break; -+ case typelib_TypeClass_BOOLEAN: -+ case typelib_TypeClass_BYTE: -+ __asm__( "lbz 3,%0\n\t" -+ : : "m" (nRegReturn[0]) ); -+ break; -+ case typelib_TypeClass_CHAR: -+ case typelib_TypeClass_UNSIGNED_SHORT: -+ __asm__( "lhz 3,%0\n\t" -+ : : "m" (nRegReturn[0]) ); -+ break; -+ case typelib_TypeClass_SHORT: -+ __asm__( "lha 3,%0\n\t" -+ : : "m" (nRegReturn[0]) ); -+ break; -+ case typelib_TypeClass_ENUM: -+ case typelib_TypeClass_UNSIGNED_LONG: -+ __asm__( "lwz 3,%0\n\t" -+ : : "m"(nRegReturn[0]) ); -+ break; -+ case typelib_TypeClass_LONG: -+ __asm__( "lwa 3,%0\n\t" -+ : : "m"(nRegReturn[0]) ); -+ break; -+ case typelib_TypeClass_FLOAT: -+ __asm__( "lfs 1,%0\n\t" -+ : : "m" (*((float*)nRegReturn)) ); -+ break; -+ case typelib_TypeClass_DOUBLE: -+ __asm__( "lfd 1,%0\n\t" -+ : : "m" (*((double*)nRegReturn)) ); -+ break; -+ default: -+ __asm__( "ld 3,%0\n\t" -+ : : "m" (nRegReturn[0]) ); -+ break; -+ } -+} -+ -+const int codeSnippetSize = 24; -+ -+unsigned char * codeSnippet( unsigned char * code, sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset, -+ bool simpleRetType) -+{ -+#ifdef CMC_DEBUG -+ fprintf(stderr,"in codeSnippet functionIndex is %x\n", nFunctionIndex); -+ fprintf(stderr,"in codeSnippet vtableOffset is %x\n", nVtableOffset); -+#endif -+ -+ sal_uInt64 nOffsetAndIndex = ( ( (sal_uInt64) nVtableOffset ) << 32 ) | ( (sal_uInt64) nFunctionIndex ); -+ -+ if ( !simpleRetType ) -+ nOffsetAndIndex |= 0x80000000; -+ -+ void ** raw = (void **)&code[0]; -+ memcpy(raw, (char*) privateSnippetExecutor, 16); -+ raw[2] = (void*) nOffsetAndIndex; -+#ifdef CMC_DEBUG -+ fprintf(stderr, "in: offset/index is %x %x %d, %lx\n", -+ nFunctionIndex, nVtableOffset, !simpleRetType, raw[2]); -+#endif -+ return (code + codeSnippetSize); -+} -+ -+} -+ -+void bridges::cpp_uno::shared::VtableFactory::flushCode(unsigned char const * bptr, unsigned char const * eptr) -+{ -+ int const lineSize = 32; -+ for (unsigned char const * p = bptr; p < eptr + lineSize; p += lineSize) { -+ __asm__ volatile ("dcbst 0, %0" : : "r"(p) : "memory"); -+ } -+ __asm__ volatile ("sync" : : : "memory"); -+ for (unsigned char const * p = bptr; p < eptr + lineSize; p += lineSize) { -+ __asm__ volatile ("icbi 0, %0" : : "r"(p) : "memory"); -+ } -+ __asm__ volatile ("isync" : : : "memory"); -+} -+ -+struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; }; -+ -+bridges::cpp_uno::shared::VtableFactory::Slot * -+bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block) -+{ -+ return static_cast< Slot * >(block) + 2; -+} -+ -+sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize( -+ sal_Int32 slotCount) -+{ -+ return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize; -+} -+ -+bridges::cpp_uno::shared::VtableFactory::Slot * -+bridges::cpp_uno::shared::VtableFactory::initializeBlock( -+ void * block, sal_Int32 slotCount) -+{ -+ Slot * slots = mapBlockToVtable(block); -+ slots[-2].fn = 0; -+ slots[-1].fn = 0; -+ return slots + slotCount; -+} -+ -+unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( -+ Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff, -+ typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset, -+ sal_Int32 functionCount, sal_Int32 vtableOffset) -+{ -+ (*slots) -= functionCount; -+ Slot * s = *slots; -+#ifdef CMC_DEBUG -+ fprintf(stderr, "in addLocalFunctions functionOffset is %x\n",functionOffset); -+ fprintf(stderr, "in addLocalFunctions vtableOffset is %x\n",vtableOffset); -+#endif -+ -+ for (sal_Int32 i = 0; i < type->nMembers; ++i) { -+ typelib_TypeDescription * member = 0; -+ TYPELIB_DANGER_GET(&member, type->ppMembers[i]); -+ OSL_ASSERT(member != 0); -+ switch (member->eTypeClass) { -+ case typelib_TypeClass_INTERFACE_ATTRIBUTE: -+ // Getter: -+ (s++)->fn = code + writetoexecdiff; -+ code = codeSnippet( -+ code, functionOffset++, vtableOffset, -+ bridges::cpp_uno::shared::isSimpleType( -+ reinterpret_cast< -+ typelib_InterfaceAttributeTypeDescription * >( -+ member)->pAttributeTypeRef)); -+ -+ // Setter: -+ if (!reinterpret_cast< -+ typelib_InterfaceAttributeTypeDescription * >( -+ member)->bReadOnly) -+ { -+ (s++)->fn = code + writetoexecdiff; -+ code = codeSnippet(code, functionOffset++, vtableOffset, true); -+ } -+ break; -+ -+ case typelib_TypeClass_INTERFACE_METHOD: -+ (s++)->fn = code + writetoexecdiff; -+ code = codeSnippet( -+ code, functionOffset++, vtableOffset, -+ bridges::cpp_uno::shared::isSimpleType( -+ reinterpret_cast< -+ typelib_InterfaceMethodTypeDescription * >( -+ member)->pReturnTypeRef)); -+ break; -+ -+ default: -+ OSL_ASSERT(false); -+ break; -+ } -+ TYPELIB_DANGER_RELEASE(member); -+ } -+ return code; -+} -+ -+/* vi:set tabstop=4 shiftwidth=4 expandtab: */ ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc64/except.cxx -@@ -0,0 +1,283 @@ -+/************************************************************** -+ * -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, -+ * software distributed under the License is distributed on an -+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+ * KIND, either express or implied. See the License for the -+ * specific language governing permissions and limitations -+ * under the License. -+ * -+ *************************************************************/ -+ -+ -+ -+// MARKER(update_precomp.py): autogen include statement, do not remove -+#include "precompiled_bridges.hxx" -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include "share.hxx" -+ -+ -+using namespace ::std; -+using namespace ::osl; -+using namespace ::rtl; -+using namespace ::com::sun::star::uno; -+using namespace ::__cxxabiv1; -+ -+ -+namespace CPPU_CURRENT_NAMESPACE -+{ -+ -+void dummy_can_throw_anything( char const * ) -+{ -+} -+ -+//================================================================================================== -+static OUString toUNOname( char const * p ) SAL_THROW( () ) -+{ -+#if OSL_DEBUG_LEVEL > 1 -+ char const * start = p; -+#endif -+ -+ // example: N3com3sun4star4lang24IllegalArgumentExceptionE -+ -+ OUStringBuffer buf( 64 ); -+ OSL_ASSERT( 'N' == *p ); -+ ++p; // skip N -+ -+ while ('E' != *p) -+ { -+ // read chars count -+ long n = (*p++ - '0'); -+ while ('0' <= *p && '9' >= *p) -+ { -+ n *= 10; -+ n += (*p++ - '0'); -+ } -+ buf.appendAscii( p, n ); -+ p += n; -+ if ('E' != *p) -+ buf.append( (sal_Unicode)'.' ); -+ } -+ -+#if OSL_DEBUG_LEVEL > 1 -+ OUString ret( buf.makeStringAndClear() ); -+ OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) ); -+ fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() ); -+ return ret; -+#else -+ return buf.makeStringAndClear(); -+#endif -+} -+ -+//================================================================================================== -+class RTTI -+{ -+ typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map; -+ -+ Mutex m_mutex; -+ t_rtti_map m_rttis; -+ t_rtti_map m_generatedRttis; -+ -+ void * m_hApp; -+ -+public: -+ RTTI() SAL_THROW( () ); -+ ~RTTI() SAL_THROW( () ); -+ -+ type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () ); -+}; -+//__________________________________________________________________________________________________ -+RTTI::RTTI() SAL_THROW( () ) -+ : m_hApp( dlopen( 0, RTLD_LAZY ) ) -+{ -+} -+//__________________________________________________________________________________________________ -+RTTI::~RTTI() SAL_THROW( () ) -+{ -+ dlclose( m_hApp ); -+} -+ -+//__________________________________________________________________________________________________ -+type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () ) -+{ -+ type_info * rtti; -+ -+ OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName; -+ -+ MutexGuard guard( m_mutex ); -+ t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) ); -+ if (iRttiFind == m_rttis.end()) -+ { -+ // RTTI symbol -+ OStringBuffer buf( 64 ); -+ buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") ); -+ sal_Int32 index = 0; -+ do -+ { -+ OUString token( unoName.getToken( 0, '.', index ) ); -+ buf.append( token.getLength() ); -+ OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) ); -+ buf.append( c_token ); -+ } -+ while (index >= 0); -+ buf.append( 'E' ); -+ -+ OString symName( buf.makeStringAndClear() ); -+ rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); -+ -+ if (rtti) -+ { -+ pair< t_rtti_map::iterator, bool > insertion( -+ m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); -+ OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" ); -+ } -+ else -+ { -+ // try to lookup the symbol in the generated rtti map -+ t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) ); -+ if (iFind == m_generatedRttis.end()) -+ { -+ // we must generate it ! -+ // symbol and rtti-name is nearly identical, -+ // the symbol is prefixed with _ZTI -+ char const * rttiName = symName.getStr() +4; -+#if OSL_DEBUG_LEVEL > 1 -+ fprintf( stderr,"generated rtti for %s\n", rttiName ); -+#endif -+ if (pTypeDescr->pBaseTypeDescription) -+ { -+ // ensure availability of base -+ type_info * base_rtti = getRTTI( -+ (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription ); -+ rtti = new __si_class_type_info( -+ strdup( rttiName ), (__class_type_info *)base_rtti ); -+ } -+ else -+ { -+ // this class has no base class -+ rtti = new __class_type_info( strdup( rttiName ) ); -+ } -+ -+ pair< t_rtti_map::iterator, bool > insertion( -+ m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) ); -+ OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" ); -+ } -+ else // taking already generated rtti -+ { -+ rtti = iFind->second; -+ } -+ } -+ } -+ else -+ { -+ rtti = iRttiFind->second; -+ } -+ -+ return rtti; -+} -+ -+//-------------------------------------------------------------------------------------------------- -+static void deleteException( void * pExc ) -+{ -+ __cxa_exception const * header = ((__cxa_exception const *)pExc - 1); -+ typelib_TypeDescription * pTD = 0; -+ OUString unoName( toUNOname( header->exceptionType->name() ) ); -+ ::typelib_typedescription_getByName( &pTD, unoName.pData ); -+ OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" ); -+ if (pTD) -+ { -+ ::uno_destructData( pExc, pTD, cpp_release ); -+ ::typelib_typedescription_release( pTD ); -+ } -+} -+ -+//================================================================================================== -+void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ) -+{ -+ void * pCppExc; -+ type_info * rtti; -+ -+ { -+ // construct cpp exception object -+ typelib_TypeDescription * pTypeDescr = 0; -+ TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType ); -+ OSL_ASSERT( pTypeDescr ); -+ if (! pTypeDescr) -+ terminate(); -+ -+ pCppExc = __cxa_allocate_exception( pTypeDescr->nSize ); -+ ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp ); -+ -+ // destruct uno exception -+ ::uno_any_destruct( pUnoExc, 0 ); -+ // avoiding locked counts -+ static RTTI * s_rtti = 0; -+ if (! s_rtti) -+ { -+ MutexGuard guard( Mutex::getGlobalMutex() ); -+ if (! s_rtti) -+ { -+#ifdef LEAK_STATIC_DATA -+ s_rtti = new RTTI(); -+#else -+ static RTTI rtti_data; -+ s_rtti = &rtti_data; -+#endif -+ } -+ } -+ rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr ); -+ TYPELIB_DANGER_RELEASE( pTypeDescr ); -+ OSL_ENSURE( rtti, "### no rtti for throwing exception!" ); -+ if (! rtti) -+ terminate(); -+ } -+ -+ __cxa_throw( pCppExc, rtti, deleteException ); -+} -+ -+//================================================================================================== -+void fillUnoException( __cxa_exception * header, uno_Any * pExc, uno_Mapping * pCpp2Uno ) -+{ -+ OSL_ENSURE( header, "### no exception header!!!" ); -+ if (! header) -+ terminate(); -+ -+ typelib_TypeDescription * pExcTypeDescr = 0; -+ OUString unoName( toUNOname( header->exceptionType->name() ) ); -+ ::typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData ); -+ OSL_ENSURE( pExcTypeDescr, "### can not get type description for exception!!!" ); -+ if (! pExcTypeDescr) -+ terminate(); -+ -+ // construct uno exception any -+ ::uno_any_constructAndConvert( pExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno ); -+ ::typelib_typedescription_release( pExcTypeDescr ); -+} -+ -+} -+ ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc64/makefile.mk -@@ -0,0 +1,75 @@ -+#************************************************************** -+# -+# Licensed to the Apache Software Foundation (ASF) under one -+# or more contributor license agreements. See the NOTICE file -+# distributed with this work for additional information -+# regarding copyright ownership. The ASF licenses this file -+# to you under the Apache License, Version 2.0 (the -+# "License"); you may not use this file except in compliance -+# with the License. You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, -+# software distributed under the License is distributed on an -+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+# KIND, either express or implied. See the License for the -+# specific language governing permissions and limitations -+# under the License. -+# -+#************************************************************** -+ -+ -+ -+PRJ=..$/..$/.. -+ -+PRJNAME=bridges -+TARGET=gcc3_uno -+LIBTARGET=no -+ENABLE_EXCEPTIONS=TRUE -+ -+# --- Settings ----------------------------------------------------- -+ -+.INCLUDE : settings.mk -+ -+# --- Files -------------------------------------------------------- -+ -+.IF "$(COM)$(OS)$(CPU)$(COMNAME)$(CPUNAME)" == "GCCFREEBSDPgcc3POWERPC64" -+ -+.IF "$(cppu_no_leak)" == "" -+CFLAGS += -DLEAK_STATIC_DATA -+.ENDIF -+ -+# In case someone enabled the non-standard -fomit-frame-pointer which does not -+# work with the .cxx sources in this directory: -+CFLAGSCXX += -fno-omit-frame-pointer -+ -+NOOPTFILES= \ -+ $(SLO)$/uno2cpp.obj \ -+ $(SLO)$/cpp2uno.obj -+ -+CFLAGSNOOPT=-O0 -+ -+SLOFILES= \ -+ $(SLO)$/except.obj \ -+ $(SLO)$/cpp2uno.obj \ -+ $(SLO)$/uno2cpp.obj -+ -+SHL1TARGET= $(TARGET) -+ -+SHL1DEF=$(MISC)$/$(SHL1TARGET).def -+SHL1IMPLIB=i$(TARGET) -+SHL1VERSIONMAP=..$/..$/bridge_exports.map -+ -+SHL1OBJS= $(SLOFILES) -+SHL1LIBS = $(SLB)$/cpp_uno_shared.lib -+ -+SHL1STDLIBS= \ -+ $(CPPULIB) \ -+ $(SALLIB) -+ -+.ENDIF -+ -+# --- Targets ------------------------------------------------------ -+ -+.INCLUDE : target.mk ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc64/share.hxx -@@ -0,0 +1,92 @@ -+/************************************************************** -+ * -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, -+ * software distributed under the License is distributed on an -+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+ * KIND, either express or implied. See the License for the -+ * specific language governing permissions and limitations -+ * under the License. -+ * -+ *************************************************************/ -+ -+ -+ -+#include "uno/mapping.h" -+ -+#include -+#include -+#include -+ -+namespace CPPU_CURRENT_NAMESPACE -+{ -+ -+ void dummy_can_throw_anything( char const * ); -+ -+ -+// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h -+ -+struct _Unwind_Exception -+{ -+ unsigned exception_class __attribute__((__mode__(__DI__))); -+ void * exception_cleanup; -+ unsigned private_1 __attribute__((__mode__(__word__))); -+ unsigned private_2 __attribute__((__mode__(__word__))); -+} __attribute__((__aligned__)); -+ -+struct __cxa_exception -+{ -+ ::std::type_info *exceptionType; -+ void (*exceptionDestructor)(void *); -+ -+ ::std::unexpected_handler unexpectedHandler; -+ ::std::terminate_handler terminateHandler; -+ -+ __cxa_exception *nextException; -+ -+ int handlerCount; -+ -+ int handlerSwitchValue; -+ const unsigned char *actionRecord; -+ const unsigned char *languageSpecificData; -+ void *catchTemp; -+ void *adjustedPtr; -+ -+ _Unwind_Exception unwindHeader; -+}; -+ -+extern "C" void *__cxa_allocate_exception( -+ std::size_t thrown_size ) throw(); -+extern "C" void __cxa_throw ( -+ void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn)); -+ -+struct __cxa_eh_globals -+{ -+ __cxa_exception *caughtExceptions; -+ unsigned int uncaughtExceptions; -+}; -+extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); -+ -+// ----- -+ -+//================================================================================================== -+void raiseException( -+ uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); -+//================================================================================================== -+void fillUnoException( -+ __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); -+} -+ -+namespace ppc64 -+{ -+ enum ppclimits { MAX_GPR_REGS = 8, MAX_SSE_REGS = 13 }; -+} ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ bridges/source/cpp_uno/gcc3_freebsd_powerpc64/uno2cpp.cxx -@@ -0,0 +1,596 @@ -+/************************************************************** -+ * -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, -+ * software distributed under the License is distributed on an -+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+ * KIND, either express or implied. See the License for the -+ * specific language governing permissions and limitations -+ * under the License. -+ * -+ *************************************************************/ -+ -+ -+ -+// MARKER(update_precomp.py): autogen include statement, do not remove -+#include "precompiled_bridges.hxx" -+ -+#include -+ -+#include -+#include -+ -+#include "bridges/cpp_uno/shared/bridge.hxx" -+#include "bridges/cpp_uno/shared/types.hxx" -+#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx" -+#include "bridges/cpp_uno/shared/vtables.hxx" -+ -+#include "share.hxx" -+ -+#include -+#include -+ -+ -+using namespace ::rtl; -+using namespace ::com::sun::star::uno; -+ -+void MapReturn(long r3, double dret, typelib_TypeClass eTypeClass, void *pRegisterReturn) -+{ -+ switch (eTypeClass) -+ { -+ case typelib_TypeClass_HYPER: -+ case typelib_TypeClass_UNSIGNED_HYPER: -+ *reinterpret_cast( pRegisterReturn ) = r3; -+ break; -+ case typelib_TypeClass_LONG: -+ case typelib_TypeClass_UNSIGNED_LONG: -+ case typelib_TypeClass_ENUM: -+ *reinterpret_cast( pRegisterReturn ) = r3; -+ break; -+ case typelib_TypeClass_CHAR: -+ case typelib_TypeClass_SHORT: -+ case typelib_TypeClass_UNSIGNED_SHORT: -+ *reinterpret_cast( pRegisterReturn ) = (unsigned short)r3; -+ break; -+ case typelib_TypeClass_BOOLEAN: -+ case typelib_TypeClass_BYTE: -+ *reinterpret_cast( pRegisterReturn ) = (unsigned char)r3; -+ break; -+ case typelib_TypeClass_FLOAT: -+ *reinterpret_cast( pRegisterReturn ) = dret; -+ break; -+ case typelib_TypeClass_DOUBLE: -+ *reinterpret_cast( pRegisterReturn ) = dret; -+ break; -+ default: -+ break; -+ } -+} -+ -+namespace -+{ -+//================================================================================================== -+static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex, -+ void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr, -+ sal_uInt64 *pStack, sal_uInt32 nStack, -+ sal_uInt64 *pGPR, sal_uInt32 nGPR, -+ double *pFPR, sal_uInt32 nFPR) -+{ -+ // Stack, if used, must be 16-bytes aligned -+ if ( nStack ) -+ nStack = ( nStack + 1 ) & ~1; -+ -+ // Should not happen, but... -+ if ( nFPR > ppc64::MAX_SSE_REGS ) -+ nFPR = ppc64::MAX_SSE_REGS; -+ if ( nGPR > ppc64::MAX_GPR_REGS ) -+ nGPR = ppc64::MAX_GPR_REGS; -+ -+#ifdef CMC_DEBUG -+ // Let's figure out what is really going on here -+ { -+ fprintf( stderr, "= callVirtualMethod() =\nGPR's (%d): ", nGPR ); -+ for ( int i = 0; i < nGPR; ++i ) -+ fprintf( stderr, "0x%lx, ", pGPR[i] ); -+ fprintf( stderr, "\nFPR's (%d): ", nFPR ); -+ for ( int i = 0; i < nFPR; ++i ) -+ fprintf( stderr, "0x%lx (%f), ", pFPR[i], pFPR[i] ); -+ fprintf( stderr, "\nStack (%d): ", nStack ); -+ for ( int i = 0; i < nStack; ++i ) -+ fprintf( stderr, "0x%lx, ", pStack[i] ); -+ fprintf( stderr, "\n" ); -+ } -+#endif -+ -+ // Load parameters to stack, if necessary -+ sal_uInt64 *stack = (sal_uInt64 *) __builtin_alloca( nStack * 8 ); -+ memcpy( stack, pStack, nStack * 8 ); -+ -+ // Get pointer to method -+ sal_uInt64 pMethod = *((sal_uInt64 *)pThis); -+ pMethod += 8 * nVtableIndex; -+ pMethod = *((sal_uInt64 *)pMethod); -+ -+ typedef void (* FunctionCall )( sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64 ); -+ FunctionCall pFunc = (FunctionCall)pMethod; -+ -+ volatile double dret; -+ -+ // fill registers -+ __asm__ __volatile__ ( -+ "ld 3, 0(%0)\n\t" -+ "ld 4, 8(%0)\n\t" -+ "ld 5, 16(%0)\n\t" -+ "ld 6, 24(%0)\n\t" -+ "ld 7, 32(%0)\n\t" -+ "ld 8, 40(%0)\n\t" -+ "ld 9, 48(%0)\n\t" -+ "ld 10, 56(%0)\n\t" -+ "lfd 1, 0(%1)\n\t" -+ "lfd 2, 8(%1)\n\t" -+ "lfd 3, 16(%1)\n\t" -+ "lfd 4, 24(%1)\n\t" -+ "lfd 5, 32(%1)\n\t" -+ "lfd 6, 40(%1)\n\t" -+ "lfd 7, 48(%1)\n\t" -+ "lfd 8, 56(%1)\n\t" -+ "lfd 9, 64(%1)\n\t" -+ "lfd 10, 72(%1)\n\t" -+ "lfd 11, 80(%1)\n\t" -+ "lfd 12, 88(%1)\n\t" -+ "lfd 13, 96(%1)\n\t" -+ : : "r" (pGPR), "r" (pFPR) -+ : "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", -+ "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7", "fr8", "fr9", -+ "fr10", "fr11", "fr12", "fr13" -+ ); -+ -+ // tell gcc that r3 to r11 are not available to it for doing the TOC and exception munge on the func call -+ register sal_uInt64 r3 asm("r3"); -+ register sal_uInt64 r4 asm("r4"); -+ register sal_uInt64 r5 asm("r5"); -+ register sal_uInt64 r6 asm("r6"); -+ register sal_uInt64 r7 asm("r7"); -+ register sal_uInt64 r8 asm("r8"); -+ register sal_uInt64 r9 asm("r9"); -+ register sal_uInt64 r10 asm("r10"); -+ register sal_uInt64 r11 asm("r11"); -+ -+ (*pFunc)(r3, r4, r5, r6, r7, r8, r9, r10); -+ -+ // get return value -+ __asm__ __volatile__ ( -+ "mr %1, 3\n\t" -+ "mr %2, 4\n\t" -+ "fmr %0, 1\n\t" -+ : "=f" (dret), "=r" (r3), "=r" (r4) : ); -+ -+ MapReturn(r3, dret, pReturnTypeDescr->eTypeClass, pRegisterReturn); -+} -+ -+// Macros for easier insertion of values to registers or stack -+// pSV - pointer to the source -+// nr - order of the value [will be increased if stored to register] -+// pFPR, pGPR - pointer to the registers -+// pDS - pointer to the stack [will be increased if stored here] -+ -+// The value in %xmm register is already prepared to be retrieved as a float, -+// thus we treat float and double the same -+#define INSERT_FLOAT( pSV, nr, pFPR, pDS, bOverflow ) \ -+ if ( nr < ppc64::MAX_SSE_REGS ) \ -+ pFPR[nr++] = *reinterpret_cast( pSV ); \ -+ else \ -+ bOverFlow = true; \ -+ if (bOverFlow) \ -+ *pDS++ = *reinterpret_cast( pSV ); // verbatim! -+ -+#define INSERT_DOUBLE( pSV, nr, pFPR, pDS, bOverflow ) \ -+ if ( nr < ppc64::MAX_SSE_REGS ) \ -+ pFPR[nr++] = *reinterpret_cast( pSV ); \ -+ else \ -+ bOverFlow = true; \ -+ if (bOverFlow) \ -+ *pDS++ = *reinterpret_cast( pSV ); // verbatim! -+ -+#define INSERT_INT64( pSV, nr, pGPR, pDS, bOverflow ) \ -+ if ( nr < ppc64::MAX_GPR_REGS ) \ -+ pGPR[nr++] = *reinterpret_cast( pSV ); \ -+ else \ -+ bOverFlow = true; \ -+ if (bOverFlow) \ -+ *pDS++ = *reinterpret_cast( pSV ); -+ -+#define INSERT_INT32( pSV, nr, pGPR, pDS, bOverflow ) \ -+ if ( nr < ppc64::MAX_GPR_REGS ) \ -+ pGPR[nr++] = *reinterpret_cast( pSV ); \ -+ else \ -+ bOverFlow = true; \ -+ if (bOverFlow) \ -+ *pDS++ = *reinterpret_cast( pSV ); -+ -+#define INSERT_INT16( pSV, nr, pGPR, pDS, bOverflow ) \ -+ if ( nr < ppc64::MAX_GPR_REGS ) \ -+ pGPR[nr++] = *reinterpret_cast( pSV ); \ -+ else \ -+ bOverFlow = true; \ -+ if (bOverFlow) \ -+ *pDS++ = *reinterpret_cast( pSV ); -+ -+#define INSERT_INT8( pSV, nr, pGPR, pDS, bOverflow ) \ -+ if ( nr < ppc64::MAX_GPR_REGS ) \ -+ pGPR[nr++] = *reinterpret_cast( pSV ); \ -+ else \ -+ bOverFlow = true; \ -+ if (bOverFlow) \ -+ *pDS++ = *reinterpret_cast( pSV ); -+ -+//================================================================================================== -+static void cpp_call( -+ bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, -+ bridges::cpp_uno::shared::VtableSlot aVtableSlot, -+ typelib_TypeDescriptionReference * pReturnTypeRef, -+ sal_Int32 nParams, typelib_MethodParameter * pParams, -+ void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc ) -+{ -+ // max space for: [complex ret ptr], values|ptr ... -+ sal_uInt64 * pStack = (sal_uInt64 *)alloca( (nParams+3) * sizeof(sal_Int64) ); -+ sal_uInt64 * pStackStart = pStack; -+ -+ sal_uInt64 pGPR[ppc64::MAX_GPR_REGS]; -+ sal_uInt32 nGPR = 0; -+ -+ double pFPR[ppc64::MAX_SSE_REGS]; -+ sal_uInt32 nFPR = 0; -+ -+ // return -+ typelib_TypeDescription * pReturnTypeDescr = 0; -+ TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); -+ OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" ); -+ -+ void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion -+ -+ bool bOverFlow = false; -+ -+ if (pReturnTypeDescr) -+ { -+#ifdef CMC_DEBUG -+ fprintf(stderr, "return type is %d\n", pReturnTypeDescr->eTypeClass); -+#endif -+ if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) -+ { -+ pCppReturn = pUnoReturn; // direct way for simple types -+#ifdef CMC_DEBUG -+ fprintf(stderr, "simple return\n"); -+#endif -+ } -+ else -+ { -+ // complex return via ptr -+ pCppReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) -+ ? alloca( pReturnTypeDescr->nSize ) : pUnoReturn); -+#ifdef CMC_DEBUG -+ fprintf(stderr, "pCppReturn/pUnoReturn is %lx/%lx", pCppReturn, pUnoReturn); -+#endif -+ INSERT_INT64( &pCppReturn, nGPR, pGPR, pStack, bOverFlow ); -+ } -+ } -+ // push "this" pointer -+ void * pAdjustedThisPtr = reinterpret_cast< void ** >( pThis->getCppI() ) + aVtableSlot.offset; -+#ifdef CMC_DEBUG -+ fprintf(stderr, "this pointer is %p\n", pAdjustedThisPtr); -+#endif -+ INSERT_INT64( &pAdjustedThisPtr, nGPR, pGPR, pStack, bOverFlow ); -+ -+ // Args -+ void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); -+ // indizes of values this have to be converted (interface conversion cpp<=>uno) -+ sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams); -+ // type descriptions for reconversions -+ typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams)); -+ -+ sal_Int32 nTempIndizes = 0; -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "n params is %d\n", nParams); -+#endif -+ -+ for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) -+ { -+ const typelib_MethodParameter & rParam = pParams[nPos]; -+ typelib_TypeDescription * pParamTypeDescr = 0; -+ TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); -+ -+#ifdef CMC_DEBUG -+ fprintf(stderr, "param %d is %d %d %d\n", nPos, rParam.bOut, bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ), -+ pParamTypeDescr->eTypeClass); -+#endif -+ -+ if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) -+ { -+// uno_copyAndConvertData( pCppArgs[nPos] = alloca( 8 ), pUnoArgs[nPos], pParamTypeDescr, -+ uno_copyAndConvertData( pCppArgs[nPos] = pStack, pUnoArgs[nPos], pParamTypeDescr, -+ pThis->getBridge()->getUno2Cpp() ); -+ switch (pParamTypeDescr->eTypeClass) -+ { -+ case typelib_TypeClass_HYPER: -+ case typelib_TypeClass_UNSIGNED_HYPER: -+#ifdef CMC_DEBUG -+ fprintf(stderr, "hyper is %lx\n", pCppArgs[nPos]); -+#endif -+ INSERT_INT64( pCppArgs[nPos], nGPR, pGPR, pStack, bOverFlow ); -+ break; -+ case typelib_TypeClass_LONG: -+ case typelib_TypeClass_UNSIGNED_LONG: -+ case typelib_TypeClass_ENUM: -+#ifdef CMC_DEBUG -+ fprintf(stderr, "long is %x\n", pCppArgs[nPos]); -+#endif -+ INSERT_INT32( pCppArgs[nPos], nGPR, pGPR, pStack, bOverFlow ); -+ break; -+ case typelib_TypeClass_SHORT: -+ case typelib_TypeClass_CHAR: -+ case typelib_TypeClass_UNSIGNED_SHORT: -+ INSERT_INT16( pCppArgs[nPos], nGPR, pGPR, pStack, bOverFlow ); -+ break; -+ case typelib_TypeClass_BOOLEAN: -+ case typelib_TypeClass_BYTE: -+ INSERT_INT8( pCppArgs[nPos], nGPR, pGPR, pStack, bOverFlow ); -+ break; -+ case typelib_TypeClass_FLOAT: -+ INSERT_FLOAT( pCppArgs[nPos], nFPR, pFPR, pStack, bOverFlow ); -+ break; -+ case typelib_TypeClass_DOUBLE: -+ INSERT_DOUBLE( pCppArgs[nPos], nFPR, pFPR, pStack, bOverFlow ); -+ break; -+ } -+ -+ // no longer needed -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ -+ } -+ else // ptr to complex value | ref -+ { -+#ifdef CMC_DEBUG -+ fprintf(stderr, "complex type again %d\n", rParam.bIn); -+#endif -+ if (! rParam.bIn) // is pure out -+ { -+#ifdef CMC_DEBUG -+ fprintf(stderr, "complex size is %d\n", pParamTypeDescr->nSize ); -+#endif -+ // cpp out is constructed mem, uno out is not! -+ uno_constructData( -+ pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), -+ pParamTypeDescr ); -+ pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call -+ // will be released at reconversion -+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; -+ } -+ // is in/inout -+ else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr )) -+ { -+#ifdef CMC_DEBUG -+ fprintf(stderr, "this one\n"); -+#endif -+ uno_copyAndConvertData( -+ pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ), -+ pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() ); -+ -+ pTempIndizes[nTempIndizes] = nPos; // has to be reconverted -+ // will be released at reconversion -+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr; -+ } -+ else // direct way -+ { -+#ifdef CMC_DEBUG -+ fprintf(stderr, "that one, passing %lx through\n", pUnoArgs[nPos]); -+#endif -+ pCppArgs[nPos] = pUnoArgs[nPos]; -+ // no longer needed -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ INSERT_INT64( &(pCppArgs[nPos]), nGPR, pGPR, pStack, bOverFlow ); -+ } -+ } -+ -+ try -+ { -+ callVirtualMethod( -+ pAdjustedThisPtr, aVtableSlot.index, -+ pCppReturn, pReturnTypeDescr, -+ pStackStart, ( pStack - pStackStart ), -+ pGPR, nGPR, -+ pFPR, nFPR ); -+ // NO exception occurred... -+ *ppUnoExc = 0; -+ -+ // reconvert temporary params -+ for ( ; nTempIndizes--; ) -+ { -+ sal_Int32 nIndex = pTempIndizes[nTempIndizes]; -+ typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes]; -+ -+ if (pParams[nIndex].bIn) -+ { -+ if (pParams[nIndex].bOut) // inout -+ { -+ uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value -+ uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, -+ pThis->getBridge()->getCpp2Uno() ); -+ } -+ } -+ else // pure out -+ { -+ uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr, -+ pThis->getBridge()->getCpp2Uno() ); -+ } -+ // destroy temp cpp param => cpp: every param was constructed -+ uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); -+ -+ TYPELIB_DANGER_RELEASE( pParamTypeDescr ); -+ } -+ // return value -+ if (pCppReturn && pUnoReturn != pCppReturn) -+ { -+ uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr, -+ pThis->getBridge()->getCpp2Uno() ); -+ uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release ); -+ } -+ } -+ catch (...) -+ { -+ // fill uno exception -+ fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions, -+ *ppUnoExc, pThis->getBridge()->getCpp2Uno() ); -+ -+ // temporary params -+ for ( ; nTempIndizes--; ) -+ { -+ sal_Int32 nIndex = pTempIndizes[nTempIndizes]; -+ // destroy temp cpp param => cpp: every param was constructed -+ uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release ); -+ TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] ); -+ } -+ // return type -+ if (pReturnTypeDescr) -+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); -+ } -+} -+ -+} -+ -+namespace bridges { namespace cpp_uno { namespace shared { -+ -+void unoInterfaceProxyDispatch( -+ uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr, -+ void * pReturn, void * pArgs[], uno_Any ** ppException ) -+{ -+ // is my surrogate -+ bridges::cpp_uno::shared::UnoInterfaceProxy * pThis -+ = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy *> (pUnoI); -+ typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr; -+ -+ switch (pMemberDescr->eTypeClass) -+ { -+ case typelib_TypeClass_INTERFACE_ATTRIBUTE: -+ { -+ -+ VtableSlot aVtableSlot( -+ getVtableSlot( -+ reinterpret_cast< -+ typelib_InterfaceAttributeTypeDescription const * >( -+ pMemberDescr))); -+ -+ if (pReturn) -+ { -+ // dependent dispatch -+ cpp_call( -+ pThis, aVtableSlot, -+ ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef, -+ 0, 0, // no params -+ pReturn, pArgs, ppException ); -+ } -+ else -+ { -+ // is SET -+ typelib_MethodParameter aParam; -+ aParam.pTypeRef = -+ ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef; -+ aParam.bIn = sal_True; -+ aParam.bOut = sal_False; -+ -+ typelib_TypeDescriptionReference * pReturnTypeRef = 0; -+ OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") ); -+ typelib_typedescriptionreference_new( -+ &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData ); -+ -+ // dependent dispatch -+ aVtableSlot.index += 1; //get then set method -+ cpp_call( -+ pThis, aVtableSlot, -+ pReturnTypeRef, -+ 1, &aParam, -+ pReturn, pArgs, ppException ); -+ -+ typelib_typedescriptionreference_release( pReturnTypeRef ); -+ } -+ -+ break; -+ } -+ case typelib_TypeClass_INTERFACE_METHOD: -+ { -+ -+ VtableSlot aVtableSlot( -+ getVtableSlot( -+ reinterpret_cast< -+ typelib_InterfaceMethodTypeDescription const * >( -+ pMemberDescr))); -+ switch (aVtableSlot.index) -+ { -+ // standard calls -+ case 1: // acquire uno interface -+ (*pUnoI->acquire)( pUnoI ); -+ *ppException = 0; -+ break; -+ case 2: // release uno interface -+ (*pUnoI->release)( pUnoI ); -+ *ppException = 0; -+ break; -+ case 0: // queryInterface() opt -+ { -+ typelib_TypeDescription * pTD = 0; -+ TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() ); -+ if (pTD) -+ { -+ uno_Interface * pInterface = 0; -+ (*pThis->pBridge->getUnoEnv()->getRegisteredInterface)( -+ pThis->pBridge->getUnoEnv(), -+ (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD ); -+ -+ if (pInterface) -+ { -+ ::uno_any_construct( -+ reinterpret_cast< uno_Any * >( pReturn ), -+ &pInterface, pTD, 0 ); -+ (*pInterface->release)( pInterface ); -+ TYPELIB_DANGER_RELEASE( pTD ); -+ *ppException = 0; -+ break; -+ } -+ TYPELIB_DANGER_RELEASE( pTD ); -+ } -+ } // else perform queryInterface() -+ default: -+ // dependent dispatch -+ cpp_call( -+ pThis, aVtableSlot, -+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef, -+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams, -+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams, -+ pReturn, pArgs, ppException ); -+ } -+ break; -+ } -+ default: -+ { -+ ::com::sun::star::uno::RuntimeException aExc( -+ OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ), -+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() ); -+ -+ Type const & rExcType = ::getCppuType( &aExc ); -+ // binary identical null reference -+ ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 ); -+ } -+ } -+} -+ -+} } } ---- desktop/source/deployment/misc/dp_platform.cxx.orig -+++ desktop/source/deployment/misc/dp_platform.cxx -@@ -56,6 +56,8 @@ - #define PLATFORM_SOLARIS_SPARC "solaris_sparc" - #define PLATFORM_SOLARIS_SPARC64 "solaris_sparc64" - #define PLATFORM_SOLARIS_X86 "solaris_x86" -+#define PLATFORM_FREEBSD_POWERPC "freebsd_powerpc" -+#define PLATFORM_FREEBSD_POWERPC64 "freebsd_powerpc64" - #define PLATFORM_FREEBSD_X86 "freebsd_x86" - #define PLATFORM_FREEBSD_X86_64 "freebsd_x86_64" - #define PLATFORM_MACOSX_X86 "macosx_x86" -@@ -164,6 +166,10 @@ - ret = checkOSandCPU(OUSTR("Solaris"), OUSTR("SPARC64")); - else if (token.equals(OUSTR(PLATFORM_SOLARIS_X86))) - ret = checkOSandCPU(OUSTR("Solaris"), OUSTR("x86")); -+ else if (token.equals(OUSTR(PLATFORM_FREEBSD_POWERPC))) -+ ret = checkOSandCPU(OUSTR("FreeBSD"), OUSTR("PowerPC")); -+ else if (token.equals(OUSTR(PLATFORM_FREEBSD_POWERPC64))) -+ ret = checkOSandCPU(OUSTR("FreeBSD"), OUSTR("PowerPC64")); - else if (token.equals(OUSTR(PLATFORM_FREEBSD_X86))) - ret = checkOSandCPU(OUSTR("FreeBSD"), OUSTR("x86")); - else if (token.equals(OUSTR(PLATFORM_FREEBSD_X86_64))) ---- odk/settings/platform.mk.orig -+++ odk/settings/platform.mk -@@ -34,6 +34,9 @@ - ifeq "$(UNOPKG_PLATFORM)" "Linux_PowerPC" - EXTENSION_PLATFORM=linux_powerpc - else -+ ifeq "$(UNOPKG_PLATFORM)" "FreeBSD_PowerPC64" -+ EXTENSION_PLATFORM=freebsd_powerpc64 -+ else - ifeq "$(UNOPKG_PLATFORM)" "Linux_x86" - EXTENSION_PLATFORM=linux_x86 - else ---- odk/settings/settings.mk.orig -+++ odk/settings/settings.mk -@@ -507,12 +507,19 @@ - else - UNOPKG_PLATFORM=FreeBSD_x86 - endif -+ifeq "$(PROCTYPE)" "powerpc" -+UNOPKG_PLATFORM=FreeBSD_ppc -+endif - endif - - ifeq "$(PROCTYPE)" "x86_64" - JAVA_PROC_TYPE=amd64 - else - JAVA_PROC_TYPE=i386 -+endif -+ -+ifeq "$(PROCTYPE)" "powerpc64" -+JAVA_PROC_TYPE=ppc64 - endif - - ifeq (kfreebsd,$(findstring kfreebsd,$(PLATFORM))) ---- sal/inc/osl/endian.h.orig -+++ sal/inc/osl/endian.h -@@ -73,15 +73,13 @@ - #ifdef FREEBSD - # include - # include --#if __FreeBSD_version < 500000 --# if BYTE_ORDER == LITTLE_ENDIAN --# define _LITTLE_ENDIAN --# elif BYTE_ORDER == BIG_ENDIAN --# define _BIG_ENDIAN --# elif BYTE_ORDER == PDP_ENDIAN --# define _PDP_ENDIAN --# endif --#endif -+# if BYTE_ORDER == LITTLE_ENDIAN -+# undef _BIG_ENDIAN -+# elif BYTE_ORDER == BIG_ENDIAN -+# undef _LITTLE_ENDIAN -+# elif BYTE_ORDER == PDP_ENDIAN -+# define _PDP_ENDIAN -+# endif - #endif - - #ifdef SCO ---- sal/osl/unx/system.h.orig -+++ sal/osl/unx/system.h -@@ -39,6 +39,7 @@ - - #include - -+#include - #include - - #include -@@ -176,15 +177,13 @@ - # include - # define IORESOURCE_TRANSFER_BSD - # include --#if __FreeBSD_version < 500000 - # if BYTE_ORDER == LITTLE_ENDIAN --# define _LITTLE_ENDIAN -+# undef _BIG_ENDIAN - # elif BYTE_ORDER == BIG_ENDIAN --# define _BIG_ENDIAN -+# undef _LITTLE_ENDIAN - # elif BYTE_ORDER == PDP_ENDIAN - # define _PDP_ENDIAN - # endif --#endif - # define NO_PTHREAD_RTL - #endif - ---- set_soenv.in -+++ set_soenv.in -@@ -396,6 +396,26 @@ - $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386"; - $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."client"; - $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."native_threads"; -+ } -+ elsif (($platform =~ m/^powerpc64/) && ('@SIZEOF_LONG@' eq '8')) -+ { print "Setting FreeBSD PPC64 specific values... "; -+ $outfile = "FreeBSDPPC64Env.Set"; -+ $CPU = "P"; -+ $CPUNAME = "POWERPC64"; -+ $OUTPATH = "unxfbsdp"; -+ $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc64"; -+ $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc64".$ds."server"; -+ $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc64".$ds."native_threads"; -+ } -+ elsif ($platform =~ m/powerpc/) -+ { print "Setting FreeBSD PPC specific values... "; -+ $outfile = "FreeBSDPPCEnv.Set"; -+ $CPU = "P"; -+ $CPUNAME = "POWERPC"; -+ $OUTPATH = "unxfbsdp"; -+ $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc"; -+ $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."server"; -+ $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."ppc".$ds."native_threads"; - } - else - { print "Unsupported FreeBSD architecture: $platform \n"; ---- solenv/gbuild/platform/freebsd.mk.orig -+++ solenv/gbuild/platform/freebsd.mk -@@ -36,6 +36,10 @@ - CPUNAME := X86_64 - endif - -+ifeq ($(CPU),P) -+CPUNAME := POWERPC64 -+endif -+ - # use CC/CXX if they are nondefaults - ifneq ($(origin CC),default) - gb_CC := $(CC) -@@ -66,6 +70,12 @@ - gb_CPUDEFS := -D$(CPUNAME) - else - gb_CPUDEFS := -DX86 -+endif -+ -+ifeq ($(CPUNAME),POWERPC64) -+gb_CPUDEFS := -D$(CPUNAME) -+else -+gb_CPUDEFS := -DPOWERPC64 - endif - - gb_CFLAGS := \ ---- solenv/inc/libs.mk.orig -+++ solenv/inc/libs.mk -@@ -236,6 +236,9 @@ - NEON3RDLIB=$(SOLARLIBDIR)/libneon.dylib - .ELSE - NEON3RDLIB=-lneon -+.ENDIF -+.IF "$(OS)" == "FREEBSD" && "$(CPUNAME)" == "POWERPC64" -+JPEG3RDLIB=/usr/local/lib/libjpeg.so - .ENDIF - CURLLIB=-lcurl - SFX2LIB=-lsfx$(DLLPOSTFIX) ---- solenv/inc/unx.mk.orig -+++ solenv/inc/unx.mk -@@ -93,6 +93,10 @@ - - .IF "$(COM)$(OS)$(CPU)$(CPUNAME)" == "GCCLINUXPPOWERPC64" - .INCLUDE : unxlngppc64.mk -+.ENDIF -+ -+.IF "$(COM)$(OS)$(CPU)$(CPUNAME)" == "GCCFREEBSDPPOWERPC64" -+.INCLUDE : unxfbsdp.mk - .ENDIF - - .IF "$(COM)$(OS)$(CPU)$(CPUNAME)" == "GCCLINUX3S390" ---- solenv/inc/unxfbsd.mk.orig -+++ solenv/inc/unxfbsd.mk -@@ -36,6 +36,9 @@ - .ENDIF - .IF "$(CPUNAME)" == "X86_64" - .INCLUDE : unxfbsdx.mk -+.ENDIF -+.IF "$(CPUNAME)" == "POWERPC64" -+.INCLUDE : unxfbsdp.mk - .ENDIF - - # filter for supressing verbose messages from linker ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ solenv/inc/unxfbsdp.mk -@@ -0,0 +1,42 @@ -+#************************************************************** -+# -+# Licensed to the Apache Software Foundation (ASF) under one -+# or more contributor license agreements. See the NOTICE file -+# distributed with this work for additional information -+# regarding copyright ownership. The ASF licenses this file -+# to you under the Apache License, Version 2.0 (the -+# "License"); you may not use this file except in compliance -+# with the License. You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, -+# software distributed under the License is distributed on an -+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -+# KIND, either express or implied. See the License for the -+# specific language governing permissions and limitations -+# under the License. -+# -+#************************************************************** -+ -+ -+ -+# -+# FreeBSD/ppc64 specific defines -+# -+ -+DEFAULTOPT=-Os -+PICSWITCH:=-fPIC -+CDEFS+=-DPOWERPC64 -DPOWERPC -DPPC -+CFLAGSCXX+=-mminimal-toc -+ -+# Compiler flags for enabling optimizations -+.IF "$(PRODUCT)"!="" -+CFLAGSOPT=-O2 -fno-strict-aliasing # optimizing for products -+.ELSE # "$(PRODUCT)"!="" -+CFLAGSOPT= # no optimizing for non products -+.ENDIF # "$(PRODUCT)"!="" -+ -+# platform specific identifier for shared libs -+DLLPOSTFIX= -+BUILD64=1 ---- testtools/source/bridgetest/makefile.mk.orig -+++ testtools/source/bridgetest/makefile.mk -@@ -134,7 +134,7 @@ - - runtest : $(DLLDEST)$/uno_types.rdb $(DLLDEST)$/uno_services.rdb makefile.mk \ - $(SHL1TARGETN) $(SHL2TARGETN) $(SHL3TARGETN) --.IF "$(COM)$(OS)$(CPU)" == "GCCMACOSXP" || "$(OS)$(CPU)"=="SOLARISS" -+.IF "$(COM)$(OS)$(CPU)" == "GCCMACOSXP" || "$(OS)$(CPU)"=="SOLARISS" || "$(COM)$(OS)$(CPU)"=="GCCFREEBSDP" - @echo "Mac OSX PPC GCC and Solaris fails this test! likely broken UNO bridge. Fix me." - .ELSE - cd $(DLLDEST) && $(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/uno \ Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-openoffice4_powerpc64 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-openjdk8 =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-openjdk8 (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-openjdk8 (nonexistent) @@ -1,1808 +0,0 @@ ---- javaunohelper/com/sun/star/comp/helper/Bootstrap.java.orig 2014-02-25 08:30:16 UTC -+++ javaunohelper/com/sun/star/comp/helper/Bootstrap.java -@@ -97,6 +97,7 @@ public class Bootstrap { - @param context_entries the hash table contains mappings of entry names (type string) to - context entries (type class ComponentContextEntry). - @return a new context. -+ @throws java.lang.Exception - */ - static public XComponentContext createInitialComponentContext( Hashtable context_entries ) - throws Exception -@@ -148,7 +149,8 @@ public class Bootstrap { - * Bootstraps a servicemanager with the jurt base components registered. - *

- * @return a freshly boostrapped service manager -- * @see com.sun.star.lang.ServiceManager -+ * @see "com.sun.star.lang.ServiceManager" -+ * @throws java.lang.Exception - */ - static public XMultiServiceFactory createSimpleServiceManager() throws Exception - { -@@ -157,10 +159,12 @@ public class Bootstrap { - } - - -- /** Bootstraps the initial component context from a native UNO installation. -- -- @see cppuhelper/defaultBootstrap_InitialComponentContext() -- */ -+ /** -+ * Bootstraps the initial component context from a native UNO installation. -+ *

-+ * @return -+ * @see defaultBootstrap_InitialComponentContext() -+ */ - static public final XComponentContext defaultBootstrap_InitialComponentContext() - throws Exception - { -@@ -173,7 +177,7 @@ public class Bootstrap { - @param bootstrap_parameters - bootstrap parameters (maybe null) - -- @see cppuhelper/defaultBootstrap_InitialComponentContext() -+ @see defaultBootstrap_InitialComponentContext() - */ - static public final XComponentContext defaultBootstrap_InitialComponentContext( - String ini_file, Hashtable bootstrap_parameters ) ---- javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java.orig 2014-02-25 08:30:16 UTC -+++ javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java -@@ -29,7 +29,7 @@ package com.sun.star.comp.helper; - The first one is commonly used for singleton objects of the component - context, that are raised on first-time retrieval of the key. - You have to pass a com.sun.star.lang.XSingleComponentFactory -- or string (=> service name) object for this. -+ or string (=> service name) object for this. -

- */ - public class ComponentContextEntry ---- javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java.orig 2014-02-25 08:30:16 UTC -+++ javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java -@@ -34,9 +34,9 @@ import com.sun.star.registry.XRegistryKe - * The SharedLibraryLoader class provides the functionality of the com.sun.star.loader.SharedLibrary - * service. - *

-- * @see com.sun.star.loader.SharedLibrary -+ * @see "com.sun.star.loader.SharedLibrary" - * @see com.sun.star.comp.servicemanager.ServiceManager -- * @see com.sun.star.lang.ServiceManager -+ * @see "com.sun.star.lang.ServiceManager" - */ - public class SharedLibraryLoader { - /** -@@ -70,9 +70,9 @@ public class SharedLibraryLoader { - * @return the factory for the "com.sun.star.comp.stoc.DLLComponentLoader" component. - * @param smgr the ServiceManager - * @param regKey the root registry key -- * @see com.sun.star.loader.SharedLibrary -- * @see com.sun.star.lang.ServiceManager -- * @see com.sun.star.registry.RegistryKey -+ * @see "com.sun.star.loader.SharedLibrary" -+ * @see "com.sun.star.lang.ServiceManager" -+ * @see "com.sun.star.registry.RegistryKey" - */ - public static XSingleServiceFactory getServiceFactory( - XMultiServiceFactory smgr, -@@ -93,9 +93,9 @@ public class SharedLibraryLoader { - * @param impName the implementation name of the component - * @param smgr the ServiceManager - * @param regKey the root registry key -- * @see com.sun.star.loader.SharedLibrary -- * @see com.sun.star.lang.ServiceManager -- * @see com.sun.star.registry.RegistryKey -+ * @see "com.sun.star.loader.SharedLibrary" -+ * @see "com.sun.star.lang.ServiceManager" -+ * @see "com.sun.star.registry.RegistryKey" - */ - public static XSingleServiceFactory getServiceFactory( - String libName, -@@ -116,9 +116,9 @@ public class SharedLibraryLoader { - * @return true if the registration was successfull - otherwise false - * @param smgr the ServiceManager - * @param regKey the root key under that the component should be registered -- * @see com.sun.star.loader.SharedLibrary -- * @see com.sun.star.lang.ServiceManager -- * @see com.sun.star.registry.RegistryKey -+ * @see "com.sun.star.loader.SharedLibrary" -+ * @see "com.sun.star.lang.ServiceManager" -+ * @see "com.sun.star.registry.RegistryKey" - */ - public static boolean writeRegistryServiceInfo( - com.sun.star.lang.XMultiServiceFactory smgr, -@@ -136,9 +136,9 @@ public class SharedLibraryLoader { - * @param libName name of the shared library - * @param smgr the ServiceManager - * @param regKey the root key under that the component should be registered -- * @see com.sun.star.loader.SharedLibrary -- * @see com.sun.star.lang.ServiceManager -- * @see com.sun.star.registry.RegistryKey -+ * @see "com.sun.star.loader.SharedLibrary" -+ * @see "com.sun.star.lang.ServiceManager" -+ * @see "com.sun.star.registry.RegistryKey" - */ - public static boolean writeRegistryServiceInfo( - String libName, ---- javaunohelper/com/sun/star/lib/uno/helper/Factory.java.orig 2014-02-25 08:30:16 UTC -+++ javaunohelper/com/sun/star/lib/uno/helper/Factory.java -@@ -34,7 +34,8 @@ import com.sun.star.uno.UnoRuntime; - /** Factory helper class supporting com.sun.star.lang.XServiceInfo and - com.sun.star.lang.XSingleComponentFactory. - -- @attention -+ Attention: -+
- This factory implementation does not support lang.XSingleServiceFactory. - */ - public class Factory ---- javaunohelper/com/sun/star/lib/uno/helper/InterfaceContainer.java.orig 2014-02-25 08:30:16 UTC -+++ javaunohelper/com/sun/star/lib/uno/helper/InterfaceContainer.java -@@ -467,6 +467,8 @@ public class InterfaceContainer implemen - /** The iterator keeps a copy of the list. Changes to InterfaceContainer do not - * affect the data of the iterator. Conversly, changes to the iterator are effect - * InterfaceContainer. -+ * -+ * @param index - */ - synchronized public ListIterator listIterator(int index) - { ---- javaunohelper/com/sun/star/lib/uno/helper/PropertySet.java.orig 2014-02-25 08:30:16 UTC -+++ javaunohelper/com/sun/star/lib/uno/helper/PropertySet.java -@@ -122,7 +122,7 @@ XMultiPropertySet - * initialization of the inheriting class (i.e. within the contructor) - * @param name The property's name (Property.Name). - * @param handle The property's handle (Property.Handle). -- * @param Type The property's type (Property.Type). -+ * @param type The property's type (Property.Type). - * @param attributes The property's attributes (Property.Attributes). - * @param id Identifies the property's storage. - */ -@@ -140,8 +140,7 @@ XMultiPropertySet - * Registration has to occur during - * initialization of the inheriting class (i.e. within the contructor). - * @param name The property's name (Property.Name). -- * @param handle The property's handle (Property.Handle). -- * @param Type The property's type (Property.Type). -+ * @param type The property's type (Property.Type). - * @param attributes The property's attributes (Property.Attributes). - * @param id Identifies the property's storage. - */ -@@ -563,11 +562,11 @@ XMultiPropertySet - * {@link #setFastPropertyValue XFastPropertySet.setFastPropertyValue} - * and {@link #setPropertyValues XMultiPropertySet.setPropertyValues}. - * If this method fails, that is, it returns false or throws an exception, then no listeners are notified and the -- * property value, that was intended to be changed, remains untouched.
This method does not have to deal with property attributes, such as -+ * property value, that was intended to be changed, remains untouched.
This method does not have to deal with property attributes, such as - * PropertyAttribute.READONLY or PropertyAttribute.MAYBEVOID. The processing of these attributes occurs -- * in the calling methods.
-+ * in the calling methods.
- * Only if this method returns successfully further processing, such -- * as listener notification and finally the modifiction of the property's value, will occur.
-+ * as listener notification and finally the modifiction of the property's value, will occur.
- * - * The actual modification of a property's value is done by {@link #setPropertyValueNoBroadcast setPropertyValueNoBroadcast} - * which is called subsequent to convertPropertyValue. -@@ -593,10 +592,10 @@ XMultiPropertySet - * Then, no conversion is necessary, since they can hold all possible values. However, if - * the member is an Object and setVal is an Any then the object contained in the any is assigned to - * the member. The extra type information which exists as Type object in the Any will get lost. If this is not -- * intended then use an Any variable rather then an Object.
-+ * intended then use an Any variable rather then an Object.
- * If a member is an Object or Any and the argument setVal is an Object, other than String or array, - * then it is presumed to be an UNO object and queried for XInterface. If successful, the out-param newVal -- * returns the XInterface.
-+ * returns the XInterface.
- * If a member is an UNO interface, then setVal is queried for this interface and the result is returned. - * If setVal is null then newVal will be null too after return. - *

-@@ -793,7 +792,7 @@ XMultiPropertySet - * If a property has the READONLY attribute set, and one of the setter methods, such as setPropertyValue, has been - * called, then this method is not going to be called. - * @param property the property for which the new value is set -- * @param value the new value for the property. -+ * @param newVal the new value for the property. - * @throws com.sun.star.lang.WrappedTargetException An exception, which has to be made known to the caller, - * occured during the setting of the value. - */ ---- javaunohelper/com/sun/star/lib/uno/helper/PropertySetMixin.java.orig 2014-02-25 08:30:16 UTC -+++ javaunohelper/com/sun/star/lib/uno/helper/PropertySetMixin.java -@@ -193,7 +193,7 @@ public final class PropertySetMixin { - @param newValue the property value corresponding to the new - attribute value. This is only used as - com.sun.star.beans.PropertyChangeEvent.NewValue, which is -- rather useless, anyway (see “Using the Observer Pattern&rdquo: in -+ rather useless, anyway (see “Using the Observer Pattern” in - - OpenOffice.org Coding Guidelines), unless the - attribute that is going to be set is constrained. If the attribute ---- ridljar/com/sun/star/uno/IEnvironment.java.orig 2014-02-25 08:33:14 UTC -+++ ridljar/com/sun/star/uno/IEnvironment.java -@@ -63,7 +63,7 @@ public interface IEnvironment { - * given bridge B2. - *

  • A proxy object, created as a remote object is mapped into this - * environment via a given bridge.
  • -- *

    -+ * - * - *

    The object actually registered may differ from the specified - * object that is passed as an argument. This enables an ---- ridljar/com/sun/star/uno/IMethodDescription.java.orig 2014-02-25 08:33:14 UTC -+++ ridljar/com/sun/star/uno/IMethodDescription.java -@@ -52,7 +52,7 @@ public interface IMethodDescription exte - boolean isConst(); - - /** -- * Gives any array of ITypeDescription> of -+ * Gives any array of ITypeDescription of - * the [in] parameters. - *

    - * @return the in parameters -@@ -60,7 +60,7 @@ public interface IMethodDescription exte - ITypeDescription[] getInSignature(); - - /** -- * Gives any array of ITypeDescription> of -+ * Gives any array of ITypeDescription of - * the [out] parameters. - *

    - * @return the out parameters ---- ridljar/com/sun/star/uno/ITypeDescription.java.orig 2014-02-25 08:33:14 UTC -+++ ridljar/com/sun/star/uno/ITypeDescription.java -@@ -103,8 +103,8 @@ public interface ITypeDescription { - /** - * Gets the (UNO) type name. - * -- *

    The following table lists how UNO types map to type names:

    - * -+ * - * - * - * -@@ -119,15 +119,15 @@ public interface ITypeDescription { - * - * - * -- * "hyper" -+ * - * -- * "unsigned hyper" -+ * - * -- * "float" -- * "double" -- * "string" -- * "type" -- * "any" -+ * -+ * -+ * -+ * -+ * - * - * - * -@@ -148,7 +148,7 @@ public interface ITypeDescription { - * - * - * -- * -+ * - *
    The following table lists how UNO types map to type names:
    UNO typetype name
    LONG"long"
    UNSIGNED LONG"unsigned long"
    HYPER
    HYPER"hyper"
    UNSIGNED HYPERUNSIGNED HYPER"unsigned hyper"
    FLOAT
    DOUBLE
    STRING
    TYPE
    ANY
    FLOAT"float"
    DOUBLE"double"
    STRING"string"
    TYPE"type"
    ANY"any"
    sequence type of base type T"[]" followed by type name for Tinterface type named NN (see below)
    - *

    For a UNO type named N, consisting of a sequence of module - * names M1, ..., Mn followed by ---- ridljar/com/sun/star/uno/Type.java.orig 2014-02-25 08:33:14 UTC -+++ ridljar/com/sun/star/uno/Type.java -@@ -33,7 +33,7 @@ import java.util.HashMap; - * SHORT) do not have a matching Java class. For another, it can be - * necessary to describe a type which is unknown to the Java runtime system - * (for example, for delaying the need of a class, so that it is possible to -- * generate it on the fly.)

    -+ * generate it on the fly.) - * - *

    A Type is uniquely determined by its type class (a - * TypeClass) and its type name (a String); these two -@@ -204,7 +204,7 @@ public class Type { - * - *

    In certain cases, one Java class corresponds to two UNO types (e.g., - * the Java class short[].class corresponds to both a sequence -- * of SHORT and a sequence of UNSIGNED SHORT in -+ * of SHORT and a sequence of UNSIGNED SHORT in - * UNO). In such ambiguous cases, the parameter alternative - * controls which UNO type is chosen:

    - *
      ---- ridljar/com/sun/star/uno/Union.java.orig 2014-02-25 08:33:14 UTC -+++ ridljar/com/sun/star/uno/Union.java -@@ -27,7 +27,7 @@ package com.sun.star.uno; - * The Union class is the base class for all classes generated - * as java binding for the IDL type union. - *

      -- * Note: The idl type union is currently not fully -+ * Note: The idl type union is currently not fully - * integrated into the UNO framework, so don't use it. - * - * @version $Revision: 1.5 $ $ $Date: 2008-04-11 11:15:07 $ ---- xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java -@@ -44,7 +44,7 @@ import org.openoffice.xmerge.util.Debug; - * AportisDoc implementation of DocumentMerger - * for the {@link - * org.openoffice.xmerge.converter.xml.sxw.aportisdoc.PluginFactoryImpl -- * PluginFactoryImpl}.

      -+ * PluginFactoryImpl}. - */ - public class DocumentMergerImpl implements DocumentMerger { - ---- xmerge/source/bridge/java/XMergeBridge.java.orig 2014-02-25 08:29:07 UTC -+++ xmerge/source/bridge/java/XMergeBridge.java -@@ -92,7 +92,6 @@ public class XMergeBridge { - - /** This inner class provides the component as a concrete implementation - * of the service description. It implements the needed interfaces. -- * @implements XTypeProvider - */ - static public class _XMergeBridge implements - XImportFilter, ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java -@@ -44,9 +44,6 @@ public class BeginningOfFile implements - - /** - * Constructor that initializes the member values. -- * -- * @param ver Version Number -- * Substream type (workbook = 0x05, worksheet = 0x10) - */ - public BeginningOfFile(boolean global) { - setVersion((short) 271); -@@ -61,6 +58,10 @@ public class BeginningOfFile implements - read(is); - } - -+ /** -+ * -+ * @param version Version Number -+ */ - private void setVersion(short version) { - this.version = EndianConverter.writeShort(version); - } -@@ -79,6 +80,10 @@ public class BeginningOfFile implements - subStream = EndianConverter.writeShort((short) 0x10); - } - -+ /** -+ * -+ * @return Substream type (workbook = 0x05, worksheet = 0x10) -+ */ - int getSubStreamType() { - return EndianConverter.readShort(subStream); - } ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java -@@ -49,8 +49,7 @@ public class BlankCell extends CellValue - * Constructs a BlankCell using specified attributes - * - * @param row row number -- * @param col column number -- * @param cellContents contents of the cell -+ * @param column column number - * @param ixfe font index - */ - public BlankCell(int row, int column, int ixfe) throws IOException { -@@ -83,7 +82,7 @@ public class BlankCell extends CellValue - /** - * Reads a BlankCell InputStream - * -- * @param is InputStream containing a BlankCell. -+ * @param input InputStream containing a BlankCell. - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java -@@ -43,7 +43,7 @@ public class BoolErrCell extends CellVal - * Constructs a BoolErrCell from arguments - * - * @param row row number -- * @param col column number -+ * @param column column number - * @param ixfe font index - * @param bBoolErr Boolean value or error value - * @param fError Boolean error flag -@@ -78,7 +78,7 @@ public class BoolErrCell extends CellVal - /** - * Writes a BoolErrCell to the specified Outputstream - * -- * @param os the OutputStream to write to -+ * @param output the OutputStream to write to - */ - public void write(OutputStream output) throws IOException { - -@@ -95,7 +95,7 @@ public class BoolErrCell extends CellVal - /** - * Reads a BoolErrCell from the InputStream - * -- * @param is InputStream containing a BoolErrCell -+ * @param input InputStream containing a BoolErrCell - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java -@@ -64,7 +64,7 @@ public class BoundSheet implements BIFFR - * Sets the worksheet name. The sheetname length must be doubled as the - * String is stored in unicode format. - * -- * @param sheetname worksheet name -+ * @param sheetName worksheet name - */ - void setSheetName(String sheetName) throws IOException { - this.cch = (byte) sheetName.length(); -@@ -95,7 +95,7 @@ public class BoundSheet implements BIFFR - /** - * Write this particular BIFFRecord to the OutputStream - * -- * @param ouput the OutputStream -+ * @param output the OutputStream - */ - public void write(OutputStream output) throws IOException { - -@@ -111,7 +111,7 @@ public class BoundSheet implements BIFFR - * Reads a BoundSheet from the InputStream The byte array - * must be twice the size of the String as it uses unicode. - * -- * @param is InputStream containing the record data -+ * @param input InputStream containing the record data - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java -@@ -92,7 +92,7 @@ public abstract class CellValue implemen - /** - * Writes basic cell value attributes to the specified Outputstream - * -- * @param os the OutputStream to write to -+ * @param output the OutputStream to write to - */ - public void write(OutputStream output) throws IOException { - -@@ -102,9 +102,9 @@ public abstract class CellValue implemen - } - - /** -- * Writes aLabelCell to the specified Outputstream -+ * Read a LabelCell from the specified InputStream - * -- * @param os the OutputStream to write to -+ * @param input the InputStream to read from - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java -@@ -50,8 +50,8 @@ public class ColInfo implements BIFFReco - * - * @param colFirst the first column this formatting applies to - * @param colLast last column this formatting applies to -- * @param coldx column width -- * @param grbit options flags -+ * @param colDX column width -+ * @param ixfe options flags - */ - public ColInfo(int colFirst, int colLast, int colDX, int ixfe) { - this.colFirst = EndianConverter.writeShort((short)colFirst); -@@ -135,7 +135,7 @@ public class ColInfo implements BIFFReco - /** - * Writes a ColInfo to the specified Outputstream - * -- * @param os the OutputStream to write to -+ * @param output the OutputStream to write to - */ - public void write(OutputStream output) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java -@@ -32,7 +32,7 @@ import org.openoffice.xmerge.util.Endian - import org.openoffice.xmerge.converter.xml.sxc.pexcel.PocketExcelConstants; - - /** -- * Represents a BIFF record defiuning the defualt column width -+ * Represents a BIFF record defining the default column width - */ - public class DefColWidth implements BIFFRecord { - -@@ -40,18 +40,18 @@ public class DefColWidth implements BIFF - private byte[] coldx = new byte[2]; - private byte[] ixfe = new byte[2]; - --/** -- * Constructs a pocket Excel Document from the -- * InputStream and assigns it the document name passed in -- * -- * @param is InputStream containing a Pocket Excel Data file. -- */ - public DefColWidth() { - grbit = new byte[] {0x00, 0x00}; - coldx = new byte[] {0x00, 0x09}; - ixfe = new byte[] {0x00, 0x00}; - } - -+ /** -+ * Constructs a pocket Excel Document from the -+ * InputStream and assigns it the document name passed in -+ * -+ * @param is InputStream containing a Pocket Excel Data file. -+ */ - public DefColWidth(InputStream is) throws IOException { - read(is); - } ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java -@@ -39,12 +39,6 @@ public class DefRowHeight implements BIF - private byte[] unknown1 = new byte[2]; - private byte[] unknown2 = new byte[2]; - -- /** -- * Constructs a pocket Excel Document from the -- * InputStream and assigns it the document name passed in -- * -- * @param is InputStream containing a Pocket Excel Data file. -- */ - public DefRowHeight() { - unknown1 = new byte[] {(byte)0x00, (byte)0x00}; - unknown2 = new byte[] {(byte)0xFF, (byte)0x00}; ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java -@@ -50,11 +50,6 @@ public class DefinedName implements BIFF - private String definition = new String(""); - private Workbook wb; - -- /** -- * Constructs a Defined Name from the InputStream -- * -- * @param is InputStream containing the record data -- */ - public DefinedName(NameDefinition nd, Workbook wb) throws IOException { - - fh.setWorkbook(wb); -@@ -95,7 +90,7 @@ public class DefinedName implements BIFF - * Reads a Defined Name from the InputStream The byte array - * must be twice the size of the String as it uses unicode. - * -- * @param is InputStream containing the record data -+ * @param input InputStream containing the record data - */ - public int read(InputStream input) throws IOException { - -@@ -126,7 +121,7 @@ public class DefinedName implements BIFF - /** - * Write this particular BIFFRecord to the OutputStream - * -- * @param ouput the OutputStream -+ * @param output the OutputStream - */ - public void write(OutputStream output) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java -@@ -276,7 +276,7 @@ org.openoffice.xmerge.converter.xml.Offi - /** - * Compare two ExtendedFormat to see if the font index is the same - * -- * @param the ExtendedFormat to be used in the comaprison -+ * @param rhs the ExtendedFormat to be used in the comaprison - * @return boolean if the two are the same otherwise false - */ - public boolean compareTo(ExtendedFormat rhs) { -@@ -352,7 +352,7 @@ org.openoffice.xmerge.converter.xml.Offi - } - - /** -- * Writes the ExtendedFormat to the Outputstream -+ * Writes the ExtendedFormat to the Outputstream - * - * @param output the Outputstreamto write to - */ ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java -@@ -52,7 +52,7 @@ public class FloatNumber extends CellVal - * Constructs a FloatNumber using specified attributes - * - * @param row row number -- * @param col column number -+ * @param column column number - * @param cellContents contents of the cell - * @param ixfe font index - */ ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java -@@ -56,13 +56,6 @@ public class FontDescription implements - public static final int UNDERLINE = 0x01; - public static final int ITALIC = 0x02; - -- /** -- * Constructs a FontDescription from the bold italic and undelrine attributes -- * -- * @param italic Italic attribute -- * @param bold Bold attribute -- * @param underline Underline attribute -- */ - public FontDescription(Format fmt) throws IOException { - - Debug.log(Debug.TRACE,"Building FontDescriptor based on Format : " + fmt); -@@ -230,7 +223,7 @@ public class FontDescription implements - /** - * Constructs a Font Description from the InputStream - * -- * @param is InputStream containing a FontDescription -+ * @param input InputStream containing a FontDescription - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java -@@ -51,10 +51,9 @@ public class Formula extends CellValue i - * Constructs a Formula using specified attributes - * - * @param row row number -- * @param col column number -+ * @param column column number - * @param cellContents contents of the cell - * @param ixfe font index -- * @param value the value of the cell - */ - public Formula(int row, int column, String cellContents, int ixfe, Format fmt, Workbook wb) - throws Exception { -@@ -112,7 +111,7 @@ public class Formula extends CellValue i - * Translates a String written in infix which represents a - * formula into a byte[] what can be written to pocket excel file. - * -- * @param formula string -+ * @param inFormula formula string - */ - public void setFormula(String inFormula) throws Exception { - -@@ -171,7 +170,7 @@ public class Formula extends CellValue i - /** - * Writes the Formula record to the OutputStream - * -- * @param the OutputStream being written to -+ * @param output the OutputStream being written to - */ - public void write(OutputStream output) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java -@@ -44,7 +44,7 @@ public class LabelCell extends CellValue - * Constructs a LabelCell using specified attributes - * - * @param row row number -- * @param col column number -+ * @param column column number - * @param cellContents contents of the cell - * @param ixfe font index - */ -@@ -69,7 +69,7 @@ public class LabelCell extends CellValue - /** - * Writes a LabelCell to the specified Outputstream - * -- * @param os the OutputStream to write to -+ * @param output the OutputStream to write to - */ - public void write(OutputStream output) throws IOException { - -@@ -126,7 +126,7 @@ public class LabelCell extends CellValue - /** - * Sets the String representing the cells contents - * -- * @return the String representing the cells contents -+ * @param cellContents the String representing the cells contents - */ - private void setLabel(String cellContents) throws IOException { - rgch = cellContents.getBytes("UTF-16LE"); ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java -@@ -120,9 +120,11 @@ public class Pane implements BIFFRecord - } - - /** -- * Get the hex code for this particular BIFFRecord -+ * Set the pane number of the active pane -+ * 0 - bottom right, 1 - top right -+ * 2 - bottom left, 3 - top left - * -- * @return the hex code for Pane -+ * @param paneNumber the pane number of the active pane - */ - public void setPaneNumber(int paneNumber) { - pnnAcct = (byte) paneNumber; ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java -@@ -101,7 +101,7 @@ public class Row implements BIFFRecord { - /** - * Reads a Row from an InputStream - * -- * @param is InputStream containing a Pane Record -+ * @param input InputStream containing a Pane Record - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java -@@ -76,21 +76,11 @@ public class Selection implements BIFFRe - return PocketExcelConstants.CURRENT_SELECTION; - } - -- /** -- * Get the hex code for this particular BIFFRecord -- * -- * @return the hex code for Selection -- */ - public Point getActiveCell() { - Point p = new Point(colActive, EndianConverter.readShort(rwActive)); - return p; - } - -- /** -- * Get the hex code for this particular BIFFRecord -- * -- * @return the hex code for Selection -- */ - public void setActiveCell(Point p) { - - colActive = (byte) p.getX(); -@@ -100,7 +90,7 @@ public class Selection implements BIFFRe - /** - * Reads a Selection Record from the InputStream - * -- * @param is InputStream containing a Pocket Excel Data file. -+ * @param input InputStream containing a Pocket Excel Data file. - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java -@@ -43,9 +43,9 @@ public class StringValue implements BIFF - private byte[] rgch; - - /** -- * Constructs a StringValue Record from an InputStream -+ * Constructs a StringValue Record from a String - * -- * @param is InputStream containing a StringValue Record -+ * @param str - */ - public StringValue(String str) throws IOException { - cch = EndianConverter.writeShort((short) str.length()); -@@ -74,7 +74,7 @@ public class StringValue implements BIFF - /** - * Reads a StringVlaue Record from an InputStream - * -- * @param is InputStream containing a StringValue Record -+ * @param input InputStream containing a StringValue Record - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java -@@ -87,7 +87,7 @@ public class Window1 implements BIFFReco - /** - * Reads a Window1 Record from an InputStream - * -- * @param is InputStream containing a Window1 Record -+ * @param input InputStream containing a Window1 Record - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java -@@ -123,7 +123,7 @@ public class Window2 implements BIFFReco - /** - * Reads a Window2 Record from an InputStream - * -- * @param is InputStream containing a Window2 Record -+ * @param input InputStream containing a Window2 Record - */ - public int read(InputStream input) throws IOException { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java -@@ -236,7 +236,7 @@ OfficeConstants { - /** - * Adds a ExtendedFormat record to the workbook - * -- * @param f the font recrod to add -+ * @param fmt the font record to add - */ - public int addExtendedFormat(Format fmt) throws IOException { - -@@ -358,7 +358,7 @@ OfficeConstants { - /** - * Adds a Worksheet to the workbook. - * -- * @return name the name of the Worksheet to be added -+ * @param name the name of the Worksheet to be added - */ - public void addWorksheet(String name) throws IOException { - -@@ -372,7 +372,6 @@ OfficeConstants { - /** - * Adds a cell to the current worksheet. - * -- * @return the name of the Worksheet to be added - */ - public void addCell(int row,int col, Format fmt, String cellContents) - throws IOException { -@@ -466,12 +465,6 @@ OfficeConstants { - } - } - -- /** -- * Will create a number of ColInfo recrods based on the column widths -- * based in. -- * -- * @param an integer list representing the column widths -- */ - public void addNameDefinition(NameDefinition nameDefinition) throws IOException { - - DefinedName dn = new DefinedName(nameDefinition, this); ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java -@@ -56,25 +56,18 @@ public class Worksheet { - private BeginningOfFile bof; - private Eof eof; - -- /** -- * Writes the current workbook to the Outputstream -- * -- * @param os The destination outputstream -- */ - public Worksheet(Workbook wb) { - this.wb = wb; - } - - /** - * Default Contructor -- * -- * @param os The destination outputstream - */ - public Worksheet() { - } - - /** -- * Writes the current workbook to the Outputstream -+ * Writes the current workbook to the OutputStream - * - * @param os The destination outputstream - */ -@@ -229,7 +222,7 @@ public class Worksheet { - * Adds a cell to this worksheet. Current valdid celltypes are - * FloatNumber, LabelCell or Formula - * -- * @param f the font recrod to add -+ * @param br - */ - public void addCell(BIFFRecord br) { - cells.add(br); -@@ -239,7 +232,7 @@ public class Worksheet { - * Adds a number of ColInfo Records to the worksheet base on a list of - * clumnwidths passed in - * -- * @param list of column widths -+ * @param r list of column widths - */ - public void addRow(Row r) { - rows.add(r); -@@ -249,16 +242,12 @@ public class Worksheet { - * Adds a number of ColInfo Records to the worksheet base on a list of - * clumnwidths passed in - * -- * @param list of column widths -+ * @param c list of column widths - */ - public void addCol(ColInfo c) { - colInfo.add(c); - } -- /** -- * Returns an Enumeration to the ColInfo's for this worksheet -- * -- * @return an Enumeration to the ColInfo's -- */ -+ - public void addSettings(SheetSettings s) { - - sel.setActiveCell(s.getCursor()); ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java -@@ -45,7 +45,7 @@ import org.openoffice.xmerge.util.Debug; - * else if token is close bracket - * pop from stack into result until close bracket or function - * else -- * while stack.top.priority >= token.priority -+ * while stack.top.priority >= token.priority - * add stack.pop to result - * push token onto stack - * ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java.orig 2014-02-25 08:29:14 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java -@@ -33,7 +33,7 @@ import org.openoffice.xmerge.converter.x - /** - * This Helper class provides a simplified interface to conversion between PocketXL formula representation - * and Calc formula representation.

      -- * The class is used by {@link org.openoffice.xmerge.converter.xml.sxc.pexcel.Records.Formula} -+ * The class is used by {@link org.openoffice.xmerge.converter.xml.sxc.pexcel.records.Formula} - */ - public class FormulaHelper { - ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java.orig 2014-02-25 08:29:13 UTC -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java -@@ -32,7 +32,7 @@ import org.openoffice.xmerge.util.Debug; - /** - * This is the Formula Parser based on an article written by Jack Crenshaw. It is a - * top down parser with some basic error handling. It handles -- * +,-,*,/,>,<,>=,<=,=,<>, unary + and - as well as functions. -+ * +,-,*,/,>,<,>=,<=,=,<>, unary + and - as well as functions. - * The BNF notation for this parser is - *

      -  *	<expression> ::= <unary op> <term> [<addop>|<logop> <term>]
      -@@ -110,7 +110,7 @@ public class FormulaParser {
      - 	}
      - 	
      - 	/**
      --	 * Identify <, >, <=, >=, =, <> using the index to find the current character(s)
      -+	 * Identify <, >, <=, >=, =, <> using the index to find the current character(s)
      - 	 * 
      - 	 * @return A boolean returning the result of the comparison 
      - 	 */
      -@@ -131,9 +131,9 @@ public class FormulaParser {
      -  	}
      - 
      - 	/**
      --	 * Identify <, >, <=, >=, =, <>
      -+	 * Identify <, >, <=, >=, =, <>
      - 	 *
      --	 * @param  The String which is to be identified
      -+	 * @param op The String which is to be identified
      - 	 * @return A boolean returning the result of the comparison 
      - 	 */
      - 	private boolean isLogicalOp(String op) {
      -@@ -397,7 +397,7 @@ public class FormulaParser {
      - 	 * Will keep pulling valid logical operators from the formula and return
      - 	 * the resultant String.
      - 	 * 
      --	 * @return a String representing a logical operator
      -+	 * @return a String representing a logical operator
      - 	 */
      - 	private String getLogicalOperator() throws FormulaParsingException {
      - 		String op = new String();
      -@@ -535,7 +535,7 @@ public class FormulaParser {
      - 	
      - 	/**
      - 	 * Pull a logical operator starting at the current index, add a token for
      --	 * that operator to the tokenVector and call term to parse the
      -+	 * that operator to the tokenVector and call term to parse the
      - 	 * right hand side of the operator
      - 	 */
      - 	private void logicalOp()  throws FormulaParsingException {
      ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java.orig	2014-02-25 08:29:14 UTC
      -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java
      -@@ -27,7 +27,7 @@ import java.util.HashMap;
      - 
      - /**
      -  * This class defines the precedence applied to each operator when performing a conversion
      -- * {@link org.openoffice.xmerge.converter.xml.sxc.pexcel.Records.formula.FormulaCompiler.infix2	from infix to RPN.}.
      -+ * {@link org.openoffice.xmerge.converter.xml.sxc.pexcel.records.formula.FormulaCompiler#infix2RPN	from infix to RPN.}.
      -  */
      - public class PrecedenceTable {
      - 	public static final int DEFAULT_PRECEDENCE  = 0;
      ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java.orig	2014-02-25 08:29:13 UTC
      -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java
      -@@ -44,7 +44,7 @@ public abstract class SymbolLookup {
      - 	/**
      - 	 * Associate a symbol with a  numeric value in the lookup table
      - 	 * @param symbol	The symbol that will act as the key in the lookup table
      --	 * @param value		The value to be associated with a given symbol
      -+	 * @param id		The value to be associated with a given symbol
      - 	 */
      - 	public void addEntry(String symbol, int id) {
      -     	Integer iObj = new Integer(id);
      ---- xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java.orig	2014-02-25 08:29:13 UTC
      -+++ xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java
      -@@ -284,7 +284,7 @@ public class TokenEncoder {
      -     /** 
      -      * A Cell Reference Encoder (It supports absolute and relative addressing)
      - 	 * 
      --	 * @param t Token to be encoded
      -+	 * @param cellCoordinates
      - 	 * @return A Vector of pexcel Byte
      - 	 */
      - 	private byte[] encodeCellCoordinates(String cellCoordinates) {
      -@@ -367,7 +367,7 @@ public class TokenEncoder {
      -     /** 
      -      * This function will find the sheetname index for a given String 
      - 	 * 
      --	 * @param t Token to be encoded
      -+	 * @param s
      - 	 * @return A Vector of pexcel Byte
      - 	 */
      - 	private short findSheetIndex(String s) {
      ---- xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java.orig	2014-02-25 08:29:05 UTC
      -+++ xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java
      -@@ -69,7 +69,7 @@ public final class DocumentDeserializerI
      -     
      -     
      -     /**
      --     * Initialises a new DocumentDeserializerImpl using the 
      -+     * 

      Initialises a new DocumentDeserializerImpl using the - * supplied ConvertData.

      - * - *

      The Document objects in the ConvertData ---- xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java -@@ -44,7 +44,7 @@ import org.openoffice.xmerge.util.Debug; - * PocketWord implementation of DocumentMerger - * for the {@link - * org.openoffice.xmerge.converter.xml.sxw.pocketword.PluginFactoryImpl -- * PluginFactoryImpl}.

      -+ * PluginFactoryImpl}. - */ - public class DocumentMergerImpl implements DocumentMerger { - ---- xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java.orig 2014-02-25 08:29:04 UTC -+++ xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java -@@ -48,7 +48,7 @@ import java.io.IOException; - * org.openoffice.xmerge.converter.xml.sxw.pocketword.PluginFactoryImpl - * PluginFactoryImpl}.

      - * -- *

      This converts an OpenOffice.org XML Writer files to a Pocket Word file<.

      -+ *

      This converts an OpenOffice.org XML Writer files to a Pocket Word file.

      - * - * @author Mark Murnane - * @version 1.1 -@@ -72,7 +72,7 @@ public final class DocumentSerializerImp - * org.openoffice.xmerge.converter.xml.sxw.SxwDocument SxwDocument} - * object.

      - * -- * @param document The Document to convert. -+ * @param doc The Document to convert. - */ - public DocumentSerializerImpl(Document doc) { - sxwDoc = (SxwDocument)doc; ---- xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java.orig 2014-02-25 08:29:04 UTC -+++ xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java -@@ -90,11 +90,11 @@ public final class PluginFactoryImpl ext - - - /** -- * The DocumentDeserializer is used to convert -+ *

      The DocumentDeserializer is used to convert - * from the Pocket Word Document format to - * the OpenOffice.org XML Writer Document format.

      - * -- * The ConvertData object is passed along to the -+ *

      The ConvertData object is passed along to the - * created DocumentDeserializer via its constructor. - * The ConvertData is read and converted when the - * the DocumentDeserializer object's ---- xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java -@@ -101,7 +101,7 @@ public class PocketWordDocument implemen - *

      This method reads byte data from the InputStream and - * extracts font and paragraph data from the file.

      - * -- * @param is InputStream containing a Pocket Word data file. -+ * @param docData InputStream containing a Pocket Word data file. - * - * @throws IOException In case of any I/O errors. - */ ---- xmerge/source/xmerge/java/org/openoffice/xmerge/Convert.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/Convert.java -@@ -161,7 +161,7 @@ public class Convert implements Cloneabl - - /** - * Clones a Convert object so another Convert object can -- * do the same conversion. InputStream objects passed -+ * do the same conversion. InputStream objects passed - * in via calls to the addInputStream method are not - * copied. - * ---- xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java -@@ -28,13 +28,13 @@ import java.io.IOException; - /** - *

      A DocumentDeserializer represents a converter that - * converts "Device" Document objects into the -- * "Office" Document format.

      -+ * "Office" Document format. - * - *

      The DocumentDeserializer object is created by -- * the PluginFactory {@link -+ * the PluginFactory {@link - * org.openoffice.xmerge.DocumentDeserializerFactory#createDocumentDeserializer - * createDocumentDeserializer} method. When it is constructed, a -- * ConvertData object is passed in to be used as input.

      -+ * ConvertData object is passed in to be used as input. - * - * @author Herbie Ong - * @see org.openoffice.xmerge.PluginFactory ---- xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java -@@ -38,11 +38,11 @@ package org.openoffice.xmerge; - public interface DocumentDeserializerFactory { - - /** -- * The DocumentDeserializer is used to convert -+ *

      The DocumentDeserializer is used to convert - * from the "Device" Document format to - * the "Office" Document format.

      - * -- * The ConvertData object is passed along to the -+ *

      The ConvertData object is passed along to the - * created DocumentDeserializer via its constructor. - * The ConvertData is read and converted when the - * the DocumentDeserializer object's ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java -@@ -153,7 +153,7 @@ public class DOMDocument - * Sets the Content of the Document to the contents of the - * supplied Node list. - * -- * @return DOM Document object. -+ * @param newDom DOM Document object. - */ - public void setContentDOM( Node newDom) { - contentDoc=(Document)newDom; ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java -@@ -116,7 +116,7 @@ public class PalmDocument - /** - * Writes the PalmDocument to an OutputStream. - * -- * @param is The OutputStream to write the content. -+ * @param os The OutputStream to write the content. - * - * @throws IOException If any I/O error occurs. - */ ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java -@@ -31,16 +31,16 @@ import java.io.DataInputStream; - /** - *

      Provides functionality to decode a PDB formatted file into - * a PalmDB object given an InputStream. -- * This class is only used by the PalmDB object.

      -+ * This class is only used by the PalmDB object. - * -- *

      Sample usage:

      -+ *

      Sample usage: - * - *

      
      -  *     PdbDecoder decoder = new PdbDecoder("sample.pdb");
      -  *     PalmDB palmDB = decoder.parse();
      -  *  
      - * -- *

      This decoder has the following assumptions on the PDB file:

      -+ *

      This decoder has the following assumptions on the PDB file: - * - *

        - *
      1. There is only one RecordList section in the PDB.
      2. -@@ -50,9 +50,9 @@ import java.io.DataInputStream; - *
      3. The raw Record in the Record section - * are sorted as well in order, i.e. first Record - * comes ahead of second Record, etc.
      4. -- *

      -+ * - * -- *

      Other decoders assume these as well.

      -+ *

      Other decoders assume these as well. - * - * @author Herbie Ong - * @see PalmDB ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java -@@ -109,7 +109,7 @@ public final class PdbEncoder { - * top of the PDB. - *

    • 1 byte of Record attribute.
    • - *
    • 3 bytes unique Record ID.
    • -- *

    -+ * - * - *

    There should be a total of header.numRecords - * of Record index info

    . ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java -@@ -134,7 +134,7 @@ public final class Record { - * Record length followed by the data in this - * Record object. - * -- * @param out The OutputStream to write the object. -+ * @param outs The OutputStream to write the object. - * - * @throws IOException If any I/O error occurs. - */ -@@ -151,7 +151,7 @@ public final class Record { - * Read the necessary data to create a PDB from - * the InputStream. - * -- * @param in The InputStream to read data from -+ * @param ins The InputStream to read data from - * in order to restore the object. - * - * @throws IOException If any I/O error occurs. ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java -@@ -134,7 +134,7 @@ public class EmbeddedXMLObject extends E - /** - * Sets the settings data for the embedded object. - * -- * @param styles DOM representation of the object's styles. -+ * @param settings DOM representation of the object's styles. - */ - public void setSettingsDOM(Document settings) { - settingsDOM = settings; ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java -@@ -1119,7 +1119,7 @@ public abstract class OfficeDocument - - - /** -- *

    Hacked code to filter tag before -+ *

    Hacked code to filter <!DOCTYPE> tag before - * sending stream to parser.

    - * - *

    This hacked code needs to be changed later on.

    -@@ -1128,7 +1128,7 @@ public abstract class OfficeDocument - * to turn off processing of dtds. Current set of dtds - * have bugs, processing them will throw exceptions.

    - * -- *

    This is a simple hack that assumes the whole -+ *

    This is a simple hack that assumes the whole <!DOCTYPE> - * tag are all in the same line. This is sufficient for - * current StarOffice 6.0 generated XML files. Since this - * hack really needs to go away, I don't want to spend -@@ -1138,7 +1138,7 @@ public abstract class OfficeDocument - * - * @param is InputStream to be filtered. - * -- * @return Reader value without the tag. -+ * @return Reader value without the <!DOCTYPE> tag. - * - * @throws IOException If any I/O error occurs. - */ ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java -@@ -123,26 +123,21 @@ class alignment extends conversionAlgori - /** - *

    This class represents a paragraph Style.

    - * -- *

    -+ * -+ *
    -- * Attribute Value -- *
    -- * MARGIN_LEFT mm * 100 -- *
    -- * MARGIN_RIGHT mm * 100 -- *
    -- * MARGIN_TOP mm * 100 (space on top of paragraph) -- *
    -- * MARGIN_BOTTOM mm * 100 -- *
    -- * TEXT_INDENT mm * 100 (first line indent) -- *
    -- * LINE_HEIGHT mm * 100, unless or'ed with LH_PCT, in which -+ *

    -+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ *
    Properties
    AttributeValue
    MARGIN_LEFT mm * 100
    MARGIN_RIGHT mm * 100
    MARGIN_TOP mm * 100 (space on top of paragraph)
    MARGIN_BOTTOM mm * 100
    TEXT_INDENT mm * 100 (first line indent)
    LINE_HEIGHT mm * 100, unless or'ed with LH_PCT, in which - * case it is a percentage (e.g. 200% for double spacing) - * Can also be or'ed with LH_ATLEAST. Value is stored - * in bits indicated by LH_VALUEMASK. -- *
    -- * TEXT_ALIGN ALIGN_RIGHT, ALIGN_CENTER, ALIGN_JUST, ALIGN_LEFT -- *

    -+ *
    TEXT_ALIGN ALIGN_RIGHT, ALIGN_CENTER, ALIGN_JUST, ALIGN_LEFT
    - * - * @author David Proulx - */ -@@ -266,9 +261,9 @@ public class ParaStyle extends Style imp - * Constructor for use when going from client device format to DOM. - * - * @param name Name of the Style. Can be null. -- * @param family Family of the Style - usually -+ * @param familyName Family of the Style - usually - * paragraph, text, etc. Can be null. -- * @param parent Name of the parent Style, or null -+ * @param parentName Name of the parent Style, or null - * if none. - * @param attribs Array of attributes to set. - * @param values Array of values to set. -@@ -289,13 +284,13 @@ public class ParaStyle extends Style imp - * format to DOM. - * - * @param name Name of the Style. Can be null. -- * @param family Family of the Style - usually -+ * @param familyName Family of the Style - usually - * paragraph, text, etc. Can be null. -- * @param parent Name of the parent Style, or -+ * @param parentName Name of the parent Style, or - * null if none. - * @param attribs Array of attributes indices to set. - * @param values Array of values to set. -- * @param sc The StyleCatalog, which is used for -+ * @param lookup The StyleCatalog, which is used for - * looking up ancestor Style objects. - */ - public ParaStyle(String name, String familyName, String parentName, -@@ -373,7 +368,7 @@ public class ParaStyle extends Style imp - * Set an attribute for this paragraph Style. - * - * @param attr The attribute index to set. -- * @apram value The attribute value to set. -+ * @param value The attribute value to set. - */ - public void setAttribute(int attr, String value) { - isSet[attr] = true; -@@ -496,7 +491,7 @@ public class ParaStyle extends Style imp - /** - * Create the Node with the specified elements. - * -- * @parentDoc Parent Document of the -+ * @param parentDoc Document of the - * Node to create. - * @param name Name of the Node. - * ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java -@@ -207,7 +207,7 @@ public class StyleCatalog { - - - /** -- * Given a Style s return all -+ * Given a Style s return all - * Style objects that match. - * - * @param s Style to match. ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java -@@ -74,7 +74,7 @@ public class TextStyle extends Style imp - /** - * Constructor for use when going from DOM to client device format. - * -- * @param Node The style:style Node containing -+ * @param node The style:style Node containing - * the Style. (This Node is - * assumed have a family attribute of text). - * @param sc The StyleCatalog, which is used for ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java -@@ -52,8 +52,7 @@ public class BookSettings implements Off - /** - * Default Constructor for a BookSettings - * -- * @param dimension if it's a row the height, a column the width -- * @param repeated -+ * @param root - */ - public BookSettings(Node root) { - readNode(root); ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java -@@ -46,7 +46,7 @@ public class CellStyle extends Style imp - /** - * Constructor for use when going from DOM to client device format. - * -- * @param Node The style:style Node containing -+ * @param node The style:style Node containing - * the Style. (This Node is - * assumed have a family attribute of text). - * @param sc The StyleCatalog, which is used for ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java -@@ -46,8 +46,7 @@ public class ColumnRowInfo { - /** - * Constructor for a ColumnRowInfo - * -- * @param dimension if it's a row the height, a column the width -- * @param repeated -+ * @param type whether Row or column record - */ - public ColumnRowInfo(int type) { - -@@ -82,7 +81,7 @@ public class ColumnRowInfo { - /** - * sets the definition - * -- * @param newDefinition sets the definition -+ * @param fmt sets the definition - */ - public void setFormat(Format fmt) { - -@@ -110,9 +109,9 @@ public class ColumnRowInfo { - } - - /** -- * sets the definition -+ * Sets the definition - * -- * @param newDefinition sets the definition -+ * @param dimension - */ - public void setSize(int dimension) { - -@@ -128,11 +127,6 @@ public class ColumnRowInfo { - return repeated; - } - -- /** -- * Returns the base Cell address -- * -- * @return the base cell address -- */ - public void setRepeated(int repeated) { - - this.repeated = repeated; ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java -@@ -44,7 +44,7 @@ public class ColumnStyle extends Style i - /** - * Constructor for use when going from DOM to client device format. - * -- * @param Node The style:style Node containing -+ * @param node The style:style Node containing - * the Style. (This Node is - * assumed have a family attribute of text). - * @param sc The StyleCatalog, which is used for -@@ -97,7 +97,7 @@ public class ColumnStyle extends Style i - * text). Can be null. - * @param parent Name of parent text Style, or null - * for none. -- * @param mask the width of this column -+ * @param colWidth the width of this column - * @param sc The StyleCatalog, which is used for - * looking up ancestor Style objects. - */ -@@ -118,7 +118,7 @@ public class ColumnStyle extends Style i - /** - * Sets the width of this column - * -- * @return the Format object -+ * @param colWidth the column width - */ - public void setColWidth(int colWidth) { - ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java -@@ -49,7 +49,7 @@ import org.openoffice.xmerge.util.Debug; - * Generic small device implementation of DocumentMerger for - * the {@link - * org.openoffice.xmerge.converter.xml.sxc.SxcPluginFactory -- * SxcPluginFactory}. Used with SXC Document objects.

    -+ * SxcPluginFactory}. Used with SXC Document objects. - */ - public class DocumentMergerImpl implements DocumentMerger { - ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java -@@ -295,7 +295,7 @@ public class Format implements Cloneable - /** - * Set the font used for this cell. - * -- * @param fontName The name of the font. -+ * @param fontSize - */ - public void setFontSize(int fontSize) { - sizeInPoints = fontSize; -@@ -312,9 +312,9 @@ public class Format implements Cloneable - } - - /** -- * Set the alignmen used for this cell. -+ * Set the alignment used for this cell. - * -- * @param fontName The name of the font. -+ * @param vertAlign - */ - public void setVertAlign(int vertAlign) { - this.vertAlign = vertAlign; -@@ -331,9 +331,9 @@ public class Format implements Cloneable - } - - /** -- * Set the alignmen used for this cell. -+ * Set the alignment used for this cell. - * -- * @param fontName The name of the font. -+ * @param align - */ - public void setAlign(int align) { - this.align = align; -@@ -351,7 +351,7 @@ public class Format implements Cloneable - /** - * Set the Foreground Color for this cell. - * -- * @param color A Color object representing the -+ * @param c A Color object representing the - * foreground color. - */ - public void setForeground(Color c) { -@@ -373,7 +373,7 @@ public class Format implements Cloneable - /** - * Set the Background Color for this cell - * -- * @param color A Color object representing -+ * @param c A Color object representing - * the background color. - */ - public void setBackground(Color c) { -@@ -433,7 +433,7 @@ public class Format implements Cloneable - * than this Style, and nothing it specifies - * contradicts this Style. - * -- * @param style The Style to check. -+ * @param rhs The Style to check. - * - * @return true if style is a subset, false - * otherwise. ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java -@@ -135,7 +135,7 @@ public class NameDefinition implements O - /** - * Writes out a content.xml entry for this NameDefinition object - * -- * @param settings a Document object representing the settings.xml -+ * @param doc a Document object representing the settings.xml - * @param root the root xml node to add to - */ - public void writeNode(org.w3c.dom.Document doc, Node root) { ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java -@@ -44,7 +44,7 @@ public class RowStyle extends Style impl - /** - * Constructor for use when going from DOM to client device format. - * -- * @param Node The style:style Node containing -+ * @param node The style:style Node containing - * the Style. (This Node is - * assumed have a family attribute of text). - * @param sc The StyleCatalog, which is used for -@@ -97,7 +97,7 @@ public class RowStyle extends Style impl - * text). Can be null. - * @param parent Name of parent text Style, or null - * for none. -- * @param mask The height of this row -+ * @param rowHeight The height of this row - * @param sc The StyleCatalog, which is used for - * looking up ancestor Style objects. - */ -@@ -118,9 +118,9 @@ public class RowStyle extends Style impl - /** - * Sets the height of this row - * -- * @return the Format object -+ * @param rowHeight the row height - */ -- public void setRowHeight(int RowHeight) { -+ public void setRowHeight(int rowHeight) { - - this.rowHeight = rowHeight; - } ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java -@@ -79,8 +79,7 @@ public class SheetSettings implements Of - /** - * Constructor for a ColumnRowInfo - * -- * @param dimension if it's a row the height, a column the width -- * @param repeated -+ * @param name - */ - public SheetSettings(String name) { - sheetName = name; -@@ -175,12 +174,10 @@ public class SheetSettings implements Of - - return posLeft; - } -+ - /** -- * Sets the top row visible in the lower pane and the leftmost column -- * visibile in the right pane. -+ * Gets the top row visible in the lower pane. - * -- * @param top The top row visible in the lower pane -- * @param left The leftmost column visibile in the right pane - */ - public int getTop() { - ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java -@@ -104,21 +104,13 @@ public abstract class SpreadsheetEncoder - * @param columnWidths An IntArrayList of column - * widths. - */ -- public abstract void setColumnRows(Vector columnRows) throws IOException; -+ public abstract void setColumnRows(Vector columnWidths) throws IOException; - - /** -- * Set the width of the columns in the WorkBook. -- * -- * @param columnWidths An IntArrayList of column -- * widths. - */ - public abstract void setNameDefinition(NameDefinition nd) throws IOException; - - /** -- * Set the width of the columns in the WorkBook. -- * -- * @param columnWidths An IntArrayList of column -- * widths. - */ - public abstract void addSettings(BookSettings s) throws IOException; - } ---- xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java -@@ -44,7 +44,7 @@ import org.openoffice.xmerge.util.Debug; - * Xslt implementation of DocumentMerger - * for the {@link - * org.openoffice.xmerge.converter.xml.xslt.PluginFactoryImpl -- * PluginFactoryImpl}.

    -+ * PluginFactoryImpl}. - */ - public class DocumentMergerImpl implements DocumentMerger { - ---- xmerge/source/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java -@@ -40,15 +40,12 @@ public interface MergeAlgorithm { - * This method is to merge the difference to an Iterator. - * The original Iterator will be modified after the call. - * -- * @param objSeq The original sequence which the difference -+ * @param orgSeq The original sequence which the difference - * will be applied. It will be modified. - * @param modSeq The modified sequence where the difference - * content will be extracted. - * @param differences The Difference array. - * -- * @return An Iterator which is the modified original -- * Iterator Sequence. Same as the first parameter. -- * - * @throws MergeException If an error occurs during the merge. - */ - public void applyDifference(Iterator orgSeq, Iterator modSeq, ---- xmerge/source/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java -@@ -43,6 +43,6 @@ public interface NodeMergeAlgorithm { - * @param modifyNode The Node to be merged. It may - * be modified. - */ -- public void merge(Node orginialNode, Node modifyNode); -+ public void merge(Node originalNode, Node modifyNode); - } - ---- xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java -@@ -54,7 +54,7 @@ import org.openoffice.xmerge.converter.x - * If there are more objects in the original sequence than the modified - * sequence, then all the extra one in the modified sequence are marked - * as delete. -- *

    -+ * - * - *

    NOTE: The algorithm will have potential side effect to split rows.

    - * ---- xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java -@@ -48,7 +48,7 @@ public final class TextNodeIterator exte - /** - * Standard constructor. - * -- * @param initial The initial root Node. -+ * @param node The initial root Node. - */ - public TextNodeIterator(Node node) { - super(null, node); ---- xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java.orig 2014-02-25 08:29:05 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java -@@ -45,7 +45,7 @@ public class SheetUtil { - * Remove all of the supported attributes. - *
  • - * Remove the first text:p Node for most of the cells. -- *
  • -+ * - * - * @param cc The ConverterCapabilities. - * @param node The Node. ---- xmerge/source/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java -@@ -108,7 +108,7 @@ public class ColourConverter { - * cases where the 16 colour values are something other than there default - * values (e.g. in the case of pocket Excel) - * -- * @param short[] a 16 bit array mapping the 16 colours to there values -+ * @param lookup a 16 bit array mapping the 16 colours to their values - */ - public ColourConverter(short lookup[]) { - -@@ -151,7 +151,7 @@ public class ColourConverter { - * This method maps a Pocket Word colour index value to an RGB value as - * used by OpenOffice. - * -- * @param index The index into Pocket Word's colour table. -+ * @param colour The index into Pocket Word's colour table. - * - * @return A Color object representing the RGB value of the Pocket Word - * colour. ---- xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.java -@@ -39,7 +39,7 @@ import java.util.Properties; - /** - * This class is used for logging debug messages. - * Currently, there are three types of logging: {@link #INFO}, -- * {@link #TRACE} & {@link #ERROR}. Use the Debug.properties -+ * {@link #TRACE} & {@link #ERROR}. Use the Debug.properties - * file to set or unset each type. Also use Debug.properties - * to set the writer to either System.out, - * System.err, or to a file. -@@ -265,7 +265,7 @@ public final class Debug { - *

    This logs the message during runtime if debug.info or debug.trace - * in the properties file is set to true.

    - * -- * @param int Log type, one of the Debug constants -+ * @param flag Log type, one of the Debug constants - * {@link #INFO}, {@link #TRACE}, {@link #ERROR} - * or a combination of which or'ed together. - * @param msg The message. -@@ -287,7 +287,7 @@ public final class Debug { - * of the exception passed in. Refer to the other log method - * for description. - * -- * @param int Log type, one of the Debug constants -+ * @param flag Log type, one of the Debug constants - * {@link #INFO}, {@link #TRACE}, {@link #ERROR} - * or a combination of which or'ed together. - * @param msg The message. ---- xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java.orig 2014-02-25 08:29:06 UTC -+++ xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java -@@ -53,7 +53,7 @@ public final class ConverterInfoMgr { - * and must have non-null values for DisplayName, ClassImpl, - * OfficeMime, and DeviceMime. - * -- * @param ConverterInfo A ConverterInfo object -+ * @param ci A ConverterInfo object - * describing a plug-in. - * - * @throws RegistryException If the ConverterInfo -@@ -109,16 +109,16 @@ public final class ConverterInfoMgr { - - - /** -- * Adds a Vector of converter plug-ins to the registry. -- * Each ConverterInfo in the Vector must have -+ * Adds an Enumeration of converter plug-ins to the registry. -+ * Each ConverterInfo in the Enumeration must have - * a unique DisplayName and must have non-null values for DisplayName, - * ClassImpl, OfficeMime, and DeviceMime. - * -- * @param ciVectory A Vector of ConverterInfo -+ * @param jarEnum An Enumeration of ConverterInfo - * objects describing one or more plug-in(s). - * - * @throws RegistryException If a ConverterInfo in the -- * Vector is not valid. -+ * Enumeration is not valid. - */ - public static void addPlugIn(Enumeration jarEnum) throws RegistryException { - -@@ -257,8 +257,8 @@ public final class ConverterInfoMgr { - * If there are multiple ConverterInfo objects that - * support this conversion, only the first is returned. - * -- * @param deviceMimeFrom The device from mime. -- * @param deviceMimeTo The device to mime. -+ * @param deviceFromMime The device from mime. -+ * @param deviceToMime The device to mime. - * - * @return An array of two ConverterInfo objects - * that can be chained to perform the specified Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-openjdk8 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-r1728872 =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-r1728872 (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-r1728872 (nonexistent) @@ -1,98 +0,0 @@ ---- sal/osl/unx/pipe.c.orig 2014-02-25 08:31:45 UTC -+++ sal/osl/unx/pipe.c -@@ -115,7 +115,7 @@ oslPipe __osl_createPipeImpl() - pPipeImpl = (oslPipe)calloc(1, sizeof(struct oslPipeImpl)); - pPipeImpl->m_nRefCount =1; - pPipeImpl->m_bClosed = sal_False; --#if defined(LINUX) -+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT - pPipeImpl->m_bIsInShutdown = sal_False; - pPipeImpl->m_bIsAccepting = sal_False; - #endif -@@ -321,7 +321,7 @@ void SAL_CALL osl_releasePipe( oslPipe p - void SAL_CALL osl_closePipe( oslPipe pPipe ) - { - int nRet; --#if defined(LINUX) -+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT - size_t len; - struct sockaddr_un addr; - int fd; -@@ -341,10 +341,10 @@ void SAL_CALL osl_closePipe( oslPipe pPi - ConnFD = pPipe->m_Socket; - - /* -- Thread does not return from accept on linux, so -+ Thread does not return from accept on some operating systems, so - connect to the accepting pipe - */ --#if defined(LINUX) -+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT - if ( pPipe->m_bIsAccepting ) - { - pPipe->m_bIsInShutdown = sal_True; -@@ -356,7 +356,11 @@ void SAL_CALL osl_closePipe( oslPipe pPi - - addr.sun_family = AF_UNIX; - strncpy(addr.sun_path, pPipe->m_Name, sizeof(addr.sun_path)); -- len = sizeof(addr); -+#if defined(FREEBSD) -+ len = SUN_LEN(&addr); -+#else -+ len = sizeof(addr); -+#endif - - nRet = connect( fd, (struct sockaddr *)&addr, len); - #if OSL_DEBUG_LEVEL > 1 -@@ -367,7 +371,7 @@ void SAL_CALL osl_closePipe( oslPipe pPi - #endif /* OSL_DEBUG_LEVEL */ - close(fd); - } --#endif /* LINUX */ -+#endif /* CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT */ - - - nRet = shutdown(ConnFD, 2); -@@ -408,13 +412,13 @@ oslPipe SAL_CALL osl_acceptPipe(oslPipe - - OSL_ASSERT(strlen(pPipe->m_Name) > 0); - --#if defined(LINUX) -+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT - pPipe->m_bIsAccepting = sal_True; - #endif - - s = accept(pPipe->m_Socket, NULL, NULL); - --#if defined(LINUX) -+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT - pPipe->m_bIsAccepting = sal_False; - #endif - -@@ -424,13 +428,13 @@ oslPipe SAL_CALL osl_acceptPipe(oslPipe - return NULL; - } - --#if defined(LINUX) -+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT - if ( pPipe->m_bIsInShutdown ) - { - close(s); - return NULL; - } --#endif /* LINUX */ -+#endif /* CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT */ - else - { - /* alloc memory */ ---- sal/osl/unx/sockimpl.h.orig 2015-10-21 07:03:17 UTC -+++ sal/osl/unx/sockimpl.h -@@ -63,7 +63,7 @@ struct oslPipeImpl { - sal_Char m_Name[PATH_MAX + 1]; - oslInterlockedCount m_nRefCount; - sal_Bool m_bClosed; --#if defined(LINUX) -+#if CLOSESOCKET_DOESNT_WAKE_UP_ACCEPT - sal_Bool m_bIsAccepting; - sal_Bool m_bIsInShutdown; - #endif Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-r1728872 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-clang40 =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-clang40 (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-clang40 (nonexistent) @@ -1,39 +0,0 @@ -Index: desktop/source/app/officeipcthread.cxx -=================================================================== ---- desktop/source/app/officeipcthread.cxx (revision 1779757) -+++ desktop/source/app/officeipcthread.cxx (revision 1779758) -@@ -225,7 +225,7 @@ String CreateMD5FromString( const OUString& aMsg ) - // BACK: Str "ababab....0f" Hexcode String - - rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); -- if ( handle > 0 ) -+ if ( handle != NULL ) - { - const sal_uInt8* pData = (const sal_uInt8*)aMsg.getStr(); - sal_uInt32 nSize = ( aMsg.getLength() * sizeof( sal_Unicode )); -Index: desktop/source/deployment/misc/dp_misc.cxx -=================================================================== ---- desktop/source/deployment/misc/dp_misc.cxx (revision 1779671) -+++ desktop/source/deployment/misc/dp_misc.cxx (revision 1779695) -@@ -103,7 +103,7 @@ const OUString OfficePipeId::operator () () - } - - rtlDigest digest = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); -- if (digest <= 0) { -+ if (digest == NULL) { - throw RuntimeException( - OUSTR("cannot get digest rtl_Digest_AlgorithmMD5!"), 0 ); - } -Index: sd/source/ui/view/viewshe3.cxx -=================================================================== ---- sd/source/ui/view/viewshe3.cxx (revision 1779671) -+++ sd/source/ui/view/viewshe3.cxx (revision 1779695) -@@ -226,7 +226,7 @@ SdPage* ViewShell::CreateOrDuplicatePage ( - // When the given page is NULL then use the first page of the document. - SdPage* pTemplatePage = pPage; - if (pTemplatePage == NULL) -- if (pDocument->GetSdPage(0, ePageKind) > 0) -+ if (pDocument->GetSdPage(0, ePageKind) != NULL) - pTemplatePage = pDocument->GetSdPage(0, ePageKind); - if (pTemplatePage != NULL && pTemplatePage->TRG_HasMasterPage()) - aVisibleLayers = pTemplatePage->TRG_GetMasterPageVisibleLayers(); Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-clang40 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-boost_boost__1__55__0.patch =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-boost_boost__1__55__0.patch (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-boost_boost__1__55__0.patch (nonexistent) @@ -1,39 +0,0 @@ ---- boost/boost_1_55_0.patch.orig 2019-08-14 17:37:07 UTC -+++ boost/boost_1_55_0.patch -@@ -162,3 +162,36 @@ - } - - //////////////////////////////////////////////////////////////////////// -+diff -ur misc/boost_1_55_0/boost/config/compiler/gcc.hpp misc/build/boost_1_55_0/boost/config/compiler/gcc.hpp -+--- misc/boost_1_55_0/boost/config/compiler/gcc.hpp 2013-09-17 09:55:51.000000000 -0700 -++++ misc/build/boost_1_55_0/boost/config/compiler/gcc.hpp -+@@ -137,14 +137,18 @@ -+ -+ // C++0x features in 4.3.n and later -+ // -+-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__) -++#if ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (__cplusplus >= 201103L) -+ // C++0x features are only enabled when -std=c++0x or -std=gnu++0x are -+ // passed on the command line, which in turn defines -+ // __GXX_EXPERIMENTAL_CXX0X__. -+ # define BOOST_HAS_DECLTYPE -+ # define BOOST_HAS_RVALUE_REFS -+ # define BOOST_HAS_STATIC_ASSERT -+-# define BOOST_HAS_VARIADIC_TMPL -++# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)) -++# define BOOST_HAS_VARIADIC_TMPL -++# else -++# define BOOST_NO_CXX11_VARIADIC_TEMPLATES -++# endif -+ #else -+ # define BOOST_NO_CXX11_DECLTYPE -+ # define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS -+@@ -153,7 +157,7 @@ -+ -+ // Variadic templates compiler: -+ // http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html -+-# if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4) && defined(__GXX_EXPERIMENTAL_CXX0X__)) -++# if defined(__VARIADIC_TEMPLATES) -+ # define BOOST_HAS_VARIADIC_TMPL -+ # else -+ # define BOOST_NO_CXX11_VARIADIC_TEMPLATES Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-boost_boost__1__55__0.patch ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-solenv_gbuild_platform_freebsd.mk =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-solenv_gbuild_platform_freebsd.mk (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-solenv_gbuild_platform_freebsd.mk (nonexistent) @@ -1,23 +0,0 @@ ---- solenv/gbuild/platform/freebsd.mk.orig 2017-11-27 13:50:25 UTC -+++ solenv/gbuild/platform/freebsd.mk -@@ -94,6 +94,7 @@ gb_CXXFLAGS := \ - -fno-use-cxa-atexit \ - -fvisibility-inlines-hidden \ - -fvisibility=hidden \ -+ -std=gnu++98 \ - -pipe - ifeq ($(COM),CLANG) - gb_CXXFLAGS += -DHAVE_STL_INCLUDE_PATH -@@ -142,6 +143,12 @@ gb_LinkTarget_LDFLAGS += \ - -Wl,--dynamic-list-cpp-typeinfo \ - -Wl,-Bsymbolic-functions \ - -+endif -+ -+ifneq ($(filter $(CPUNAME),INTEL X86_64),) -+gb_CFLAGS += -fstack-protector -+gb_CXXFLAGS += -fstack-protector -+gb_LinkTarget_LDFLAGS += -fstack-protector - endif - - ifeq ($(gb_DEBUGLEVEL),2) Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-solenv_gbuild_platform_freebsd.mk ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-scaddins_source_analysis_analysishelper.hxx =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-scaddins_source_analysis_analysishelper.hxx (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-scaddins_source_analysis_analysishelper.hxx (nonexistent) @@ -1,11 +0,0 @@ ---- scaddins/source/analysis/analysishelper.hxx.orig 2014-09-19 18:07:44 UTC -+++ scaddins/source/analysis/analysishelper.hxx -@@ -35,7 +35,7 @@ - - #include - --#include -+#include - #ifndef double_complex - typedef std::complex double_complex; - #endif Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-scaddins_source_analysis_analysishelper.hxx ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-l10ntools_source_inireader.cxx =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-l10ntools_source_inireader.cxx (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-l10ntools_source_inireader.cxx (nonexistent) @@ -1,10 +0,0 @@ ---- l10ntools/source/inireader.cxx.orig 2019-08-14 17:32:51 UTC -+++ l10ntools/source/inireader.cxx -@@ -21,6 +21,7 @@ - - #include - #include -+#include - #include - #include - #include Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-l10ntools_source_inireader.cxx ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-icu_makefile.mk =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-icu_makefile.mk (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-icu_makefile.mk (nonexistent) @@ -1,14 +0,0 @@ ---- icu/makefile.mk.orig 2019-08-14 17:37:09 UTC -+++ icu/makefile.mk -@@ -85,6 +85,11 @@ LDFLAGSADD += -Wl,--hash-style=both - LDFLAGSADD += -Wl,-Bsymbolic-functions -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo - .ENDIF - -+# FreeBSD with gcc from ports needs -Wl,-rpath= to find the matching libstdc++ -+.IF "$(OS)"=="FREEBSD" -+LDFLAGSADD+=$(FBSD_GCC_RPATH) -+.ENDIF -+ - CONFIGURE_DIR=source - - CONFIGURE_ACTION+=sh -c 'CFLAGS="$(icu_CFLAGS)" CXXFLAGS="$(icu_CXXFLAGS)" LDFLAGS="$(icu_LDFLAGS) $(LDFLAGSADD)" ./configure --enable-layout --enable-static --enable-shared=yes $(DISABLE_64BIT)' Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-icu_makefile.mk ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-solenv_inc_unxfbsd.mk =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-solenv_inc_unxfbsd.mk (revision 554861) +++ branches/2020Q4/editors/openoffice-4/files/patch-solenv_inc_unxfbsd.mk (nonexistent) @@ -1,19 +0,0 @@ ---- solenv/inc/unxfbsd.mk.orig 2017-11-27 13:50:28 UTC -+++ solenv/inc/unxfbsd.mk -@@ -96,10 +96,15 @@ CFLAGSEXCEPTIONS=-fexceptions -fno-enforce-eh-specs - CFLAGS_NO_EXCEPTIONS=-fno-exceptions - - # -fpermissive should be removed as soon as possible --CFLAGSCXX= -pipe $(ARCH_FLAGS) -+CFLAGSCXX= -pipe $(ARCH_FLAGS) -std=gnu++98 - .IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE" - CFLAGSCXX += -fvisibility-inlines-hidden - .ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE" -+ -+.IF "$(CPUNAME)" == "INTEL" || "$(CPUNAME)" == "X86_64" -+CFLAGSCC += -fstack-protector -+CFLAGSCXX += -fstack-protector -+.ENDIF - - # Compiler flags for compiling static object in multi threaded environment with graphical user interface - CFLAGSOBJGUIMT= Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-solenv_inc_unxfbsd.mk ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2020Q4/editors/openoffice-4/files/patch-configure.ac =================================================================== --- branches/2020Q4/editors/openoffice-4/files/patch-configure.ac (nonexistent) +++ branches/2020Q4/editors/openoffice-4/files/patch-configure.ac (revision 554862) @@ -0,0 +1,32 @@ +--- configure.ac.orig 2019-11-12 05:10:21 UTC ++++ configure.ac +@@ -367,11 +367,11 @@ AC_ARG_WITH(bundled-extension-blobs, + and comply with their distribution requirements by updating the + files LICENSE_aggregated and NOTICE_aggregated accordingly + ],,) +-#AC_ARG_WITH(bundled-prereg-extensions, +-#[ --with-bundled-prereg-extensions Whitespace seperated list of files in the tarball directory that +-# are to be bundled as pre-registered extensions. Make sure to only bundle +-# extensions which can be installed without requiring a license dialog +-#],,) ++AC_ARG_WITH(bundled-prereg-extensions, ++[ --with-bundled-prereg-extensions Whitespace seperated list of files in the tarball directory that ++ are to be bundled as pre-registered extensions. Make sure to only bundle ++ extensions which can be installed without requiring a license dialog ++],,) + AC_ARG_ENABLE(bundled-dictionaries, + [ --enable-bundled-dictionaries Download dictionaries (spelling, hyphenation, thesaurus) + according to main/extensions.lst and bundle them. Make sure to +@@ -1538,9 +1538,9 @@ else + fi + AC_SUBST(BUNDLED_EXTENSION_BLOBS) + +-#dnl =================================================================== +-#dnl Check extensions that are to be bundled as pre-registerd +-#dnl =================================================================== ++dnl =================================================================== ++dnl Check extensions that are to be bundled as pre-registerd ++dnl =================================================================== + if test -n "$with_bundled_prereg_extensions"; then + BUNDLED_PREREG_EXTENSIONS="$with_bundled_prereg_extensions" + else Property changes on: branches/2020Q4/editors/openoffice-4/files/patch-configure.ac ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: branches/2020Q4 =================================================================== --- branches/2020Q4 (revision 554861) +++ branches/2020Q4 (revision 554862) Property changes on: branches/2020Q4 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r554647,554693