summaryrefslogtreecommitdiff
path: root/bridges/source/cpp_uno/gcc3_linux_intel
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2009-01-20 10:20:47 +0000
committerVladimir Glazounov <vg@openoffice.org>2009-01-20 10:20:47 +0000
commitbb490edf4371d7a792a3fb4d7ac9dd0abed129f8 (patch)
tree77ad2ba4eb0131f06adf0aa6d29b4b98f57942b8 /bridges/source/cpp_uno/gcc3_linux_intel
parentc6762e7b75a3bea150ebefa827679e485f01c9f7 (diff)
CWS-TOOLING: integrate CWS selinux01
2009-01-13 12:54:38 +0100 cmc r266213 : #i97320# might as well be silent if we fallback 2009-01-07 11:17:16 +0100 cmc r265957 : #i97320# use a double-mmap of an anonymous file under linux to keep onside of selinux
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_linux_intel')
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx18
1 files changed, 9 insertions, 9 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx
index 40420633f923..6e6c2009dde8 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/cpp2uno.cxx
@@ -362,7 +362,7 @@ extern "C" typedef void (*PrivateSnippetExecutor)();
int const codeSnippetSize = 16;
unsigned char * codeSnippet(
- unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset,
+ unsigned char * code, sal_PtrDiff writetoexecdiff, sal_Int32 functionIndex, sal_Int32 vtableOffset,
typelib_TypeClass returnTypeClass)
{
if (!bridges::cpp_uno::shared::isSimpleType(returnTypeClass)) {
@@ -408,7 +408,7 @@ unsigned char * codeSnippet(
// jmp privateSnippetExecutor:
*p++ = 0xE9;
*reinterpret_cast< sal_Int32 * >(p)
- = ((unsigned char *) exec) - p - sizeof (sal_Int32);
+ = ((unsigned char *) exec) - p - sizeof (sal_Int32) - writetoexecdiff;
p += sizeof (sal_Int32);
OSL_ASSERT(p - code <= codeSnippetSize);
return code + codeSnippetSize;
@@ -440,7 +440,7 @@ bridges::cpp_uno::shared::VtableFactory::initializeBlock(
}
unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
- Slot ** slots, unsigned char * code,
+ Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff,
typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
sal_Int32 functionCount, sal_Int32 vtableOffset)
{
@@ -453,9 +453,9 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
switch (member->eTypeClass) {
case typelib_TypeClass_INTERFACE_ATTRIBUTE:
// Getter:
- (s++)->fn = code;
+ (s++)->fn = code + writetoexecdiff;
code = codeSnippet(
- code, functionOffset++, vtableOffset,
+ code, writetoexecdiff, functionOffset++, vtableOffset,
reinterpret_cast< typelib_InterfaceAttributeTypeDescription * >(
member)->pAttributeTypeRef->eTypeClass);
// Setter:
@@ -463,17 +463,17 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
typelib_InterfaceAttributeTypeDescription * >(
member)->bReadOnly)
{
- (s++)->fn = code;
+ (s++)->fn = code + writetoexecdiff;
code = codeSnippet(
- code, functionOffset++, vtableOffset,
+ code, writetoexecdiff, functionOffset++, vtableOffset,
typelib_TypeClass_VOID);
}
break;
case typelib_TypeClass_INTERFACE_METHOD:
- (s++)->fn = code;
+ (s++)->fn = code + writetoexecdiff;
code = codeSnippet(
- code, functionOffset++, vtableOffset,
+ code, writetoexecdiff, functionOffset++, vtableOffset,
reinterpret_cast< typelib_InterfaceMethodTypeDescription * >(
member)->pReturnTypeRef->eTypeClass);
break;