On Mon, 25 Mar 2024, Tobias Burnus wrote:

> Richard Biener wrote:
> > I'll follow up with the libgomp testing test summary for archival
> > purposes.  I still see linker errors for testcases using -g
> > (the ld: ^[[0;31merror: ^[[0mincompatible mach:
> > /tmp/ccr0oDpD.mkoffload.dbg.o^M kind)
> 
> Hmm, odd ? can you try compile with -save-temp and look at the relevant files
> with, e.g., readelf -h on the GCN files (e.g. 'readelf -h
> *.xamdgcn-amdhsa.mkoffload.*o') ? that should show under "Flags" what the
> program was compiled for.
> 
> We did encounter this issue with LLVM 18 and the solution was explicitly set
> the version both in the compiler via gcc/config/gcn/gcn-hsa.h's
> 
> #define ABI_VERSION_SPEC "march=fiji:--amdhsa-code-object-version=3;" \
>                          "!march=*|march=*:--amdhsa-code-object-version=4"
> 
> and for the debugging data in mkoffload.cc's
> 
>   ehdr.e_ident[8] = (elf_arch == EF_AMDGPU_MACH_AMDGCN_GFX803
>                      ? ELFABIVERSION_AMDGPU_HSA_V3
>                      : ELFABIVERSION_AMDGPU_HSA_V4);
> 
> But I fail to see why this doesn't work for you - you should get V4 for your
> gfx1036 target.
> 
> Here, ELFABIVERSION_AMDGPU_HSA_V4 2 (V1 did not have a number and V2 started
> with 0, hence V3 = 1 etc.)

So just for the record it was --with-arch=gfx1036 not passed through to
mkoffload, using explicit -foffload-options=-march=gfx1036 fixes that
problem.

> What LLVM version did you use for the assembler (llvm-mc)?

I've used llvm15 but lld from llvm14 (don't ask ...)

Richard.

Reply via email to