
On 05/28/2013 03:08 PM, Wolfgang Denk wrote:
Dear Simon Glass,
In message 1369769778-12455-1-git-send-email-sjg@chromium.org you wrote:
Some device tree files use the word 'linux' which gets replaced with '1' by many version of gcc, including version 4.7. So undefine this.
I think this is not a good way to address this issue. The GCC documentation (section "System-specific Predefined Macros" [1]) desribes how this should be handled. The "correct" (TM) way to fix this is by adding "-ansi" or any "-std" option that requests strict conformance to the compiler/preprocessor command line.
[1] http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros.html...
-ansi at least was considered when the Linux kernel patches for dtc+cpp support were being developed, but it was rejected. While it possibly does solve this specific issue fine, there were other more general problems; IIRC (and I might not) it completely changes the way macro expansion happens, which results in it being pretty useless. Hence, "-x assembler-with-cpp" was chosen over e.g. "-ansi".