On Thu, Mar 18, 2021 at 12:27 PM Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > On Thu, Mar 18, 2021 at 10:11 AM Sami Tolvanen <samitolvanen@xxxxxxxxxx> wrote: > > > > CONFIG_CFI_CLANG_SHADOW assumes the __cfi_check() function is page > > aligned and at the beginning of the .text section. While Clang would > > normally align the function correctly, it fails to do so for modules > > with no executable code. > > > > This change ensures the correct __cfi_check() location and > > alignment. It also discards the .eh_frame section, which Clang can > > generate with certain sanitizers, such as CFI. > > > > Link: https://bugs.llvm.org/show_bug.cgi?id=46293 > > Signed-off-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx> > > --- > > scripts/module.lds.S | 18 +++++++++++++++++- > > 1 file changed, 17 insertions(+), 1 deletion(-) > > > > diff --git a/scripts/module.lds.S b/scripts/module.lds.S > > index 168cd27e6122..93518579cf5d 100644 > > --- a/scripts/module.lds.S > > +++ b/scripts/module.lds.S > > @@ -3,10 +3,19 @@ > > * Archs are free to supply their own linker scripts. ld will > > * combine them automatically. > > */ > > +#include <asm/page.h> > > + > > +#ifdef CONFIG_CFI_CLANG > > +# define ALIGN_CFI ALIGN(PAGE_SIZE) > > +#else > > +# define ALIGN_CFI > > +#endif > > + > > SECTIONS { > > /DISCARD/ : { > > *(.discard) > > *(.discard.*) > > + *(.eh_frame) > > Do we want to unconditionally discard this section from modules for > all arches/configs? I like how we conditionally do so on > SANITIZER_DISCARDS in include/asm-generic/vmlinux.lds.h for example. I think nothing should generate this section unless one of the sanitizers is enabled, but I'm fine with using the same logic as vmlinux.lds.h here. I'll change this in v3. Sami