From: Nathan Chancellor <nathan@kernel.org>
To: Nick Desaulniers <ndesaulniers@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Nick Clifton <nickc@redhat.com>,
Fangrui Song <maskray@google.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Jens Axboe <axboe@kernel.dk>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
Tom Rix <trix@redhat.com>, Masahiro Yamada <masahiroy@kernel.org>,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Nicolas Schier <n.schier@avm.de>,
Brijesh Singh <brijesh.singh@amd.com>,
Michael Roth <michael.roth@amd.com>,
Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>,
linux-kernel@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [PATCH] x86: assemble with -Wa,--noexecstack to avoid BFD 2.39 warning
Date: Mon, 8 Aug 2022 12:31:37 -0700 [thread overview]
Message-ID: <YvFkmfHTUYGzeeQs@dev-arch.thelio-3990X> (raw)
In-Reply-To: <20220808192321.3490995-1-ndesaulniers@google.com>
On Mon, Aug 08, 2022 at 12:23:05PM -0700, Nick Desaulniers wrote:
> Users of GNU ld (BFD) from binutils 2.39+ will observe multiple instance
> of a new warning when linking kernels in the form:
>
> ld: warning: arch/x86/realmode/rm/bioscall.o: missing .note.GNU-stack
> section implies executable stack
> ld: NOTE: This behaviour is deprecated and will be removed in a future
> version of the linker
>
> The object files producing these all happen to be out of line assembler
> sources (*.S files).
>
> Generally, we would like to avoid the stack being executable. Because
> there could be a need for the stack to be executable, assembler sources
> have to opt-in to this security feature via explicit creation of the
> .note.GNU-stack feature (which compilers create by default) or command
> line flag --noexecstack.
>
> Boot tested defconfig and i386_defconfig in QEMU. If any assembler
> sources do require executable stack, they can be built with
> -Wa,--execstack, though the linker warning would have to be disabled. We
> might need to extend this more generally to the top level Makefile for
> all architectures, but I'm not equipped to test the result of such a
> change.
>
> LLVM's LLD linker defaults to -z noexecstack, so this flag isn't
> strictly necessary when linking with LLD, only BFD, but it doesn't hurt
> to be explicit here for all linkers IMO.
>
> Link: https://lore.kernel.org/linux-block/3af4127a-f453-4cf7-f133-a181cce06f73@kernel.dk/
> Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107
> Link: https://github.com/llvm/llvm-project/issues/57009
> Reported-by: Jens Axboe <axboe@kernel.dk>
> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
FWIW, this warning appears for other architectures, as I have seen it
with powerpc and s390 and there is also a patch for ARM:
https://lore.kernel.org/20220721204709.445216-1-ben-linux@fluff.org/
Perhaps this should be done for all architectures in the main Makefile?
> ---
> arch/x86/Makefile | 2 ++
> arch/x86/boot/Makefile | 2 +-
> arch/x86/boot/compressed/Makefile | 2 +-
> arch/x86/realmode/rm/Makefile | 2 +-
> 4 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index 7854685c5f25..571546775725 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -159,6 +159,8 @@ else
> KBUILD_CFLAGS += -mcmodel=kernel
> endif
>
> +KBUILD_AFLAGS += -Wa,--noexecstack
> +
> #
> # If the function graph tracer is used with mcount instead of fentry,
> # '-maccumulate-outgoing-args' is needed to prevent a GCC bug
> diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
> index b5aecb524a8a..d7f2130f2277 100644
> --- a/arch/x86/boot/Makefile
> +++ b/arch/x86/boot/Makefile
> @@ -67,7 +67,7 @@ targets += cpustr.h
> # ---------------------------------------------------------------------------
>
> KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP
> -KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
> +KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ -Wa,--noexecstack
> KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
> KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
> GCOV_PROFILE := n
> diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
> index 19e1905dcbf6..1587a21a132d 100644
> --- a/arch/x86/boot/compressed/Makefile
> +++ b/arch/x86/boot/compressed/Makefile
> @@ -57,7 +57,7 @@ KBUILD_CFLAGS += -include $(srctree)/include/linux/hidden.h
> # that the compiler finds it even with out-of-tree builds (make O=/some/path).
> CFLAGS_sev.o += -I$(objtree)/arch/x86/lib/
>
> -KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
> +KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ -Wa,--noexecstack
> GCOV_PROFILE := n
> UBSAN_SANITIZE :=n
>
> diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile
> index 83f1b6a56449..5f2fdafaa034 100644
> --- a/arch/x86/realmode/rm/Makefile
> +++ b/arch/x86/realmode/rm/Makefile
> @@ -73,7 +73,7 @@ $(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
>
> KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \
> -I$(srctree)/arch/x86/boot
> -KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
> +KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ -Wa,--noexecstack
> KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
> GCOV_PROFILE := n
> UBSAN_SANITIZE := n
> --
> 2.37.1.559.g78731f0fdb-goog
>
next prev parent reply other threads:[~2022-08-08 19:31 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-08 19:23 [PATCH] x86: assemble with -Wa,--noexecstack to avoid BFD 2.39 warning Nick Desaulniers
2022-08-08 19:31 ` Nathan Chancellor [this message]
2022-08-08 20:31 ` Nick Desaulniers
2022-08-08 21:08 ` Linus Torvalds
2022-08-09 1:36 ` Fangrui Song
2022-08-10 22:24 ` [PATCH v2 1/2] Makefile: link with -z noexecstack --no-warn-rwx-segments Nick Desaulniers
2022-08-10 22:24 ` [PATCH v2 2/2] x86: link vdso and boot " Nick Desaulniers
2022-08-10 22:24 ` [PATCH v2 0/2] link " Nick Desaulniers
2022-08-11 1:06 ` Jens Axboe
2022-08-11 1:34 ` Linus Torvalds
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=YvFkmfHTUYGzeeQs@dev-arch.thelio-3990X \
--to=nathan@kernel.org \
--cc=axboe@kernel.dk \
--cc=bp@alien8.de \
--cc=brijesh.singh@amd.com \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=masahiroy@kernel.org \
--cc=maskray@google.com \
--cc=michael.roth@amd.com \
--cc=mingo@redhat.com \
--cc=n.schier@avm.de \
--cc=ndesaulniers@google.com \
--cc=nickc@redhat.com \
--cc=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=trix@redhat.com \
--cc=x86@kernel.org \
/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: link
Be 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.