Remove support for AIX

As discussed in the mailing list thread starting at
<https://lists.freedesktop.org/archives/libreoffice/2023-January/089808.html>
"Plan to remove dead C++ UNO bridge implementations (bridges/source/cpp_uno/*)",
the bridge implementation at bridges/source/cpp_uno/gcc3_aix_powerpc is
apparently dead and should thus be removed.  However, that was the only bridge
implementation for AIX, which implies that support for the AIX platform as a
whole is dead and should thus be removed.

Change-Id: I96de3f7f97d4fd770ff78256f0ea435383688be9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146057
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
Stephan Bergmann 2023-01-23 11:28:21 +01:00
parent 12a5e9bd92
commit 70bcf9e8be
77 changed files with 39 additions and 2401 deletions

View file

@ -1015,13 +1015,13 @@ $(eval $(call gb_Helper_register_packages_for_install,ooo,\
) \
$(if $(filter SKIA,$(BUILD_TYPE)), \
vcl_skia_denylist ) \
$(if $(DISABLE_PYTHON),,$(if $(filter-out AIX,$(OS)), \
$(if $(DISABLE_PYTHON),, \
Pyuno/commonwizards \
Pyuno/fax \
Pyuno/letter \
Pyuno/agenda \
Pyuno/mailmerge \
)) \
) \
sfx2_classification \
$(if $(filter OPENCL,$(BUILD_TYPE)),sc_opencl_runtimetest) \
$(if $(ENABLE_HTMLHELP),\

View file

@ -161,7 +161,6 @@ my $aclocal_flags = $ENV{ACLOCAL_FLAGS};
$aclocal_flags .= " -I $src_path/m4";
$aclocal_flags .= " -I $src_path/m4/mac" if ($system eq 'Darwin');
$aclocal_flags .= " -I /opt/freeware/share/aclocal" if ($system eq 'AIX');
$ENV{AUTOMAKE_EXTRA_FLAGS} = '--warnings=no-portability' if (!($system eq 'Darwin'));

View file

@ -138,10 +138,6 @@ ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
bridges_SELECTED_BRIDGE := gcc3_linux_powerpc
bridge_noopt_objects := uno2cpp
bridge_exception_objects := cpp2uno except
else ifeq ($(OS),AIX)
bridges_SELECTED_BRIDGE := gcc3_aix_powerpc
bridge_exception_objects := except
bridge_cxx_objects := cpp2uno uno2cpp
endif
else ifeq ($(CPUNAME),POWERPC64)

View file

@ -1,658 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
#include <com/sun/star/uno/genfunc.hxx>
#include <sal/log.hxx>
#include <uno/data.h>
#include <typelib/typedescription.hxx>
#include "bridge.hxx"
#include "cppinterfaceproxy.hxx"
#include "types.hxx"
#include "vtablefactory.hxx"
#include "share.hxx"
#include <string.h>
#include <typeinfo>
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, double * fpreg, void ** ovrflw,
sal_uInt64 * pRegisterReturn /* space for register return */ )
{
// gpreg: [ret *], this, [gpr params]
// fpreg: [fpr params]
// ovrflw: [remainder of params]
// 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
sal_Int32 ng = 0;
sal_Int32 nf = 0;
ovrflw -= ppc::MAX_GPR_REGS;
if (pReturnTypeDescr)
{
if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
pUnoReturn = pRegisterReturn; // direct way for simple types
else // complex return via ptr (pCppReturn)
{
pCppReturn = *gpreg;
++gpreg;
++ng;
++ovrflw;
pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )
? __builtin_alloca( pReturnTypeDescr->nSize )
: pCppReturn); // direct way
}
}
// pop this
++gpreg;
++ng;
++ovrflw;
// stack space
static_assert(sizeof(void *) == sizeof(sal_Int32), "### unexpected size!");
// parameters
void ** pUnoArgs = (void **)__builtin_alloca( 4 * sizeof(void *) * nParams );
void ** pCppArgs = pUnoArgs + nParams;
// indices of values this have to be converted (interface conversion cpp<=>uno)
sal_Int32 * pTempIndices = (sal_Int32 *)(pUnoArgs + (2 * nParams));
// type descriptions for reconversions
typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
sal_Int32 nTempIndices = 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_BOOLEAN:
case typelib_TypeClass_BYTE:
if (ng < ppc::MAX_GPR_REGS)
{
*ovrflw = *gpreg++;
++ng;
}
pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-1));
++ovrflw;
break;
case typelib_TypeClass_CHAR:
case typelib_TypeClass_SHORT:
case typelib_TypeClass_UNSIGNED_SHORT:
if (ng < ppc::MAX_GPR_REGS)
{
*ovrflw = *gpreg++;
++ng;
}
pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-2));
++ovrflw;
break;
case typelib_TypeClass_HYPER:
case typelib_TypeClass_UNSIGNED_HYPER:
pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
for (int i = 0; i < 2; ++i)
{
if (ng < ppc::MAX_GPR_REGS)
{
*ovrflw = *gpreg++;
++ng;
}
++ovrflw;
}
break;
case typelib_TypeClass_DOUBLE:
if (nf < ppc::MAX_SSE_REGS)
{
pCppArgs[nPos] = pUnoArgs[nPos] = fpreg;
++fpreg;
++nf;
}
else
{
pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
}
if (ng < ppc::MAX_GPR_REGS)
{
ng+=2;
gpreg+=2;
}
ovrflw+=2;
break;
case typelib_TypeClass_FLOAT:
if (nf < ppc::MAX_SSE_REGS)
{
pCppArgs[nPos] = pUnoArgs[nPos] = fpreg;
++fpreg;
++nf;
}
else
{
pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
}
if (ng < ppc::MAX_GPR_REGS)
{
++gpreg;
++ng;
}
++ovrflw;
break;
default:
if (ng < ppc::MAX_GPR_REGS)
{
*ovrflw = *gpreg++;
++ng;
}
pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
++ovrflw;
break;
}
// no longer needed
TYPELIB_DANGER_RELEASE( pParamTypeDescr );
}
else // ptr to complex value | ref
{
void *pCppStack; //temporary stack pointer
if (ng < ppc::MAX_GPR_REGS)
{
*ovrflw = *gpreg++;
++ng;
}
pCppArgs[nPos] = pCppStack = *ovrflw++;
if (! rParam.bIn) // is pure out
{
// uno out is unconstructed mem!
pUnoArgs[nPos] = __builtin_alloca( pParamTypeDescr->nSize );
pTempIndices[nTempIndices] = nPos;
// will be released at reconversion
ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
}
// is in/inout
else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
{
uno_copyAndConvertData( pUnoArgs[nPos] = __builtin_alloca( pParamTypeDescr->nSize ),
pCppStack, pParamTypeDescr,
pThis->getBridge()->getCpp2Uno() );
pTempIndices[nTempIndices] = nPos; // has to be reconverted
// will be released at reconversion
ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
}
else // direct way
{
pUnoArgs[nPos] = 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 occurred...
if (pUnoExc)
{
// destruct temporary in/inout params
for ( ; nTempIndices--; )
{
sal_Int32 nIndex = pTempIndices[nTempIndices];
if (pParams[nIndex].bIn) // is in/inout => was constructed
uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndices], 0 );
TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndices] );
}
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 ( ; nTempIndices--; )
{
sal_Int32 nIndex = pTempIndices[nTempIndices];
typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndices];
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, double * fpreg, void ** ovrflw,
sal_uInt64 * pRegisterReturn /* space for register return */ )
{
static_assert(sizeof(sal_Int32)==sizeof(void *), "### unexpected!");
// gpreg: [ret *], this, [other gpr params]
// fpreg: [fpr params]
// ovrflw: [gpr or fpr params (in space allocated for all params properly aligned)]
void * pThis;
if( nFunctionIndex & 0x8000 )
{
nFunctionIndex &= 0x7fff;
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();
if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex)
{
SAL_WARN(
"bridges",
"illegal " << OUString::unacquired(&pTypeDescr->aBase.pTypeName)
<< " vtable index " << nFunctionIndex << "/"
<< pTypeDescr->nMapFunctionIndexToMemberIndex);
throw RuntimeException(
("illegal " + OUString::unacquired(&pTypeDescr->aBase.pTypeName)
+ " vtable index " + OUString::number(nFunctionIndex) + "/"
+ OUString::number(pTypeDescr->nMapFunctionIndexToMemberIndex)),
(XInterface *)pThis);
}
// determine called method
sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
assert(nMemberPos < pTypeDescr->nAllMembers);
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( "no member description found!", (XInterface *)pThis );
}
}
return eRet;
}
/**
* is called on incoming vtable calls
* (called by asm snippets)
*/
static sal_uInt64 cpp_vtable_call(sal_Int32 r3, sal_Int32 r4, sal_Int32 r5,
sal_Int32 r6, sal_Int32 r7, sal_Int32 r8, sal_Int32 r9,
sal_Int32 r10, sal_Int32 firstonstack)
{
volatile unsigned long nOffsetAndIndex;
__asm__ __volatile__(
"mr %0, 11\n\t"
: "=r" (nOffsetAndIndex) : );
sal_Int32 nVtableOffset = (nOffsetAndIndex >> 16);
sal_Int32 nFunctionIndex = (nOffsetAndIndex & 0xFFFF);
void ** ovrflw = (void**)&firstonstack;
sal_Int32 gpreg[ppc::MAX_GPR_REGS];
gpreg[0] = r3;
gpreg[1] = r4;
gpreg[2] = r5;
gpreg[3] = r6;
gpreg[4] = r7;
gpreg[5] = r8;
gpreg[6] = r9;
gpreg[7] = r10;
double fpreg[ppc::MAX_SSE_REGS];
register double d0 asm("fr1"); fpreg[0] = d0;
register double d1 asm("fr2"); fpreg[1] = d1;
register double d2 asm("fr3"); fpreg[2] = d2;
register double d3 asm("fr4"); fpreg[3] = d3;
register double d4 asm("fr5"); fpreg[4] = d4;
register double d5 asm("fr6"); fpreg[5] = d5;
register double d6 asm("fr7"); fpreg[6] = d6;
register double d7 asm("fr8"); fpreg[7] = d7;
register double d8 asm("fr9"); fpreg[8] = d8;
register double d9 asm("fr10"); fpreg[9] = d9;
register double d10 asm("fr11"); fpreg[10] = d10;
register double d11 asm("fr12"); fpreg[11] = d11;
register double d12 asm("fr13"); fpreg[12] = d12;
#if OSL_DEBUG_LEVEL > 2
for(int i = 0; i < 8; ++i)
{
fprintf(stderr, "general reg %d is %x\n", i, gpreg[i]);
}
for(int i = 0; i < 13; ++i)
{
fprintf(stderr, "sse reg %d is %f\n", i, fpreg[i]);
fprintf(stderr, "sse reg %d is %llx\n", i, fpreg[i]);
}
for(int i = -8; i < 8; ++i)
{
fprintf(stderr, "overflow arg %d is %x\n", i, ovrflw[i]);
}
#endif
sal_uInt64 nRegReturn=0;
typelib_TypeClass aType =
cpp_mediate( nFunctionIndex, nVtableOffset, (void**)gpreg, fpreg, ovrflw, &nRegReturn );
sal_uInt32 *pRegReturn = (sal_uInt32*)&nRegReturn;
switch( aType )
{
case typelib_TypeClass_BOOLEAN:
pRegReturn[0] = (sal_uInt32)(*(char *)pRegReturn);
break;
case typelib_TypeClass_BYTE:
pRegReturn[0] = (sal_Int32)(*(unsigned char *)pRegReturn);
break;
case typelib_TypeClass_SHORT:
pRegReturn[0] = (sal_Int32)(*(short *)pRegReturn);
break;
case typelib_TypeClass_CHAR:
case typelib_TypeClass_UNSIGNED_SHORT:
pRegReturn[0] = (sal_uInt32)(*(unsigned short *)pRegReturn);
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;
case typelib_TypeClass_HYPER:
case typelib_TypeClass_UNSIGNED_HYPER:
break;
default:
pRegReturn[0] = (sal_uInt32)(*(unsigned int*)pRegReturn);
break;
}
return nRegReturn;
}
int const codeSnippetSize = 3 * sizeof(void*);
unsigned char * codeSnippet( unsigned char * code, sal_Int16 functionIndex,
sal_Int16 vtableOffset, bool simpleRetType )
{
sal_uInt32 nOffsetAndIndex = ( ( vtableOffset ) << 16 ) | (functionIndex );
if (! simpleRetType )
nOffsetAndIndex |= 0x8000;
void **raw = (void**)&code[0];
memcpy(raw, (char*)cpp_vtable_call, 2 * sizeof(void*));
raw[2] = (void*)nOffsetAndIndex;
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 const * fn; };
bridges::cpp_uno::shared::VtableFactory::Slot *
bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
{
return static_cast< Slot * >(block) + 2;
}
std::size_t bridges::cpp_uno::shared::VtableFactory::getBlockSize(
sal_Int32 slotCount)
{
return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
}
namespace {
// Some dummy type whose RTTI is used in the synthesized proxy vtables to make uses of dynamic_cast
// on such proxy objects not crash:
struct ProxyRtti {};
}
bridges::cpp_uno::shared::VtableFactory::Slot *
bridges::cpp_uno::shared::VtableFactory::initializeBlock(
void * block, sal_Int32 slotCount, sal_Int32,
typelib_InterfaceTypeDescription *)
{
Slot * slots = mapBlockToVtable(block);
slots[-2].fn = 0;
slots[-1].fn = &typeid(ProxyRtti);
return slots + slotCount;
}
unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
Slot ** slots, unsigned char * code,
typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
sal_Int32 functionCount, sal_Int32 vtableOffset)
{
(*slots) -= functionCount;
Slot * s = *slots;
for (sal_Int32 i = 0; i < type->nMembers; ++i) {
typelib_TypeDescription * member = 0;
TYPELIB_DANGER_GET(&member, type->ppMembers[i]);
assert(member != 0);
switch (member->eTypeClass) {
case typelib_TypeClass_INTERFACE_ATTRIBUTE:
// Getter:
(s++)->fn = code;
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;
code = codeSnippet(code, functionOffset++, vtableOffset, true);
}
break;
case typelib_TypeClass_INTERFACE_METHOD:
(s++)->fn = code;
code = codeSnippet(
code, functionOffset++, vtableOffset,
bridges::cpp_uno::shared::isSimpleType(
reinterpret_cast<
typelib_InterfaceMethodTypeDescription * >(
member)->pReturnTypeRef));
break;
default:
assert(false);
break;
}
TYPELIB_DANGER_RELEASE(member);
}
return code;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -1,260 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
#include <stdio.h>
#include <dlfcn.h>
#include <cxxabi.h>
#include <rtl/strbuf.hxx>
#include <rtl/ustrbuf.hxx>
#include <osl/mutex.hxx>
#include <com/sun/star/uno/genfunc.hxx>
#include <typelib/typedescription.hxx>
#include <uno/any2.h>
#include <unordered_map>
#include "share.hxx"
#include <string.h>
using namespace ::std;
using namespace ::osl;
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 )
{
#ifdef DEBUG
char const * start = p;
#endif
// example: N3com3sun4star4lang24IllegalArgumentExceptionE
OUStringBuffer buf( 64 );
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( '.' );
}
#ifdef DEBUG
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 std::unordered_map< OUString, type_info * > t_rtti_map;
Mutex m_mutex;
t_rtti_map m_rttis;
t_rtti_map m_generatedRttis;
void * m_hApp;
public:
RTTI();
~RTTI();
type_info * getRTTI( typelib_CompoundTypeDescription * );
};
RTTI::RTTI()
: m_hApp( dlopen( 0, RTLD_LAZY ) )
{
}
RTTI::~RTTI()
{
dlclose( m_hApp );
}
type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr )
{
type_info * rtti;
OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName;
MutexGuard guard( m_mutex );
t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) );
if (iFind == m_rttis.end())
{
// RTTI symbol
OStringBuffer buf( 64 );
buf.append( "_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 ) ) );
assert(insertion.second);
}
else
{
// try to lookup the symbol in the generated rtti map
t_rtti_map::const_iterator iiFind( m_generatedRttis.find( unoName ) );
if (iiFind == 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;
#ifdef DEBUG
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 ) ) );
assert(insertion.second);
}
else // taking already generated rtti
{
rtti = iiFind->second;
}
}
}
else
{
rtti = iFind->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 );
assert(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 );
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 rtti_data;
rtti = (type_info*)rtti_data.getRTTI((typelib_CompoundTypeDescription*)pTypeDescr);
TYPELIB_DANGER_RELEASE( pTypeDescr );
if (! rtti)
terminate();
}
__cxa_throw( pCppExc, rtti, deleteException );
}
void fillUnoException(uno_Any * pExc, uno_Mapping * pCpp2Uno)
{
__cxa_exception * header = __cxa_get_globals()->caughtExceptions;
if (! header)
terminate();
std::type_info *exceptionType = __cxa_current_exception_type();
typelib_TypeDescription * pExcTypeDescr = 0;
OUString unoName( toUNOname( exceptionType->name() ) );
::typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData );
if (! pExcTypeDescr)
terminate();
// construct uno exception any
::uno_any_constructAndConvert( pExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno );
::typelib_typedescription_release( pExcTypeDescr );
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -1,89 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
#pragma once
#include "uno/mapping.h"
#include <typeinfo>
#include <exception>
#include <cstddef>
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 *);
void (*unexpectedHandler)(); // std::unexpected_handler dropped from C++17
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();
extern "C" std::type_info *__cxa_current_exception_type() throw();
void raiseException(
uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
void fillUnoException(uno_Any *, uno_Mapping * pCpp2Uno);
}
namespace ppc
{
enum ppclimits { MAX_GPR_REGS = 8, MAX_SSE_REGS = 13 };
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -1,501 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
#include <sys/types.h>
#include <sys/malloc.h>
#include <com/sun/star/uno/Exception.hxx>
#include <com/sun/star/uno/RuntimeException.hxx>
#include <com/sun/star/uno/genfunc.hxx>
#include <o3tl/runtimetooustring.hxx>
#include <uno/data.h>
#include "bridge.hxx"
#include "types.hxx"
#include "unointerfaceproxy.hxx"
#include "vtables.hxx"
#include "share.hxx"
#include <exception>
#include <stdio.h>
#include <string.h>
#include <typeinfo>
using namespace ::com::sun::star::uno;
namespace
{
void MapReturn(sal_uInt32 r3, sal_uInt32 r4, double dret, typelib_TypeClass eReturnType, void *pRegisterReturn)
{
switch( eReturnType )
{
case typelib_TypeClass_HYPER:
case typelib_TypeClass_UNSIGNED_HYPER:
((long*)pRegisterReturn)[1] = r4;
// fall through on purpose
case typelib_TypeClass_LONG:
case typelib_TypeClass_UNSIGNED_LONG:
case typelib_TypeClass_ENUM:
((long*)pRegisterReturn)[0] = r3;
break;
case typelib_TypeClass_CHAR:
case typelib_TypeClass_SHORT:
case typelib_TypeClass_UNSIGNED_SHORT:
*(unsigned short*)pRegisterReturn = (unsigned short)r3;
break;
case typelib_TypeClass_BOOLEAN:
case typelib_TypeClass_BYTE:
*(unsigned char*)pRegisterReturn = (unsigned char)r3;
break;
case typelib_TypeClass_FLOAT:
*(float*)pRegisterReturn = (float)dret;
break;
case typelib_TypeClass_DOUBLE:
*(double*)pRegisterReturn = dret;
break;
default:
break;
}
}
#define DISPLACEMENT -2
static void callVirtualMethod(
void * pThis,
sal_uInt32 nVtableIndex,
void * pRegisterReturn,
typelib_TypeClass eReturnType,
sal_uInt32 * pStack,
sal_uInt32 nStack,
double *pFPR,
sal_uInt32 nFPR)
{
sal_uInt32 nStackWords = nStack;
if (nStackWords < ppc::MAX_GPR_REGS)
nStackWords = 0;
else
nStackWords-=ppc::MAX_GPR_REGS;
if (nStackWords)
nStackWords = ( nStackWords + 1) & ~1;
sal_uInt32 *stack = (sal_uInt32*)__builtin_alloca( nStackWords * sizeof(sal_uInt32) );
memcpy(stack+DISPLACEMENT, pStack+ppc::MAX_GPR_REGS, nStack * sizeof(sal_uInt32));
// Get pointer to method
sal_uInt32 pMethod = *((sal_uInt32 *)pThis);
pMethod += 4 * nVtableIndex;
pMethod = *((sal_uInt32 *)pMethod);
typedef void (* FunctionCall )( sal_uInt32, sal_uInt32, sal_uInt32, sal_uInt32, sal_uInt32, sal_uInt32, sal_uInt32, sal_uInt32 );
FunctionCall pFunc = (FunctionCall)pMethod;
register double d0 asm("fr1"); d0 = pFPR[0];
register double d1 asm("fr2"); d1 = pFPR[1];
register double d2 asm("fr3"); d2 = pFPR[2];
register double d3 asm("fr4"); d3 = pFPR[3];
register double d4 asm("fr5"); d4 = pFPR[4];
register double d5 asm("fr6"); d5 = pFPR[5];
register double d6 asm("fr7"); d6 = pFPR[6];
register double d7 asm("fr8"); d7 = pFPR[7];
register double d8 asm("fr9"); d8 = pFPR[8];
register double d9 asm("fr10"); d9 = pFPR[9];
register double d10 asm("fr11"); d10 = pFPR[10];
register double d11 asm("fr12"); d11 = pFPR[11];
register double d12 asm("fr13"); d12 = pFPR[12];
(*pFunc)(pStack[0], pStack[1], pStack[2], pStack[3], pStack[4], pStack[5], pStack[6], pStack[7]);
register sal_uInt32 r3 asm("r3");
register sal_uInt32 r4 asm("r4");
MapReturn(r3, r4, d0, eReturnType, pRegisterReturn);
}
#define INSERT_INT32(pSV, pDS) \
{ \
*pDS++ = *reinterpret_cast<sal_uInt32 *>(pSV); \
}
#define INSERT_INT16(pSV, pDS) \
{ \
*pDS++ = *reinterpret_cast<sal_uInt16 *>(pSV); \
}
#define INSERT_INT8(pSV, pDS) \
{ \
*pDS++ = *reinterpret_cast<sal_uInt8 *>(pSV); \
}
#define INSERT_FLOAT(pSV, nr, pFPR, pDS) \
{ \
if (nr < ppc::MAX_SSE_REGS) \
{ \
sal_uInt32 *pDouble = (sal_uInt32 *)&(pFPR[nr++]); \
pDouble[0] = *reinterpret_cast<sal_uInt32 *>(pSV); \
} \
*pDS++ = *reinterpret_cast<sal_uInt32 *>(pSV); \
}
#define INSERT_DOUBLE(pSV, nr, pFPR, pDS) \
{ \
if (nr < ppc::MAX_SSE_REGS) \
{ \
pFPR[nr++] = *reinterpret_cast<double *>(pSV); \
} \
*pDS++ = reinterpret_cast<sal_uInt32 *>(pSV)[1]; \
*pDS++ = reinterpret_cast<sal_uInt32 *>(pSV)[0]; \
}
#define INSERT_INT64(pSV, pDS) \
{ \
INSERT_INT32(pSV, pDS) \
INSERT_INT32(((sal_uInt32*)pSV)+1, pDS) \
}
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_uInt32 * pStack = (sal_uInt32*)__builtin_alloca( sizeof(sal_Int32) + ((nParams+2) * sizeof(sal_Int64)) );
sal_uInt32 * pStackStart = pStack;
double pFPR[ppc::MAX_SSE_REGS];
sal_uInt32 nFPR = 0;
// return
typelib_TypeDescription * pReturnTypeDescr = 0;
TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
assert(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 = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )
? __builtin_alloca( pReturnTypeDescr->nSize )
: pUnoReturn); // direct way
INSERT_INT32(&pCppReturn, pStack);
}
}
// push this
void * pAdjustedThisPtr = reinterpret_cast< void ** >(pThis->getCppI()) + aVtableSlot.offset;
INSERT_INT32(&pAdjustedThisPtr, pStack);
// stack space
static_assert( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" );
// args
void ** pCppArgs = (void **)__builtin_alloca( 3 * sizeof(void *) * nParams );
// indices of values this have to be converted (interface conversion cpp<=>uno)
sal_Int32 * pTempIndices = (sal_Int32 *)(pCppArgs + nParams);
// type descriptions for reconversions
typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams));
sal_Int32 nTempIndices = 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] = pStack, pUnoArgs[nPos], pParamTypeDescr,
pThis->getBridge()->getUno2Cpp() );
switch (pParamTypeDescr->eTypeClass)
{
case typelib_TypeClass_LONG:
case typelib_TypeClass_UNSIGNED_LONG:
case typelib_TypeClass_ENUM:
INSERT_INT32(pCppArgs[nPos], pStack);
break;
case typelib_TypeClass_SHORT:
case typelib_TypeClass_CHAR:
case typelib_TypeClass_UNSIGNED_SHORT:
INSERT_INT16(pCppArgs[nPos], pStack);
break;
case typelib_TypeClass_BOOLEAN:
case typelib_TypeClass_BYTE:
INSERT_INT8(pCppArgs[nPos], pStack);
break;
case typelib_TypeClass_FLOAT:
INSERT_FLOAT(pCppArgs[nPos], nFPR, pFPR, pStack);
break;
case typelib_TypeClass_DOUBLE:
INSERT_DOUBLE(pCppArgs[nPos], nFPR, pFPR, pStack);
break;
case typelib_TypeClass_HYPER:
case typelib_TypeClass_UNSIGNED_HYPER:
INSERT_INT64(pCppArgs[nPos], pStack);
break;
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(
pCppArgs[nPos] = __builtin_alloca( pParamTypeDescr->nSize ),
pParamTypeDescr );
pTempIndices[nTempIndices] = nPos; // default constructed for cpp call
// will be released at reconversion
ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
}
// is in/inout
else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
{
uno_copyAndConvertData(
pCppArgs[nPos] = __builtin_alloca( pParamTypeDescr->nSize ),
pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() );
pTempIndices[nTempIndices] = nPos; // has to be reconverted
// will be released at reconversion
ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr;
}
else // direct way
{
pCppArgs[nPos] = pUnoArgs[nPos];
// no longer needed
TYPELIB_DANGER_RELEASE( pParamTypeDescr );
}
INSERT_INT32(&(pCppArgs[nPos]), pStack);
}
}
try
{
assert( !( (pCppStack - pCppStackStart ) & 3) && "UNALIGNED STACK !!! (Please DO panic)" );
try {
callVirtualMethod(
pAdjustedThisPtr, aVtableSlot.index,
pCppReturn, pReturnTypeDescr->eTypeClass,
pStackStart, (pStack - pStackStart), pFPR, nFPR );
} catch (css::uno::Exception &) {
throw;
} catch (std::exception & e) {
throw css::uno::RuntimeException(
"C++ code threw " + o3tl::runtimeToOUString(typeid(e).name()) + ": "
+ o3tl::runtimeToOUString(e.what()));
} catch (...) {
throw css::uno::RuntimeException("C++ code threw unknown exception");
}
// NO exception occurred...
*ppUnoExc = 0;
// reconvert temporary params
for ( ; nTempIndices--; )
{
sal_Int32 nIndex = pTempIndices[nTempIndices];
typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndices];
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
CPPU_CURRENT_NAMESPACE::fillUnoException(*ppUnoExc, pThis->getBridge()->getCpp2Uno());
// temporary params
for ( ; nTempIndices--; )
{
sal_Int32 nIndex = pTempIndices[nTempIndices];
// destroy temp cpp param => cpp: every param was constructed
uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndices], cpp_release );
TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndices] );
}
// return type
if (pReturnTypeDescr)
TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
}
}
}
namespace bridges::cpp_uno::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("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(
"illegal member type description!",
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() );
Type const & rExcType = cppu::UnoType<decltype(aExc)>::get();
// binary identical null reference
::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 );
}
}
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -1092,15 +1092,6 @@ freebsd*)
_os=NetBSD
;;
aix*)
using_freetype_fontconfig=yes
using_x11=yes
test_randr=no
test_gstreamer_1_0=no
PTHREAD_LIBS=-pthread
_os=AIX
;;
openbsd*)
using_freetype_fontconfig=yes
using_x11=yes
@ -1271,13 +1262,6 @@ if test "$_os" = "Android" ; then
fi
fi
if test "$_os" = "AIX"; then
AC_PATH_PROG(GAWK, gawk)
if test -z "$GAWK"; then
AC_MSG_ERROR([gawk not found in \$PATH])
fi
fi
AC_SUBST(SDKDIRNAME)
AC_SUBST(PTHREAD_CFLAGS)
@ -2168,7 +2152,7 @@ AC_ARG_WITH(package-format,
AS_HELP_STRING([--with-package-format],
[Specify package format(s) for LibreOffice installation sets. The
implicit --without-package-format leads to no installation sets being
generated. Possible values: aix, archive, bsd, deb, dmg,
generated. Possible values: archive, bsd, deb, dmg,
installed, msi, pkg, and rpm.
Example: --with-package-format='deb rpm']),
,)
@ -4961,16 +4945,6 @@ AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
#
case "$host_os" in
aix*)
COM=GCC
CPUNAME=POWERPC
OS=AIX
RTL_OS=AIX
RTL_ARCH=PowerPC
PLATFORMID=aix_powerpc
P_SEP=:
;;
cygwin*|wsl*)
# Already handled
;;
@ -5489,11 +5463,10 @@ AC_MSG_CHECKING([which package format to use])
if test -n "$with_package_format" -a "$with_package_format" != no; then
for i in $with_package_format; do
case "$i" in
aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
bsd | deb | pkg | rpm | archive | dmg | installed | msi)
;;
*)
AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
aix - AIX software distribution
bsd - FreeBSD, NetBSD, or OpenBSD software distribution
deb - Debian software distribution
pkg - Solaris software distribution
@ -8881,12 +8854,6 @@ AC_SUBST(JAWTLIB)
if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
case "$host_os" in
aix*)
JAVAINC="-I$JAVA_HOME/include"
JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
;;
cygwin*|wsl*)
JAVAINC="-I$JAVA_HOME/include/win32"
JAVAINC="$JAVAINC -I$JAVA_HOME/include"
@ -9196,7 +9163,7 @@ if test "$enable_epm" = "yes"; then
else
for i in $PKGFORMAT; do
case "$i" in
aix | bsd | deb | pkg | rpm | native | portable)
bsd | deb | pkg | rpm | native | portable)
AC_MSG_ERROR(
[--with-package-format='$PKGFORMAT' requires --enable-epm])
;;
@ -11561,7 +11528,7 @@ elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null;
AC_MSG_RESULT([yes])
else
case "$build_os" in
darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
x_GNUCP=[\#]
GNUCP=''
AC_MSG_RESULT([no gnucp found - using the system's cp command])
@ -14654,7 +14621,7 @@ else
case "$host_os" in
aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
if test "$ENABLE_JAVA" != ""; then
pathmunge "$JAVA_HOME/bin" "after"
fi

View file

@ -59,14 +59,7 @@ namespace {
struct AlignSize_Impl
{
sal_Int16 nInt16;
#ifdef AIX
//double: doubleword aligned if -qalign=natural/-malign=natural
//which isn't the default ABI. Otherwise word aligned, While a long long int
//is always doubleword aligned, so use that instead.
sal_Int64 dDouble;
#else
double dDouble;
#endif
};
}

View file

@ -55,14 +55,7 @@ namespace {
struct AlignSize_Impl
{
sal_Int16 nInt16;
#ifdef AIX
//double: doubleword aligned if -qalign=natural/-malign=natural
//which isn't the default ABI. Otherwise word aligned, While a long long int
//is always doubleword aligned, so use that instead.
sal_Int64 dDouble;
#else
double dDouble;
#endif
};
}
@ -1724,13 +1717,7 @@ extern "C" sal_Int32 typelib_typedescription_getAlignedUnoSize(
nSize = rMaxIntegralTypeSize = sal_Int32(sizeof( float ));
break;
case typelib_TypeClass_DOUBLE:
#ifdef AIX
//See previous AIX ifdef comment for an explanation
nSize = (sal_Int32)(sizeof(double));
rMaxIntegralTypeSize = (sal_Int32)(sizeof(void*));
#else
nSize = rMaxIntegralTypeSize = sal_Int32(sizeof( double ));
#endif
break;
case typelib_TypeClass_BYTE:
nSize = rMaxIntegralTypeSize = sal_Int32(sizeof( sal_Int8 ));

View file

@ -30,17 +30,8 @@ epath=$(dirname "$0")
if [ -x "${epath}/javaldx" ] ; then
jpath=$("${epath}/javaldx" $my_envargs)
if [ -n "${jpath}" ]; then
sd_platform=$(uname -s)
case $sd_platform in
AIX)
LIBPATH=${jpath}${LIBPATH:+:${LIBPATH}}
export LIBPATH
;;
*)
LD_LIBRARY_PATH=${jpath}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH
;;
esac
LD_LIBRARY_PATH=${jpath}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH
fi
fi

View file

@ -163,10 +163,6 @@ NetBSD|DragonFly)
LD_LIBRARY_PATH="$sd_prog${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH
;;
AIX)
LIBPATH="$sd_prog${LIBPATH:+:$LIBPATH}"
export LIBPATH
;;
esac
# restore locale setting, avoiding to export empty LC_ALL, s. tdf#130080

