Re: [PATCH 1/2] x86/fred: Fix build with clang

From: H. Peter Anvin
Date: Sun Jan 28 2024 - 14:34:25 EST


On 1/27/24 11:46, Li, Xin3 wrote:
diff --git a/arch/x86/entry/entry_64_fred.S
b/arch/x86/entry/entry_64_fred.S index eedf98de7538..5427e0da190d
100644
--- a/arch/x86/entry/entry_64_fred.S
+++ b/arch/x86/entry/entry_64_fred.S
@@ -43,13 +43,12 @@ SYM_INNER_LABEL(asm_fred_exit_user,
SYM_L_GLOBAL)
_ASM_EXTABLE_TYPE(1b, asm_fred_entrypoint_user, EX_TYPE_ERETU)
SYM_CODE_END(asm_fred_entrypoint_user)

-.fill asm_fred_entrypoint_kernel - ., 1, 0xcc
-
/*
* The new RIP value that FRED event delivery establishes is
* (IA32_FRED_CONFIG & ~FFFH) + 256 for events that occur in
* ring 0, i.e., asm_fred_entrypoint_user + 256.
*/
+ .fill asm_fred_entrypoint_user + 256 - ., 1, 0xcc
.org asm_fred_entrypoint_user + 256
SYM_CODE_START_NOALIGN(asm_fred_entrypoint_kernel)
FRED_ENTER

.fill and .org here are redundant; in fact, there two directives mean exactly the
same thing except that .org implicitly subtracts the current offset.

Ah, right, .fill already does the job!

I will remove .org.


Incidentally, was there a problem with .org ..., 0xcc?

Not a criticism, I just want to know to better understand current binutils limitations.

-hpa