From: Sedat Dilek <sedat.dilek@gmail.com> To: Nathan Chancellor <nathan@kernel.org> Cc: masahiroy@kernel.org, ndesaulniers@google.com, nicolas@fjasle.eu, trix@redhat.com, linux-kbuild@vger.kernel.org, llvm@lists.linux.dev, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org Subject: Re: [PATCH v2 07/14] powerpc/vdso: Improve linker flags Date: Thu, 12 Jan 2023 19:47:32 +0100 [thread overview] Message-ID: <CA+icZUUyyJX8XTDqgacT6aacD_5-g5S=YY+aOjCjyMBk=CWxsg@mail.gmail.com> (raw) In-Reply-To: <Y8BPp905fJciHNa2@dev-arch.thelio-3990X> On Thu, Jan 12, 2023 at 7:21 PM Nathan Chancellor <nathan@kernel.org> wrote: > > Hi Sedat, > > On Thu, Jan 12, 2023 at 07:02:30PM +0100, Sedat Dilek wrote: > > On Thu, Jan 12, 2023 at 4:06 AM Nathan Chancellor <nathan@kernel.org> wrote: > > > > > > When clang's -Qunused-arguments is dropped from KBUILD_CPPFLAGS, there > > > are several warnings in the PowerPC vDSO: > > > > > > clang-16: error: -Wl,-soname=linux-vdso32.so.1: 'linker' input unused [-Werror,-Wunused-command-line-argument] > > > clang-16: error: -Wl,--hash-style=both: 'linker' input unused [-Werror,-Wunused-command-line-argument] > > > clang-16: error: argument unused during compilation: '-shared' [-Werror,-Wunused-command-line-argument] > > > > > > clang-16: error: argument unused during compilation: '-nostdinc' [-Werror,-Wunused-command-line-argument] > > > clang-16: error: argument unused during compilation: '-Wa,-maltivec' [-Werror,-Wunused-command-line-argument] > > > > > > The first group of warnings point out that linker flags were being added > > > to all invocations of $(CC), even though they will only be used during > > > the final vDSO link. Move those flags to ldflags-y. > > > > > > The second group of warnings are compiler or assembler flags that will > > > be unused during linking. Filter them out from KBUILD_CFLAGS so that > > > they are not used during linking. > > > > > > Additionally, '-z noexecstack' was added directly to the ld_and_check > > > rule in commit 1d53c0192b15 ("powerpc/vdso: link with -z noexecstack") > > > but now that there is a common ldflags variable, it can be moved there. > > > > > > Signed-off-by: Nathan Chancellor <nathan@kernel.org> > > > Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> > > > --- > > > Cc: mpe@ellerman.id.au > > > Cc: npiggin@gmail.com > > > Cc: christophe.leroy@csgroup.eu > > > Cc: linuxppc-dev@lists.ozlabs.org > > > --- > > > arch/powerpc/kernel/vdso/Makefile | 18 +++++++++++------- > > > 1 file changed, 11 insertions(+), 7 deletions(-) > > > > > > diff --git a/arch/powerpc/kernel/vdso/Makefile b/arch/powerpc/kernel/vdso/Makefile > > > index 45c0cc5d34b6..4337b3aa9171 100644 > > > --- a/arch/powerpc/kernel/vdso/Makefile > > > +++ b/arch/powerpc/kernel/vdso/Makefile > > > @@ -47,13 +47,17 @@ KCOV_INSTRUMENT := n > > > UBSAN_SANITIZE := n > > > KASAN_SANITIZE := n > > > > > > -ccflags-y := -shared -fno-common -fno-builtin -nostdlib -Wl,--hash-style=both > > > -ccflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld) > > > - > > > -CC32FLAGS := -Wl,-soname=linux-vdso32.so.1 -m32 > > > +ccflags-y := -fno-common -fno-builtin > > > +ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack > > > +ldflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld) > > > +# Filter flags that clang will warn are unused for linking > > > +ldflags-y += $(filter-out $(CC_FLAGS_FTRACE) -Wa$(comma)%, $(KBUILD_CFLAGS)) > > > + > > > +CC32FLAGS := -m32 > > > +LD32FLAGS := -Wl,-soname=linux-vdso32.so.1 > > > AS32FLAGS := -D__VDSO32__ > > > > > > -CC64FLAGS := -Wl,-soname=linux-vdso64.so.1 > > > > Set CC64FLAGS := -m64 ? > > I do not think it is necessary. ldflags-y is filtered from > KBUILD_CFLAGS, which should already include '-m64' (search for > 'HAS_BIARCH' in arch/powerpc/Makefile). We would have seen a problem > with this already if a 32-bit target (powerpc-linux-gnu-) CROSS_COMPILE > value since $(c_flags) uses the main kernel's CROSS_COMPILE value. > Happy new 2023 Nathan, that vdso Makefiles are hard to read. Looks like x86/vdso explicitly sets -m32 and filter-out -m64 for the 32-bit case. Best regards, -Sedat- [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/entry/vdso/Makefile > > > +LD64FLAGS := -Wl,-soname=linux-vdso64.so.1 > > > AS64FLAGS := -D__VDSO64__ > > > > > > targets += vdso32.lds > > > @@ -92,14 +96,14 @@ include/generated/vdso64-offsets.h: $(obj)/vdso64.so.dbg FORCE > > > > > > # actual build commands > > > quiet_cmd_vdso32ld_and_check = VDSO32L $@ > > > - cmd_vdso32ld_and_check = $(VDSOCC) $(c_flags) $(CC32FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) -z noexecstack ; $(cmd_vdso_check) > > > + cmd_vdso32ld_and_check = $(VDSOCC) $(ldflags-y) $(CC32FLAGS) $(LD32FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check) > > > quiet_cmd_vdso32as = VDSO32A $@ > > > cmd_vdso32as = $(VDSOCC) $(a_flags) $(CC32FLAGS) $(AS32FLAGS) -c -o $@ $< > > > quiet_cmd_vdso32cc = VDSO32C $@ > > > cmd_vdso32cc = $(VDSOCC) $(c_flags) $(CC32FLAGS) -c -o $@ $< > > > > > > quiet_cmd_vdso64ld_and_check = VDSO64L $@ > > > - cmd_vdso64ld_and_check = $(VDSOCC) $(c_flags) $(CC64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) -z noexecstack ; $(cmd_vdso_check) > > > + cmd_vdso64ld_and_check = $(VDSOCC) $(ldflags-y) $(CC64FLAGS) $(LD64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check) > > > > If no CC64FLAGS := xxx is set, this can go? > > Good catch! CC64FLAGS can be removed. Masahiro, I am happy to send a v3 > when I am back online next week but if you are able to fix it up during > application, please feel free to do so (once the PowerPC folks give > their Acks of course). > > > > quiet_cmd_vdso64as = VDSO64A $@ > > > cmd_vdso64as = $(VDSOCC) $(a_flags) $(CC64FLAGS) $(AS64FLAGS) -c -o $@ $< > > > > > > > > > -- > > > 2.39.0 > > > > > Thanks for the review, cheers! > Nathan
WARNING: multiple messages have this Message-ID (diff)
From: Sedat Dilek <sedat.dilek@gmail.com> To: Nathan Chancellor <nathan@kernel.org> Cc: nicolas@fjasle.eu, linux-kbuild@vger.kernel.org, trix@redhat.com, masahiroy@kernel.org, llvm@lists.linux.dev, ndesaulniers@google.com, npiggin@gmail.com, linuxppc-dev@lists.ozlabs.org Subject: Re: [PATCH v2 07/14] powerpc/vdso: Improve linker flags Date: Thu, 12 Jan 2023 19:47:32 +0100 [thread overview] Message-ID: <CA+icZUUyyJX8XTDqgacT6aacD_5-g5S=YY+aOjCjyMBk=CWxsg@mail.gmail.com> (raw) In-Reply-To: <Y8BPp905fJciHNa2@dev-arch.thelio-3990X> On Thu, Jan 12, 2023 at 7:21 PM Nathan Chancellor <nathan@kernel.org> wrote: > > Hi Sedat, > > On Thu, Jan 12, 2023 at 07:02:30PM +0100, Sedat Dilek wrote: > > On Thu, Jan 12, 2023 at 4:06 AM Nathan Chancellor <nathan@kernel.org> wrote: > > > > > > When clang's -Qunused-arguments is dropped from KBUILD_CPPFLAGS, there > > > are several warnings in the PowerPC vDSO: > > > > > > clang-16: error: -Wl,-soname=linux-vdso32.so.1: 'linker' input unused [-Werror,-Wunused-command-line-argument] > > > clang-16: error: -Wl,--hash-style=both: 'linker' input unused [-Werror,-Wunused-command-line-argument] > > > clang-16: error: argument unused during compilation: '-shared' [-Werror,-Wunused-command-line-argument] > > > > > > clang-16: error: argument unused during compilation: '-nostdinc' [-Werror,-Wunused-command-line-argument] > > > clang-16: error: argument unused during compilation: '-Wa,-maltivec' [-Werror,-Wunused-command-line-argument] > > > > > > The first group of warnings point out that linker flags were being added > > > to all invocations of $(CC), even though they will only be used during > > > the final vDSO link. Move those flags to ldflags-y. > > > > > > The second group of warnings are compiler or assembler flags that will > > > be unused during linking. Filter them out from KBUILD_CFLAGS so that > > > they are not used during linking. > > > > > > Additionally, '-z noexecstack' was added directly to the ld_and_check > > > rule in commit 1d53c0192b15 ("powerpc/vdso: link with -z noexecstack") > > > but now that there is a common ldflags variable, it can be moved there. > > > > > > Signed-off-by: Nathan Chancellor <nathan@kernel.org> > > > Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> > > > --- > > > Cc: mpe@ellerman.id.au > > > Cc: npiggin@gmail.com > > > Cc: christophe.leroy@csgroup.eu > > > Cc: linuxppc-dev@lists.ozlabs.org > > > --- > > > arch/powerpc/kernel/vdso/Makefile | 18 +++++++++++------- > > > 1 file changed, 11 insertions(+), 7 deletions(-) > > > > > > diff --git a/arch/powerpc/kernel/vdso/Makefile b/arch/powerpc/kernel/vdso/Makefile > > > index 45c0cc5d34b6..4337b3aa9171 100644 > > > --- a/arch/powerpc/kernel/vdso/Makefile > > > +++ b/arch/powerpc/kernel/vdso/Makefile > > > @@ -47,13 +47,17 @@ KCOV_INSTRUMENT := n > > > UBSAN_SANITIZE := n > > > KASAN_SANITIZE := n > > > > > > -ccflags-y := -shared -fno-common -fno-builtin -nostdlib -Wl,--hash-style=both > > > -ccflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld) > > > - > > > -CC32FLAGS := -Wl,-soname=linux-vdso32.so.1 -m32 > > > +ccflags-y := -fno-common -fno-builtin > > > +ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack > > > +ldflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld) > > > +# Filter flags that clang will warn are unused for linking > > > +ldflags-y += $(filter-out $(CC_FLAGS_FTRACE) -Wa$(comma)%, $(KBUILD_CFLAGS)) > > > + > > > +CC32FLAGS := -m32 > > > +LD32FLAGS := -Wl,-soname=linux-vdso32.so.1 > > > AS32FLAGS := -D__VDSO32__ > > > > > > -CC64FLAGS := -Wl,-soname=linux-vdso64.so.1 > > > > Set CC64FLAGS := -m64 ? > > I do not think it is necessary. ldflags-y is filtered from > KBUILD_CFLAGS, which should already include '-m64' (search for > 'HAS_BIARCH' in arch/powerpc/Makefile). We would have seen a problem > with this already if a 32-bit target (powerpc-linux-gnu-) CROSS_COMPILE > value since $(c_flags) uses the main kernel's CROSS_COMPILE value. > Happy new 2023 Nathan, that vdso Makefiles are hard to read. Looks like x86/vdso explicitly sets -m32 and filter-out -m64 for the 32-bit case. Best regards, -Sedat- [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/entry/vdso/Makefile > > > +LD64FLAGS := -Wl,-soname=linux-vdso64.so.1 > > > AS64FLAGS := -D__VDSO64__ > > > > > > targets += vdso32.lds > > > @@ -92,14 +96,14 @@ include/generated/vdso64-offsets.h: $(obj)/vdso64.so.dbg FORCE > > > > > > # actual build commands > > > quiet_cmd_vdso32ld_and_check = VDSO32L $@ > > > - cmd_vdso32ld_and_check = $(VDSOCC) $(c_flags) $(CC32FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) -z noexecstack ; $(cmd_vdso_check) > > > + cmd_vdso32ld_and_check = $(VDSOCC) $(ldflags-y) $(CC32FLAGS) $(LD32FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check) > > > quiet_cmd_vdso32as = VDSO32A $@ > > > cmd_vdso32as = $(VDSOCC) $(a_flags) $(CC32FLAGS) $(AS32FLAGS) -c -o $@ $< > > > quiet_cmd_vdso32cc = VDSO32C $@ > > > cmd_vdso32cc = $(VDSOCC) $(c_flags) $(CC32FLAGS) -c -o $@ $< > > > > > > quiet_cmd_vdso64ld_and_check = VDSO64L $@ > > > - cmd_vdso64ld_and_check = $(VDSOCC) $(c_flags) $(CC64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) -z noexecstack ; $(cmd_vdso_check) > > > + cmd_vdso64ld_and_check = $(VDSOCC) $(ldflags-y) $(CC64FLAGS) $(LD64FLAGS) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^); $(cmd_vdso_check) > > > > If no CC64FLAGS := xxx is set, this can go? > > Good catch! CC64FLAGS can be removed. Masahiro, I am happy to send a v3 > when I am back online next week but if you are able to fix it up during > application, please feel free to do so (once the PowerPC folks give > their Acks of course). > > > > quiet_cmd_vdso64as = VDSO64A $@ > > > cmd_vdso64as = $(VDSOCC) $(a_flags) $(CC64FLAGS) $(AS64FLAGS) -c -o $@ $< > > > > > > > > > -- > > > 2.39.0 > > > > > Thanks for the review, cheers! > Nathan
next prev parent reply other threads:[~2023-01-12 18:48 UTC|newest] Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-01-12 3:04 [PATCH v2 00/14] Remove clang's -Qunused-arguments from KBUILD_CPPFLAGS Nathan Chancellor 2023-01-12 3:04 ` Nathan Chancellor 2023-01-12 3:04 ` Nathan Chancellor 2023-01-12 3:04 ` [PATCH v2 01/14] x86/boot/compressed: prefer cc-option for CFLAGS additions Nathan Chancellor 2023-01-12 3:04 ` [PATCH v2 02/14] MIPS: Always use -Wa,-msoft-float and eliminate GAS_HAS_SET_HARDFLOAT Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 03/14] MIPS: Prefer cc-option for additions to cflags Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 04/14] kbuild: Update assembler calls to use proper flags and language target Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 05/14] powerpc: Remove linker flag from KBUILD_AFLAGS Nathan Chancellor 2023-01-12 3:05 ` Nathan Chancellor 2023-01-25 4:11 ` Michael Ellerman 2023-01-25 4:11 ` Michael Ellerman 2023-01-26 1:29 ` Masahiro Yamada 2023-01-26 1:29 ` Masahiro Yamada 2023-01-26 2:07 ` Nathan Chancellor 2023-01-26 2:07 ` Nathan Chancellor 2023-01-26 4:22 ` Masahiro Yamada 2023-01-26 4:22 ` Masahiro Yamada 2023-01-26 10:05 ` Michael Ellerman 2023-01-26 10:05 ` Michael Ellerman 2023-01-12 3:05 ` [PATCH v2 06/14] powerpc/vdso: Remove unused '-s' flag from ASFLAGS Nathan Chancellor 2023-01-12 3:05 ` Nathan Chancellor 2023-01-25 4:12 ` Michael Ellerman 2023-01-25 4:12 ` Michael Ellerman 2023-01-12 3:05 ` [PATCH v2 07/14] powerpc/vdso: Improve linker flags Nathan Chancellor 2023-01-12 3:05 ` Nathan Chancellor 2023-01-12 18:02 ` Sedat Dilek 2023-01-12 18:02 ` Sedat Dilek 2023-01-12 18:21 ` Nathan Chancellor 2023-01-12 18:21 ` Nathan Chancellor 2023-01-12 18:47 ` Sedat Dilek [this message] 2023-01-12 18:47 ` Sedat Dilek 2023-01-22 17:27 ` Masahiro Yamada 2023-01-22 17:27 ` Masahiro Yamada 2023-01-22 18:01 ` Nathan Chancellor 2023-01-22 18:01 ` Nathan Chancellor 2023-01-23 15:07 ` Segher Boessenkool 2023-01-23 15:07 ` Segher Boessenkool 2023-01-24 16:14 ` Nathan Chancellor 2023-01-24 16:14 ` Nathan Chancellor 2023-01-24 16:30 ` Segher Boessenkool 2023-01-24 16:30 ` Segher Boessenkool 2023-01-12 3:05 ` [PATCH v2 08/14] powerpc/vdso: Remove an unsupported flag from vgettimeofday-32.o with clang Nathan Chancellor 2023-01-12 3:05 ` Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 09/14] s390/vdso: Drop unused '-s' flag from KBUILD_AFLAGS_64 Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 10/14] s390/vdso: Drop '-shared' from KBUILD_CFLAGS_64 Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 11/14] s390/purgatory: Remove unused '-MD' and unnecessary '-c' flags Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 12/14] drm/amd/display: Do not add '-mhard-float' to dml_ccflags for clang Nathan Chancellor 2023-01-12 3:05 ` Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 13/14] kbuild: Turn a couple more of clang's unused option warnings into errors Nathan Chancellor 2023-01-12 3:05 ` [PATCH v2 14/14] kbuild: Stop using '-Qunused-arguments' with clang Nathan Chancellor 2023-01-22 17:28 ` [PATCH v2 00/14] Remove clang's -Qunused-arguments from KBUILD_CPPFLAGS Masahiro Yamada 2023-01-22 17:28 ` Masahiro Yamada 2023-01-22 17:28 ` Masahiro Yamada 2023-01-23 13:58 ` Naresh Kamboju 2023-01-23 13:58 ` Naresh Kamboju 2023-01-23 13:58 ` Naresh Kamboju 2023-01-23 16:11 ` Nathan Chancellor 2023-01-23 16:11 ` Nathan Chancellor 2023-01-23 16:11 ` Nathan Chancellor 2023-01-24 15:29 ` Naresh Kamboju 2023-01-24 15:29 ` Naresh Kamboju 2023-01-24 15:29 ` Naresh Kamboju
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CA+icZUUyyJX8XTDqgacT6aacD_5-g5S=YY+aOjCjyMBk=CWxsg@mail.gmail.com' \ --to=sedat.dilek@gmail.com \ --cc=christophe.leroy@csgroup.eu \ --cc=linux-kbuild@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=llvm@lists.linux.dev \ --cc=masahiroy@kernel.org \ --cc=mpe@ellerman.id.au \ --cc=nathan@kernel.org \ --cc=ndesaulniers@google.com \ --cc=nicolas@fjasle.eu \ --cc=npiggin@gmail.com \ --cc=trix@redhat.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.