Skip to content

Conversation

@maryamariyan
Copy link
Contributor

No description provided.

@karelz karelz added this to the 5.0.0 milestone Aug 18, 2020
MichalStrehovsky added a commit to MichalStrehovsky/runtime that referenced this pull request Sep 3, 2020
Fixes issues with missing symbols.

Take out a piece of the type loader that requires System.Private.TypeLoader.Native that we didn't bring over for now.

isa_detection.cpp doesn't build in NativeAOT because it doesn't include any headers that would define things like WszLoadLibraryEx or LOAD_LIBRARY_SEARCH_SYSTEM32. It feels like this needs to be factored to use GCToOSInterface but this is not my area of expertise.

Remove reference to __fail_fast that was deleted as part of getting rid of cppcodegen in dotnet#21.
MichalStrehovsky added a commit to MichalStrehovsky/runtime that referenced this pull request Sep 3, 2020
Before this change, running link.exe on the output of the compilation produced `LINK : fatal error LNK1561: entry point must be defined`.

This took longer to figure out than I would be willing to admit.

There are two things at play - linker uses the presence of a method named `main` or `wmain` to choose between setting `wmainCRTStartup` or `mainCRTStartup` as the actual entrypoint of the application (C apps don't start with `main` - they start in the C runtime library that calls `main`).

In dotnet#21 we deleted the `__fail_fast` method from main.cpp and then in dotnet#72 we also removed the compiler reference to the now non-existent symbol. The obscure result of that was that main.obj stopped being part of the linking set because nothing now references symbols from it. When linker looks for `main` or `wmain`, it only looks at object files that are already part of the linking set.

As a result, linker didn't inject `wmainCRTStartup` as the entrypoint and we failed with the above message.

It looks like the only way out is to hardcode the CRT implementation detail here. We were already hardcoding it, but for other reasons.

We also need to set the subsystem since the autodetection is failing.
@ghost ghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants