Skip to content

LDC runtime is broken for android #4268

@MrcSnm

Description

@MrcSnm

Tested

I'm doing that on windows btw.
My etc.conf:


"aarch64-.*-linux-android":
{
    switches = [
        "-defaultlib=phobos2-ldc,druntime-ldc",
        "-link-defaultlib-shared=false",
        "-gcc=C:/Users/Hipreme/AppData/Local/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android21-clang.cmd",
        "-linker=C:/Users/Hipreme/AppData/Local/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.exe"
    ];
    lib-dirs = [
        "%%ldcbinarypath%%/../../ldc2-1.22.0-android-aarch64/lib",
    ];
    rpath = "";
};


  • 1.22.0
  • 1.26.0
  • 1.27.0
  • 1.28.0
  • 1.28.1

dlopen failed: cannot locate symbol "__start___minfo" referenced by "/data/app/com.hipremeengine.app-5v-UadUCsHwXgGTgHWJRiA==/lib/arm64/libhipreme_engine.so"...

  • 1.29
  • 1.30

2022-11-16 20:13:03.648 2987-2987 DEBUG pid-2987 A #1 pc 00000000000bb348 /data/app/com.hipremeengine.app-4SMbRX-MLQzfat6W-RP7Pw==/lib/arm64/libhipreme_engine.so (_D4core8internal2gc4bits6GCBits10copyRangeZMFNbNimmPxmZv+196)

This trivial code gives runtime error on rt_init

import core.stdc.stdarg;

version (Android):

enum android_LogPriority
{
    ANDROID_LOG_UNKNOWN,
    ANDROID_LOG_DEFAULT,
    ANDROID_LOG_VERBOSE,
    ANDROID_LOG_DEBUG,
    ANDROID_LOG_INFO,
    ANDROID_LOG_WARN,
    ANDROID_LOG_ERROR,
    ANDROID_LOG_FATAL,
    ANDROID_LOG_SILENT
}
extern (C) @system nothrow @nogc
{
    int __android_log_write(int prio, const(char)* tag, const(char)* text);
    int __android_log_print(int prio, const(char)* tag, const(char)* fmt, ...);
    int __android_log_vprint(int prio, const(char)* tag, const(char)* fmt, va_list ap);
    void __android_log_assert(const(char)* cond, const(char)* tag, const(char)* fmt, ...);
}


export extern(C)
void Java_com_hipremeengine_app_HipremeEngine_HipremeInit(void* env, void* clazz)
{
    import core.runtime;
	__android_log_write(android_LogPriority.ANDROID_LOG_WARN, "MyAPP", "Hello before");
    rt_init();
	__android_log_write(android_LogPriority.ANDROID_LOG_FATAL, "MyAPP", "Hello after");
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions