-----邮件原件----- 发件人: Maciej W. Rozycki macro@orcam.me.uk 发送时间: 2021年3月19日 22:32 收件人: YunQiang Su wzssyqa@gmail.com 抄送: Thomas Bogendoerfer tsbogend@alpha.franken.de; YunQiang Su yunqiang.su@cipunited.com; linux-mips linux-mips@vger.kernel.org; Jiaxun Yang jiaxun.yang@flygoat.com; Philippe Mathieu-Daudé f4bug@amsat.org; stable@vger.kernel.org 主题: Re: [PATCH v7 RESEND] MIPS: force use FR=0 or FRE for FPXX binaries
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:
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.
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.
I also have no idea why (even hate). While there do be some program languages created in recently years, prefer static link.
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.
There will no FPXX for r6. All of (if not mistake) R6 O32 is FP64. FRE here is only for compatible with pre-R6 objects.
I will send a V8 to switch r6 back.
Maciej