Bug 1713891
Summary: | Impossible to link large object files due to glibc/gcc relocation truncation | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Yann Droneaud <yann> |
Component: | glibc | Assignee: | Carlos O'Donell <codonell> |
Status: | CLOSED NOTABUG | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | low | Docs Contact: | |
Priority: | unspecified | ||
Version: | 30 | CC: | arjun.is, codonell, dj, fweimer, law, mfabian, pfrankli, rth, siddhesh |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2019-08-22 16:38:08 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Yann Droneaud
2019-05-25 13:10:16 UTC
(In reply to Yann Droneaud from comment #0) > Perhaps Glibc and GCC runtimes should probably be generated in a way > allowing large relocation I'm thinking about -mcmodel=large Generate code for the large model. This model makes no assumptions about addresses and sizes of sections. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/x86-Options.html#index-mcmodel_003dlarge-3 But the option description for ARMv8 AArch64 scares me a bit: -mcmodel=large Generate code for the large code model. This makes no assumptions about addresses and sizes of sections. Programs can be statically linked only. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/AArch64-Options.html#index-mcmodel_003dlarge The x86-64 instruction encoding only offers 32-bit PC-relative addressing. This is far more than your typical RISC architecture, but it is still a limit that can be reached on today's machines. -mcmodel=large works around this, at a performance cost, which is why this option is not enabled by default. I do not think there is a bug here; this is working as designed. (The AArch64 architecture is very different and has different limitations.) I'm marking this CLOSED/NOTABUG. There are limits to the size of objects you can link. We would need a strong rationale to support such objects by default by making it possible for the entire runtime to support such large objects. |