Slide 1

Slide 1 text

Proudly breaking your toolchain Miklos Vajna 2014­09­04

Slide 2

Slide 2 text

2 / 5 LibreOffice Conference 2014, Bern | Miklos Vajna Android ● Gdb (README.Android): ● Ld (tinderbox output): Some versions of the NDK had a broken gdb in the way that it can see symbols only for shlibs that were already loaded when the debuggee was attached, so you need to carefully guess where to put: fprintf(stderr, "Sleeping NOW!\n"); ::sleep(20); into the code; and when you see that in logcat, you have time to run: ndk-gdb and it will attach the process. /home/android/android-ndk-r9d/toolchains/arm-linux-androideabi- 4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm- linux-androideabi/bin/ld.gold: internal error in global_symbol, at /s/ndk- toolchain/src/build/../binutils/binutils-2.23/gold/object.h:2041

Slide 3

Slide 3 text

3 / 5 LibreOffice Conference 2014, Bern | Miklos Vajna MSVC ● 7aa7047eb48e81bc0b32448ff0487c993fe9a4db had to be reverted: fatal error C1061: compiler limit : blocks nested too deeply Apparently there can be much more than "just a few values" in some cases (186 in OOXMLFactory_dml_shapeGeometry::getList Value) and MSVC compiler cannot handle if statement that deeply nested.

Slide 4

Slide 4 text

4 / 5 LibreOffice Conference 2014, Bern | Miklos Vajna (Apple's) clang ● d7aef2407a0d9e8ff3bf72e198feb55a71307733 #ifdef IOS static void dummy_function() { pid_t pid = getpid(); (void) pid; } #endif #ifdef IOS // Work around what is // either a compiler bug in // Xcode 5.1.1, ... dummy_function(); #endif

Slide 5

Slide 5 text

5 / 5 LibreOffice Conference 2014, Bern | Miklos Vajna GCC ● 2b5953a19e36a02040f2ff08bc87efe4785f80bd ● There is hope! (Suspicious SbxDataType) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36187 // gcc4.4 (and 4.3 and possibly older) have a problem with dynamic_cast directly to the target class, // so help it with an intermediate cast. I'm not sure what exactly the problem is, seems to be unrelated // to RTLD_GLOBAL, so most probably a gcc bug. FormulaExportBase* pBase = dynamic_cast(dynamic_cast< SfxBaseModel*>(xClosable.get()));