Open Bug 1399396 Opened 7 years ago Updated 2 years ago

Support code coverage builds on Android

Categories

(Testing :: Code Coverage, enhancement)

enhancement

Tracking

(Not tracked)

People

(Reporter: marco, Unassigned)

References

(Blocks 2 open bugs)

Details

Attachments

(1 file)

This should not be too different from Linux. I don't know much about the way tests work on Android though, I don't know if there are problems accessing the gcda files.
(In reply to Marco Castelluccio [:marco] from comment #0)
> This should not be too different from Linux.

Out of curiosity, what about the Android-specific Java code?
(In reply to Jan Henning [:JanH] from comment #1)
> (In reply to Marco Castelluccio [:marco] from comment #0)
> > This should not be too different from Linux.
> 
> Out of curiosity, what about the Android-specific Java code?

It will be different, this is only about the C/C++ code.
I think given the lack of Mozilla development resources on Android, we should assume Android has a lower priority than desktop and only work on it once we have more coverage on desktop.
Attached patch WIPSplinter Review
We will require r17 in order to build the coverage build because of https://github.com/android-ndk/ndk/issues/411.

Here's a WIP patch.
We've switched from NDK's clang to our own: https://bugzilla.mozilla.org/show_bug.cgi?id=1435409#c4.

I've rebased and re-applied your patch with the new clang, here: https://treeherder.mozilla.org/#/jobs?repo=try&revision=66a501ea5a6f3e937977fb8f0673c56fc876205a.

Build is failing with:

    configure:1496:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
    main(){return(0);}
    ^
    1 warning generated.
    /builds/worker/workspace/build/src/android-ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux
-androideabi/bin/ld: error: cannot open /builds/worker/workspace/build/src/clang/lib/clang/6.0.1/lib/linux/libclang_rt.profile-arm-android.a: No such file or directory
    /tmp/conftest-7071d9.o:conftest.c:function __llvm_gcov_writeout: error: undefined reference to 'llvm_gcda_start_file'
    /tmp/conftest-7071d9.o:conftest.c:function __llvm_gcov_writeout: error: undefined reference to 'llvm_gcda_emit_function'
    /tmp/conftest-7071d9.o:conftest.c:function __llvm_gcov_writeout: error: undefined reference to 'llvm_gcda_emit_arcs'
    /tmp/conftest-7071d9.o:conftest.c:function __llvm_gcov_writeout: error: undefined reference to 'llvm_gcda_summary_info'
    /tmp/conftest-7071d9.o:conftest.c:function __llvm_gcov_writeout: error: undefined reference to 'llvm_gcda_end_file'
    /tmp/conftest-7071d9.o:conftest.c:function __llvm_gcov_init: error: undefined reference to 'llvm_gcov_init'
    clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
    configure: failed program was:

    #line 1494 "configure"
    #include "confdefs.h"

    main(){return(0);}
    configure: error: installation or configuration problem: C compiler cannot create executables.


It appears we don't have compiler-rt installed in that environment.

What are the next steps here?
Flags: needinfo?(mcastelluccio)
We are using the linux64-clang toolchain for this build (cross-compiling), so we only have the linux compiler-rt libraries.
We need to find a way to build them for Android too (either in the same toolchain build, or in a new one we define).
The script used to build Clang/LLVM/compiler-rt is at build/build-clang/build-clang.py.
Flags: needinfo?(mcastelluccio)
See Also: → 1479800
Depends on: 1435409
See Also: → 1480462
Depends on: 1504147
Blocks: 1608236
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: