Message ID | 20240123-fix-uml-clang-18-v1-2-efc095519cf9@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix UML build with clang-18 and newer | expand |
On Wed, Jan 24, 2024 at 8:00 AM Nathan Chancellor <nathan@kernel.org> wrote: > > After the linked LLVM change, building ARCH=um defconfig results in a > segmentation fault in modpost. Yeah, this is a mistake in my commits. The NULL pointer access should be fixed, but that is a separate issue. Anyway, I applied this patch. > Prior to commit a23e7584ecf3 ("modpost: > unify 'sym' and 'to' in default_mismatch_handler()"), there was a > warning: > > WARNING: modpost: vmlinux.o(__ex_table+0x88): Section mismatch in reference to the .ltext:(unknown) > WARNING: modpost: The relocation at __ex_table+0x88 references > section ".ltext" which is not in the list of > authorized sections. If you're adding a new section > and/or if this reference is valid, add ".ltext" to the > list of authorized sections to jump to on fault. > This can be achieved by adding ".ltext" to > OTHER_TEXT_SECTIONS in scripts/mod/modpost.c. > > The linked LLVM change moves global objects to the '.ltext' (and > '.ltext.*' with '-ffunction-sections') sections with '-mcmodel=large', > which ARCH=um uses. These sections should be handled just as '.text' > and '.text.*' are, so add them to TEXT_SECTIONS. > > Cc: stable@vger.kernel.org > Closes: https://github.com/ClangBuiltLinux/linux/issues/1981 > Link: https://github.com/llvm/llvm-project/commit/4bf8a688956a759b7b6b8d94f42d25c13c7af130 > Signed-off-by: Nathan Chancellor <nathan@kernel.org> > --- > scripts/mod/modpost.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c > index cb6406f485a9..f7c4d3fe4381 100644 > --- a/scripts/mod/modpost.c > +++ b/scripts/mod/modpost.c > @@ -807,7 +807,8 @@ static void check_section(const char *modname, struct elf_info *elf, > > #define DATA_SECTIONS ".data", ".data.rel" > #define TEXT_SECTIONS ".text", ".text.*", ".sched.text", \ > - ".kprobes.text", ".cpuidle.text", ".noinstr.text" > + ".kprobes.text", ".cpuidle.text", ".noinstr.text", \ > + ".ltext", ".ltext.*" > #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \ > ".fixup", ".entry.text", ".exception.text", \ > ".coldtext", ".softirqentry.text" > > -- > 2.43.0 >
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index cb6406f485a9..f7c4d3fe4381 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -807,7 +807,8 @@ static void check_section(const char *modname, struct elf_info *elf, #define DATA_SECTIONS ".data", ".data.rel" #define TEXT_SECTIONS ".text", ".text.*", ".sched.text", \ - ".kprobes.text", ".cpuidle.text", ".noinstr.text" + ".kprobes.text", ".cpuidle.text", ".noinstr.text", \ + ".ltext", ".ltext.*" #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \ ".fixup", ".entry.text", ".exception.text", \ ".coldtext", ".softirqentry.text"
After the linked LLVM change, building ARCH=um defconfig results in a segmentation fault in modpost. Prior to commit a23e7584ecf3 ("modpost: unify 'sym' and 'to' in default_mismatch_handler()"), there was a warning: WARNING: modpost: vmlinux.o(__ex_table+0x88): Section mismatch in reference to the .ltext:(unknown) WARNING: modpost: The relocation at __ex_table+0x88 references section ".ltext" which is not in the list of authorized sections. If you're adding a new section and/or if this reference is valid, add ".ltext" to the list of authorized sections to jump to on fault. This can be achieved by adding ".ltext" to OTHER_TEXT_SECTIONS in scripts/mod/modpost.c. The linked LLVM change moves global objects to the '.ltext' (and '.ltext.*' with '-ffunction-sections') sections with '-mcmodel=large', which ARCH=um uses. These sections should be handled just as '.text' and '.text.*' are, so add them to TEXT_SECTIONS. Cc: stable@vger.kernel.org Closes: https://github.com/ClangBuiltLinux/linux/issues/1981 Link: https://github.com/llvm/llvm-project/commit/4bf8a688956a759b7b6b8d94f42d25c13c7af130 Signed-off-by: Nathan Chancellor <nathan@kernel.org> --- scripts/mod/modpost.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)