Makefile: Manually forward RELAX_FLAG to the assembler when linking with LLD
authorBin Meng <bmeng.cn@gmail.com>
Mon, 12 Jul 2021 02:12:53 +0000 (10:12 +0800)
committerAnup Patel <anup@brainfault.org>
Tue, 27 Jul 2021 08:59:31 +0000 (14:29 +0530)
commit989039117fc0181bb971acf2c934d3fba454c153
tree9247686d08cf28f043c4d7b023b536bdf0f08d52
parent81eb7088b6ae1b3b14ed57ef428b1b9f74d468cf
Makefile: Manually forward RELAX_FLAG to the assembler when linking with LLD

When generating code with -mno-relax, GCC puts .option norelax in
the generated assembly, and so doesn’t bother passing on -mno-relax
to the assembler. This has the unfortunate effect that, when using
GCC to assemble hand-written assembly, -mno-relax does nothing,
and we have to pass -Wa,-mno-relax to manually forward it to the
assembler.

This is an old GCC bug that was fixed [1] recently. For the time
being, let's pass "-Wa,-mno-relax" to ASFLAGS for the GCC + LLD
combination to work, e.g.:

  $ make CC=riscv64-unknown-elf-gcc LLVM=1 PLATFORM=generic

[1] https://github.com/gcc-mirror/gcc/commit/3b0a7d624e64eeb81e4d5e8c62c46d86ef521857

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
Makefile