Hi! I figured I'd quickly confirm the direction I'm taking towards compiling RTEMS as a dynamic/shared library.
Problems I've run into in setting up amd64.cfg to compile all of RTEMS as a shared library: - In the x86_64 tools, gcc's "-shared" flag has a different effect than the "-Wl,-shared" flag used to pass the flag to the linker - the former silently seems to compile a static library. The latter leads us to our next issue - Newlib seems to be compiled as a static libc.a. This leads to errors such as the following: https://gist.github.com/AmaanC/475bc0298697d22b944577ac80ec2736#file-rtems-make-fpic-log-L178 I believe this _should_ be solvable by compiling newlib as a shared library, and _then_ linking the shared libc with RTEMS together. See [1][2][3] for more. Please let me know if that approach doesn't make sense - given that there is no dynamic loader in the RTEMS kernel as far as I know, what we really want _is_ a static file, but for it to be a relocatable PE, we need to convince GCC to spit out a relocatable but fully resolved shared library. - Similarly, the gcc-compiled crtbegin and crtend also include static relocations which are invalid when compiling with fPIC. I think we can use crtbeginS.o and crtendS.o[4] in place of those - that way, we might still be able to have GCC handle their inclusion, without needing our bsp_specs. I'll look into this after figuring newlib out. ----------------------------------- I'd just like some confirmation on this being the correct path to follow. I'm not quite sure, because if newlib is a shared library, I think we'll need to divide the current build stage up to add stages like: - Compile librtemscpu.a and librtemsbsp.a with -fPIC - Compile test_xyz.c while linking it with libc, librtems*, lib*efi, etc. to create a fully resolved test_xyz.so - Convert .so to PE using objcopy Does that make sense to you all? ----------------------------------- [1] https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=newlib/README;h=e793d57ce75e56d1eb044e2c0325631e9eeef1af;hb=HEAD#l498 [2] https://sourceware.org/ml/newlib/2016/msg01106.html [3] https://forum.osdev.org/viewtopic.php?p=276046&sid=c7798911615bef866354e92a64125b1c#p276046 [4] https://dev.gentoo.org/~vapier/crt.txtz _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel