On Wed, May 25, 2022 at 4:50 PM Ard Biesheuvel <ardb@kernel.org> wrote:
On Wed, 25 May 2022 at 17:08, Rebecca Cran <quic_rcran@quicinc.com> wrote:
>
> I noticed OvmfPkg/OvmfPkgX64.dsc doesn't build with `-t CLANG38 -b
> NOOPT` (with clang version 14.0.2) with the latest edk2 master
> (07c0c2eb0a5970db614ebce1060fc79d6904bdfd):
>
> make: Nothing to be done for 'tbuild'.
> /usr/bin/ld: /usr/bin/ld: DWARF error: invalid or unhandled FORM value:
> 0x23
> /home/bcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/OvmfPkg/VirtioGpuDxe/VirtioGpu/OUTPUT/VirtioGpuDxe.lib(Gop.obj):
> in function `GopSetMode':
> Gop.c:(.text.GopSetMode+0x418): undefined reference to `memcpy'

Can you dump the object file to see where the memcpy() call is emitted?
I think I found the smoking gun: https://github.com/tianocore/edk2/blob/916f90baa547b3ebef8fa87c530e2f0c8e35e1e3/OvmfPkg/VirtioGpuDxe/Gop.c#L512


> Building ...
> /home/bcran/src/upstream/uefi/edk2/OvmfPkg/PlatformPei/PlatformPei.inf
> [X64]
> clang-14.0: error: linker command failed with exit code 1 (use -v to see
> invocation)
> make: Nothing to be done for 'tbuild'.
> make: *** [GNUmakefile:358:
> /home/bcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/OvmfPkg/VirtioGpuDxe/VirtioGpu/DEBUG/VirtioGpuDxe.dll]
> Error 1
>
>
> build.py...
> : error 7000: Failed to execute command
>         make tbuild
> [/home/bcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/OvmfPkg/VirtioGpuDxe/VirtioGpu]
>
>
> build.py...
> : error F002: Failed to build module
>         /home/bcran/src/upstream/uefi/edk2/OvmfPkg/VirtioGpuDxe/VirtioGpu.inf [X64, CLANG38, NOOPT]
>
> - Failed -
> Build end time: 09:03:38, May.25 2022
> Build total time: 00:00:07
>
>
> --
> Rebecca Cran

A very clear issue I'm seeing (in tools_def) is that no GCC-like toolchains pass -ffreestanding and that may be causing issues. I'll try to reproduce it on my end and see if it's a bug in LLVM.







--
Pedro Falcato