2022-11-02 17:20:52

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH v2] riscv: vdso: fix section overlapping under some conditions

lkp reported a build error, I tried the config and can reproduce
build error as below:

VDSOLD arch/riscv/kernel/vdso/vdso.so.dbg
ld.lld: error: section .note file range overlaps with .text
>>> .note range is [0x7C8, 0x803]
>>> .text range is [0x800, 0x1993]

ld.lld: error: section .text file range overlaps with .dynamic
>>> .text range is [0x800, 0x1993]
>>> .dynamic range is [0x808, 0x937]

ld.lld: error: section .note virtual address range overlaps with .text
>>> .note range is [0x7C8, 0x803]
>>> .text range is [0x800, 0x1993]

Fix it by setting DISABLE_BRANCH_PROFILING which will disable branch
tracing for vdso, thus avoid useless _ftrace_annotated_branch section
and _ftrace_branch section. Although we can also fix it by removing
the hardcoded .text begin address, but I think that's another story
and should be put into another patch.

Link: https://lore.kernel.org/lkml/[email protected]/#r
Reported-by: kernel test robot <[email protected]>
Signed-off-by: Jisheng Zhang <[email protected]>
---

Since v1:
- fix the issue by setting DISABLE_BRANCH_PROFILING

arch/riscv/kernel/vdso/Makefile | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile
index f2e065671e4d..d6092ff678fd 100644
--- a/arch/riscv/kernel/vdso/Makefile
+++ b/arch/riscv/kernel/vdso/Makefile
@@ -17,6 +17,7 @@ vdso-syms += flush_icache
obj-vdso = $(patsubst %, %.o, $(vdso-syms)) note.o

ccflags-y := -fno-stack-protector
+ccflags-y += -DDISABLE_BRANCH_PROFILING

ifneq ($(c-gettimeofday-y),)
CFLAGS_vgettimeofday.o += -fPIC -include $(c-gettimeofday-y)
--
2.37.2



2022-11-23 16:04:44

by Jisheng Zhang

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: vdso: fix section overlapping under some conditions

On Thu, Nov 03, 2022 at 01:02:54AM +0800, Jisheng Zhang wrote:
> lkp reported a build error, I tried the config and can reproduce
> build error as below:
>
> VDSOLD arch/riscv/kernel/vdso/vdso.so.dbg
> ld.lld: error: section .note file range overlaps with .text
> >>> .note range is [0x7C8, 0x803]
> >>> .text range is [0x800, 0x1993]
>
> ld.lld: error: section .text file range overlaps with .dynamic
> >>> .text range is [0x800, 0x1993]
> >>> .dynamic range is [0x808, 0x937]
>
> ld.lld: error: section .note virtual address range overlaps with .text
> >>> .note range is [0x7C8, 0x803]
> >>> .text range is [0x800, 0x1993]
>
> Fix it by setting DISABLE_BRANCH_PROFILING which will disable branch
> tracing for vdso, thus avoid useless _ftrace_annotated_branch section
> and _ftrace_branch section. Although we can also fix it by removing
> the hardcoded .text begin address, but I think that's another story
> and should be put into another patch.
>
> Link: https://lore.kernel.org/lkml/[email protected]/#r
> Reported-by: kernel test robot <[email protected]>
> Signed-off-by: Jisheng Zhang <[email protected]>

Gentle ping? This fix is still missing in mainline.

> ---
>
> Since v1:
> - fix the issue by setting DISABLE_BRANCH_PROFILING
>
> arch/riscv/kernel/vdso/Makefile | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile
> index f2e065671e4d..d6092ff678fd 100644
> --- a/arch/riscv/kernel/vdso/Makefile
> +++ b/arch/riscv/kernel/vdso/Makefile
> @@ -17,6 +17,7 @@ vdso-syms += flush_icache
> obj-vdso = $(patsubst %, %.o, $(vdso-syms)) note.o
>
> ccflags-y := -fno-stack-protector
> +ccflags-y += -DDISABLE_BRANCH_PROFILING
>
> ifneq ($(c-gettimeofday-y),)
> CFLAGS_vgettimeofday.o += -fPIC -include $(c-gettimeofday-y)
> --
> 2.37.2
>
>
> _______________________________________________
> linux-riscv mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-riscv

Subject: Re: [PATCH v2] riscv: vdso: fix section overlapping under some conditions

Hello:

This patch was applied to riscv/linux.git (fixes)
by Palmer Dabbelt <[email protected]>:

On Thu, 3 Nov 2022 01:02:54 +0800 you wrote:
> lkp reported a build error, I tried the config and can reproduce
> build error as below:
>
> VDSOLD arch/riscv/kernel/vdso/vdso.so.dbg
> ld.lld: error: section .note file range overlaps with .text
> >>> .note range is [0x7C8, 0x803]
> >>> .text range is [0x800, 0x1993]
>
> [...]

Here is the summary with links:
- [v2] riscv: vdso: fix section overlapping under some conditions
https://git.kernel.org/riscv/c/74f6bb55c834

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html