View file

@ -49,10 +49,6 @@ NetBSD|FreeBSD|DragonFly)
LD_LIBRARY_PATH="$sd_prog${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
export LD_LIBRARY_PATH
;;
AIX)
LIBPATH="$sd_prog${LIBPATH:+:${LIBPATH}}"
export LIBPATH
;;
esac
for arg in "$@"
@ -72,17 +68,8 @@ if [ -x "${sd_prog}/javaldx" ] ; then
my_path=$("${sd_prog}/javaldx" "$BOOTSTRAPVARS" \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc")
if [ -n "$my_path" ] ; then
sd_platform=$(uname -s)
case "$sd_platform" in
AIX)
LIBPATH="$my_path${LIBPATH:+:$LIBPATH}"
export LIBPATH
;;
*)
LD_LIBRARY_PATH="$my_path${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH
;;
esac
LD_LIBRARY_PATH="$my_path${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH
fi
fi

View file

@ -81,8 +81,6 @@ namespace
ret = checkOSandCPU(u"Solaris", u"SPARC64");
else if (token == u"solaris_x86")
ret = checkOSandCPU(u"Solaris", u"x86");
else if (token == u"aix_powerpc")
ret = checkOSandCPU(u"AIX", u"PowerPC");
else if (token == u"macosx_aarch64")
ret = checkOSandCPU(u"MacOSX", u"AARCH64");
else if (token == u"macosx_x86_64")

