Repository navigation
Add linux x86 build CI for pull request - #60817
Conversation
|
I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label. |
|
Looks like the current changes are breaking dotnet-runtime pipeline. Nothing from the pipeline run. |
a52cf63 to
c08b276
Compare
|
@jkotas @safern Could you please review again? I fixed some mistakes in the first commit and some build errors. I think CI failures are not caused by this PR. @alpencolt @gbalykov It builds linux x86 with |
|
The windows x86 legs are failing with unique errors. They may be related to this change somehow. |
|
@clamp03 last time I checked (#50836 and 6.0-preview7), linux x86 build worked for next subsets: ROOTFS_DIR=`pwd`/.tools/rootfs/x86/ ./build.sh --cross --arch x86 --runtimeConfiguration Release --librariesConfiguration Release --subset clr.runtime+clr.corelib+clr.iltools+clr.dactools+clr.jitHas something changed? |
gbalykov
left a comment
There was a problem hiding this comment.
Ah, I see that CI uses build-runtime.sh script directly for runtime build instead of build.sh. Looks good.
1aeb75e to
2c0aa64
Compare
There was a problem hiding this comment.
What is this change trying to fix?
@VSadov Could you please review this line?
There was a problem hiding this comment.
I am not sure I follow why this might be needed, on x86 specifically.
There was a problem hiding this comment.
Normally we use it to avoid clash between two instances of gcdecode.cpp which both JIT and VM include, so when they are both statically linked into singlefile host, we need to pick just one.
And dac, I think needs gcdecode.cpp regardless of singlefile.
What is different on x86?
There was a problem hiding this comment.
If it's used by the VM, most likely yes. The decoder only gets used in x86 looks like, and yeah - verified and there's calls to the functions in the decoder. SOS also uses a copy of it heavily.
There was a problem hiding this comment.
Build error message which I try to fix is
>> gcdump_dac.cpp.o:(.text+0x1D0) in archive ../../debug/daccess/libdaccess.a
ld.lld: error: duplicate symbol: decodeSigned(__ArrayDPtr<unsigned char const>, int*)
>>> defined at gcdecoder.cpp:64 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:64)
>>> gcdecode.cpp.o:(decodeSigned(__ArrayDPtr<unsigned char const>, int*)) in archive ../../vm/libcee_dac.a
>>> defined at gcdecoder.cpp:64 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:64)
>>> gcdump_dac.cpp.o:(.text+0x130) in archive ../../debug/daccess/libdaccess.a
ld.lld: error: duplicate symbol: decodeUDelta(__ArrayDPtr<unsigned char const>, unsigned int*, unsigned int)
>>> defined at gcdecoder.cpp:51 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:51)
>>> gcdecode.cpp.o:(decodeUDelta(__ArrayDPtr<unsigned char const>, unsigned int*, unsigned int)) in archive ../../vm/libcee_dac.a
>>> defined at gcdecoder.cpp:51 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:51)
>>> gcdump_dac.cpp.o:(.text+0xA0) in archive ../../debug/daccess/libdaccess.a
ld.lld: error: duplicate symbol: decodeUnsigned(__ArrayDPtr<unsigned char const>, unsigned int*)
>>> defined at gcdecoder.cpp:34 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:34)
>>> gcdecode.cpp.o:(decodeUnsigned(__ArrayDPtr<unsigned char const>, unsigned int*)) in archive ../../vm/libcee_dac.a
>>> defined at gcdecoder.cpp:34 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:34)
>>> gcdump_dac.cpp.o:(.text+0x0) in archive ../../debug/daccess/libdaccess.a
ld.lld: error: duplicate symbol: decodeCallPattern(int, unsigned int*, unsigned int*, unsigned int*, unsigned int*)
>>> defined at gcdecoder.cpp:261 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:261)
>>> gcdecode.cpp.o:(decodeCallPattern(int, unsigned int*, unsigned int*, unsigned int*, unsigned int*)) in archive ../../vm/libcee_dac.a
>>> defined at gcdecoder.cpp:261 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:261)
>>> gcdump_dac.cpp.o:(.text+0x670) in archive ../../debug/daccess/libdaccess.a
ld.lld: error: duplicate symbol: InfoHdrSmall::isHeaderMatch(InfoHdr const&) const
>>> defined at gcdecoder.cpp:466 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:466)
>>> gcdecode.cpp.o:(InfoHdrSmall::isHeaderMatch(InfoHdr const&) const) in archive ../../vm/libcee_dac.a
>>> defined at gcdecoder.cpp:466 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:466)
>>> gcdump_dac.cpp.o:(.text+0x6B0) in archive ../../debug/daccess/libdaccess.a
ld.lld: error: duplicate symbol: callCommonDelta
>>> defined at gcdecoder.cpp:505 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:505)
>>> gcdecode.cpp.o:(callCommonDelta) in archive ../../vm/libcee_dac.a
>>> defined at gcdecoder.cpp:505 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:505)
>>> gcdump_dac.cpp.o:(.rodata+0xB20) in archive ../../debug/daccess/libdaccess.a
ld.lld: error: duplicate symbol: callPatternTable
>>> defined at gcdecoder.cpp:534 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:534)
>>> gcdecode.cpp.o:(callPatternTable) in archive ../../vm/libcee_dac.a
>>> defined at gcdecoder.cpp:534 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:534)
>>> gcdump_dac.cpp.o:(.rodata+0xB30) in archive ../../debug/daccess/libdaccess.a
ld.lld: error: duplicate symbol: infoHdrShortcut
>>> defined at gcdecoder.cpp:279 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:279)
>>> gcdecode.cpp.o:(infoHdrShortcut) in archive ../../vm/libcee_dac.a
>>> defined at gcdecoder.cpp:279 (/dotnet/jobs/ci/check/src/coreclr/inc/gcdecoder.cpp:279)
>>> gcdump_dac.cpp.o:(.rodata+0x1A0) in archive ../../debug/daccess/libdaccess.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
dlls/mscordac/CMakeFiles/mscordaccore.dir/build.make:147: recipe for target 'dlls/mscordac/libmscordaccore.so' failed
make[3]: *** [dlls/mscordac/libmscordaccore.so] Error 1
CMakeFiles/Makefile2:4161: recipe for target 'dlls/mscordac/CMakeFiles/mscordaccore.dir/all' failed
make[2]: *** [dlls/mscordac/CMakeFiles/mscordaccore.dir/all] Error 2
There was a problem hiding this comment.
For libmscordaccore build, cee_dac and daccess conflict by including same src/coreclr/inc/gcdecorder.cpp
I thought gcdecoder.cpp can be excluded because it is already included in daccess.
There was a problem hiding this comment.
@VSadov I checked Include vm/gcdecode.cpp in only windows (exclude vm/gcdecode.cpp from linux-x86). Simple tests work in linux-x86.
I think that cee_dac doesn't need to include inc/gcdecoder.cpp in windows. I guess a compiler of windows can resolve this duplicated symbols well. Actually, with clang10 (and above), it compiles without the duplicated symbol errors in linux. (*. CI uses clang9)
There was a problem hiding this comment.
I didn't get any errors. Reverted the last commit. Now it includes gcdecode.cpp in only windows. Thank you!
This reverts commit 65e59345f1b9e8d331cdbb695d92c52cff657bd5.
No description provided.