[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <87bk27fndi.fsf@prevas.dk>
Date: Mon, 05 Aug 2024 09:19:05 +0200
From: Rasmus Villemoes <linux@...musvillemoes.dk>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Oleg Nesterov <oleg@...hat.com>, linux-kernel@...r.kernel.org
Subject: Re: build failure caused by RUNTIME_CONST()
Linus Torvalds <torvalds@...ux-foundation.org> writes:
> On Fri, 2 Aug 2024 at 15:10, Oleg Nesterov <oleg@...hat.com> wrote:
>>
>> $ ld -v
>> GNU ld version 2.25-17.fc23
>
> Yeah, we document that we support building with ld-2.25. And I went
> and looked into the binutils-gdb repo, and it looks like this whole
> automatic start/stop symbol thing was introduced in 2.29.
>
Well, the basics of it goes much further back. ld/NEWS says
Changes in version 2.6:
* When an ELF section name is representable as a C identifier (this is not true
of most ELF section names), the linker will automatically define symbols
__start_SECNAME and __stop_SECNAME, where SECNAME is the section name, at the
beginning and the end of the section. This is used by glibc.
but then also goes on with
Addendum: Current versions of the linker (at least for version 2.18 onwards
and possibly much earlier as well) place two restrictions on this feature: The
symbols are only implemented for orphaned sections, not for explicitly placed
sections and they are PROVIDEd rather than being defined.
and I think what was changed in 2.29 is that some of that was being
relaxed again with commit cbd0eecf261c ("Always define referenced
__start_SECNAME/__stop_SECNAME"), which is what you find running 'git
blame' on the current doc text. But yes, it does seem that the 2.29
semantics are what are needed to avoid explicitly defining the symbols
in the linker script.
Rasmus
Powered by blists - more mailing lists