-
Notifications
You must be signed in to change notification settings - Fork 2.7k
[release/2.1] Replace hex number representation in ASM files #26136
Conversation
Are these in any of the .S files or in files included from those? |
Yes. For example, there's still a But I don't know how to find a comprehensive list. Does this look okay?
|
The .asm files are windows only. On Unix, the .S ones are used. So it seems only the .S files in src/vm/i386 need to get fixed in addition to what you've already changed. The other .S files only have constants with "h" suffix in comments, which is fine. |
This commit fixes coreclr to build in newer versions of llvm (tested with llvm 8 on Fedora 30). These recent versions of llvm (as well as GCC) do not accept values like "20h" as valid integer literals: src/debug/ee/amd64/dbghelpers.S:32:21: error: unknown token in expression add rsp, 20h ^ This was reported as a bug to llvm upstream and they explicitly rejected supporting these literals: https://reviews.llvm.org/D59810 This is partial backport of cbd672e (PR dotnet#22810), with some modifications to compile, which was about adding compatibility with GCC 5.
@janvorli Can you take a look at this again? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thank you!
Oh, I've just realized you are trying to merge this change into release/2.1 - that is not good, it should go to master. |
I have added "NO MERGE" attribute so that it is not accidentally merged to the release/2.1 |
@janvorli Sorry, but I am a bit confused. The changes should already be in master as part of #22810. Is there anything you want me to do in master first? Edit: just to confirm, I just rebuilt coreclr's |
Hmm, I have not realized that. So I am confused - why are you porting it to release/2.1? |
@janvorli I would like to be able to build .NET Core 2.1 (using source-build, which includes coreclr) on Fedora 30. If coreclr's release/2.1 branch supports llvm 8 (which it does, with this small patch), I don't have to carry any patches in source-build or in Fedora to work around this issue. |
Any thoughts, @janvorli ? |
I dont' think this change would meet the bar for porting to older release branch. @jkotas do you agree? |
I agree. We do not patch release branches to work with newer compilers. |
Thanks. I am going to close this PR now. However, I really hope this policy will be revisisted - once dotnet LTS versions get included in Linux distributions, carrying patches that affect how code is compiled might break dotnet if the patches cant be reviewed and merged into the LTS release branches. |
A version of RHEL with clang8 will be released within the lifetime of 2.1 (as well as many other distributions will be (already are) carrying their own patches for this.) I believe that this should really be patched here because otherwise nobody will be able to build future updates of 2.1 (unless everyone patches it on their end.) |
@RheaAyase Ok, let me try to run this through servicing process. |
Approved offline by @Pilchie |
This does not need to ship in October. It is fine to bundle with the next real change we need to ship. |
OK thanks |
Description
.NET Core 2.1 does not build with new LLVM versions (e.g. llvm 8 on Fedora 30).
Customer Impact
Anybody who wants to build .NET Core 2.1 from source on newer distros needs to carry and maintain patch with workaround. It would be beneficial for everybody to have this patch included in release/2.1 (see comment from Red Hat below #26136 (comment))
Regression?
No.
Risk
Low. This is trivial find&replace for constant literals format in asm code.
This commit fixes coreclr to build in newer versions of llvm (tested with llvm 8 on Fedora 30).
These recent versions of llvm (as well as GCC) do not accept values like
20h
as valid integer literals:This was reported as a bug to llvm upstream and they explicitly rejected supporting these literals: https://reviews.llvm.org/D59810
This is partial backport of cbd672e (PR #22810), with some modifications to compile, which was about adding compatibility with GCC 5.
One open question: this is enough on my machine to compile, but there are several other uses of constants with suffix
h
in various files. Should I replace them with0x
-prefix style too?