Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Proudly breaking your toolchain

Miklos V
September 04, 2014
250

Proudly breaking your toolchain

Miklos V

September 04, 2014
Tweet

Transcript

  1. Proudly breaking
    your toolchain
    Miklos Vajna
    2014­09­04

    View Slide

  2. 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

    View Slide

  3. 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.

    View Slide

  4. 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

    View Slide

  5. 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()));

    View Slide