On Fri, 19 Mar 2021, YunQiang Su wrote: > The bad news is that (Google's) Go has no runtime. Dynamic shared objects (libraries) were invented in early 1990s for two reasons: 1. To limit the use of virtual memory. Memory conservation may not be as important nowadays in many applications where vast amounts of RAM are available, though of course this does not apply everywhere, and still it has to be weighed up whether any waste of resources is justified and compensated by a gain elsewhere. 2. To make it easy to replace a piece of code shared among many programs, so that you don't have to relink them all (or recompile if sources are available) when say an issue is found or a feature is added that is transparent to applications (for instance a new protocol or a better algorithm). This still stands very much nowadays. People went through great efforts to support shared libraries, sacrificed performance for it even back then when the computing power was much lower than nowadays. Support was implemented in Linux for the a.out binary format even, despite the need to go through horrible hoops to get a.out shared libraries built. Some COFF environments were adapted for shared library support too. I don't know why Google choose not to have their runtime support library (the Go library) as a dynamic shared object 20-something years on, but it comes at a price. So you either have to relink (recompile) all the affected applications like in the old days or find a feasible workaround. As I noted in the discussion the use of FR=0 would be acceptable for FPXX binaries as far as I am concerned for R2 through R5, but not the FRE mode for R6. Maciej