View file

@ -584,14 +584,8 @@ static void exec_pagein (Args *args)
static void extend_library_path(const char *new_element)
{
rtl_uString *pEnvName=NULL, *pOrigEnvVar=NULL, *pNewEnvVar=NULL;
const char *pathname;
#ifdef AIX
pathname = "LIBPATH";
#else
pathname = "LD_LIBRARY_PATH";
#endif
rtl_uString_newFromAscii(&pEnvName, pathname);
rtl_uString_newFromAscii(&pEnvName, "LD_LIBRARY_PATH");
rtl_uString_newFromAscii(&pNewEnvVar, new_element);
osl_getEnvironment(pEnvName, &pOrigEnvVar);

View file

@ -42,7 +42,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,clucene,\
external/clucene/patches/clucene-narrowing-conversions.patch \
external/clucene/patches/clucene-nullptr.patch \
external/clucene/patches/clucene-warnings.patch \
external/clucene/patches/clucene-aix.patch \
external/clucene/patches/clucene-git1-win64.patch \
external/clucene/patches/clucene-ub.patch \
external/clucene/patches/clucene-mutex.patch \

View file

@ -1,40 +0,0 @@
diff -rc clucene.orig/src/core/CLucene/store/MMapInput.cpp clucene/src/core/CLucene/store/MMapInput.cpp
*** src/core/CLucene/store/MMapInput.cpp Wed Apr 10 10:57:37 2013
--- src/core/CLucene/store/MMapInput.cpp Wed Apr 10 10:58:30 2013
***************
*** 115,121 ****
{
}
! bool MMapIndexInput::open(const char* path, IndexInput*& ret, CLuceneError& error, int32_t __bufferSize ) {
//Func - Constructor.
// Opens the file named path
--- 115,121 ----
{
}
! bool MMapIndexInput::Open(const char* path, IndexInput*& ret, CLuceneError& error, int32_t __bufferSize ) {
//Func - Constructor.
// Opens the file named path
diff -rc clucene.orig/src/core/CLucene/store/_MMapIndexInput.h clucene/src/core/CLucene/store/_MMapIndexInput.h
*** src/core/CLucene/store/_MMapIndexInput.h Wed Apr 10 10:57:37 2013
--- src/core/CLucene/store/_MMapIndexInput.h Wed Apr 10 10:58:53 2013
***************
*** 18,24 ****
MMapIndexInput(const MMapIndexInput& clone);
MMapIndexInput(Internal* _internal);
public:
! static bool open(const char* path, IndexInput*& ret, CLuceneError& error, int32_t __bufferSize);
~MMapIndexInput();
IndexInput* clone() const;
--- 18,24 ----
MMapIndexInput(const MMapIndexInput& clone);
MMapIndexInput(Internal* _internal);
public:
! static bool Open(const char* path, IndexInput*& ret, CLuceneError& error, int32_t __bufferSize);
~MMapIndexInput();
IndexInput* clone() const;

View file

@ -17,8 +17,6 @@ ifeq ($(COM),MSC)
$(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl$(if $(MSVC_USE_DEBUG_RUNTIME),_debug).dll,builds/libcurl-vc12-$(gb_MSBUILD_PLATFORM)-$(gb_MSBUILD_CONFIG)-dll-zlib-static-ipv6-sspi-schannel/bin/libcurl$(if $(MSVC_USE_DEBUG_RUNTIME),_debug).dll))
else ifeq ($(OS),MACOSX)
$(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl.4.dylib,lib/.libs/libcurl.4.dylib))
else ifeq ($(OS),AIX)
$(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl.so,lib/.libs/libcurl.so.4))
else
$(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl.so.4,lib/.libs/libcurl.so.4.8.0))
endif

View file

@ -28,7 +28,6 @@ $(call gb_ExternalProject_get_state_target,hunspell,build):
$(call gb_ExternalProject_run,build,\
$(gb_RUN_CONFIGURE) ./configure --disable-shared --disable-nls --with-pic \
$(gb_CONFIGURE_PLATFORMS) \
$(if $(filter AIX,$(OS)),CFLAGS="-D_LINUX_SOURCE_COMPAT") \
$(if $(hunspell_CPPFLAGS),CPPFLAGS='$(hunspell_CPPFLAGS)') \
$(if $(hunspell_CXXFLAGS),CXXFLAGS='$(hunspell_CXXFLAGS)') \
$(if $(hunspell_LDFLAGS),LDFLAGS='$(hunspell_LDFLAGS)') \

View file

@ -74,7 +74,7 @@ $(call gb_ExternalProject_get_state_target,icu,build) :
--disable-layout --disable-samples \
$(if $(filter FUZZERS,$(BUILD_TYPE)),--disable-release) \
$(if $(filter EMSCRIPTEN ANDROID,$(OS)),--disable-strict ac_cv_c_bigendian=no) \
$(if $(filter SOLARIS AIX,$(OS)),--disable-64bit-libs) \
$(if $(filter SOLARIS,$(OS)),--disable-64bit-libs) \
$(if $(filter TRUE,$(DISABLE_DYNLOADING)),\
--with-data-packaging=static --enable-static --disable-shared --disable-dyload,\
--disable-static --enable-shared $(if $(filter ANDROID,$(OS)),--with-library-suffix=lo)) \

View file

@ -23,7 +23,6 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,icu,0))
$(eval $(call gb_UnpackedTarball_add_patches,icu,\
external/icu/icu4c-build.patch.1 \
external/icu/icu4c-aix.patch.1 \
external/icu/icu4c-warnings.patch.1 \
external/icu/icu4c-macosx.patch.1 \
external/icu/icu4c-solarisgcc.patch.1 \

View file

@ -1,143 +0,0 @@
diff -ur icu.org/source/config/mh-aix-gcc icu/source/config/mh-aix-gcc
--- icu.org/source/config/mh-aix-gcc 2021-10-28 18:04:57.000000000 +0200
+++ icu/source/config/mh-aix-gcc 2021-11-15 18:35:48.737774348 +0100
@@ -18,84 +18,29 @@
GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS)
GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
-## Commands to link
-## We need to use the C++ linker, even when linking C programs, since
-## our libraries contain C++ code (C++ static init not called)
-LINK.c= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS)
-LINK.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS)
-
-## Shared library options
-LD_SOOPTIONS= -Wl,-bsymbolic
-
-## Commands to make a shared library
-SHLIB.c= $(AIX_PREDELETE) $(CC) $(CFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS)
-SHLIB.cc= $(AIX_PREDELETE) $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS)
-
-## Compiler switch to embed a runtime search path
-LD_RPATH= -I
-LD_RPATH_PRE=
+## Flags for position independent code
+SHAREDLIBCFLAGS = -fPIC
+SHAREDLIBCXXFLAGS = -fPIC
+SHAREDLIBCPPFLAGS = -DPIC
+
+## Additional flags when building libraries and with threads
+THREADSCPPFLAGS = -D_REENTRANT -D_THREAD_SAFE
+LIBCPPFLAGS =
-## enable the shared lib loader
-LDFLAGS += -Wl,-bbigtoc
+LD_RPATH=
+LD_RPATH_PRE=
## These are the library specific LDFLAGS
LDFLAGSICUDT=-nodefaultlibs -nostdlib
-## We need to delete things prior to linking, or else we'll get
-## SEVERE ERROR: output file in use .. on AIX.
-## But, shell script version should NOT delete target as we don't
-## have $@ in that context. (SH = only shell script, icu-config)
-AIX_PREDELETE=rm -f $@ ;
-#SH# AIX_PREDELETE=
-
## Environment variable to set a runtime search path
LDLIBRARYPATH_ENVVAR = LIBPATH
-## Override Versioned target for a shared library.
-FINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO)
-MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO)
-SHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ)))
-SHARED_OBJECT_NO_VERSION = $(basename $(SO_TARGET)).$(SOBJ)
-
-# The following is for Makefile.inc's use.
-ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR)
-
-# this one is for icudefs.mk's use
-ifeq ($(ENABLE_SHARED),YES)
-SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR)
-endif
-
-## Compiler switch to embed a library name. Not present on AIX.
-LD_SONAME =
-
-## The type of assembly needed when pkgdata is used for generating shared libraries.
-GENCCODE_ASSEMBLY=-a xlc
-
## Shared object suffix
-SOBJ= so
-# without the -brtl option, the library names use .a. AIX is funny that way.
-SO= a
-A= a
+SO= so
## Non-shared intermediate object suffix
-STATIC_O = o
-
-## Special AIX rules
-
-## Build archive from shared object
-%.a : %.so
- ln -f $< $(SHARED_OBJECT_NO_VERSION)
- $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
- rm -f $(SHARED_OBJECT_NO_VERSION)
-$(LIBDIR)/%.a : %.so
- ln -f $< $(SHARED_OBJECT_NO_VERSION)
- $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
- rm -f $(SHARED_OBJECT_NO_VERSION)
-
-## Build import list from export list
-%.e : %.exp
- @echo "Building an import list for $<"
- @$(SHELL) -ec "echo '#! $*.a($*.so)' | cat - $< > $@"
+STATIC_O = ao
## Compilation rules
%.$(STATIC_O): $(srcdir)/%.c
@@ -123,10 +68,10 @@
[ -s $@ ] || rm -f $@'
## Versioned libraries rules
-%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO)
- $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@
-%.$(SO): %$(SO_TARGET_VERSION).$(SO)
- $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@
+%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
+ $(RM) $@ && ln -s ${<F} $@
+%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
+ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
## BIR - bind with internal references [so app data and icu data doesn't collide]
diff -ur icu.org/source/tools/pkgdata/pkgdata.cpp icu/source/tools/pkgdata/pkgdata.cpp
--- icu.org/source/tools/pkgdata/pkgdata.cpp 2021-10-28 18:04:57.000000000 +0200
+++ icu/source/tools/pkgdata/pkgdata.cpp 2021-11-15 18:28:38.342143852 +0100
@@ -959,7 +959,7 @@
uprv_strcat(pkgDataFlags[SO_EXT], ".");
uprv_strcat(pkgDataFlags[SO_EXT], pkgDataFlags[A_EXT]);
-#elif U_PLATFORM == U_PF_OS400 || defined(_AIX)
+#elif U_PLATFORM == U_PF_OS400
sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s",
libFileNames[LIB_FILE],
FILE_EXTENSION_SEP,
@@ -1439,15 +1439,6 @@
pkgDataFlags[LDICUDTFLAGS],
targetDir,
libFileNames[LIB_FILE_CYGWIN_VERSION],
-#elif U_PLATFORM == U_PF_AIX
- sprintf(cmd, "%s %s%s;%s %s -o %s%s %s %s%s %s %s",
- RM_CMD,
- targetDir,
- libFileNames[LIB_FILE_VERSION_TMP],
- pkgDataFlags[GENLIB],
- pkgDataFlags[LDICUDTFLAGS],
- targetDir,
- libFileNames[LIB_FILE_VERSION_TMP],
#else
sprintf(cmd, "%s %s -o %s%s %s %s%s %s %s",
pkgDataFlags[GENLIB],

View file

@ -21,8 +21,7 @@ $(call gb_ExternalProject_get_state_target,libexttextcat,build):
$(if $(ENABLE_WERROR),--enable-werror,--disable-werror) \
$(gb_CONFIGURE_PLATFORMS) \
CFLAGS="$(CFLAGS) $(gb_VISIBILITY_FLAGS) $(gb_DEBUGINFO_FLAGS) $(call gb_ExternalProject_get_build_flags,libexttextcat) \
$(if $(COM_IS_CLANG),-Qunused-arguments) \
$(if $(filter AIX,$(OS)),-D_LINUX_SOURCE_COMPAT)" \
$(if $(COM_IS_CLANG),-Qunused-arguments)" \
LDFLAGS="$(call gb_ExternalProject_get_link_flags,libexttextcat)" \
&& $(MAKE) \
)

View file

@ -28,7 +28,6 @@ $(call gb_ExternalProject_get_state_target,libnumbertext,build):
$(if $(verbose),--disable-silent-rules,--enable-silent-rules) \
$(if $(ENABLE_WERROR),--enable-werror,--disable-werror) \
$(gb_CONFIGURE_PLATFORMS) \
$(if $(filter AIX,$(OS)),CFLAGS="-D_LINUX_SOURCE_COMPAT") \
$(if $(libnumbertext_CPPFLAGS),CPPFLAGS='$(libnumbertext_CPPFLAGS)') \
CXXFLAGS="$(libnumbertext_CXXFLAGS) \
$(call gb_ExternalProject_get_build_flags,libnumbertext) \

View file

@ -29,8 +29,7 @@ $(call gb_ExternalProject_get_state_target,lpsolve,build):
$(if $(filter MACOSX,$(OS)),EXTRA_LINKFLAGS='-install_name @__________________________________________________OOO/liblpsolve55.dylib') \
sh -e $(if $(filter MACOSX,$(OS)),ccc.osx, \
$(if $(filter TRUE,$(DISABLE_DYNLOADING)),ccc.static, \
$(if $(filter AIXGCC,$(OS)$(COM)),ccc.aix.gcc, \
ccc))) \
ccc)) \
,lpsolve55)
$(call gb_Trace_EndRange,lpsolve,EXTERNAL)
endif # $(OS)

