diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/NativeLibrary.NativeAot.Unix.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/NativeLibrary.NativeAot.Unix.cs index 572a7f282944..b1bb7853cd22 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/NativeLibrary.NativeAot.Unix.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/NativeLibrary.NativeAot.Unix.cs @@ -51,7 +51,14 @@ public void Throw(string libraryName) public void TrackErrorMessage(string? message) { - _errorMessage = message; + if (_errorMessage == null) + { + _errorMessage = Environment.NewLine; + } + if (!_errorMessage.Contains(message)) + { + _errorMessage += message + Environment.NewLine; + } } } } diff --git a/src/coreclr/vm/nativelibrary.cpp b/src/coreclr/vm/nativelibrary.cpp index 891ce4863529..f5873ac0b9bf 100644 --- a/src/coreclr/vm/nativelibrary.cpp +++ b/src/coreclr/vm/nativelibrary.cpp @@ -53,6 +53,7 @@ namespace LIMITED_METHOD_CONTRACT; m_hr = E_FAIL; m_priorityOfLastError = 0; + m_message = SString(SString::Utf8, "\n"); } VOID TrackErrorCode() @@ -137,7 +138,18 @@ namespace void SetMessage(LPCSTR message) { +#ifdef TARGET_UNIX + //Append dlerror() messages + SString new_message = SString(SString::Utf8, message); + SString::Iterator i = m_message.Begin(); + if (!m_message.Find(i, new_message)) + { + m_message += new_message; + m_message += SString(SString::Utf8, "\n"); + } +#else m_message = SString(SString::Utf8, message); +#endif } HRESULT m_hr;