[U-Boot] [PATCH] sandbox: Fix building with LLVM

- The macro __BIGGEST_ALIGNMENT__ is gcc-specific. If it is not defined we'll just assume 16. This is correct for at least the common cases and LLVM does not provide an equivalent macro. - When linking U-Boot we're passing -T to the linker, and while gcc will just pass this along with LLVM we need to be specific.
Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com
--- I've tested this with both test/fs/fs-test.sh (and a quick kludge to force it to use LLVM) and test/pytest/test.py with a pre-built sandbox and both pass as much as with gcc does for me. --- arch/sandbox/config.mk | 2 +- arch/sandbox/include/asm/cache.h | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/sandbox/config.mk b/arch/sandbox/config.mk index b05a90f..16fd6d5 100644 --- a/arch/sandbox/config.mk +++ b/arch/sandbox/config.mk @@ -16,7 +16,7 @@ PLATFORM_CPPFLAGS += $(shell sdl-config --cflags) endif endif
-cmd_u-boot__ = $(CC) -o $@ -T u-boot.lds \ +cmd_u-boot__ = $(CC) -o $@ -Wl,-T u-boot.lds \ -Wl,--start-group $(u-boot-main) -Wl,--end-group \ $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map
diff --git a/arch/sandbox/include/asm/cache.h b/arch/sandbox/include/asm/cache.h index d28c385..ffbb984 100644 --- a/arch/sandbox/include/asm/cache.h +++ b/arch/sandbox/include/asm/cache.h @@ -12,7 +12,13 @@ * the contents of stack buffers to something reasonable. The * GCC macro __BIGGEST_ALIGNMENT__ is defined to be the maximum * required alignment for any basic type. This seems reasonable. + * This is however GCC specific so if we don't have that available + * assume that 16 is large enough. */ +#ifdef __BIGGEST_ALIGNMENT__ #define ARCH_DMA_MINALIGN __BIGGEST_ALIGNMENT__ +#else +#define ARCH_DMA_MINALIGN 16 +#endif
#endif /* __SANDBOX_CACHE_H__ */

On 5 March 2016 at 12:07, Tom Rini trini@konsulko.com wrote:
- The macro __BIGGEST_ALIGNMENT__ is gcc-specific. If it is not defined we'll just assume 16. This is correct for at least the common cases and LLVM does not provide an equivalent macro.
- When linking U-Boot we're passing -T to the linker, and while gcc will just pass this along with LLVM we need to be specific.
Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com
I've tested this with both test/fs/fs-test.sh (and a quick kludge to force it to use LLVM) and test/pytest/test.py with a pre-built sandbox and both pass as much as with gcc does for me.
arch/sandbox/config.mk | 2 +- arch/sandbox/include/asm/cache.h | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org

On Sat, Mar 05, 2016 at 02:07:44PM -0500, Tom Rini wrote:
- The macro __BIGGEST_ALIGNMENT__ is gcc-specific. If it is not defined we'll just assume 16. This is correct for at least the common cases and LLVM does not provide an equivalent macro.
- When linking U-Boot we're passing -T to the linker, and while gcc will just pass this along with LLVM we need to be specific.
Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!
participants (2)
-
Simon Glass
-
Tom Rini