On Tue, Dec 20, 2022 at 12:12:42PM +0000, Daniel P. Berrangé wrote:
> For KVM AMD SEV-SNP virtualization we're trying to get SVSM guest
> firmware built on Fedora.
> 
>   https://github.com/svsm-vtpm/linux-svsm
> 
> It builds successfully on Ubuntu 22.04 (gcc 11.3.0) which is what upstream
> uses as their primary dev platform. On Fedora 37 (gcc 12.2.1) though, we're
> getting errors at the final link stage. To eliminate version as a factor,
> I also tried Fedora 35 with gcc 11.3.1 and got the same errors:
> 
> gcc -m64 -nostdlib -Wl,-Tsrc/start/svsm.lds -Wl,--build-id=none -o 
> svsm.bin.elf src/start/start.o 
> target/x86_64-unknown-none/debug/liblinux_svsm.a -Wl,--start-group 
> ./external/build/lib/libtpm.a ./external/build/lib/libplatform.a 
> ./external/build/lib/libwolfssl.a ./external/build/lib/libcrt.a 
> ./external/build/lib/libm.a -Wl,--end-group
> ./external/build/lib/libwolfssl.a(src_libwolfssl_la-sha256.o): in function 
> `Transform_Sha256':
> sha256.c:(.text+0xba): relocation truncated to fit: R_X86_64_32 against 
> `.rodata'
> ./external/build/lib/libwolfssl.a(src_libwolfssl_la-aes.o): in function 
> `wc_AesEncrypt':
> aes.c:(.text+0x50): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0x68): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0x7e): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0x8c): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0x9e): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0xa9): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0xc5): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0xd3): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0xe9): relocation truncated to fit: R_X86_64_32S against 
> `.rodata'
> aes.c:(.text+0xf8): additional relocation overflows omitted from the output
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:54: svsm.bin.elf] Error 1

That would mean either that your text + data segment are larger than 2GB, or
src/start/svsm.lds you are using places the sections somewhere high in the
address space, incompatible with the x86-64 default -mcmodel=small.
Ubuntu defaults to -fpie -pie like we use in Fedora when hardening isn't
disabled through specs from redhat-rpm-config, so it uses a different
code model (small pic).
You can build stuff with -fpie and link with -pie if you want, or
-mcmodel=medium or -mcmodel=large etc., depends really on what 
src/start/svsm.lds
is doing and how large the binary is.
As documented:
'-mcmodel=small'
     Generate code for the small code model: the program and its symbols
     must be linked in the lower 2 GB of the address space.  Pointers
     are 64 bits.  Programs can be statically or dynamically linked.
     This is the default code model.

'-mcmodel=medium'
     Generate code for the medium model: the program is linked in the
     lower 2 GB of the address space.  Small symbols are also placed
     there.  Symbols with sizes larger than '-mlarge-data-threshold' are
     put into large data or BSS sections and can be located above 2GB.
     Programs can be statically or dynamically linked.

'-mcmodel=large'
     Generate code for the large model.  This model makes no assumptions
     about addresses and sizes of sections.
etc.

        Jakub
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to