Re: [RFC PATCH v1 2/3] powerpc: Mark all .S files invalid for objtool

From: Naveen N Rao
Date: Tue Jun 20 2023 - 02:06:21 EST


Christophe Leroy wrote:
A lot of work is required in .S files in order to get them ready
for objtool checks.

For the time being, exclude them from the checks.

This is done with the script below:

#!/bin/sh
DIRS=`find arch/powerpc -name "*.S" -exec dirname {} \; | sort | uniq`
for d in $DIRS
do
pushd $d
echo >> Makefile
for f in *.S
do
echo "OBJECT_FILES_NON_STANDARD_$f := y" | sed s/"\.S"/".o"/g
done >> Makefile
popd
done

Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
---
arch/powerpc/boot/Makefile | 17 +++++++++
arch/powerpc/crypto/Makefile | 13 +++++++
arch/powerpc/kernel/Makefile | 44 ++++++++++++++++++++++
arch/powerpc/kernel/trace/Makefile | 4 ++
arch/powerpc/kernel/vdso/Makefile | 11 ++++++
arch/powerpc/kexec/Makefile | 2 +
arch/powerpc/kvm/Makefile | 13 +++++++
arch/powerpc/lib/Makefile | 25 ++++++++++++
arch/powerpc/mm/book3s32/Makefile | 3 ++
arch/powerpc/mm/nohash/Makefile | 3 ++
arch/powerpc/perf/Makefile | 2 +
arch/powerpc/platforms/44x/Makefile | 2 +
arch/powerpc/platforms/52xx/Makefile | 3 ++
arch/powerpc/platforms/83xx/Makefile | 2 +
arch/powerpc/platforms/cell/spufs/Makefile | 3 ++
arch/powerpc/platforms/pasemi/Makefile | 2 +
arch/powerpc/platforms/powermac/Makefile | 3 ++
arch/powerpc/platforms/powernv/Makefile | 3 ++
arch/powerpc/platforms/ps3/Makefile | 2 +
arch/powerpc/platforms/pseries/Makefile | 2 +
arch/powerpc/purgatory/Makefile | 3 ++
arch/powerpc/sysdev/Makefile | 3 ++
arch/powerpc/xmon/Makefile | 3 ++
23 files changed, 168 insertions(+)


I think it might be better to have a config option so that architectures can opt-in to skip objtool on asm files. We can then do:

diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 9f94fc83f08652..878027cf4faf37 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -359,7 +359,11 @@ $(obj)/%.s: $(src)/%.S FORCE
$(call if_changed_dep,cpp_s_S)

quiet_cmd_as_o_S = AS $(quiet_modtag) $@
+ifndef CONFIG_ARCH_OBJTOOL_SKIP_ASM
cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $< $(cmd_objtool)
+else
+ cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
+endif

ifdef CONFIG_ASM_MODVERSIONS



- Naveen