Arthur Heymans has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/80337?usp=email )
Change subject: cpu/x86: Link page tables in stage if possible ......................................................................
Patch Set 22:
(1 comment)
Patchset:
PS22:
Hi Arthur,
We are observing section overlap error when building coreboot in x64 (meteorlake rex) with this patch. Can you please help to resolve this ? Build logs with error given below:
make[1]: Circular set_fit_ptr <- add_mcu_fit dependency dropped. make[1]: Circular check-fmap-16mib-crossing <- add_mcu_fit dependency dropped. LINK cbfs/fallback/bootblock.debug HOSTCC cbfstool/cbfstool (link) CC ramstage/cpu/x86/mp_init.o Chromium OS 18.0_pre510928 clang version 18.0.0 (/mnt/host/source/src/third_party/llvm-project 82e851a407c52d65ce65e7aa58453127e67d42a0) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin Selected GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Selected multilib: .;@m64 "/usr/bin/x86_64-pc-linux-gnu-ld.lld" -pie --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/util/cbfstool/cbfstool /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib64/crti.o /usr/lib64/clang/18/lib/linux/clang_rt.crtbegin-x86_64.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/lib -L/lib -L/usr/lib / /usr/lib64/clang/18/lib/linux/libclang_rt.builtins-x86_64.a --as-needed -lgcc_s --no-as-needed /usr/lib64/clang/18/lib/linux/clang_rt.crtend-x86_64.o /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib64/crtn.o
x86_64-elf-ld.bfd: section .init LMA [00000000fffffb50,00000000ffffff37] overlaps section .text LMA [00000000ffff1bc0,0000000100000517]
x86_64-elf-ld.bfd: /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/cbfs/fallback/bootblock.debug: section .init lma 0xfffffb50 adjusted to 0x100000518
x86_64-elf-ld.bfd: /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/cbfs/fallback/bootblock.debug: section .id lma 0xffffff47 adjusted to 0x100000900 x86_64-elf-ld.bfd: /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/cbfs/fallback/bootblock.debug: section .fit_pointer lma 0xffffffc0 adjusted to 0x100000939 x86_64-elf-ld.bfd: /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/cbfs/fallback/bootblock.debug: section .reset lma 0xfffffff0 adjusted to 0x100000941 x86_64-elf-ld.bfd: /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/cbfs/fallback/bootblock.debug: section .header_pointer lma 0xfffffffc adjusted to 0x10000094d OBJCOPY cbfs/fallback/romstage.elf OBJCOPY ramstage/cpu/x86/smm/smmstub.manual /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/bootblock/soc/intel/common/block/cpu/car/cache_as_ram.o: in function `copy_data_section': /build/rex/tmp/portage/sys-boot/coreboot-9999/work/coreboot-9999/src/cpu/x86/copy_data_section.inc:24:(.init+0x1d5): relocation truncated to fit: R_X86_64_32 against symbol `_data_load' defined in .text section in /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/cbfs/fallback/bootblock.debug make[1]: *** [src/arch/x86/Makefile.mk:101: /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/cbfs/fallback/bootblock.debug] Error 1 make[1]: *** Waiting for unfinished jobs.... make[1]: Leaving directory '/build/rex/tmp/portage/sys-boot/coreboot-9999/work/coreboot-9999' make: *** [/build/rex/tmp/portage/sys-boot/coreboot-9999/files/coreboot.make:28: /build/rex/tmp/portage/sys-boot/coreboot-9999/work/build/rex0-serial/coreboot.rom] Error 1
So it looks like .text is overflowing. I'm not sure what is causing that. Maybe https://review.coreboot.org/c/coreboot/+/81434 helps if that's not already in your tree? If that's not doing it, maybe adding a fixed number to PROGRAM_SZ in arch/x86/program.ld works.