Alexander Yermolovich via llvm-dev
2021-Sep-08 18:19 UTC
[llvm-dev] [LLD] Relocation overflows and .nv_fatbin
Hello I am seeing relocation overflows from .text section in to .nv_fatbin. The whole thing, nv_fatbin, is a bit of a black box, but there does appear to be only one. We have a downstream patch in LLD, that moves .nv_fatbin section(s) that have relocations in to to the "top". Looking around at what's in .nv_fartbin the rest of the code should be bunch of cuda stuff. So, in theory that can grow, and we shouldn't get any more relocation overflows. At least due to the size of .nv_fatbin. I was wondering if there is a better way of doing it. Maybe with a linker script? I investigated it, and that answer seems to be no, but I am not an expert in linker scripts. Thank You Alex -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210908/63372f68/attachment.html>
Fangrui Song via llvm-dev
2021-Sep-08 19:01 UTC
[llvm-dev] [LLD] Relocation overflows and .nv_fatbin
On 2021-09-08, Alexander Yermolovich via llvm-dev wrote:>Hello > >I am seeing relocation overflows from .text section in to .nv_fatbin. The whole thing, nv_fatbin, is a bit of a black box, but there does appear to be only one. We have a downstream patch in LLD, that moves .nv_fatbin section(s) that have relocations in to to the "top". Looking around at what's in .nv_fartbin the rest of the code should be bunch of cuda stuff. So, in theory that can grow, and we shouldn't get any more relocation overflows. At least due to the size of .nv_fatbin. > >I was wondering if there is a better way of doing it. Maybe with a linker script? I investigated it, and that answer seems to be no, but I am not an expert in linker scripts. > >Thank You >AlexI implemented INSERT [AFTER|BEFORE] for orphan sections in https://reviews.llvm.org/D74375 You may consider moving .nv* and __nv* sections after .bss But linker synthesized etext/_etext may be in a weird position. To fix that, use the OVERWRITE_SECTIONS feature I added for LLD 13.0.0 OVERWRITE_SECTIONS { .tdata : { etext = .; _etext = .; *(.tdata) } }