Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -850,10 +850,10 @@ public ObjectWriter(string objectFilePath, NodeFactory factory, ObjectWritingOpt
{
var triple = GetLLVMTripleFromTarget(factory.Target);

_nativeObjectWriter = InitObjWriter(objectFilePath, triple);
_nativeObjectWriter = InitObjWriter(Path.GetFullPath(objectFilePath), triple);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the API that the object writer uses to open the file that makes it choke on ..?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like it ends up calling open(2) from https://github.com/dotnet/llvm-project/blob/8dad63a6a1ba42171420f2f6e24f2b5d0a5179ab/llvm/lib/Support/Unix/Path.inc#L1012, which should be able to handle the relative paths, so not 100% sure why it is failing for @kotlarmilos?

Locally on osx-arm64, it is working fine with main branch when I changed -o:.. line in artifacts/obj/coreclr/crossgen2/arm64/Debug/native/crossgen2.ilc.rsp to a relative path /Users/am11/projects/runtime/src/../artifacts/obj/coreclr/crossgen2/arm64/Debug/native/crossgen2.o.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've encountered the failure on the CI when targeting iOS platforms in #87773. The host platform is osx-arm64. I will try to reproduce it locally.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will try to reproduce it locally

@kotlarmilos were you able to reproduce this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delayed reply. Yes, I can reproduce the issue locally on osx-arm64.

For example, in the sample app, the NativeIntermediateOutputPath is

/Users/miloskotlar/dotnet/runtime/src/mono/sample/iOS-NativeAOT/obj/native/

If I override NativeIntermediateOutputPath with

/Users/miloskotlar/dotnet/runtime/src/mono/sample/iOS-NativeAOT/obj/native/dummydir/../

the ILCompiler fails to initialize the Native Object Writer.

I made a mistake regarding the Helix host platform, it should be osx-x64. It appears that the issue is not specific to the architecture.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does dummydir exist? If it does not exist, it is expected for this to fail.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's right, it doesn't exist. Probably that is the case with the Helix as well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@am11 If no further actions are expected, I suggest we close the issue and PR.

Thank you all for the assistance!

if (_nativeObjectWriter == IntPtr.Zero)
{
throw new IOException("Fail to initialize Native Object Writer");
throw new IOException("Failed to initialize Native Object Writer");
}
_nodeFactory = factory;
_targetPlatform = _nodeFactory.Target;
Expand Down