Skip to content
This repository was archived by the owner on Nov 1, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
3f36c10
Update dependencies to latest (#5022)
jkotas Nov 25, 2017
db7bde1
Use string.Create in BitConverter.ToString(byte[]) (dotnet/coreclr#15…
justinvp Nov 26, 2017
8ebe0f0
Sort the Action/Func delegates (dotnet/coreclr#15222)
justinvp Nov 26, 2017
8b0346c
Fix build error (dotnet/coreclr#15218) (#5025)
jkotas Nov 26, 2017
d2bd57c
Fix typo
Nov 26, 2017
7437e84
NativeCallable methods can only be called from unmanaged code (#5015)
tonerdo Nov 27, 2017
0ebf003
Fix building with Test.CoreLib (#5029)
MichalStrehovsky Nov 27, 2017
369bf5d
Make redefinition of a sequence point not an error (#5030)
MichalStrehovsky Nov 27, 2017
8e2859e
Fix debugger stepping into virtual calls (#5031)
MichalStrehovsky Nov 27, 2017
0a7389a
Couple usability fixes to dependency graph viewer (#5028)
MichalStrehovsky Nov 27, 2017
9b3b190
[ILVerify] Add additional tests for delegate assignment/return (#5027)
ArztSamuel Nov 27, 2017
a2c98ea
Switch new TryParse* and TryFormat methods to use span-based format (…
stephentoub Nov 28, 2017
7d43d42
Fix typo in comment in number formatting
stephentoub Nov 28, 2017
07e0d69
Port Decimal/ThrowHelper changes from coreclr format span change
stephentoub Nov 28, 2017
e2cf108
Merge pull request #5038 from dotnet/nmirror
jkotas Nov 29, 2017
b704f43
[ARM32] Cross initialization rootfs for Tizen (#5039)
BredPet Nov 29, 2017
b68c08e
Merge pull request #5042 from dotnet/nmirror
jkotas Nov 30, 2017
d80ed08
enabled thread static fields in WebAssembly (#4999)
hippiehunter Nov 30, 2017
39a085e
Merge pull request dotnet/coreclr#15246 from stephentoub/double_tryfo…
stephentoub Nov 29, 2017
e79755b
Delete double/float formatting code moved to shared
stephentoub Nov 28, 2017
e6e462c
Merge pull request #5045 from dotnet/nmirror
jkotas Dec 1, 2017
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
2 changes: 1 addition & 1 deletion BuildToolsVersion.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.0-prerelease-02118-01
2.1.0-prerelease-02221-02
3 changes: 1 addition & 2 deletions Documentation/cross-building.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ sudo ./cross/build-rootfs.sh x86 xenial
2. Build CoreFX (`Debug` version)
3. Build CoreRT for armel, x64, x86
```
sudo ./cross/build-rootfs.sh armel tizen
sudo ./cross/build-rootfs.sh x86 xenial
sudo ./cross/build-rootfs.sh armel tizen cross
./build.sh clang3.9 armel debug verbose cross
./build.sh debug verbose skiptests
./build.sh clang3.9 x86 debug verbose cross skiptests
Expand Down
14 changes: 13 additions & 1 deletion cross/build-rootfs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

usage()
{
echo "Usage: $0 [BuildArch] [LinuxCodeName]"
echo "Usage: $0 [BuildArch] [LinuxCodeName] [cross]"
echo "BuildArch can be: arm(default), armel, arm64, x86"
echo "LinuxCodeName - optional, Code name for Linux, can be: trusty(default), vivid, wily, jessie, xenial. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
echo "cross - optional, it initializes rootfs for cross building, works only for armel tizen now"
exit 1
}

Expand Down Expand Up @@ -84,6 +85,17 @@ for i in "$@"
__UbuntuRepo=
__Tizen=tizen
;;
cross)
if [ "$__Tizen" != "tizen" ]; then
echo "Cross building rootfs is available only for armel tizen."
usage;
exit 1;
fi
# Cross building is available for armel tizen only with x86 rootfs
echo Building x86 xenial rootfs for armel tizen cross build...
$0 x86 xenial
echo Building armel rootfs...
;;
--skipunmount)
__SkipUnmount=1
;;
Expand Down
8 changes: 4 additions & 4 deletions dependencies.props
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RyuJITVersion>2.1.0-preview1-25912-02</RyuJITVersion>
<RyuJITVersion>2.1.0-preview1-25925-02</RyuJITVersion>
<ObjectWriterVersion>1.0.19-prerelease-00001</ObjectWriterVersion>
<CoreFxVersion>4.5.0-preview1-25813-02</CoreFxVersion>
<CoreFxUapVersion>4.6.0-preview1-25813-02</CoreFxUapVersion>
<MicrosoftNETCoreNativeVersion>2.1.0-preview1-25806-01</MicrosoftNETCoreNativeVersion>
<CoreFxVersion>4.5.0-preview1-25925-02</CoreFxVersion>
<CoreFxUapVersion>4.6.0-preview1-25925-02</CoreFxUapVersion>
<MicrosoftNETCoreNativeVersion>2.1.0-preview1-25925-02</MicrosoftNETCoreNativeVersion>
<MicrosoftNETCoreAppPackageVersion>2.0.0</MicrosoftNETCoreAppPackageVersion>
<XunitNetcoreExtensionsVersion>1.0.1-prerelease-02104-02</XunitNetcoreExtensionsVersion>
</PropertyGroup>
Expand Down
1 change: 1 addition & 0 deletions src/Common/src/TypeSystem/Common/ExceptionStringID.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public enum ExceptionStringID
InvalidProgramSpecific,
InvalidProgramVararg,
InvalidProgramCallVirtFinalize,
InvalidProgramNativeCallable,

// BadImageFormatException
BadImageFormatGeneric,
Expand Down
11 changes: 9 additions & 2 deletions src/Common/src/TypeSystem/IL/Stubs/ILEmitter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -442,8 +442,15 @@ internal void PatchLabels()

public void DefineSequencePoint(string document, int lineNumber)
{
Debug.Assert(_sequencePoints.Count == 0 || _sequencePoints[_sequencePoints.Count - 1].Offset < _length);
_sequencePoints.Add(new ILSequencePoint(_length, document, lineNumber));
// Last sequence point defined for this offset wins.
if (_sequencePoints.Count > 0 && _sequencePoints[_sequencePoints.Count - 1].Offset == _length)
{
_sequencePoints[_sequencePoints.Count - 1] = new ILSequencePoint(_length, document, lineNumber);
}
else
{
_sequencePoints.Add(new ILSequencePoint(_length, document, lineNumber));
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// See the LICENSE file in the project root for more information.

using System.Collections.Generic;
using System.Runtime.InteropServices;

using Internal.JitInterface;
using Internal.TypeSystem;

Expand Down Expand Up @@ -53,4 +53,17 @@ public DebugVarInfo(string name, bool isParam, TypeDesc type)
this.Ranges = new List<NativeVarInfo>();
}
}

public static class WellKnownLineNumber
{
/// <summary>
/// Informs the debugger that it should step through the annotated sequence point.
/// </summary>
public const int DebuggerStepThrough = 0xF00F00;

/// <summary>
/// Informs the debugger that it should step into the annotated sequence point.
/// </summary>
public const int DebuggerStepIn = 0xFEEFEE;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public enum ReadyToRunHelperId
DefaultConstructor,
}

public partial class ReadyToRunHelperNode : AssemblyStubNode
public partial class ReadyToRunHelperNode : AssemblyStubNode, INodeWithDebugInfo
{
private ReadyToRunHelperId _id;
private Object _target;
Expand Down Expand Up @@ -189,6 +189,45 @@ protected override DependencyList ComputeNonRelocationBasedDependencies(NodeFact
return null;
}

DebugLocInfo[] INodeWithDebugInfo.DebugLocInfos
{
get
{
if (_id == ReadyToRunHelperId.VirtualCall)
{
// Generate debug information that lets debuggers step into the virtual calls.
// We generate a step into sequence point at the point where the helper jumps to
// the target of the virtual call.
TargetDetails target = ((MethodDesc)_target).Context.Target;
int debuggerStepInOffset = -1;
switch (target.Architecture)
{
case TargetArchitecture.X64:
debuggerStepInOffset = 3;
break;
}
if (debuggerStepInOffset != -1)
{
return new DebugLocInfo[]
{
new DebugLocInfo(0, String.Empty, WellKnownLineNumber.DebuggerStepThrough),
new DebugLocInfo(debuggerStepInOffset, String.Empty, WellKnownLineNumber.DebuggerStepIn)
};
}
}

return Array.Empty<DebugLocInfo>();
}
}

DebugVarInfo[] INodeWithDebugInfo.DebugVarInfos
{
get
{
return Array.Empty<DebugVarInfo>();
}
}

#if !SUPPORT_JIT
protected internal override int ClassCode => -911637948;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ protected override void EmitCode(NodeFactory factory, ref X64Emitter encoder, bo
slot = VirtualMethodSlotHelper.GetVirtualMethodSlot(factory, targetMethod);
Debug.Assert(slot != -1);
}
Debug.Assert(((INodeWithDebugInfo)this).DebugLocInfos[1].NativeOffset == encoder.Builder.CountBytes);

AddrMode jmpAddrMode = new AddrMode(encoder.TargetRegister.Result, null, EETypeNode.GetVTableOffset(pointerSize) + (slot * pointerSize), 0, AddrModeSize.Int64);
encoder.EmitJmpToAddrMode(ref jmpAddrMode);
Expand Down
5 changes: 5 additions & 0 deletions src/ILCompiler.Compiler/src/IL/ILImporter.Scanner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,11 @@ private void ImportCall(ILOpcode opcode, int token)

TypeDesc exactType = method.OwningType;

if (method.IsNativeCallable && (opcode != ILOpcode.ldftn && opcode != ILOpcode.ldvirtftn))
{
ThrowHelper.ThrowInvalidProgramException(ExceptionStringID.InvalidProgramNativeCallable, method);
}

bool resolvedConstraint = false;
bool forceUseRuntimeLookup = false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,7 @@ public override MethodIL EmitIL()
ILEmitter emit = new ILEmitter();
ILCodeStream codeStream = emit.NewCodeStream();

// We only need the initial step over sequence point if there's any instructions before the call.
if (Signature.Length > 0)
codeStream.MarkDebuggerStepThroughPoint();
codeStream.MarkDebuggerStepThroughPoint();

for (int i = 0; i < Signature.Length; i++)
codeStream.EmitLdArg(i);
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
Expand Down Expand Up @@ -86,6 +89,7 @@
<EmbeddedResource Include="SingleDependencyGraphForm.resx">
<DependentUpon>SingleDependencyGraphForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="app.manifest" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.

<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />

Specifying requestedExecutionLevel element will disable file and registry virtualization.
Remove this element if your application requires this virtualization for backwards
compatibility.
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of the Windows versions that this application has been tested on and is
is designed to work with. Uncomment the appropriate elements and Windows will
automatically selected the most compatible environment. -->

<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->

<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->

<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->

<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->

<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->

</application>
</compatibility>

<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
-->

<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->

</assembly>
Original file line number Diff line number Diff line change
Expand Up @@ -847,12 +847,9 @@ private LLVMValueRef LLVMFunctionForMethod(MethodDesc callee, StackEntry thisPoi

private LLVMValueRef GetOrCreateMethodSlot(MethodDesc method)
{
var globalRefName = "__getslot__" + _compilation.NameMangler.GetMangledMethodName(method);
LLVMValueRef slot = LLVM.GetNamedGlobal(Module, globalRefName);
if(slot.Pointer == IntPtr.Zero)
{
slot = LLVM.AddGlobal(Module, LLVM.Int32Type(), globalRefName);
}
var vtableSlotSymbol = _compilation.NodeFactory.VTableSlot(method);
_dependencies.Add(vtableSlotSymbol);
LLVMValueRef slot = LoadAddressOfSymbolNode(vtableSlotSymbol);
return LLVM.BuildLoad(_builder, slot, string.Empty);
}

Expand Down
Loading