error: impossible constraint in 'asm' when compiling kernel code with -O0 option
ckim at etri.re.kr
ckim at etri.re.kr
Tue Oct 5 22:58:21 EDT 2021
In linux-5.4.21 code,
To prevent some variables from being 'optimized out' during kernel code
analysis using gdb, I added in drivers/iommu/Makefile,
(replacing -O2 flags to -O0 flags for some files, I found
http://www.joelfernandes.org/linux/2018/06/10/kernel-gdb.html )
CFLAGS_REMOVE_arm-smmu.o := -O2
CFLAGS_REMOVE_arm-smmu-impl.o := -O2
CFLAGS_REMOVE_io-pgtable-arm-v7s.o := -O2
CFLAGS_REMOVE_io-pgtable-arm.o := -O2
CFLAGS_REMOVE_of_iommu.o := -O2
CFLAGS_REMOVE_arm-smmu-v3.o := -O2
CFLAGS_arm-smmu.o := -O0
CFLAGS_arm-smmu-impl.o := -O0
CFLAGS_io-pgtable-arm-v7s.o := -O0
CFLAGS_io-pgtable-arm.o := -O0
CFLAGS_of_iommu.o := -O0
CFLAGS_arm-smmu-v3.o := -O0
But when I do make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- Image, I get
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
CHK include/generated/compile.h
CC drivers/iommu/io-pgtable-arm.o
In file included from ././include/linux/compiler_types.h:68,
from <command-line>:
./arch/arm64/include/asm/jump_label.h: In function
'system_uses_lse_atomics':
./include/linux/compiler-gcc.h:120:38: warning: asm operand 0 probably
doesn't match constraints
120 | #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while
(0)
| ^~~
./arch/arm64/include/asm/jump_label.h:38:2: note: in expansion of macro
'asm_volatile_goto'
38 | asm_volatile_goto(
| ^~~~~~~~~~~~~~~~~
./include/linux/compiler-gcc.h:120:38: warning: asm operand 0 probably
doesn't match constraints
120 | #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while
(0)
| ^~~
./arch/arm64/include/asm/jump_label.h:38:2: note: in expansion of macro
'asm_volatile_goto'
38 | asm_volatile_goto(
| ^~~~~~~~~~~~~~~~~
./include/linux/compiler-gcc.h:120:38: error: impossible constraint in 'asm'
120 | #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while
(0)
| ^~~
./arch/arm64/include/asm/jump_label.h:38:2: note: in expansion of macro
'asm_volatile_goto'
38 | asm_volatile_goto(
| ^~~~~~~~~~~~~~~~~
./include/linux/compiler-gcc.h:120:38: error: impossible constraint in 'asm'
120 | #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while
(0)
| ^~~
./arch/arm64/include/asm/jump_label.h:38:2: note: in expansion of macro
'asm_volatile_goto'
38 | asm_volatile_goto(
| ^~~~~~~~~~~~~~~~~
make[2]: *** [scripts/Makefile.build:266: drivers/iommu/io-pgtable-arm.o]
Error 1
make[1]: *** [scripts/Makefile.build:509: drivers/iommu] Error 2
make: *** [Makefile:1652: drivers] Error 2
Does anybody know how can I use -O0 flag? (I tried -Og flag but some
variables are still optimized out).
Thank you!
Chan Kim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20211006/4c0cf9e2/attachment.html>
More information about the Kernelnewbies
mailing list