Message ID | 20230316155104.594662-1-elver@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | kfence, kcsan: avoid passing -g for tests | expand |
On Thu, Mar 16, 2023 at 04:51:04PM +0100, Marco Elver wrote: > Nathan reported that when building with GNU as and a version of clang > that defaults to DWARF5: > > $ make -skj"$(nproc)" ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- \ > LLVM=1 LLVM_IAS=0 O=build \ > mrproper allmodconfig mm/kfence/kfence_test.o > /tmp/kfence_test-08a0a0.s: Assembler messages: > /tmp/kfence_test-08a0a0.s:14627: Error: non-constant .uleb128 is not supported > /tmp/kfence_test-08a0a0.s:14628: Error: non-constant .uleb128 is not supported > /tmp/kfence_test-08a0a0.s:14632: Error: non-constant .uleb128 is not supported > /tmp/kfence_test-08a0a0.s:14633: Error: non-constant .uleb128 is not supported > /tmp/kfence_test-08a0a0.s:14639: Error: non-constant .uleb128 is not supported > ... > > This is because `-g` defaults to the compiler debug info default. If the > assembler does not support some of the directives used, the above errors > occur. To fix, remove the explicit passing of `-g`. > > All these tests want is that stack traces print valid function names, > and debug info is not required for that. I currently cannot recall why I > added the explicit `-g`. > > Reported-by: Nathan Chancellor <nathan@kernel.org> > Signed-off-by: Marco Elver <elver@google.com> Thanks for the quick patch! Reviewed-by: Nathan Chancellor <nathan@kernel.org> > --- > kernel/kcsan/Makefile | 2 +- > mm/kfence/Makefile | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/kernel/kcsan/Makefile b/kernel/kcsan/Makefile > index 8cf70f068d92..a45f3dfc8d14 100644 > --- a/kernel/kcsan/Makefile > +++ b/kernel/kcsan/Makefile > @@ -16,6 +16,6 @@ obj-y := core.o debugfs.o report.o > KCSAN_INSTRUMENT_BARRIERS_selftest.o := y > obj-$(CONFIG_KCSAN_SELFTEST) += selftest.o > > -CFLAGS_kcsan_test.o := $(CFLAGS_KCSAN) -g -fno-omit-frame-pointer > +CFLAGS_kcsan_test.o := $(CFLAGS_KCSAN) -fno-omit-frame-pointer > CFLAGS_kcsan_test.o += $(DISABLE_STRUCTLEAK_PLUGIN) > obj-$(CONFIG_KCSAN_KUNIT_TEST) += kcsan_test.o > diff --git a/mm/kfence/Makefile b/mm/kfence/Makefile > index 0bb95728a784..2de2a58d11a1 100644 > --- a/mm/kfence/Makefile > +++ b/mm/kfence/Makefile > @@ -2,5 +2,5 @@ > > obj-y := core.o report.o > > -CFLAGS_kfence_test.o := -g -fno-omit-frame-pointer -fno-optimize-sibling-calls > +CFLAGS_kfence_test.o := -fno-omit-frame-pointer -fno-optimize-sibling-calls > obj-$(CONFIG_KFENCE_KUNIT_TEST) += kfence_test.o > -- > 2.40.0.rc1.284.g88254d51c5-goog >
On Thu, 16 Mar 2023 16:51:04 +0100 Marco Elver <elver@google.com> wrote: > Nathan reported that when building with GNU as and a version of clang > that defaults to DWARF5: > > $ make -skj"$(nproc)" ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- \ > LLVM=1 LLVM_IAS=0 O=build \ > mrproper allmodconfig mm/kfence/kfence_test.o > /tmp/kfence_test-08a0a0.s: Assembler messages: > /tmp/kfence_test-08a0a0.s:14627: Error: non-constant .uleb128 is not supported > /tmp/kfence_test-08a0a0.s:14628: Error: non-constant .uleb128 is not supported > /tmp/kfence_test-08a0a0.s:14632: Error: non-constant .uleb128 is not supported > /tmp/kfence_test-08a0a0.s:14633: Error: non-constant .uleb128 is not supported > /tmp/kfence_test-08a0a0.s:14639: Error: non-constant .uleb128 is not supported > ... > > This is because `-g` defaults to the compiler debug info default. If the > assembler does not support some of the directives used, the above errors > occur. To fix, remove the explicit passing of `-g`. > > All these tests want is that stack traces print valid function names, > and debug info is not required for that. I currently cannot recall why I > added the explicit `-g`. Does this need to be backported into earlier kernels? If so, we'd need to do it as two patches, each with the relevant Fixes:, which appear to be a146fed56f8 and bc8fbc5f30.
On Thu, 16 Mar 2023 at 23:33, Andrew Morton <akpm@linux-foundation.org> wrote: > > On Thu, 16 Mar 2023 16:51:04 +0100 Marco Elver <elver@google.com> wrote: > > > Nathan reported that when building with GNU as and a version of clang > > that defaults to DWARF5: > > > > $ make -skj"$(nproc)" ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- \ > > LLVM=1 LLVM_IAS=0 O=build \ > > mrproper allmodconfig mm/kfence/kfence_test.o > > /tmp/kfence_test-08a0a0.s: Assembler messages: > > /tmp/kfence_test-08a0a0.s:14627: Error: non-constant .uleb128 is not supported > > /tmp/kfence_test-08a0a0.s:14628: Error: non-constant .uleb128 is not supported > > /tmp/kfence_test-08a0a0.s:14632: Error: non-constant .uleb128 is not supported > > /tmp/kfence_test-08a0a0.s:14633: Error: non-constant .uleb128 is not supported > > /tmp/kfence_test-08a0a0.s:14639: Error: non-constant .uleb128 is not supported > > ... > > > > This is because `-g` defaults to the compiler debug info default. If the > > assembler does not support some of the directives used, the above errors > > occur. To fix, remove the explicit passing of `-g`. > > > > All these tests want is that stack traces print valid function names, > > and debug info is not required for that. I currently cannot recall why I > > added the explicit `-g`. > > Does this need to be backported into earlier kernels? > > If so, we'd need to do it as two patches, each with the relevant > Fixes:, which appear to be a146fed56f8 and bc8fbc5f30. Good point - sent https://lkml.kernel.org/r/20230316224705.709984-1-elver@google.com Thanks, -- Marco
diff --git a/kernel/kcsan/Makefile b/kernel/kcsan/Makefile index 8cf70f068d92..a45f3dfc8d14 100644 --- a/kernel/kcsan/Makefile +++ b/kernel/kcsan/Makefile @@ -16,6 +16,6 @@ obj-y := core.o debugfs.o report.o KCSAN_INSTRUMENT_BARRIERS_selftest.o := y obj-$(CONFIG_KCSAN_SELFTEST) += selftest.o -CFLAGS_kcsan_test.o := $(CFLAGS_KCSAN) -g -fno-omit-frame-pointer +CFLAGS_kcsan_test.o := $(CFLAGS_KCSAN) -fno-omit-frame-pointer CFLAGS_kcsan_test.o += $(DISABLE_STRUCTLEAK_PLUGIN) obj-$(CONFIG_KCSAN_KUNIT_TEST) += kcsan_test.o diff --git a/mm/kfence/Makefile b/mm/kfence/Makefile index 0bb95728a784..2de2a58d11a1 100644 --- a/mm/kfence/Makefile +++ b/mm/kfence/Makefile @@ -2,5 +2,5 @@ obj-y := core.o report.o -CFLAGS_kfence_test.o := -g -fno-omit-frame-pointer -fno-optimize-sibling-calls +CFLAGS_kfence_test.o := -fno-omit-frame-pointer -fno-optimize-sibling-calls obj-$(CONFIG_KFENCE_KUNIT_TEST) += kfence_test.o
Nathan reported that when building with GNU as and a version of clang that defaults to DWARF5: $ make -skj"$(nproc)" ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- \ LLVM=1 LLVM_IAS=0 O=build \ mrproper allmodconfig mm/kfence/kfence_test.o /tmp/kfence_test-08a0a0.s: Assembler messages: /tmp/kfence_test-08a0a0.s:14627: Error: non-constant .uleb128 is not supported /tmp/kfence_test-08a0a0.s:14628: Error: non-constant .uleb128 is not supported /tmp/kfence_test-08a0a0.s:14632: Error: non-constant .uleb128 is not supported /tmp/kfence_test-08a0a0.s:14633: Error: non-constant .uleb128 is not supported /tmp/kfence_test-08a0a0.s:14639: Error: non-constant .uleb128 is not supported ... This is because `-g` defaults to the compiler debug info default. If the assembler does not support some of the directives used, the above errors occur. To fix, remove the explicit passing of `-g`. All these tests want is that stack traces print valid function names, and debug info is not required for that. I currently cannot recall why I added the explicit `-g`. Reported-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Marco Elver <elver@google.com> --- kernel/kcsan/Makefile | 2 +- mm/kfence/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)