mystikos icon indicating copy to clipboard operation
mystikos copied to clipboard

Compilation support using clang

Open mrragava opened this issue 3 years ago • 6 comments

Mystikos does not builds successfully when compiled using Clang 8.0.

Please provide clang support.

mrragava avatar Jul 14 '21 08:07 mrragava

Please provide build errors.

jxyang avatar Jul 19 '21 19:07 jxyang

/openenclave/include/openenclave/3rdparty -include /home/ragava/Desktop/labs/mystikos/include/myst/deprecations.h -o /home/ragava/Desktop/labs/mystikos/build/obj/utils/round.o round.c error: unknown warning option '-Wstack-usage=512'; did you mean '-Wtype-safety'? [-Werror,-Wunknown-warning-option] mkdir -p /home/ragava/Desktop/labs/mystikos/build/obj/utils clang -c -Wall -Werror -g -fPIC -O3 -nostdinc -ffunction-sections -fdata-sections -Wno-conversion -Wno-parentheses -Wstack-usage=512 -O3 -I/home/ragava/Desktop/labs/mystikos/include -I/home/ragava/Desktop/labs/mystikos/build/musl/include -I/home/ragava/Desktop/labs/mystikos/build/openenclave/include/openenclave/3rdparty -include /home/ragava/Desktop/labs/mystikos/include/myst/deprecations.h -o /home/ragava/Desktop/labs/mystikos/build/obj/utils/verityblkdev.o verityblkdev.c /home/ragava/Desktop/labs/mystikos/rules.mak:44: recipe for target '/home/ragava/Desktop/labs/mystikos/build/obj/utils/lsr.o' failed make[2]: *** [/home/ragava/Desktop/labs/mystikos/build/obj/utils/lsr.o] Error 1 make[2]: *** Waiting for unfinished jobs.... error: unknown warning option '-Wstack-usage=512'; did you mean '-Wtype-safety'? [-Werror,-Wunknown-warning-option] /home/ragava/Desktop/labs/mystikos/rules.mak:44: recipe for target '/home/ragava/Desktop/labs/mystikos/build/obj/utils/eraise.o' failed make[2]: *** [/home/ragava/Desktop/labs/mystikos/build/obj/utils/eraise.o] Error 1 error: unknown warning option '-Wstack-usage=512'; did you mean '-Wtype-safety'? [-Werror,-Wunknown-warning-option] error: unknown warning option '-Wstack-usage=512'; did you mean '-Wtype-safety'? [-Werror,-Wunknown-warning-option] /home/ragava/Desktop/labs/mystikos/rules.mak:44: recipe for target '/home/ragava/Desktop/labs/mystikos/build/obj/utils/trace.o' failed make[2]: *** [/home/ragava/Desktop/labs/mystikos/build/obj/utils/trace.o] Error 1 /home/ragava/Desktop/labs/mystikos/rules.mak:44: recipe for target '/home/ragava/Desktop/labs/mystikos/build/obj/utils/luksblkdev.o' failed make[2]: *** [/home/ragava/Desktop/labs/mystikos/build/obj/utils/luksblkdev.o] Error 1 error: unknown warning option '-Wstack-usage=512'; did you mean '-Wtype-safety'? [-Werror,-Wunknown-warning-option] /home/ragava/Desktop/labs/mystikos/rules.mak:44: recipe for target '/home/ragava/Desktop/labs/mystikos/build/obj/utils/round.o' failed make[2]: *** [/home/ragava/Desktop/labs/mystikos/build/obj/utils/round.o] Error 1 error: unknown warning option '-Wstack-usage=512'; did you mean '-Wtype-safety'? [-Werror,-Wunknown-warning-option] /home/ragava/Desktop/labs/mystikos/rules.mak:44: recipe for target '/home/ragava/Desktop/labs/mystikos/build/obj/utils/verityblkdev.o' failed make[2]: *** [/home/ragava/Desktop/labs/mystikos/build/obj/utils/verityblkdev.o] Error 1

mrragava avatar Jul 20 '21 01:07 mrragava

There are many compilation errors in most of the projects. Is mystikos offically compatible with Clang ?

mrragava avatar Jul 20 '21 01:07 mrragava

export CC=clang CXX=clang++ is not honored by makefile chain. It seems like gcc is picked as default for individual projects.
There is also hard-coded package config for openenclave-gcc defs.mak.

mrragava avatar Jul 20 '21 01:07 mrragava

Please note this ask is a dependency for fuzzing mystikos. Enclave fuzzer is based on Libfuzzer which needs clang support.

mrragava avatar Jul 20 '21 01:07 mrragava

I think we can opt out -Wstack-usage when compiling with clang. Seems this is a known issue. https://lists.llvm.org/pipermail/llvm-dev/2021-May/150417.html

I think mystikos/kernel does respect CC, but we'd have to modify mystikos/third_party/musl/crt/Makefile to be able to build CRT with $CC.

The remaining hardcoded gccs are in tests/solutions which should not affect your fuzzing work.

jxyang avatar Jul 29 '21 00:07 jxyang