Re: [PATCH kernel v3] powerpc/makefile: Do not redefine $(CPP) for preprocessor
From: Alexey Kardashevskiy <hidden>
Date: 2021-05-17 03:23:22
Also in:
linux-kbuild, lkml
On 5/14/21 18:46, Segher Boessenkool wrote:
Hi! On Fri, May 14, 2021 at 11:42:32AM +0900, Masahiro Yamada wrote:quoted
In my best guess, the reason why powerpc adding the endian flag to CPP is this line in arch/powerpc/kernel/vdso64/vdso64.lds.S #ifdef __LITTLE_ENDIAN__ OUTPUT_FORMAT("elf64-powerpcle", "elf64-powerpcle", "elf64-powerpcle") #else OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", "elf64-powerpc") #endifWhich is equivalent to #ifdef __LITTLE_ENDIAN__ OUTPUT_FORMAT("elf64-powerpcle") #else OUTPUT_FORMAT("elf64-powerpc") #endif so please change that at the same time if you touch this :-)
"If you touch this" approach did not work well with this patch so sorry but no ;) and for a separate patch, I'll have to dig since when it is equal, do you know?
quoted
__LITTLE_ENDIAN__ is defined by powerpc gcc and clang.This predefined macro is required by the newer ABIs, but all older
That's good so I'll stick to it.
compilers have it as well. _LITTLE_ENDIAN is not supported on all platforms (but it is if your compiler targets Linux, which you cannot necessarily rely on). These macros are PowerPC-specific. For GCC, for all targets, you can say #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ You do not need any of the other *ORDER__ macros in most cases. See "info cpp" for the sordid details.quoted
[2] powerpc-linux-gnu-gcc + -mlittle-endian -> __LITTLE_ENDIAN__ is definedYou can just write -mbig and -mlittle btw. Those aren't available on all targets, but neither are the long-winded -m{big,little}-endian option names. Pet peeve, I know :-)
I am looking the same guarantees across modern enough gcc and clang and I am not sure all of the above is valid for clang 10.0.something (or whatever we say we support) ;) -- Alexey