View file

@ -23,7 +23,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,lpsolve,\
else
$(eval $(call gb_UnpackedTarball_add_patches,lpsolve,\
external/lpsolve/lp_solve-aix.patch \
external/lpsolve/lp_solve-fixed-warn.patch \
external/lpsolve/lp_solve_5.5.patch \
external/lpsolve/lpsolve-ubsan.patch.0 \

View file

@ -1,39 +0,0 @@
--- /dev/null 2010-07-28 04:47:47.000000000 -0500
+++ misc/build/lp_solve_5.5/lpsolve55/ccc.aix.gcc 2010-06-29 17:44:53.000000000 -0500
@@ -0,0 +1,25 @@
+src='../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c ../colamd/colamd.c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
+c=$CC
+
+def=
+so=
+if [ "$PLATFORM" = "SCO_UNIX" ]
+then def='-dy -K PIC -DNOLONGLONG'
+ dl=-lc
+else dl=-ldl
+ so=y
+fi
+
+opts='-O3'
+
+$c -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+ar rv liblpsolve55.a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
+ranlib liblpsolve55.a
+
+if [ "$so" != "" ]
+then
+ $c -fpic -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+ $c -shared $lpsolve_LDFLAGS -o liblpsolve55.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm -ldl
+fi
+
+rm *.o 2>/dev/null
--- misc/lp_solve_5.5/lp_lib.h 2010-07-28 05:15:10.000000000 -0500
+++ misc/build/lp_solve_5.5/lp_lib.h 2010-07-28 05:15:55.000000000 -0500
@@ -56,7 +56,7 @@
/* Define user program feature option switches */
/* ------------------------------------------------------------------------- */
-#if !defined _WINDOWS && !defined _WIN32 && !defined WIN32
+#if !defined _WINDOWS && !defined _WIN32 && !defined WIN32 && !defined(_AIX)
# define _isnan(x) FALSE
#endif

View file

@ -15,7 +15,6 @@ $(eval $(call gb_UnpackedTarball_update_autoconf_configs,nss,nspr/build/autoconf
$(eval $(call gb_UnpackedTarball_add_patches,nss,\
external/nss/nss.patch \
external/nss/nss.aix.patch \
external/nss/nss_macosx.patch \
external/nss/nss-win32-make.patch.1 \
external/nss/ubsan.patch.0 \

View file

@ -1,140 +0,0 @@
diff -ru a/nspr/configure b/nspr/configure
--- a/a/nspr/configure 2014-09-29 16:47:42.984012225 +0100
+++ b/b/nspr/configure 2014-09-29 16:50:33.907375937 +0100
@@ -6325,7 +6325,6 @@
AIX_LINK_OPTS='-brtl -bnso -berok'
;;
esac
- CFLAGS="$CFLAGS -qro -qroconst"
AIX_WRAP='$(DIST)/lib/aixwrap.o'
AIX_TMP='./_aix_tmp.o'
if test -n "$USE_64"; then
diff -ru a/nspr/configure.in b/nspr/configure.in
--- a/a/nspr/configure.in 2014-09-29 16:46:35.257394860 +0100
+++ b/b/nspr/configure.in 2014-09-29 16:50:33.908375942 +0100
@@ -1180,7 +1180,8 @@
AC_DEFINE(XP_UNIX)
AC_DEFINE(AIX)
AC_DEFINE(SYSV)
- DSO_LDOPTS='-brtl -bnortllib -bM:SRE -bnoentry -bexpall -blibpath:/usr/lib:/lib'
+ DSO_LDOPTS='-Wl,-brtl -Wl,-bnortllib -Wl,-blibpath:/usr/lib:/lib'
+ MKSHLIB='$(CCC) -shared $(DSO_LDOPTS) -o $@'
AC_CHECK_HEADER(sys/atomic_op.h, AC_DEFINE(AIX_HAVE_ATOMIC_OP_H))
case "${target_os}" in
aix3.2*)
@@ -1220,10 +1221,9 @@
AC_DEFINE(HAVE_SOCKLEN_T)
AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
USE_IPV6=1
- AIX_LINK_OPTS='-brtl -bnso -berok'
+ AIX_LINK_OPTS='-Wl,-brtl -Wl,-bnso -Wl,-berok'
;;
esac
- CFLAGS="$CFLAGS -qro -qroconst"
AIX_WRAP='$(DIST)/lib/aixwrap.o'
AIX_TMP='./_aix_tmp.o'
if test -n "$USE_64"; then
diff -ru a/nspr/pr/src/Makefile.in b/nspr/pr/src/Makefile.in
--- a/a/nspr/pr/src/Makefile.in 2014-09-29 16:46:35.281395079 +0100
+++ b/b/nspr/pr/src/Makefile.in 2014-09-29 16:50:33.909375948 +0100
@@ -74,7 +74,6 @@
endif # SunOS
ifeq ($(OS_ARCH),AIX)
-DSO_LDOPTS += -binitfini::_PR_Fini
OS_LIBS = -lodm -lcfg
ifeq ($(CLASSIC_NSPR),1)
ifeq ($(OS_RELEASE),4.1)
diff -ru a/nss/cmd/platlibs.mk b/nss/cmd/platlibs.mk
--- a/a/nss/cmd/platlibs.mk 2014-09-29 16:47:42.987012253 +0100
+++ b/b/nss/cmd/platlibs.mk 2014-09-29 16:50:33.910375955 +0100
@@ -171,7 +171,7 @@
$(NULL)
ifeq ($(OS_ARCH), AIX)
-EXTRA_SHARED_LIBS += -brtl
+EXTRA_SHARED_LIBS += -Wl,-brtl
endif
# $(PROGRAM) has NO explicit dependencies on $(EXTRA_SHARED_LIBS)
@@ -217,7 +217,7 @@
$(NULL)
ifeq ($(OS_ARCH), AIX)
-EXTRA_SHARED_LIBS += -brtl
+EXTRA_SHARED_LIBS += -Wl,-brtl
endif
# $(PROGRAM) has NO explicit dependencies on $(EXTRA_SHARED_LIBS)
diff -ru a/nss/cmd/shlibsign/Makefile b/nss/cmd/shlibsign/Makefile
--- a/a/nss/cmd/shlibsign/Makefile 2014-09-29 16:46:35.139393785 +0100
+++ b/b/nss/cmd/shlibsign/Makefile 2014-09-29 16:50:33.910375955 +0100
@@ -43,6 +43,9 @@
endif
+ifeq ($(OS), AIX)
+EXTRA_SHARED_LIBS += -lpthreads
+endif
# sign any and all shared libraries that contain the word freebl
ifeq ($(NSS_BUILD_WITHOUT_SOFTOKEN),1)
diff -ru a/nss/cmd/shlibsign/mangle/Makefile b/nss/cmd/shlibsign/mangle/Makefile
--- a/a/nss/cmd/shlibsign/mangle/Makefile 2014-09-29 16:46:35.139393785 +0100
+++ b/b/nss/cmd/shlibsign/mangle/Makefile 2014-09-29 16:50:33.910375955 +0100
@@ -43,7 +43,9 @@
endif
-
+ifeq ($(OS), AIX)
+EXTRA_SHARED_LIBS += -lpthreads
+endif
#######################################################################
# (5) Execute "global" rules. (OPTIONAL) #
diff -ru a/nss/coreconf/AIX.mk b/nss/coreconf/AIX.mk
--- a/a/nss/coreconf/AIX.mk 2014-09-29 16:46:35.040392883 +0100
+++ b/b/nss/coreconf/AIX.mk 2014-09-29 16:50:33.909375948 +0100
@@ -30,35 +30,30 @@
DEFAULT_COMPILER = xlc_r
-CC = xlc_r
-CCC = xlC_r
+CCC = $(CXX)
CPU_ARCH = rs6000
RANLIB = ranlib
OS_CFLAGS = -DAIX -DSYSV
-OS_LIBS += -blibpath:/usr/lib:/lib -lc -lm
+OS_LIBS += -Wl,-blibpath:/usr/lib:/lib -lc -lm
-DSO_LDOPTS = -brtl -bnortllib -bM:SRE -bnoentry
-MKSHLIB = $(LD) $(DSO_LDOPTS) -blibpath:/usr/lib:/lib -lc -lm
+DSO_LDOPTS = -Wl,-brtl -Wl,-bnortllib
+MKSHLIB = $(CC) --shared $(DSO_LDOPTS) -Wl,-blibpath:/usr/lib:/lib -lc -lm
AIX_WRAP = $(DIST)/lib/aixwrap.o
AIX_TMP = $(OBJDIR)/_aix_tmp.o
ifdef MAPFILE
-DSO_LDOPTS += -bexport:$(MAPFILE)
+DSO_LDOPTS += -Wl,-bexport:$(MAPFILE)
else
-DSO_LDOPTS += -bexpall
+DSO_LDOPTS += -Wl,-bexpall
endif
PROCESS_MAP_FILE = grep -v ';+' $< | grep -v ';-' | \
sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' > $@
-ifdef BUILD_OPT
- OPTIMIZER += -qmaxmem=-1
-endif
-
ifeq ($(USE_64), 1)
OS_CFLAGS += -DAIX_64BIT
OBJECT_MODE=64

View file

@ -26,8 +26,7 @@ endif
openldap_LDFLAGS = $(call gb_ExternalProject_get_link_flags,openldap)
ifeq ($(SYSTEM_NSS),)
openldap_LDFLAGS += -L$(call gb_UnpackedTarball_get_dir,nss)/dist/out/lib \
$(if $(filter AIX,$(OS)),-Wl$(COMMA)-brtl)
openldap_LDFLAGS += -L$(call gb_UnpackedTarball_get_dir,nss)/dist/out/lib
endif
# Help openldap's configure determine that it needs -lpthread even if libasan.so
# contains a pthread_create override:

View file

@ -40,29 +40,6 @@
if ( $CC ) {
# Find the compiler vendor and version number for certain compilers
@@ -364,14 +365,14 @@
}
}
- if ( ${SYSTEM} eq 'AIX' ) {
- # favor vendor cc over gcc
- if (IPC::Cmd::can_run('cc')) {
- $CC = 'cc';
- $CCVENDOR = ''; # Determine later
- $CCVER = 0;
- }
- }
+# if ( ${SYSTEM} eq 'AIX' ) {
+# # favor vendor cc over gcc
+# if (IPC::Cmd::can_run('cc')) {
+# $CC = 'cc';
+# $CCVENDOR = ''; # Determine later
+# $CCVER = 0;
+# }
+# }
if ( $SYSTEM eq "SunOS" ) {
# check for Oracle Developer Studio, expected output is "cc: blah-blah C x.x blah-blah"
--- util/perl/OpenSSL/config.pm.orig 2022-11-08 12:54:59.751298823 +0100
+++ util/perl/OpenSSL/config.pm 2022-11-08 12:55:16.436287053 +0100
@@ -52,13 +52,13 @@

View file

@ -57,7 +57,6 @@ $(eval $(call gb_ExternalPackage_add_file,python3,$(LIBO_BIN_FOLDER)/python.bin-
# Obviously this list should not contain stuff with external dependencies
# that may not be available on baseline systems.
ifneq ($(OS),AIX)
python3_EXTENSION_MODULE_SUFFIX=cpython-$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)$(if $(ENABLE_DBGUTIL),d)
python3_EXTENSION_MODULES= \
LO_lib/array.$(python3_EXTENSION_MODULE_SUFFIX).so \
@ -129,7 +128,6 @@ $(eval $(call gb_ExternalPackage_add_files,python3,$(LIBO_BIN_FOLDER)/python-cor
$(python3_EXTENSION_MODULES) \
))
endif
endif
# headers are not delivered, but used from unpacked dir Include/
# (+ toplevel for pyconfig.h)

View file

@ -92,8 +92,6 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
$(if $(ENABLE_DBGUTIL),--with-pydebug) \
--prefix=/python-inst \
--with-system-expat \
$(if $(filter AIX,$(OS)), \
--disable-ipv6 --with-threads OPT="-g0 -fwrapv -O3 -Wall") \
$(if $(filter MACOSX,$(OS)), \
$(if $(filter INTEL,$(CPUNAME)),--enable-universalsdk=$(MACOSX_SDK_PATH) \
--with-universal-archs=intel \

View file

@ -22,7 +22,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,rasqal,\
external/redland/rasqal/rasqal-pkgconfig.patch.1 \
external/redland/rasqal/rasqal-freebsd.patch.1 \
external/redland/rasqal/rasqal-msvc.patch.1 \
external/redland/rasqal/rasqal-aix.patch.1 \
$(if $(filter-out WNT,$(OS)),external/redland/rasqal/rasqal-bundled-soname.patch.1) \
$(if $(filter ANDROID,$(OS)),external/redland/rasqal/rasqal-android.patch.1) \
$(if $(CROSS_COMPILING),external/redland/rasqal/rasqal-xcompile.patch.1) \

View file

@ -1,25 +0,0 @@
--- a/src/rasqal_literal.c 2013-03-29 21:22:57.413852072 +0100
+++ b/src/rasqal_literal.c 2013-03-29 21:23:34.092851757 +0100
@@ -46,10 +46,22 @@
#include <stddef.h>
#endif
#include <stdarg.h>
+#ifdef _AIX
+# ifndef isnan
+# define isnan(x) \
+ (sizeof (x) == sizeof (long double) ? isnan_ld (x) \
+ : sizeof (x) == sizeof (double) ? isnan_d (x) \
+ : isnan_f (x))
+ static inline int isnan_f (float x) { return x != x; }
+ static inline int isnan_d (double x) { return x != x; }
+ static inline int isnan_ld (long double x) { return x != x; }
+# endif
+#else
/* for isnan() */
#ifdef HAVE_MATH_H
#include <math.h>
#endif
+#endif
/* for INT_MIN and INT_MAX */
#ifdef HAVE_LIMITS_H
#include <limits.h>

View file

@ -46,7 +46,6 @@ $(call gb_ExternalProject_get_state_target,xmlsec,build) :
$(call gb_Trace_StartRange,xmlsec,EXTERNAL)
$(call gb_ExternalProject_run,build,\
$(if $(filter iOS MACOSX,$(OS_FOR_BUILD)),ACLOCAL="aclocal -I $(SRCDIR)/m4/mac") \
$(if $(filter AIX,$(OS)),ACLOCAL="aclocal -I /opt/freeware/share/aclocal") \
autoreconf \
&& $(gb_RUN_CONFIGURE) ./configure \
--with-pic --disable-shared --disable-crypto-dl --without-libxslt --without-gnutls --without-gcrypt --disable-apps --disable-docs \

View file

@ -26,10 +26,6 @@
#include "HelpCompiler.hxx"
#include <libxslt/xsltInternals.h>
#ifdef AIX
# undef _THREAD_SAFE
#endif
class L10N_DLLPUBLIC IndexerPreProcessor
{
private:

View file

@ -18,7 +18,7 @@
# define LOK_TOLERATE_UNUSED
#endif
#if defined(__linux__) || defined (__FreeBSD__) || defined(_AIX) ||\
#if defined(__linux__) || defined (__FreeBSD__) ||\
defined(_WIN32) || defined(__APPLE__) || defined (__NetBSD__) ||\
defined (__sun) || defined(__OpenBSD__) || defined(__EMSCRIPTEN__)
@ -31,9 +31,6 @@
#include <dlfcn.h>
#ifdef _AIX
# include <sys/ldr.h>
#endif
#ifdef __APPLE__
#define TARGET_LIB "lib" "sofficeapp" ".dylib"
#define TARGET_MERGED_LIB "lib" "mergedlo" ".dylib"
@ -359,7 +356,7 @@ int lok_preinit( const char *install_path, const char *user_profile_url )
}
#endif
#endif // defined(__linux__) || defined (__FreeBSD__) || defined(_AIX) || defined(_WIN32) || defined(__APPLE__)
#endif // defined(__linux__) || defined (__FreeBSD__) || defined(_WIN32) || defined(__APPLE__)
#endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITINIT_H

View file

@ -60,13 +60,6 @@ extern "C" {
# elif defined _BIG_ENDIAN
# define OSL_BIGENDIAN
# endif
#elif defined AIX
# include <sys/machine.h>
# if BYTE_ORDER == LITTLE_ENDIAN
# define OSL_LITENDIAN
# elif BYTE_ORDER == BIG_ENDIAN
# define OSL_BIGENDIAN
# endif
#elif defined __sun
# include <sys/isa_defs.h>
# if defined _LITTLE_ENDIAN

View file

@ -24,8 +24,8 @@
#ifndef INCLUDED_SAL_ALLOCA_H
#define INCLUDED_SAL_ALLOCA_H
#if defined(__sun) || defined(LINUX) || defined(AIX) || defined(ANDROID) || defined(HAIKU) \
|| defined(MACOSX) || defined(IOS) || defined(EMSCRIPTEN)
#if defined(__sun) || defined(LINUX) || defined(ANDROID) || defined(HAIKU) || defined(MACOSX) \
|| defined(IOS) || defined(EMSCRIPTEN)
#ifndef INCLUDED_ALLOCA_H
#include <alloca.h>

View file

@ -47,8 +47,8 @@
#endif /* defined _WIN32 */
#if defined(__sun) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(AIX) \
|| defined(OPENBSD) || defined(DRAGONFLY) || defined(ANDROID) || defined(HAIKU)
#if defined(__sun) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD) \
|| defined(DRAGONFLY) || defined(ANDROID) || defined(HAIKU)
#define SAL_UNX
#define SAL_DLLEXTENSION ".so"
#define SAL_EXEEXTENSION ""

View file

@ -29,10 +29,6 @@
#include "sal/saldllapi.h"
#include "sal/types.h"
#if defined AIX
#include <unistd.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif

View file

@ -19,11 +19,7 @@
cat > /dev/null
[[ "${PLATFORMID}" == "linux_x86_64" || "${PLATFORMID}" == "linux_aarch64" ]] && mark64="()(64bit)"
if [[ "${OS}" == "AIX" ]]; then
echo "libfreetype.a(libfreetype.so.6${mark64})"
else
echo "libfreetype.so.6${mark64}"
if [[ "${XINERAMA_LINK}" == "dynamic" ]]; then
echo "libXinerama.so.1${mark64}"
fi
echo "libfreetype.so.6${mark64}"
if [[ "${XINERAMA_LINK}" == "dynamic" ]]; then
echo "libXinerama.so.1${mark64}"
fi

View file

@ -21,8 +21,6 @@ $(eval $(call gb_Package_add_file,jvmfwk_javavendors,$(LIBO_URE_MISC_FOLDER)/jav
endif
else ifeq ($(OS),LINUX)
$(eval $(call gb_Package_add_file,jvmfwk_javavendors,$(LIBO_URE_MISC_FOLDER)/javavendors.xml,distributions/OpenOfficeorg/javavendors_linux.xml))
else ifeq ($(OS),AIX)
$(eval $(call gb_Package_add_file,jvmfwk_javavendors,$(LIBO_URE_MISC_FOLDER)/javavendors.xml,distributions/OpenOfficeorg/javavendors_linux.xml))
else
$(eval $(call gb_Package_add_file,jvmfwk_javavendors,$(LIBO_URE_MISC_FOLDER)/javavendors.xml,distributions/OpenOfficeorg/javavendors_unx.xml))
endif

View file

@ -21,8 +21,7 @@ odk_PLATFORM := $(if $(filter WNT,$(OS)),windows,\
$(if $(filter NETBSD,$(OS)),netbsd,\
$(if $(filter FREEBSD,$(OS)),freebsd,\
$(if $(filter DRAGONFLY,$(OS)),dragonfly,\
$(if $(filter MACOSX,$(OS)),macosx,\
$(if $(filter AIX,$(OS)),aix))))))))
$(if $(filter MACOSX,$(OS)),macosx)))))))
.PHONY: $(call gb_CustomTarget_get_workdir,odk/check)/checkbin
$(call gb_CustomTarget_get_workdir,odk/check)/checkbin : \

View file

@ -75,8 +75,6 @@ int main( int argc, char *argv[] )
{
#if defined(MACOSX)
static const char* ENVVARNAME = "DYLD_LIBRARY_PATH";
#elif defined(AIX)
static const char* ENVVARNAME = "LIBPATH";
#else
static const char* ENVVARNAME = "LD_LIBRARY_PATH";
#endif
@ -263,14 +261,11 @@ char* createCommandName( char* argv0 )
char* cmdname = NULL;
char* sep = NULL;
#ifndef AIX
Dl_info dl_info;
#endif
/* get the executable file name from argv0 */
prgname = argv0;
#ifndef AIX
/*
* if argv0 doesn't contain an absolute path name, try to get the absolute
* path name from dladdr; note that this only works for Solaris, not for
@ -282,7 +277,6 @@ char* createCommandName( char* argv0 )
{
prgname = dl_info.dli_fname;
}
#endif
/* prefix the executable file name by '_' */
if ( prgname != NULL )

View file

@ -140,10 +140,8 @@ oslFileError oslTranslateFileError(int Errno)
#endif
return osl_File_E_NOSYS;
#if !defined(AIX) || !(defined(_ALL_SOURCE) && !defined(_LINUX_SOURCE_COMPAT))
case ENOTEMPTY:
return osl_File_E_NOTEMPTY;
#endif
case ELOOP:
return osl_File_E_LOOP;

View file

@ -31,57 +31,9 @@
#include "system.hxx"
#include "file_url.hxx"
#ifdef AIX
#include <sys/ldr.h>
#endif
static bool getModulePathFromAddress(void * address, rtl_String ** path)
{
bool result = false;
#if defined(AIX)
int size = 4 * 1024;
char *buf, *filename=NULL;
struct ld_info *lp;
if ((buf = (char*)malloc(size)) == NULL)
return false;
//figure out how big a buffer we need
while (loadquery(L_GETINFO, buf, size) == -1 && errno == ENOMEM)
{
size += 4 * 1024;
free(buf);
if ((buf = (char*)malloc(size)) == NULL)
return false;
}
lp = (struct ld_info*) buf;
while (lp)
{
unsigned long start = (unsigned long)lp->ldinfo_dataorg;
unsigned long end = start + lp->ldinfo_datasize;
if (start <= (unsigned long)address && end > (unsigned long)address)
{
filename = lp->ldinfo_filename;
break;
}
if (!lp->ldinfo_next)
break;
lp = (struct ld_info*) ((char *) lp + lp->ldinfo_next);
}
if (filename)
{
rtl_string_newFromStr(path, filename);
result = sal_True;
}
else
{
result = sal_False;
}
free(buf);
#else
#if HAVE_UNIX_DLAPI
Dl_info dl_info;
@ -94,7 +46,6 @@ static bool getModulePathFromAddress(void * address, rtl_String ** path)
#else
(void) address;
(void) path;
#endif
#endif
return result;
}

View file

@ -201,19 +201,6 @@
# define IOCHANNEL_TRANSFER_BSD_RENO
#endif
#ifdef AIX
# define AF_IPX -1
# include <strings.h>
# include <pthread.h>
# include <dlfcn.h>
# include <sys/time.h>
# include <sys/un.h>
# include <netinet/tcp.h>
# include <sys/machine.h>
# define SLEEP_TIMESPEC(timespec) nsleep(&timespec, 0)
# define LIBPATH "LIBPATH"
#endif
#ifdef __sun
# include <shadow.h>
# include <sys/un.h>
@ -291,7 +278,6 @@ int macxp_resolveAlias(char *path, int buflen);
#if !defined(_WIN32) && \
!defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD) && \
!defined(AIX) && \
!defined(__sun) && !defined(MACOSX) && \
!defined(OPENBSD) && !defined(DRAGONFLY) && \
!defined(IOS) && !defined(ANDROID) && \

View file

@ -4715,7 +4715,7 @@ namespace osl_Directory
if (tmp_x.lastIndexOf('/') != (tmp_x.getLength() - 1))
tmp_x += "/";
#if !defined(_WIN32) && !defined(ANDROID) && !defined(AIX)
#if !defined(_WIN32) && !defined(ANDROID)
// FIXME would be nice to create unique dir even on Windows
tmp_x += "XXXXXX";
char *out = mkdtemp(const_cast<char*>(tmp_x.getStr()));

View file

@ -22,59 +22,6 @@
#include "AutoInstall/ooo_images"
#include "AutoInstall/ooobinarytable"
#ifdef AIX
#ifndef SYSTEM_CURL
Unixlink gid_Unixlink_File_Lib_Curl
BIN_FILE_BODY;
Dir = SCP2_OOO_BIN_DIR;
Name = STRING(CONCAT2(libcurl,UNXSUFFIX));
Styles = (PACKED);
Target = STRING(CONCAT3(libcurl,UNXSUFFIX,.3));
End
#endif
#ifndef SYSTEM_REDLAND
Unixlink gid_Unixlink_File_Lib_Raptor
BIN_FILE_BODY;
Dir = SCP2_OOO_BIN_DIR;
Name = STRING(CONCAT2(libraptor,UNXSUFFIX));
Styles = (PACKED);
Target = STRING(CONCAT3(libraptor,UNXSUFFIX,.1));
End
Unixlink gid_Unixlink_File_Lib_Rasqal
BIN_FILE_BODY;
Dir = SCP2_OOO_BIN_DIR;
Name = STRING(CONCAT2(librasqal,UNXSUFFIX));
Styles = (PACKED);
Target = STRING(CONCAT3(librasqal,UNXSUFFIX,.1));
End
Unixlink gid_Unixlink_File_Lib_Rdf
BIN_FILE_BODY;
Dir = SCP2_OOO_BIN_DIR;
Name = STRING(CONCAT2(librdf,UNXSUFFIX));
Styles = (PACKED);
Target = STRING(CONCAT3(librdf,UNXSUFFIX,.0));
End
#endif
#ifndef SYSTEM_LIBXSLT
Unixlink gid_Unixlink_File_Lib_Xslt
BIN_FILE_BODY;
Dir = SCP2_OOO_BIN_DIR;
Name = STRING(CONCAT2(libxslt,UNXSUFFIX));
Styles = (PACKED);
Target = STRING(CONCAT3(libxslt,UNXSUFFIX,.1));
End
Unixlink gid_Unixlink_File_Lib_eXslt
BIN_FILE_BODY;
Dir = SCP2_OOO_BIN_DIR;
Name = STRING(CONCAT2(libexslt,UNXSUFFIX));
Styles = (PACKED);
Target = STRING(CONCAT3(libexslt,UNXSUFFIX,.0));
End
#endif
#endif
Module gid_Module_Root_Files_Images
PackageInfo = "packinfo_office.txt";
ParentID = gid_Module_Root;

View file

@ -32,12 +32,6 @@ Module gid_Module_Root
gid_Starregistry_Services_Rdb,
auto_ooo_ALL,
auto_ooobinarytable_ALL,
gid_Unixlink_File_Lib_Curl,
gid_Unixlink_File_Lib_Raptor,
gid_Unixlink_File_Lib_Rasqal,
gid_Unixlink_File_Lib_Rdf,
gid_Unixlink_File_Lib_Xslt,
gid_Unixlink_File_Lib_eXslt,
GID_FILE_LIB_WPD,
gid_File_Lib_Cli_Oootypes_Assembly,
gid_File_Lib_Policy_Cli_Oootypes_Assembly,
@ -98,12 +92,6 @@ Module gid_Module_Root
gid_File_Share_Registry_Forcedefault_Xcd,
gid_File_Extra_Fontunxpsprint,
gid_File_Extra_Fontunxafm);
Unixlinks = (gid_Unixlink_File_Lib_Curl,
gid_Unixlink_File_Lib_Raptor,
gid_Unixlink_File_Lib_Rasqal,
gid_Unixlink_File_Lib_Rdf,
gid_Unixlink_File_Lib_Xslt,
gid_Unixlink_File_Lib_eXslt);
End
Module gid_Module_Prg

View file

@ -27,58 +27,6 @@ Directory gid_Dir_Ure_Share_Misc
End
#endif
// Public Dynamic Libraries:
#ifdef AIX
Unixlink gid_Unixlink_File_Dl_Cppu
BIN_FILE_BODY;
Dir = SCP2_URE_DL_DIR;
Name = SCP2_URE_DL_UNO_NORMAL("cppu");
Styles = (PACKED);
Target = SCP2_URE_DL_UNO_VER("cppu", "3");
End
#endif
#ifdef AIX
Unixlink gid_Unixlink_File_Dl_Cppuhelper
BIN_FILE_BODY;
Dir = SCP2_URE_DL_DIR;
Name = SCP2_URE_DL_UNO_COMID_NORMAL("cppuhelper");
Styles = (PACKED);
Target = SCP2_URE_DL_UNO_COMID_VER("cppuhelper", "3");
End
#endif
#ifdef AIX
Unixlink gid_Unixlink_File_Dl_PurpEnvHelper
BIN_FILE_BODY;
Dir = SCP2_URE_DL_DIR;
Name = SCP2_URE_DL_UNO_COMID_NORMAL("purpenvhelper");
Styles = (PACKED);
Target = SCP2_URE_DL_UNO_COMID_VER("purpenvhelper", "3");
End
#endif
#ifdef AIX
Unixlink gid_Unixlink_File_Dl_Sal
BIN_FILE_BODY;
Dir = SCP2_URE_DL_DIR;
Name = SCP2_URE_DL_UNO_NORMAL("sal");
Styles = (PACKED);
Target = SCP2_URE_DL_UNO_VER("sal", "3");
End
#endif
#ifdef AIX
Unixlink gid_Unixlink_File_Dl_Salhelper
BIN_FILE_BODY;
Dir = SCP2_URE_DL_DIR;
Name = SCP2_URE_DL_UNO_COMID_NORMAL("salhelper");
Styles = (PACKED);
Target = SCP2_URE_DL_UNO_COMID_VER("salhelper", "3");
End
#endif
// Private Dynamic Libraries:
#if defined _MSC_VER && ! defined _ARM64_
@ -220,16 +168,6 @@ End
#endif
#ifdef AIX
Unixlink gid_Unixlink_File_Dl_Libxml2
BIN_FILE_BODY;
Dir = SCP2_URE_DL_DIR;
Name = SCP2_URE_DL_NORMAL("xml2");
Styles = (PACKED);
Target = SCP2_URE_DL_VER("xml2", "2");
End
#endif
// Public Miscellaneous Files:
File gid_File_Misc_TypesRdb
@ -282,19 +220,8 @@ Module gid_Module_Root_Ure_Hidden
gid_File_Lib_Cli_Cppuhelper_Assembly,
gid_File_Lib_Policy_Cli_Cppuhelper_Assembly,
gid_File_Lib_Policy_Cli_Cppuhelper_Config,
gid_Unixlink_File_Dl_Cppu,
gid_Unixlink_File_Dl_Cppuhelper,
gid_Unixlink_File_Dl_PurpEnvHelper,
gid_Unixlink_File_Dl_Sal,
gid_Unixlink_File_Dl_Salhelper,
gid_File_Misc_TypesRdb,
gid_File_Misc_ServicesRdb);
Unixlinks = (gid_Unixlink_File_Dl_Sal,
gid_Unixlink_File_Dl_Salhelper,
gid_Unixlink_File_Dl_Cppu,
gid_Unixlink_File_Dl_Cppuhelper,
gid_Unixlink_File_Dl_PurpEnvHelper,
gid_Unixlink_File_Dl_Libxml2);
End
// Windows Registry:

View file

@ -8,7 +8,6 @@
#include "macros.inc"
#ifndef AIX
#ifndef DISABLE_PYUNO
File gid_File_Share_Registry_LibreLogo_Xcd
TXT_FILE_BODY;
@ -17,4 +16,3 @@ File gid_File_Share_Registry_LibreLogo_Xcd
Name = "librelogo.xcd";
End
#endif
#endif

View file

@ -10,7 +10,6 @@
#include "AutoInstall/python_librelogo"
#ifndef AIX
#ifndef DISABLE_PYUNO
Module gid_Module_Optional_Pyuno_LibreLogo
PackageInfo = "packinfo_office.txt";
@ -23,4 +22,3 @@ Module gid_Module_Optional_Pyuno_LibreLogo
Styles = ( );
End
#endif
#endif

View file

@ -17,11 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifdef AIX
# undef _THREAD_SAFE
#endif
#ifdef _WIN32
#include <prewin.h>
#include <postwin.h>

View file

@ -27,14 +27,7 @@ if [ "$sd_platform" = "Linux" ] ; then
fi
# do not confuse the system mail clients with OOo and Java libraries
case $sd_platform in
AIX)
unset LIBPATH
;;
*)
unset LD_LIBRARY_PATH
;;
esac
unset LD_LIBRARY_PATH
# tries to locate the executable specified
# as first parameter in the user's path.

