<div dir="ltr"><div dir="ltr">On Wed, Sep 23, 2020 at 12:47 PM Ebrahim Byagowi <<a href="mailto:ebraminio@gmail.com">ebraminio@gmail.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Somehow I wish not all parts of a libc but parts that can be provided without a JavaScript wrapper for .wasm can be provided from llvm's libc (leaving a stab implementation for the rest like file system). I've put together a minimal libc on [1] so using a 26kb .wasm binary file one can decode both PNG and JPG using this [2] simple to integrate JavaScript code, can be easily ported in other contexts .wasm can be interpreted without worrying about a helper. I had to use -nostdlib and -nostdinc in my build script but I wished the llvm-libc initiative can make it simpler so I don't have to put together a minimal libc for my need.<br></div></div></blockquote><div><br></div><div>Such a use case is supported by LLVM libc [*]. One will have set up a few config files for wasm. See <a href="https://github.com/llvm/llvm-project/blob/master/libc/config/linux/api.td">https://github.com/llvm/llvm-project/blob/master/libc/config/linux/api.td</a> and <a href="https://github.com/llvm/llvm-project/blob/master/libc/config/linux/x86_64/entrypoints.txt">https://github.com/llvm/llvm-project/blob/master/libc/config/linux/x86_64/entrypoints.txt</a>.</div><div><br></div><div>The tricky part would be header files. When you pick only a part of LLVM libc, where will you get the libc headers from? You can choose to use headers from the other libc and stick to platform independent and ABI insensitive parts from LLVM libc.</div><div><br></div><div>[*] Since Linux is the only platform we test on currently, there might be some holes/bugs in LLVM libc's infrastructure that might need to be plugged/fixed before bringing up LLVM libc for wasm.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Something similar can be achieved in Rust world using <span><span>--target wasm32-unknown-unknown</span></span> e.g. [3] which I guess can be best lead here also in terms what can be in scope of this work.</div><div><br></div><div> [1]: <a href="https://github.com/harfbuzz/harfbuzzjs/tree/edf1d8b/libc" target="_blank">https://github.com/harfbuzz/harfbuzzjs/tree/edf1d8b/libc</a></div><div> [2]: <a href="https://github.com/harfbuzz/harfbuzzjs/blob/gh-pages/stb-image/index.html" target="_blank">https://github.com/harfbuzz/harfbuzzjs/blob/gh-pages/stb-image/index.html</a></div><div> [3]: <a href="https://github.com/RazrFalcon/ttf-parser/commit/b0cfc67" target="_blank">https://github.com/RazrFalcon/ttf-parser/commit/b0cfc67</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 23, 2020 at 9:16 PM Siva Chandra via libc-dev <<a href="mailto:libc-dev@lists.llvm.org" target="_blank">libc-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>+cc libc-dev<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 23, 2020 at 9:44 AM 罗勇刚(Yonggang Luo) via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Cause llvm-libc are in early stage, and we can easily catch up the support with linux.<div><br></div><div>After we add wasi support in llvm-lic, we can easily get a usable llvm-libc across different platform such as linux/windows/macos/android. don't know if iOS is a target, but these target are very much enough</div></div></blockquote><div><br></div><div> I do not see any technical blockers for the platform independent parts. Of course, work has to be done to set up the build etc.</div><div>What exactly do you mean by, "we can easily get a usable llvm-libc across different platforms such as linux/windows/macos/android."</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>-- <br><div dir="ltr">         此致<br>礼<br>罗勇刚<br>Yours<br>    sincerely,<br>Yonggang Luo<br></div></div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div>
_______________________________________________<br>
libc-dev mailing list<br>
<a href="mailto:libc-dev@lists.llvm.org" target="_blank">libc-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/libc-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/libc-dev</a><br>
</blockquote></div>
</blockquote></div></div>