Age | Commit message (Collapse) | Author |
|
...where "inline" (in its meaning of "this function can be defined in multiple
translation units") thus doesn't make much sense. (As discussed in
compilerplugins/clang/redundantinline.cxx, exempt such "static inline" functions
in include files for now.)
All the rewriting has been done automatically by the plugin, except for one
instance in sw/source/ui/frmdlg/column.cxx that used to involve an #if), plus
some subsequent solenv/clang-format/reformat-formatted-files.
Change-Id: Ib8b996b651aeafc03bbdc8890faa05ed50517224
Reviewed-on: https://gerrit.libreoffice.org/61573
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Including:
* expanding STDAPI to its definition (as per
<https://msdn.microsoft.com/library/ms686631(vs.85).aspx> "STDAPI"), to add
__declspec(dllexport) into its middle, in
extensions/source/activex/so_activex.cxx; as discussed in the comments at
<https://gerrit.libreoffice.org/#/c/60691/> "Get rid of Windows .def files in
setup_native, use __declspec(dllexport)", having a function both listed in a
.def file EXPORTS and marking it dllexport is OK, and the latter helps the
heuristics of loplugin:external; however, the relevant functions in
extensions/source/activex/so_activex.cxx probably don't even need to be
exported in the first place?
* follow-up loplugin:salcall in sal/osl/w32/file-impl.hxx
Change-Id: Ida6e17eba19cfa3d7e5c72dda57409005c0a0191
Reviewed-on: https://gerrit.libreoffice.org/60938
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
...avoiding conditional blocks and variables (that need careful #if'ing to avoid
them being either undefined or unused depending on NDEBUG and OSL_DEBUG_LEVEL
combintaion)
Change-Id: Ica9fe3857694f5c0a6e9079dfff05f2e0554b781
Reviewed-on: https://gerrit.libreoffice.org/60926
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Ib06572a844d2999e9ecd91e26abd98ecec06a0ae
Reviewed-on: https://gerrit.libreoffice.org/60665
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
...found by <https://ci.libreoffice.org//job/lo_tb_random_config_linux/1480/>
Change-Id: Ia71abc74122b9935344bfe693ba1556f6980c6de
Reviewed-on: https://gerrit.libreoffice.org/60668
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I6fd0495277301dfa15bb456f30b8386aea86fe60
Reviewed-on: https://gerrit.libreoffice.org/60622
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
...warning about (for now only) functions and variables with external linkage
that likely don't need it.
The problems with moving entities into unnamed namespacs and breaking ADL
(as alluded to in comments in compilerplugins/clang/external.cxx) are
illustrated by the fact that while
struct S1 { int f() { return 0; } };
int f(S1 s) { return s.f(); }
namespace N {
struct S2: S1 { int f() { return 1; } };
int f(S2 s) { return s.f(); }
}
int main() { return f(N::S2()); }
returns 1, both moving just the struct S2 into an nunnamed namespace,
struct S1 { int f() { return 0; } };
int f(S1 s) { return s.f(); }
namespace N {
namespace { struct S2: S1 { int f() { return 1; } }; }
int f(S2 s) { return s.f(); }
}
int main() { return f(N::S2()); }
as well as moving just the function f overload into an unnamed namespace,
struct S1 { int f() { return 0; } };
int f(S1 s) { return s.f(); }
namespace N {
struct S2: S1 { int f() { return 1; } };
namespace { int f(S2 s) { return s.f(); } }
}
int main() { return f(N::S2()); }
would each change the program to return 0 instead.
Change-Id: I4d09f7ac5e8f9bcd6e6bde4712608444b642265c
Reviewed-on: https://gerrit.libreoffice.org/60539
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
It seems that on iOS, where we don't have any Java, Python, BASIC, or
other scripting, the only thing that would use the C++/UNO bridge
functionality that invokes codeSnippet() was cppu::throwException().
codeSnippet() is part of what corresponds to the code that uses
run-time-generated machine code on other platforms. We can't generate
code at run-time on iOS, that has been known forever. Instead we have
used some manually written assembler to handle it instead. We used to
have a Perl script to generate a set of code snippets for different
cases, different numbers of parameters of the called function and
whatnot, but that went away at some stage some year ago. (It is
unclear whether that broke the C++/UNO bridge on iOS, or whether the
stuff continued to work even after that.)
Anyway, this handwritten assembly, or the manual construction of
internal data structures for exceptions, or something else, seemed to
have bit-rotten. Exceptions thrown with cppu::throwException() were
not catchable properly any longer.
Instead of digging in and trying to understand what is wrong, I chose
another solution. It turns out that the number of types of exception
objects thrown by cppu::throwException() is fairly small. During
startup of the LibreOffice code, and loading of an .odt document, only
one kind of exception is thrown this way... (The lovely
css::ucb:InteractiveAugmentedIOException.)
So we can simply have code that checks what the type of object being
thrown is, and explicitgly throws such an object then with a normal
C++ throw statement. Seems to work.
Sadly the cppu::getCaughtException() API still needs some inline
assembly in the C++/UNO brige. That seems to work though, knock on
wood.
This commit also adds a small "unit test" for iOS, copied from
cppuhelperm to ImplSVMain(). Ideally we should not copy code around of
course, but have a separate unit test app for iOS that would somehow
include relevant unit tests from source files all over the place.
Later.
Change-Id: Ib6d9d5b6fb8cc684ec15c97a312ca2f720e87069
Reviewed-on: https://gerrit.libreoffice.org/60506
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
|
|
Change-Id: I08f6a64b50f03d1b08027a2ac9e51442255d64bc
Reviewed-on: https://gerrit.libreoffice.org/59976
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
where used directly, since rtl_allocateMemory now just calls into std::malloc
Change-Id: I59f85bdb7efdf6baa30e8fcd2370c0f8e9c999ad
Reviewed-on: https://gerrit.libreoffice.org/59685
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
(<https://docs.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp>
specifies that, for MSVC, "Multiple characters in the literal fill corresponding
bytes as needed from high-order to low-order.")
Change-Id: I192be65adf3bfff1a4d0f0f4862939be2736ffad
Reviewed-on: https://gerrit.libreoffice.org/59154
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I324b93db2040efeff9d56f529df998cb8d64ec03
Reviewed-on: https://gerrit.libreoffice.org/59155
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Since the __CxxDetectRethrow may increment __ProcessingThrow, which then
must be decremented in __CxxUnregisterExceptionObject, and the latter does
many other funny things with exception handling CRT machinery, we cannot
use those internal functions (neither alone, nor together), or we end up
breaking runtime's expectations: the runtime code checks __ProcessingThrow
left and right, expecting its non-0 value to indicate "we are unwinding...
possibly called from a dtor()". In this case, e.g., std::current_exception
returns nullptr inside catch block.
This creates our own copy of __CxxDetectRethrow, which does not mangle the
global state, and just performs the same checks. This is a dirty hack, and
it relies on current layout of the exception description layout - so must
be synchronized in the event of changes!
Change-Id: I2c475fbc2468073b796c7e9d0f4dfcd315896489
Reviewed-on: https://gerrit.libreoffice.org/58730
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I9662478b41486f1fb12ffd83b5046afd48289ed7
|
|
used since...
commit dacc1b40df67d154c96b256b0d920460f38c3d11
Date: Sat Jul 28 16:33:22 2018 +0100
ofz#9597 rethrown IOException not caught by catch IOException
the adjustedPtr seems to be as expected, but the type_info not. Presumably
these are thrown as 'dependent exceptions' (?)
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/libsupc%2B%2B/eh_type.cc#L42
Change-Id: Ibd736abe941bb1d5facdb88139b3a0e6cf32cf1f
Reviewed-on: https://gerrit.libreoffice.org/58477
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I7248f8b5031e9659b2a58644952e59cc99d6a2d6
Reviewed-on: https://gerrit.libreoffice.org/58483
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I88c941832a0d682ea4b6028c28edd48cf5df38f7
Reviewed-on: https://gerrit.libreoffice.org/58093
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: I1cc2b1f63326d1d0e1f6e452b93af11e59a2d674
Reviewed-on: https://gerrit.libreoffice.org/57799
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
|
|
rtl/string.hxx and rtl/ustring.hxx both unnecessarily #include <sal/log.hxx>
(and don't make use of it themselves), but many other files happen to depend on it.
This is a continuation of commit 6ff2d84ade299cb3d14d4110e4cf1a4b8070c030
to be able to remove those unneeded includes.
This commit adds missing headers to every file found by:
grep -FwL sal/log.hxx $(git grep -Elw 'SAL_INFO|SAL_INFO_IF|SAL_WARN|SAL_WARN_IF|SAL_DETAIL_LOG_STREAM|SAL_WHERE|SAL_STREAM|SAL_DEBUG')
to directories from a* to configmgr
Change-Id: I6ea1a7f992b1f835f5bac7a725e1135abee3f85a
Reviewed-on: https://gerrit.libreoffice.org/57170
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
("bridges.win64" isn't more useful than plain "bridges" here, as each platform
uses only one bridges/source/cpp_uno/ sub-dir, anyway)
Change-Id: Ic8c2af892cdfad98e10d43532b3bf3c892555446
Reviewed-on: https://gerrit.libreoffice.org/54351
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I5177dd4fbc8f1b638ceff14c5d88d19fff8076a3
Reviewed-on: https://gerrit.libreoffice.org/53779
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
|
|
Change-Id: I7bf75ffafa63ec88e89192ed32880675c9ae1d61
Reviewed-on: https://gerrit.libreoffice.org/52883
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
..."C++ UNO bridge should convert non-UNO exceptions into RuntimeException"
(<https://bz.apache.org/ooo/show_bug.cgi?id=114635>), see
<https://lists.freedesktop.org/archives/libreoffice/2018-April/079985.html>
"Re: CppunitTest_sw_filters_test failing on x86 Linux, std::exception ->
uno::RuntimeException".
(The msvc_win32_{intel,x86-64} versions already handle non-UNO exceptions in
their msc{i,x}_filterCppException functions, in a different way.)
Change-Id: Ie359affed6831d16be0de3e3ff065484e28bd9c3
Reviewed-on: https://gerrit.libreoffice.org/52665
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
RC of cpp_vtable_call is never used in the asm part, so remove it.
Change-Id: Iabda12541fbb574a21395a8430c52a3e9f892947
|
|
stack balenced for entering and exiting _privateSnippetExecutor
Change-Id: I381c487d3412a39b113e9725807fd018b2b4036a
|
|
Change-Id: Id149b6a17dec8e6030d78e235c7451b2244152d1
|
|
Stack was not corrupted, but the call stack was not intact when
passing the assembler code.
Change-Id: If07909dce2b4a73634a130e5f50e84312115b845
|
|
Change-Id: I6a537957528a0d2de989b347bde1167e21544236
|
|
Change-Id: Iad94a2e2e55bb158d2ac42e3a67a6d94f84ffedd
|
|
Use x14 and x15 as function and offset instead of
having x15 as a pointer to 2 words.
Change-Id: I1cb3af4e86e3abe1b56fba2509eda31af0435885
|
|
Solved problem in assembler code, so the call chain is correct.
There are still something missing for uno to work correctly
Change-Id: Ieb3b3d6b15153576159e07b52ced0efedd135713
|
|
Changing bl -> b (jump long to jump) allowed cpp_vtable_call
to work without corrumping the stack.
However return still corrumpts the stack.
Change-Id: I3437a73139b65af13dcf6fa0c959bb1c847564b9
|
|
move asm code to C as first step towards reducing the asm code.
Since iOS does not permit java/python or anything else than the
compiled C++ code, the throw should be done simpler.
Apart from that this is the first step in solving a stack
corruption problem in the throw code
Change-Id: I4f3d3a3ba3f55fb46131d9a8eeb0deebf179d95f
|
|
Change-Id: Ie568c461ae834b33b9220c4b9fb42ec66b5e7ce0
|
|
using USE_DOUBLE_MMAP worked well on the device, but caused
problems with the simulator, that depends on the GCC3_MAC* implementation.
Change-Id: Ifbc1d48b3642567029c5271054a545eaacaf18ed
|
|
The perl script just generated static asm code, this
code is now included directly in ios64_helper.s
Change-Id: I3ebc6f85865287e1a1d11f82be72fc2407bcb40f
|
|
Change-Id: I269f5323ed0f984cfe9d28636a9cae84a863e7a6
|
|
If not activated code assumes dymanic behaivour.
Change-Id: I6b2807f4a2402a7adfa0839454586b425ee1ae29
|
|
Only arm64 is supported, code is more readable
Change-Id: I6940b0d03dc26c9c8f10c1cb105a7564471f2ca5
|
|
* Obviously VCL wiring is missing, but most components do build.
Change-Id: Ie853ada1423a8f4c2b647be59cd47a7730c42978
Reviewed-on: https://gerrit.libreoffice.org/50293
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Change-Id: I9e699eea04231eeeff4146657124ee4f0e68412d
|
|
clean cpp_uno part.
Change-Id: Ief08e4cf596b375243ae215d8dc2e1cdb5830ac1
|
|
Change-Id: I219d556f8e124cfe426cc1ac3c54da34eb7ef790
Reviewed-on: https://gerrit.libreoffice.org/49925
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins <ci@libreoffice.org>
|
|
Change-Id: I285838f6f3e8ec57a63239f71a403809154c47e2
|
|
Change-Id: Ie9f3aa8057e9b50beedf47ff892188cf3b362194
|
|
We need to check if the script generated the same code always.
Looks like nFunIndexes is never changed.
Change-Id: Ic247cccbf1e4a75e6a0acf5807fdcf84bfcf4cb3
|
|
Update to old files (from Tor in 2013) to prepare for generate.
Change-Id: I832a242b7b91179e9c269fa9e48a1698aa2f2a66
|
|
Still comparing the "old" gcc3_ios_arm with the new one, in order to make
the asm code work.
Change-Id: I3a2fdfc1891a6a4d7065917f5ef8bd19c49b3987
|
|
Change-Id: Iad8cfd72803864bd1c8a5d01c74e1f856c27685d
|
|
the simulator is a normal MAC compile, with different SDK
so the cpp_uno bindings should be identical
Change-Id: Ie53463beab628414185b492c78dcb3d8364794bf
|