View file

@ -22,10 +22,6 @@
#endif
#endif
#ifdef _AIX
#define CORE_BIG_ENDIAN
#undef CORE_LITTLE_ENDIAN
#endif /* Def _AIX */
#ifdef _MSC_VER
#undef CORE_BIG_ENDIAN

View file

@ -2022,10 +2022,6 @@ sub create_packages_without_epm
{
$target = "i586";
}
elsif ( $installer::globals::platformid eq 'aix_powerpc')
{
$target = "ppc";
}
elsif ( $installer::globals::os eq 'LINUX')
{
$target = (POSIX::uname())[4];
@ -2238,11 +2234,6 @@ sub create_new_directory_structure
{
$rpmdir = "$installer::globals::epmoutpath/RPMS/i586";
}
elsif ( $installer::globals::platformid eq 'aix_powerpc')
{
$machine = "ppc";
$rpmdir = "$installer::globals::epmoutpath/RPMS/$machine";
}
elsif ( $installer::globals::os eq 'LINUX')
{
$machine = (POSIX::uname())[4];

View file

@ -291,16 +291,6 @@ sub setglobalvariables
}
}
if ($installer::globals::os eq 'AIX')
{
if ( $installer::globals::packageformat eq "rpm" )
{
$installer::globals::isrpmbuild = 1;
$installer::globals::epmoutpath = "RPMS";
}
if ( $installer::globals::rpm eq "" ) { installer::exiter::exit_program("ERROR: Environment variable \"\$RPM\" has to be defined!", "setglobalvariables"); }
}
if ($installer::globals::os eq 'LINUX')
{
$installer::globals::islinuxbuild = 1;

View file

@ -431,10 +431,6 @@ bridges/inc/bridge.hxx
bridges/inc/cppinterfaceproxy.hxx
bridges/inc/unointerfaceproxy.hxx
bridges/inc/vtablefactory.hxx
bridges/source/cpp_uno/gcc3_aix_powerpc/cpp2uno.cxx
bridges/source/cpp_uno/gcc3_aix_powerpc/except.cxx
bridges/source/cpp_uno/gcc3_aix_powerpc/share.hxx
bridges/source/cpp_uno/gcc3_aix_powerpc/uno2cpp.cxx
bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx
bridges/source/cpp_uno/gcc3_ios/except.cxx
bridges/source/cpp_uno/gcc3_ios/rtti.h

View file

@ -308,8 +308,6 @@ gb_Executable_EXT_for_build :=
ifeq ($(OS_FOR_BUILD),MACOSX)
gb_Helper_LIBRARY_PATH_VAR := DYLD_LIBRARY_PATH
else ifeq ($(OS_FOR_BUILD),AIX)
gb_Helper_LIBRARY_PATH_VAR := LIBPATH
else ifeq ($(OS_FOR_BUILD),WNT)
# In theory possible if cross-compiling to some Unix from Windows,
# in practice strongly discouraged to even try that

View file

@ -21,7 +21,7 @@ $(eval $(call gb_Executable_add_cobjects,cpp,\
soltools/cpp/_unix \
))
ifneq ($(filter AIX MACOSX WNT,$(OS)),)
ifneq ($(filter MACOSX WNT,$(OS)),)
$(eval $(call gb_Executable_add_cobjects,cpp,\
soltools/cpp/_getopt \
))

View file

@ -31,7 +31,7 @@
#include "cpp.h"
#if defined(MACOSX) || defined(AIX) || defined(_WIN32)
#if defined(MACOSX) || defined(_WIN32)
#include "_getopt.h"
#else
#include <getopt.h>
@ -54,7 +54,7 @@ void
Tokenrow tr;
setup_kwtab();
#if defined(MACOSX) || defined(AIX) || defined(_WIN32)
#if defined(MACOSX) || defined(_WIN32)
while ((c = stgetopt(argc, argv, "NOPV:I:D:U:F:A:X:u:l:+")) != -1)
#else
while ((c = getopt(argc, argv, "NOPV:I:D:U:F:A:X:u:l:+")) != -1)

View file

@ -47,10 +47,6 @@ NetBSD|FreeBSD|DragonFly)
LD_LIBRARY_PATH=$sd_prog${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH
;;
AIX)
LIBPATH=$sd_prog${LIBPATH:+:${LIBPATH}}
export LIBPATH
;;
esac
#collect all bootstrap variables specified on the command line
@ -67,17 +63,8 @@ if [ -x "$sd_prog/javaldx" ] ; then
my_path=$("$sd_prog/javaldx" $BOOTSTRAPVARS \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc")
if [ -n "$my_path" ] ; then
sd_platform=$(uname -s)
case $sd_platform in
AIX)
LIBPATH=$my_path${LIBPATH:+:$LIBPATH}
export LIBPATH
;;
*)
LD_LIBRARY_PATH=$my_path${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
;;
esac
LD_LIBRARY_PATH=$my_path${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
fi
fi

View file

@ -111,7 +111,7 @@ static ErrCode GetSvError( int nErrno )
{ EBADF, SVSTREAM_INVALID_HANDLE },
#if defined(NETBSD) || \
defined(FREEBSD) || defined(MACOSX) || defined(OPENBSD) || \
defined(__FreeBSD_kernel__) || defined (AIX) || defined(DRAGONFLY) || \
defined(__FreeBSD_kernel__) || defined(DRAGONFLY) || \
defined(IOS) || defined(HAIKU)
{ EDEADLK, SVSTREAM_LOCKING_VIOLATION },
#else

View file

@ -23,10 +23,6 @@
#if defined LINUX || defined FREEBSD || \
defined NETBSD || defined OPENBSD || defined DRAGONFLY
#include <sys/time.h>
#elif defined AIX
#include <time.h>
#include <sys/time.h>
#include <strings.h>
#endif
#include <sal/types.h>

View file

@ -36,7 +36,7 @@ private:
std::optional<int> mnXScreenSaverTimeout;
#if !defined(__sun) && !defined(AIX)
#if !defined(__sun)
BOOL mbDPMSWasEnabled;
CARD16 mnDPMSStandbyTimeout;
CARD16 mnDPMSSuspendTimeout;

View file

@ -26,9 +26,6 @@
#ifdef SUN
#include <sys/systeminfo.h>
#endif
#ifdef AIX
#include <strings.h>
#endif
#ifdef FREEBSD
#include <sys/types.h>
#include <sys/time.h>

View file

@ -23,7 +23,7 @@
#include <math.h>
#include <unistd.h>
#if defined(__sun) || defined(AIX)
#if defined(__sun)
#include <osl/module.h>
#endif

View file

@ -17,7 +17,7 @@
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#if !defined(__sun) && !defined(AIX)
#if !defined(__sun)
#include <X11/extensions/dpms.h>
#endif
@ -329,7 +329,7 @@ void ScreenSaverInhibitor::inhibitXAutoLock( bool bInhibit, Display* pDisplay )
void ScreenSaverInhibitor::inhibitDPMS( bool bInhibit, Display* pDisplay )
{
#if !defined(__sun) && !defined(AIX)
#if !defined(__sun)
int dummy;
// This won't change while X11 is running, hence
// we can evaluate only once and store as static
@ -364,7 +364,7 @@ void ScreenSaverInhibitor::inhibitDPMS( bool bInhibit, Display* pDisplay )
mnDPMSSuspendTimeout,
mnDPMSOffTimeout );
}
#endif // !defined(__sun) && !defined(AIX)
#endif // !defined(__sun)
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -17,12 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifdef AIX
#define _LINUX_SOURCE_COMPAT
#include <sys/timer.h>
#undef _LINUX_SOURCE_COMPAT
#endif
#include <com/sun/star/accessibility/TextSegment.hpp>
#include <com/sun/star/accessibility/AccessibleEventId.hpp>
#include <com/sun/star/accessibility/AccessibleStateType.hpp>

View file

@ -17,12 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifdef AIX
#define _LINUX_SOURCE_COMPAT
#include <sys/timer.h>
#undef _LINUX_SOURCE_COMPAT
#endif
#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
#include <com/sun/star/accessibility/AccessibleEventId.hpp>

View file

@ -17,12 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifdef AIX
#define _LINUX_SOURCE_COMPAT
#include <sys/timer.h>
#undef _LINUX_SOURCE_COMPAT
#endif
#include <config_gio.h>
#include <com/sun/star/awt/SystemDependentXWindow.hpp>

View file

@ -17,12 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifdef AIX
#define _LINUX_SOURCE_COMPAT
#include <sys/timer.h>
#undef _LINUX_SOURCE_COMPAT
#endif
#include <config_gio.h>
#include <com/sun/star/awt/Toolkit.hpp>

View file

@ -17,12 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifdef AIX
#define _LINUX_SOURCE_COMPAT
#include <sys/timer.h>
#undef _LINUX_SOURCE_COMPAT
#endif
#include <com/sun/star/frame/TerminationVetoException.hpp>
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
#include <com/sun/star/uri/ExternalUriReferenceTranslator.hpp>

View file

@ -17,12 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifdef AIX
#define _LINUX_SOURCE_COMPAT
#include <sys/timer.h>
#undef _LINUX_SOURCE_COMPAT
#endif
#include <unx/gtk/gtkbackend.hxx>
#include <unx/gtk/gtkobject.hxx>
#include <unx/gtk/gtkframe.hxx>