[clang] Disable -fdollars-in-identifiers by default (PR #135407)
Nathan Chancellor via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 16 09:28:09 PDT 2025
nathanchance wrote:
> CC @nathanchance @nickdesaulniers for more information
This will indeed break building the Linux kernel for x86_64 at least in my brief test, mainly because it uses the preprocessor for assembly files but there are some macros that are included in both C and assembly that trigger it as well. For example, all these warnings will get upgraded to errors with `CONFIG_WERROR` (on by default with `defconfig` and `allmodconfig`):
```
In file included from arch/x86/kernel/acpi/wakeup_64.S:11:
arch/x86/include/asm/nospec-branch.h:80:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
80 | movq $-1, PER_CPU_VAR(__x86_call_depth);
| ^
arch/x86/include/asm/nospec-branch.h:84:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
84 | bts $63, %rax; \
| ^
arch/x86/include/asm/nospec-branch.h:88:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
88 | movb $0xfc, %al; \
| ^
arch/x86/include/asm/nospec-branch.h:89:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
89 | shl $56, %rax; \
| ^
arch/x86/include/asm/nospec-branch.h:94:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
94 | sarq $5, PER_CPU_VAR(__x86_call_depth); \
| ^
arch/x86/include/asm/nospec-branch.h:142:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
142 | mov $(nr/2), reg; \
| ^
arch/x86/include/asm/nospec-branch.h:146:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
146 | add $(BITS_PER_LONG/8) * 2, %_ASM_SP; \
| ^
arch/x86/include/asm/nospec-branch.h:176:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
176 | add $(BITS_PER_LONG/8), %_ASM_SP; \
| ^
arch/x86/kernel/acpi/wakeup_64.S:22:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
22 | movq $0x123456789abcdef0, %rdx
| ^
arch/x86/kernel/acpi/wakeup_64.S:27:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
27 | movq $0xbad6d61676963, %rcx
| ^
arch/x86/kernel/acpi/wakeup_64.S:31:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
31 | movw $__KERNEL_DS, %ax
| ^
arch/x86/kernel/acpi/wakeup_64.S:51:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
51 | subq $8, %rsp
| ^
arch/x86/kernel/acpi/wakeup_64.S:55:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
55 | movq $saved_context, %rax
| ^
arch/x86/kernel/acpi/wakeup_64.S:74:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
74 | movq $.Lresume_point, saved_rip(%rip)
| ^
arch/x86/kernel/acpi/wakeup_64.S:82:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
82 | addq $8, %rsp
| ^
arch/x86/kernel/acpi/wakeup_64.S:83:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
83 | movl $3, %edi
| ^
arch/x86/kernel/acpi/wakeup_64.S:93:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
93 | movq $saved_context, %rax
| ^
arch/x86/kernel/acpi/wakeup_64.S:130:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
130 | addq $8, %rsp
| ^
18 warnings generated.
In file included from arch/x86/kernel/ftrace_64.S:12:
...
arch/x86/kernel/ftrace_64.S:82:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
82 | subq $(FRAME_SIZE), %rsp
| ^
arch/x86/kernel/ftrace_64.S:90:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
90 | movq $0, ORIG_RAX(%rsp)
| ^
arch/x86/kernel/ftrace_64.S:114:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
114 | subq $MCOUNT_INSN_SIZE, %rdi
| ^
arch/x86/kernel/ftrace_64.S:130:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
130 | addq $MCOUNT_REG_SIZE-\save, %rsp
| ^
arch/x86/kernel/ftrace_64.S:175:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
175 | movq $0, CS(%rsp)
| ^
arch/x86/kernel/ftrace_64.S:229:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
229 | movq $__KERNEL_DS, %rcx
| ^
arch/x86/kernel/ftrace_64.S:231:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
231 | movq $__KERNEL_CS, %rcx
| ^
arch/x86/kernel/ftrace_64.S:307:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
307 | add $8, %rsp
| ^
arch/x86/kernel/ftrace_64.S:358:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
358 | subq $(FRAME_SIZE), %rsp
| ^
arch/x86/kernel/ftrace_64.S:371:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
371 | addq $(FRAME_SIZE), %rsp
| ^
18 warnings generated.
arch/x86/lib/clear_page_64.S:20:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
20 | movl $4096/8,%ecx
| ^
arch/x86/lib/clear_page_64.S:29:9: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
29 | movl $4096/64,%ecx
| ^
arch/x86/lib/clear_page_64.S:50:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
50 | movl $4096,%ecx
| ^
arch/x86/lib/clear_page_64.S:69:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
69 | cmpq $64,%rcx
| ^
arch/x86/lib/clear_page_64.S:72:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
72 | cmp $8,%ecx
| ^
arch/x86/lib/clear_page_64.S:90:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
90 | addq $8,%rdi
| ^
arch/x86/lib/clear_page_64.S:91:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
91 | sub $8,%ecx
| ^
arch/x86/lib/clear_page_64.S:93:6: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
93 | cmp $8,%ecx
| ^
arch/x86/lib/clear_page_64.S:107:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
107 | addq $64,%rdi
| ^
arch/x86/lib/clear_page_64.S:108:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
108 | subq $64,%rcx
| ^
arch/x86/lib/clear_page_64.S:109:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
109 | cmpq $64,%rcx
| ^
arch/x86/lib/clear_page_64.S:111:7: warning: '$' in identifier; did you mean to enable '-fdollars-in-identifiers'? [-Wdollar-in-identifier]
111 | cmpl $8,%ecx
| ^
12 warnings generated.
```
> but even if the kernel does, is it a significant imposition to pass `-fdollars-in-identifiers` to enable the extension explicitly?
I am sure that would not be too much of a problem (as long as I have sufficient justification, it is unfortunate if there is a break from GCC's behavior) but it will take some time to get it merged and backported to all supported releases.
https://github.com/llvm/llvm-project/pull/135407
More information about the cfe-commits
mailing list