mirror of
https://github.com/par274/sharpemu.git
synced 2026-07-22 10:56:20 +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 end = start + length - pattern.Length;
|
||||
|
||||
for (var ptr = start; ptr < end; ptr++)
|
||||
for (var ptr = start; ptr <= end; ptr++)
|
||||
{
|
||||
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