Commit graph

1131 commits

Author SHA1 Message Date
Tor Lillqvist
d398fd1383 Now the C++-UNO bridge on x64 Windows works a bit better
I had implemented a couple of basic things quite wrong, partly because
of easily misunderstood Microsoft documentation. A couple of things I
just had forgot to do properly.

Attempt to make the source code more consistent in spacing and
variable naming. Clean away meaningless vertical space wasting
non-verbal comments.

The bridgetest over in testtools now runs through quite a lot of its
paces successfully. But exception handling and RTTI, the stuff in
except.cxx, is still not really done at all. And even if I comment out
those checks in bridgetest so that no exceptios are thrown, I then get
a crash later.
2011-01-31 01:23:16 +02:00
Tor Lillqvist
b7d48fa5ac Skip the this pointer in cpp2uno_call()
Also change a few variable names to consistently use the "TD" suffix
for typelib_TypeDescription variables.
2011-01-29 01:40:14 +02:00
Tor Lillqvist
75e02ab302 Let's use a shared privateSnippetExecutor() approach as on x64 Linux
It simplifies function table and unwinding info management, as those
are now static for the privateSnippetExecutor() function in
call.asm. Even if it is slightly ugly to have to poke in more
instructions in codeSnippet().

Out privateSnippetExecutor() is much simpler than the x64 Linux one,
thanks to the simpler calling convention.
2011-01-28 18:41:07 +02:00
Tor Lillqvist
96b1611644 Fix typo and thinko 2011-01-28 17:19:18 +02:00
Tor Lillqvist
31a8176ab6 More work on x64 Windows C++-UNO bridge
Now the call through the trampoline into cpp_vtable_call() seems to
work, but I get a crash later. Glitches in parameter passing, no
doubt. Debugging needed in cpp_vtable_call() and cpp2uno_call().

The basic implementation is probably sane. But I wonder if I after all
should have done like in the x86-64 Linux implementation, with the
dynamically generated trampoline just jumping into fixed code shared
between all trampolines. Probably should redo it like that, yes.

Will it then cause a problem for OS unwinding if the caller of the
trampoline calls a short dynamically generated code snippet, which
then jumps into the fixed part, and only the fixed part has a
(assembler-generated) function table and unwind info? Probably not.

It is quite impossible that such a short dynamically generated snippet
with just a couple of instructions would cause an exception, and when
we have jumped into the fixed part, where the call to
cpp_vtable_call() is done, it doesn't matter any more that the caller
in fact didn't call what the function table claims is the entry
point. Or does it?

Doing it that way would mean no RtlAddFunctionTable() and
RtlDeleteFunctionTable() would be needed, and especially doing the
latter correctly is a bit hairy.
2011-01-28 16:41:04 +02:00
Tor Lillqvist
5287150cb7 Add a function table entry for the dynamically generated trampoline 2011-01-28 04:22:11 +02:00
Tor Lillqvist
1a041ea2bf Corect copyright header and comment 2011-01-27 23:58:27 +02:00
Tor Lillqvist
dc433642ab More work on the x64 Windows C++-UNO bridge 2011-01-27 23:39:59 +02:00
Caolán McNamara
5e8635f624 move cxxabi.h after stl headers to workaround gcc 4.6.0 and damn stlport 2011-01-27 20:26:07 +00:00
Tor Lillqvist
72f06717f6 Intermediate commit 2011-01-26 23:08:54 +02:00
Tor Lillqvist
0ec0d899bf Add debug output to the dummy functions to see if/when they get called 2011-01-23 03:26:40 +02:00
Tor Lillqvist
fc381c2b2f Use correct name for mscx_uno.dll and deliver it 2011-01-23 00:55:22 +02:00
Tor Lillqvist
28787edbd8 More hacking on the C++-UNO bridge for x64 Windows
I think I might actually be able to manage without any assembly coding
here, thanks to the clean design of the x64 Windows calling
convention, and tricking the compiler (in a fully documented and
stable way) by using varargs. uno2cpp.cxx might even be getting close
to working now, but cpp2uno.cxx and except.cxx parts are just forced
to compile by using dummy code.
2011-01-22 03:20:19 +02:00
Thomas Arnhold
113a18833a Remove old RCS lines. 2011-01-21 14:31:33 +01:00
Robert Nagy
1c321e027d use errno to get the correct error message if mkstemp() fails 2011-01-21 11:03:11 +01:00
Tor Lillqvist
266c2d6b34 More hacking on the wntmscx bridge, still far from ready
See asmbits.asm for some general comments and pointers to useful
information.
2011-01-20 02:39:23 +02:00
Tor Lillqvist
acf1b8ee70 Commit 64-bit Win32 C++ bridge files
Just copies of the 32-bit ones so far, so obviously don't compile
even. No in-line assembly in 64-bit MSVC for instance.
2011-01-17 03:52:12 +02:00
Caolán McNamara
d0b04ecea7 cppcheck: prefer prefix variant 2010-12-30 21:16:26 +00:00
Robert Nagy
bbff372b4c malloc.h is obsolete on BSDs, so use stdlib.h there 2010-12-13 11:52:51 +01:00
Caolán McNamara
3358b4f311 fix bsd bridges 2010-12-09 12:00:50 +00:00
Takeshi Abe
36e2296bf8 Replace all occured, occurance etc. 2010-12-06 09:16:29 +00:00
Caolán McNamara
1e8a123248 cppcheck: unused variables 2010-12-05 12:09:43 +00:00
Caolán McNamara
e872a73e53 cppcheck: unused variable 2010-11-30 13:42:34 +00:00
Caolán McNamara
0ae3237320 cppcheck: methods can be const 2010-11-25 12:02:13 +00:00
Caolán McNamara
670bb20d25 cppcheck: methods can be const 2010-11-25 12:02:13 +00:00
Caolán McNamara
3ef6b19852 cppcheck: methods can be const 2010-11-25 10:27:05 +00:00
Kevin Hunter
d7fa5f9a1c RTL macro converted from createFromAscii 2010-11-09 16:55:45 +00:00
Kevin Hunter
d494fcb817 Remove some commented out code. 2010-11-09 16:54:18 +00:00
Caolán McNamara
a9cf7dbcef restore issuzilla id for reference 2010-11-08 21:25:44 +00:00
Kohei Yoshida
2d472ad597 Fixed a build break. 2010-11-05 20:34:13 -04:00
Robert Nagy
551898cdd2 Use linux bridge code on all BSDs.
Share the linux bridge code with all the BSDs to avoid code duplication
and the hassle of syncing. Discussed with Caolan McNamara
2010-11-06 00:15:04 +01:00
Robert Nagy
c5e3a70a85 use getpagesize() on OpenBSD 2010-11-05 11:37:40 +01:00
Caolán McNamara
da5cef0ab4 add modelines to .h and .c files as well 2010-10-27 16:04:46 +01:00
Caolán McNamara
f379da216a micro optimizations 2010-10-25 16:59:32 +01:00
Caolán McNamara
85c44ad8b3 #i101100# strict-alias clean 2010-10-20 08:53:25 +01:00
Caolán McNamara
bc9aea44a7 explicitly -fno-strict-alias for linux bridges by default 2010-10-20 08:53:25 +01:00
Povilas Kanapickas
17a52bb6a8 remove non-compiled code 2010-10-18 16:25:47 +01:00
Sebastian Spaeth
a715e1b3d0 Add vim/emacs modelines to all source files
Fixes #fdo30794
Based on bin/add-modelines script (originally posted in mail
1286706307.1871.1399280959@webmail.messagingengine.com)

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2010-10-14 17:04:31 +02:00
Caolán McNamara
74fc2358e2 add AIX uno bridge 2010-10-13 20:31:42 +01:00
Thomas Klausner
3165ec7b0f Use FreeBSD/i386 files for NetBSD/i386. 2010-10-13 16:21:34 +02:00
Thomas Klausner
e17dc1481e Add support for NetBSD/amd64 based on FreeBSD/amd64 files.
But remove trailing whitespace for commit script.
2010-10-13 16:19:43 +02:00
J. Graeme Lingard
bda7aaeb74 Remove redundant #include, #define & comments 2010-10-13 12:51:10 +02:00
Caolán McNamara
d8768eeb2b #i112784# do not leak ContextAdmin 2010-10-11 14:57:45 +01:00
Caolán McNamara
56170eb5c5 #i112681# make bridges match remotebridges 2010-10-11 12:37:08 +01:00
Petr Mladek
bcdb4cc866 more removed include guards using fixguard.py 2010-10-05 18:12:52 +02:00
Petr Mladek
334bef4563 remove include guards using fixguard.py 2010-10-05 18:12:51 +02:00
Caolán McNamara
f93ec185f6 cmcfixes75: merge with DEV300 m81 2010-06-09 11:45:53 +01:00
Caolán McNamara
968fb1595f cmcfixes74: merge with DEV300 m80 2010-05-31 22:58:51 +01:00
Caolán McNamara
333231243a cmcfixes75: merge with DEV300 m80 2010-05-31 20:37:41 +01:00
Vladimir Glazunov
94098547cb CWS-TOOLING: integrate CWS sb120 2010-05-27 14:07:06 +02:00