mirror of
https://github.com/par274/sharpemu.git
synced 2026-07-25 12:18:45 +08:00
CPU: scan final TLS access pattern offset (#414)
Co-authored-by: Dafenx <196083014+Dafenxz0@users.noreply.github.com>
This commit is contained in:
@@ -252,7 +252,7 @@ public static unsafe class JitStubs
|
|||||||
var pattern = TlsAccessPattern;
|
var pattern = TlsAccessPattern;
|
||||||
var end = start + length - pattern.Length;
|
var end = start + length - pattern.Length;
|
||||||
|
|
||||||
for (var ptr = start; ptr < end; ptr++)
|
for (var ptr = start; ptr <= end; ptr++)
|
||||||
{
|
{
|
||||||
if (MatchesPattern(ptr, pattern))
|
if (MatchesPattern(ptr, pattern))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
// Copyright (C) 2026 SharpEmu Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
using SharpEmu.Core.Cpu.Native;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace SharpEmu.Libs.Tests.Cpu;
|
||||||
|
|
||||||
|
public sealed unsafe class JitStubsTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void FindTlsAccessPatterns_IncludesLastValidOffset()
|
||||||
|
{
|
||||||
|
var pattern = JitStubs.TlsAccessPattern;
|
||||||
|
var code = new byte[pattern.Length + 3];
|
||||||
|
pattern.CopyTo(code.AsSpan(3));
|
||||||
|
|
||||||
|
fixed (byte* codePointer = code)
|
||||||
|
{
|
||||||
|
var matches = JitStubs.FindTlsAccessPatterns(codePointer, code.Length);
|
||||||
|
|
||||||
|
var match = Assert.Single(matches);
|
||||||
|
Assert.Equal((nint)(codePointer + 3), match);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user