* Linker error `.exit.text' referenced in section `.alt.smp.init' @ 2019-05-28 7:12 Stefan Agner 2019-05-28 7:32 ` Arnd Bergmann 0 siblings, 1 reply; 4+ messages in thread From: Stefan Agner @ 2019-05-28 7:12 UTC (permalink / raw) To: Masami Hiramatsu, linux; +Cc: linux-arm-kernel, arnd Hi, Cross compiling Linux v5.2-rc2 with CONFIG_DNS_RESOLVER=y using gcc 8.2 I noticed the following build error: ... GEN .version CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o AR init/built-in.a LD vmlinux.o MODPOST vmlinux.o MODINFO modules.builtin.modinfo `.exit.text' referenced in section `.alt.smp.init' of net/dns_resolver/dns_key.o: defined in discarded section `.exit.text' of net/dns_resolver/dns_key.o make: *** [Makefile:1052: vmlinux] Error 1 It seems that Masami noticed this a while back: https://lore.kernel.org/lkml/20180911231012.fdc45840f3d91860daa2e180@kernel.org/T/#u Anybody else seen this? When I remove put_cred in exit_dns_resolver the kernel links fine... -- Stefan _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Linker error `.exit.text' referenced in section `.alt.smp.init' 2019-05-28 7:12 Linker error `.exit.text' referenced in section `.alt.smp.init' Stefan Agner @ 2019-05-28 7:32 ` Arnd Bergmann 2019-05-28 11:41 ` Stefan Agner 0 siblings, 1 reply; 4+ messages in thread From: Arnd Bergmann @ 2019-05-28 7:32 UTC (permalink / raw) To: Stefan Agner; +Cc: Masami Hiramatsu, Linux ARM, Russell King - ARM Linux On Tue, May 28, 2019 at 9:12 AM Stefan Agner <stefan@agner.ch> wrote: > > Hi, > > Cross compiling Linux v5.2-rc2 with CONFIG_DNS_RESOLVER=y using gcc 8.2 > I noticed the following build error: > > ... > GEN .version > CHK include/generated/compile.h > UPD include/generated/compile.h > CC init/version.o > AR init/built-in.a > LD vmlinux.o > MODPOST vmlinux.o > MODINFO modules.builtin.modinfo > `.exit.text' referenced in section `.alt.smp.init' of > net/dns_resolver/dns_key.o: defined in discarded section `.exit.text' of > net/dns_resolver/dns_key.o > > make: *** [Makefile:1052: vmlinux] Error 1 > > It seems that Masami noticed this a while back: > https://lore.kernel.org/lkml/20180911231012.fdc45840f3d91860daa2e180@kernel.org/T/#u > > Anybody else seen this? > > When I remove put_cred in exit_dns_resolver the kernel links fine... I've seen two or thre of these in total. This only happens on 32-bit ARM when a function that needs SMP patching gets inlined into an __exit function. In this case, it's the atomic_dec_and_test(). The last one I fixed was https://lkml.org/lkml/2019/4/15/625 I think I've seen the one in the dns_resolver before but couldn't reproduce it recently. I used to have a patch that completely avoided dropping .exit when SMP patching was active, but I think we can fix them up as they happen, as I have built thousands of randconfig kernels without hitting this. The easiestwork around here would be to drop the __exit annotation and add a comment. We could also move put_cred out-of-line and make it non-__exit, or add an extern wrapper for it. Arnd _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Linker error `.exit.text' referenced in section `.alt.smp.init' 2019-05-28 7:32 ` Arnd Bergmann @ 2019-05-28 11:41 ` Stefan Agner 2019-05-28 11:53 ` Russell King - ARM Linux admin 0 siblings, 1 reply; 4+ messages in thread From: Stefan Agner @ 2019-05-28 11:41 UTC (permalink / raw) To: Arnd Bergmann; +Cc: Masami Hiramatsu, Linux ARM, Russell King - ARM Linux On 28.05.2019 09:32, Arnd Bergmann wrote: > On Tue, May 28, 2019 at 9:12 AM Stefan Agner <stefan@agner.ch> wrote: >> >> Hi, >> >> Cross compiling Linux v5.2-rc2 with CONFIG_DNS_RESOLVER=y using gcc 8.2 >> I noticed the following build error: >> >> ... >> GEN .version >> CHK include/generated/compile.h >> UPD include/generated/compile.h >> CC init/version.o >> AR init/built-in.a >> LD vmlinux.o >> MODPOST vmlinux.o >> MODINFO modules.builtin.modinfo >> `.exit.text' referenced in section `.alt.smp.init' of >> net/dns_resolver/dns_key.o: defined in discarded section `.exit.text' of >> net/dns_resolver/dns_key.o >> >> make: *** [Makefile:1052: vmlinux] Error 1 >> >> It seems that Masami noticed this a while back: >> https://lore.kernel.org/lkml/20180911231012.fdc45840f3d91860daa2e180@kernel.org/T/#u >> >> Anybody else seen this? >> >> When I remove put_cred in exit_dns_resolver the kernel links fine... > > I've seen two or thre of these in total. This only happens on 32-bit ARM > when a function that needs SMP patching gets inlined into an __exit > function. In this case, it's the atomic_dec_and_test(). > > The last one I fixed was https://lkml.org/lkml/2019/4/15/625 > I think I've seen the one in the dns_resolver before but couldn't > reproduce it recently. > > I used to have a patch that completely avoided dropping .exit when > SMP patching was active, but I think we can fix them up as they happen, > as I have built thousands of randconfig kernels without hitting this. Yeah dropping .exit seems rather harsh. > > The easiestwork around here would be to drop the __exit annotation > and add a comment. We could also move put_cred out-of-line and > make it non-__exit, or add an extern wrapper for it. Hm, both seem not very appealing to me. I think I'd rather prefer an extern wrapper. Is this an actual problem? As far as I understand that fixup happens very early and only once during boot, so by the time the kernel drops those .exit.text fixup has been done long time ago... Is this maybe a case for __ref (defined in include/linux/init.h)? Or could we have the section marked init/exit such that this does not trigger the error? -- Stefan _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Linker error `.exit.text' referenced in section `.alt.smp.init' 2019-05-28 11:41 ` Stefan Agner @ 2019-05-28 11:53 ` Russell King - ARM Linux admin 0 siblings, 0 replies; 4+ messages in thread From: Russell King - ARM Linux admin @ 2019-05-28 11:53 UTC (permalink / raw) To: Stefan Agner; +Cc: Linux ARM, Masami Hiramatsu, Arnd Bergmann On Tue, May 28, 2019 at 01:41:47PM +0200, Stefan Agner wrote: > On 28.05.2019 09:32, Arnd Bergmann wrote: > > On Tue, May 28, 2019 at 9:12 AM Stefan Agner <stefan@agner.ch> wrote: > >> > >> Hi, > >> > >> Cross compiling Linux v5.2-rc2 with CONFIG_DNS_RESOLVER=y using gcc 8.2 > >> I noticed the following build error: > >> > >> ... > >> GEN .version > >> CHK include/generated/compile.h > >> UPD include/generated/compile.h > >> CC init/version.o > >> AR init/built-in.a > >> LD vmlinux.o > >> MODPOST vmlinux.o > >> MODINFO modules.builtin.modinfo > >> `.exit.text' referenced in section `.alt.smp.init' of > >> net/dns_resolver/dns_key.o: defined in discarded section `.exit.text' of > >> net/dns_resolver/dns_key.o > >> > >> make: *** [Makefile:1052: vmlinux] Error 1 > >> > >> It seems that Masami noticed this a while back: > >> https://lore.kernel.org/lkml/20180911231012.fdc45840f3d91860daa2e180@kernel.org/T/#u > >> > >> Anybody else seen this? > >> > >> When I remove put_cred in exit_dns_resolver the kernel links fine... > > > > I've seen two or thre of these in total. This only happens on 32-bit ARM > > when a function that needs SMP patching gets inlined into an __exit > > function. In this case, it's the atomic_dec_and_test(). > > > > The last one I fixed was https://lkml.org/lkml/2019/4/15/625 > > I think I've seen the one in the dns_resolver before but couldn't > > reproduce it recently. > > > > I used to have a patch that completely avoided dropping .exit when > > SMP patching was active, but I think we can fix them up as they happen, > > as I have built thousands of randconfig kernels without hitting this. > > Yeah dropping .exit seems rather harsh. > > > > > The easiestwork around here would be to drop the __exit annotation > > and add a comment. We could also move put_cred out-of-line and > > make it non-__exit, or add an extern wrapper for it. > > Hm, both seem not very appealing to me. I think I'd rather prefer an > extern wrapper. > > Is this an actual problem? As far as I understand that fixup happens > very early and only once during boot, so by the time the kernel drops > those .exit.text fixup has been done long time ago... > > Is this maybe a case for __ref (defined in include/linux/init.h)? > > Or could we have the section marked init/exit such that this does not > trigger the error? Moving the SMP alternatives section doesn't change anything: the problem is that the SMP alternatives are part of the image the linker creates, but an entry in there refers to a section that we've told the linker to discard. The linker has no way to provide a value for that entry, and so errors out. I wonder if there's a way to tell the linker that it's a weak reference, and modify the SMP fixup code to skip it. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-05-28 11:55 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-05-28 7:12 Linker error `.exit.text' referenced in section `.alt.smp.init' Stefan Agner 2019-05-28 7:32 ` Arnd Bergmann 2019-05-28 11:41 ` Stefan Agner 2019-05-28 11:53 ` Russell King - ARM Linux admin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).