Message ID | 20200624203200.78870-18-samitolvanen@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | add support for Clang LTO | expand |
On Wed, Jun 24, 2020 at 1:33 PM Sami Tolvanen <samitolvanen@google.com> wrote: > > Filter out CC_FLAGS_LTO for the vDSO. Just curious about this patch (and the following one for x86's vdso), do you happen to recall specifically what the issues with the vdso's are? > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > --- > arch/arm64/kernel/vdso/Makefile | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile > index 556d424c6f52..cfad4c296ca1 100644 > --- a/arch/arm64/kernel/vdso/Makefile > +++ b/arch/arm64/kernel/vdso/Makefile > @@ -29,8 +29,8 @@ ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \ > ccflags-y := -fno-common -fno-builtin -fno-stack-protector -ffixed-x18 > ccflags-y += -DDISABLE_BRANCH_PROFILING > > -CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) > -KBUILD_CFLAGS += $(DISABLE_LTO) > +CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) \ > + $(CC_FLAGS_LTO) > KASAN_SANITIZE := n > UBSAN_SANITIZE := n > OBJECT_FILES_NON_STANDARD := y > -- > 2.27.0.212.ge8ba1cc988-goog >
On Wed, Jun 24, 2020 at 1:58 PM Nick Desaulniers <ndesaulniers@google.com> wrote: > > On Wed, Jun 24, 2020 at 1:33 PM Sami Tolvanen <samitolvanen@google.com> wrote: > > > > Filter out CC_FLAGS_LTO for the vDSO. > > Just curious about this patch (and the following one for x86's vdso), > do you happen to recall specifically what the issues with the vdso's > are? + Andi (tangential, I actually have a bunch of tabs open with slides from http://halobates.de/ right now) 58edae3aac9f2 67424d5a22124 $ git log -S DISABLE_LTO > > > > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > > --- > > arch/arm64/kernel/vdso/Makefile | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile > > index 556d424c6f52..cfad4c296ca1 100644 > > --- a/arch/arm64/kernel/vdso/Makefile > > +++ b/arch/arm64/kernel/vdso/Makefile > > @@ -29,8 +29,8 @@ ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \ > > ccflags-y := -fno-common -fno-builtin -fno-stack-protector -ffixed-x18 > > ccflags-y += -DDISABLE_BRANCH_PROFILING > > > > -CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) > > -KBUILD_CFLAGS += $(DISABLE_LTO) > > +CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) \ > > + $(CC_FLAGS_LTO) > > KASAN_SANITIZE := n > > UBSAN_SANITIZE := n > > OBJECT_FILES_NON_STANDARD := y > > --
On Wed, Jun 24, 2020 at 01:58:57PM -0700, 'Nick Desaulniers' via Clang Built Linux wrote: > On Wed, Jun 24, 2020 at 1:33 PM Sami Tolvanen <samitolvanen@google.com> wrote: > > > > Filter out CC_FLAGS_LTO for the vDSO. > > Just curious about this patch (and the following one for x86's vdso), > do you happen to recall specifically what the issues with the vdso's > are? I recall the compiler optimizing away functions at some point, but as LTO is not really needed in the vDSO, it's just easiest to disable it there. Sami
On Wed, Jun 24, 2020 at 2:52 PM Sami Tolvanen <samitolvanen@google.com> wrote: > > On Wed, Jun 24, 2020 at 01:58:57PM -0700, 'Nick Desaulniers' via Clang Built Linux wrote: > > On Wed, Jun 24, 2020 at 1:33 PM Sami Tolvanen <samitolvanen@google.com> wrote: > > > > > > Filter out CC_FLAGS_LTO for the vDSO. > > > > Just curious about this patch (and the following one for x86's vdso), > > do you happen to recall specifically what the issues with the vdso's > > are? > > I recall the compiler optimizing away functions at some point, but as > LTO is not really needed in the vDSO, it's just easiest to disable it > there. Sounds fishy; with extern linkage then I would think it's not safe to eliminate functions. Probably unnecessary for the initial implementation, and something we can follow up on, but always good to have an answer to the inevitable question "why?" in the commit message.
On Wed, Jun 24, 2020 at 04:05:48PM -0700, Nick Desaulniers wrote: > On Wed, Jun 24, 2020 at 2:52 PM Sami Tolvanen <samitolvanen@google.com> wrote: > > > > On Wed, Jun 24, 2020 at 01:58:57PM -0700, 'Nick Desaulniers' via Clang Built Linux wrote: > > > On Wed, Jun 24, 2020 at 1:33 PM Sami Tolvanen <samitolvanen@google.com> wrote: > > > > > > > > Filter out CC_FLAGS_LTO for the vDSO. > > > > > > Just curious about this patch (and the following one for x86's vdso), > > > do you happen to recall specifically what the issues with the vdso's > > > are? > > > > I recall the compiler optimizing away functions at some point, but as > > LTO is not really needed in the vDSO, it's just easiest to disable it > > there. > > Sounds fishy; with extern linkage then I would think it's not safe to > eliminate functions. Probably unnecessary for the initial > implementation, and something we can follow up on, but always good to > have an answer to the inevitable question "why?" in the commit > message. Sure. I can test this again with the current toolchain to see if there are still problems. Sami
On Wed, Jun 24, 2020 at 02:09:40PM -0700, Nick Desaulniers wrote: > On Wed, Jun 24, 2020 at 1:58 PM Nick Desaulniers > <ndesaulniers@google.com> wrote: > > > > On Wed, Jun 24, 2020 at 1:33 PM Sami Tolvanen <samitolvanen@google.com> wrote: > > > > > > Filter out CC_FLAGS_LTO for the vDSO. > > > > Just curious about this patch (and the following one for x86's vdso), > > do you happen to recall specifically what the issues with the vdso's > > are? > > + Andi (tangential, I actually have a bunch of tabs open with slides > from http://halobates.de/ right now) > 58edae3aac9f2 > 67424d5a22124 > $ git log -S DISABLE_LTO I think I did it originally because the vDSO linker step didn't do all the magic needed for gcc LTO. But it also doesn't seem to be very useful for just a few functions that don't have complex interactions, and somewhat risky for violating some assumptions. -Andi
diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile index 556d424c6f52..cfad4c296ca1 100644 --- a/arch/arm64/kernel/vdso/Makefile +++ b/arch/arm64/kernel/vdso/Makefile @@ -29,8 +29,8 @@ ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \ ccflags-y := -fno-common -fno-builtin -fno-stack-protector -ffixed-x18 ccflags-y += -DDISABLE_BRANCH_PROFILING -CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) -KBUILD_CFLAGS += $(DISABLE_LTO) +CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) \ + $(CC_FLAGS_LTO) KASAN_SANITIZE := n UBSAN_SANITIZE := n OBJECT_FILES_NON_STANDARD := y
Filter out CC_FLAGS_LTO for the vDSO. Signed-off-by: Sami Tolvanen <samitolvanen@google.com> --- arch/arm64/kernel/vdso/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)