
On Fri, Oct 22, 2021 at 02:49:17PM -0500, Adam Ford wrote:
On Fri, Oct 22, 2021 at 2:26 PM Marek Behún marek.behun@nic.cz wrote:
On Fri, 22 Oct 2021 14:19:16 -0500 Adam Ford aford173@gmail.com wrote:
I am not sure it's the right solution, but it appears to work for me on a board that uses LTO. I didn't try it with a board that doesn't use LTO.
Need to be tested with GCC as well as Clang.
Agreed.
I turned off LTO, and got an error, so I updated the diff to:
diff --git a/Makefile b/Makefile index 5194e4dc78..386180e935 100644 --- a/Makefile +++ b/Makefile @@ -2303,7 +2303,7 @@ endif $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
quiet_cmd_genenv = GENENV $@ -cmd_genenv = $(OBJCOPY) --dump-section .rodata.default_environment=$@ env/common.o; \ +cmd_genenv = $(OBJCOPY) --dump-section `${OBJDUMP} env/common.o -t |grep -m1 default_environment |awk '{print $$4}'`=$@ env/common.o; \ sed --in-place -e 's/\x00/\x0A/g' $@
u-boot-initial-env: u-boot.bin
It now appears to build without error with LTO enabled and disabled.
I think LLVM is just not supportable without a different set of logic, as env/common.o just isn't quite the same (with LTO it's an IR file, without it's an object, but doesn't quite have that section?).