diff --git a/Source/Tests/LinuxSyscalls/Arm64/SyscallsEnum.h b/Source/Tests/LinuxSyscalls/Arm64/SyscallsEnum.h index abbb3c92..a91871bf 100644 --- a/Source/Tests/LinuxSyscalls/Arm64/SyscallsEnum.h +++ b/Source/Tests/LinuxSyscalls/Arm64/SyscallsEnum.h @@ -204,10 +204,10 @@ enum Syscalls_Arm64 { SYSCALL_Arm64_semctl = 191, SYSCALL_Arm64_semtimedop = 192, SYSCALL_Arm64_semop = 193, - SYSCALL_Arm64_shmget = 194, - SYSCALL_Arm64_shmctl = 195, - SYSCALL_Arm64_shmat = 196, - SYSCALL_Arm64_shmdt = 197, + SYSCALL_Arm64__shmget = 194, + SYSCALL_Arm64__shmctl = 195, + SYSCALL_Arm64__shmat = 196, + SYSCALL_Arm64__shmdt = 197, SYSCALL_Arm64_socket = 198, SYSCALL_Arm64_socketpair = 199, SYSCALL_Arm64_bind = 200, diff --git a/Source/Tests/LinuxSyscalls/LinuxAllocator.cpp b/Source/Tests/LinuxSyscalls/LinuxAllocator.cpp index cb310be8..90b0a50d 100644 --- a/Source/Tests/LinuxSyscalls/LinuxAllocator.cpp +++ b/Source/Tests/LinuxSyscalls/LinuxAllocator.cpp @@ -47,8 +47,8 @@ public: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset) override; int munmap(void *addr, size_t length) override; void *mremap(void *old_address, size_t old_size, size_t new_size, int flags, void *new_address) override; - uint64_t shmat(int shmid, const void* shmaddr, int shmflg, uint32_t *ResultAddress) override; - uint64_t shmdt(const void* shmaddr) override; + uint64_t Shmat(int shmid, const void* shmaddr, int shmflg, uint32_t *ResultAddress) override; + uint64_t Shmdt(const void* shmaddr) override; static constexpr bool SearchDown = true; // PageAddr is a page already shifted to page index @@ -434,7 +434,7 @@ void *MemAllocator32Bit::mremap(void *old_address, size_t old_size, size_t new_s return reinterpret_cast(-errno); } -uint64_t MemAllocator32Bit::shmat(int shmid, const void* shmaddr, int shmflg, uint32_t *ResultAddress) { +uint64_t MemAllocator32Bit::Shmat(int shmid, const void* shmaddr, int shmflg, uint32_t *ResultAddress) { std::scoped_lock lk{AllocMutex}; if (shmaddr != nullptr) { @@ -547,7 +547,7 @@ restart: } } } -uint64_t MemAllocator32Bit::shmdt(const void* shmaddr) { +uint64_t MemAllocator32Bit::Shmdt(const void* shmaddr) { uint32_t AddrPage = reinterpret_cast(shmaddr) >> FHU::FEX_PAGE_SHIFT; auto it = PageToShm.find(AddrPage); @@ -584,7 +584,7 @@ public: return reinterpret_cast(Result); } - uint64_t shmat(int shmid, const void* shmaddr, int shmflg, uint32_t *ResultAddress) override { + uint64_t Shmat(int shmid, const void* shmaddr, int shmflg, uint32_t *ResultAddress) override { uint64_t Result = (uint64_t)::shmat(shmid, reinterpret_cast(shmaddr), shmflg); if (Result != ~0ULL) { *ResultAddress = Result; @@ -593,7 +593,7 @@ public: SYSCALL_ERRNO(); } - uint64_t shmdt(const void* shmaddr) override { + uint64_t Shmdt(const void* shmaddr) override { uint64_t Result = ::shmdt(shmaddr); SYSCALL_ERRNO(); } diff --git a/Source/Tests/LinuxSyscalls/LinuxAllocator.h b/Source/Tests/LinuxSyscalls/LinuxAllocator.h index 0fa8f0ba..a12947a5 100644 --- a/Source/Tests/LinuxSyscalls/LinuxAllocator.h +++ b/Source/Tests/LinuxSyscalls/LinuxAllocator.h @@ -12,8 +12,9 @@ namespace FEX::HLE { virtual void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset) = 0; virtual int munmap(void *addr, size_t length) = 0; virtual void *mremap(void *old_address, size_t old_size, size_t new_size, int flags, void *new_address) = 0; - virtual uint64_t shmat(int shmid, const void* shmaddr, int shmflg, uint32_t *ResultAddress) = 0; - virtual uint64_t shmdt(const void* shmaddr) = 0; + // Global symbol collision on undercase + virtual uint64_t Shmat(int shmid, const void* shmaddr, int shmflg, uint32_t *ResultAddress) = 0; + virtual uint64_t Shmdt(const void* shmaddr) = 0; }; std::unique_ptr Create32BitAllocator(); diff --git a/Source/Tests/LinuxSyscalls/Syscalls/SHM.cpp b/Source/Tests/LinuxSyscalls/Syscalls/SHM.cpp index f3be716e..fa537d92 100644 --- a/Source/Tests/LinuxSyscalls/Syscalls/SHM.cpp +++ b/Source/Tests/LinuxSyscalls/Syscalls/SHM.cpp @@ -18,14 +18,14 @@ namespace FEX::HLE { void RegisterSHM() { using namespace FEXCore::IR; - REGISTER_SYSCALL_IMPL_PASS_FLAGS(shmget, SyscallFlags::OPTIMIZETHROUGH | SyscallFlags::NOSYNCSTATEONENTRY, + REGISTER_SYSCALL_IMPL_PASS_FLAGS(_shmget, SyscallFlags::OPTIMIZETHROUGH | SyscallFlags::NOSYNCSTATEONENTRY, [](FEXCore::Core::CpuStateFrame *Frame, key_t key, size_t size, int shmflg) -> uint64_t { uint64_t Result = shmget(key, size, shmflg); SYSCALL_ERRNO(); }); // XXX: shmid_ds is definitely not correct for 32-bit - REGISTER_SYSCALL_IMPL_PASS_FLAGS(shmctl, SyscallFlags::OPTIMIZETHROUGH | SyscallFlags::NOSYNCSTATEONENTRY, + REGISTER_SYSCALL_IMPL_PASS_FLAGS(_shmctl, SyscallFlags::OPTIMIZETHROUGH | SyscallFlags::NOSYNCSTATEONENTRY, [](FEXCore::Core::CpuStateFrame *Frame, int shmid, int cmd, struct shmid_ds *buf) -> uint64_t { uint64_t Result = ::shmctl(shmid, cmd, buf); SYSCALL_ERRNO(); diff --git a/Source/Tests/LinuxSyscalls/x32/Memory.cpp b/Source/Tests/LinuxSyscalls/x32/Memory.cpp index 1254df8b..91851ef4 100644 --- a/Source/Tests/LinuxSyscalls/x32/Memory.cpp +++ b/Source/Tests/LinuxSyscalls/x32/Memory.cpp @@ -94,10 +94,10 @@ namespace FEX::HLE::x32 { SYSCALL_ERRNO(); }); - REGISTER_SYSCALL_IMPL_X32(shmat, [](FEXCore::Core::CpuStateFrame *Frame, int shmid, const void *shmaddr, int shmflg) -> uint64_t { + REGISTER_SYSCALL_IMPL_X32(_shmat, [](FEXCore::Core::CpuStateFrame *Frame, int shmid, const void *shmaddr, int shmflg) -> uint64_t { uint32_t ResultAddr{}; uint64_t Result = static_cast(FEX::HLE::_SyscallHandler)->GetAllocator()-> - shmat(shmid, reinterpret_cast(shmaddr), shmflg, &ResultAddr); + Shmat(shmid, reinterpret_cast(shmaddr), shmflg, &ResultAddr); if (Result == 0) { return ResultAddr; } @@ -106,9 +106,9 @@ namespace FEX::HLE::x32 { } }); - REGISTER_SYSCALL_IMPL_X32(shmdt, [](FEXCore::Core::CpuStateFrame *Frame, const void *shmaddr) -> uint64_t { + REGISTER_SYSCALL_IMPL_X32(_shmdt, [](FEXCore::Core::CpuStateFrame *Frame, const void *shmaddr) -> uint64_t { uint64_t Result = static_cast(FEX::HLE::_SyscallHandler)->GetAllocator()-> - shmdt(shmaddr); + Shmdt(shmaddr); SYSCALL_ERRNO(); }); } diff --git a/Source/Tests/LinuxSyscalls/x32/Semaphore.cpp b/Source/Tests/LinuxSyscalls/x32/Semaphore.cpp index 7cb79fe8..36a096a4 100644 --- a/Source/Tests/LinuxSyscalls/x32/Semaphore.cpp +++ b/Source/Tests/LinuxSyscalls/x32/Semaphore.cpp @@ -280,12 +280,12 @@ namespace FEX::HLE::x32 { } case OP_SHMAT: { Result = static_cast(FEX::HLE::_SyscallHandler)->GetAllocator()-> - shmat(first, reinterpret_cast(ptr), second, reinterpret_cast(third)); + Shmat(first, reinterpret_cast(ptr), second, reinterpret_cast(third)); break; } case OP_SHMDT: { Result = static_cast(FEX::HLE::_SyscallHandler)->GetAllocator()-> - shmdt(reinterpret_cast(ptr)); + Shmdt(reinterpret_cast(ptr)); break; } case OP_SHMGET: { @@ -309,7 +309,7 @@ namespace FEX::HLE::x32 { else { buf = *shmun.buf32; } - Result = ::syscall(SYSCALL_DEF(shmctl), shmid, cmd, &buf); + Result = ::syscall(SYSCALL_DEF(_shmctl), shmid, cmd, &buf); // IPC_SET sets the internal data structure that the kernel uses // No need to writeback break; @@ -318,7 +318,7 @@ namespace FEX::HLE::x32 { case SHM_STAT_ANY: case IPC_STAT: { struct shmid64_ds buf{}; - Result = ::syscall(SYSCALL_DEF(shmctl), shmid, cmd, &buf); + Result = ::syscall(SYSCALL_DEF(_shmctl), shmid, cmd, &buf); if (Result != -1) { if (IPC64) { *shmun.buf64 = buf; @@ -331,7 +331,7 @@ namespace FEX::HLE::x32 { } case IPC_INFO: { struct shminfo si{}; - Result = ::syscall(SYSCALL_DEF(shmctl), shmid, cmd, reinterpret_cast(&si)); + Result = ::syscall(SYSCALL_DEF(_shmctl), shmid, cmd, reinterpret_cast(&si)); if (Result != -1) { if (IPC64) { *shmun.__buf64 = si; @@ -344,7 +344,7 @@ namespace FEX::HLE::x32 { } case SHM_INFO: { struct shm_info si{}; - Result = ::syscall(SYSCALL_DEF(shmctl), shmid, cmd, reinterpret_cast(&si)); + Result = ::syscall(SYSCALL_DEF(_shmctl), shmid, cmd, reinterpret_cast(&si)); if (Result != -1) { // SHM_INFO doesn't follow IPC64 behaviour *shmun.__buf_info_32 = si; @@ -352,13 +352,13 @@ namespace FEX::HLE::x32 { break; } case SHM_LOCK: - Result = ::syscall(SYSCALL_DEF(shmctl), shmid, cmd, nullptr); + Result = ::syscall(SYSCALL_DEF(_shmctl), shmid, cmd, nullptr); break; case SHM_UNLOCK: - Result = ::syscall(SYSCALL_DEF(shmctl), shmid, cmd, nullptr); + Result = ::syscall(SYSCALL_DEF(_shmctl), shmid, cmd, nullptr); break; case IPC_RMID: - Result = ::syscall(SYSCALL_DEF(shmctl), shmid, cmd, nullptr); + Result = ::syscall(SYSCALL_DEF(_shmctl), shmid, cmd, nullptr); break; default: diff --git a/Source/Tests/LinuxSyscalls/x32/SyscallsEnum.h b/Source/Tests/LinuxSyscalls/x32/SyscallsEnum.h index 341678a2..b8bc99eb 100644 --- a/Source/Tests/LinuxSyscalls/x32/SyscallsEnum.h +++ b/Source/Tests/LinuxSyscalls/x32/SyscallsEnum.h @@ -410,10 +410,10 @@ enum Syscalls_x86 { SYSCALL_x86_rseq = 386, SYSCALL_x86_semget = 393, SYSCALL_x86_semctl = 394, - SYSCALL_x86_shmget = 395, - SYSCALL_x86_shmctl = 396, - SYSCALL_x86_shmat = 397, - SYSCALL_x86_shmdt = 398, + SYSCALL_x86__shmget = 395, + SYSCALL_x86__shmctl = 396, + SYSCALL_x86__shmat = 397, + SYSCALL_x86__shmdt = 398, SYSCALL_x86_msgget = 399, SYSCALL_x86_msgsnd = 400, SYSCALL_x86_msgrcv = 401, diff --git a/Source/Tests/LinuxSyscalls/x64/Memory.cpp b/Source/Tests/LinuxSyscalls/x64/Memory.cpp index 7fa02d2d..acae1027 100644 --- a/Source/Tests/LinuxSyscalls/x64/Memory.cpp +++ b/Source/Tests/LinuxSyscalls/x64/Memory.cpp @@ -119,13 +119,13 @@ namespace FEX::HLE::x64 { SYSCALL_ERRNO(); }); - REGISTER_SYSCALL_IMPL_X64_PASS_FLAGS(shmat, SyscallFlags::OPTIMIZETHROUGH | SyscallFlags::NOSYNCSTATEONENTRY, + REGISTER_SYSCALL_IMPL_X64_PASS_FLAGS(_shmat, SyscallFlags::OPTIMIZETHROUGH | SyscallFlags::NOSYNCSTATEONENTRY, [](FEXCore::Core::CpuStateFrame *Frame, int shmid, const void *shmaddr, int shmflg) -> uint64_t { uint64_t Result = reinterpret_cast(shmat(shmid, shmaddr, shmflg)); SYSCALL_ERRNO(); }); - REGISTER_SYSCALL_IMPL_X64_PASS_FLAGS(shmdt, SyscallFlags::OPTIMIZETHROUGH | SyscallFlags::NOSYNCSTATEONENTRY, + REGISTER_SYSCALL_IMPL_X64_PASS_FLAGS(_shmdt, SyscallFlags::OPTIMIZETHROUGH | SyscallFlags::NOSYNCSTATEONENTRY, [](FEXCore::Core::CpuStateFrame *Frame, const void *shmaddr) -> uint64_t { uint64_t Result = ::shmdt(shmaddr); SYSCALL_ERRNO(); diff --git a/Source/Tests/LinuxSyscalls/x64/SyscallsEnum.h b/Source/Tests/LinuxSyscalls/x64/SyscallsEnum.h index 53c05c03..75db8832 100644 --- a/Source/Tests/LinuxSyscalls/x64/SyscallsEnum.h +++ b/Source/Tests/LinuxSyscalls/x64/SyscallsEnum.h @@ -36,9 +36,9 @@ enum Syscalls_x64 { SYSCALL_x64_msync = 26, SYSCALL_x64_mincore = 27, SYSCALL_x64_madvise = 28, - SYSCALL_x64_shmget = 29, - SYSCALL_x64_shmat = 30, - SYSCALL_x64_shmctl = 31, + SYSCALL_x64__shmget = 29, + SYSCALL_x64__shmat = 30, + SYSCALL_x64__shmctl = 31, SYSCALL_x64_dup = 32, SYSCALL_x64_dup2 = 33, SYSCALL_x64_pause = 34, @@ -74,7 +74,7 @@ enum Syscalls_x64 { SYSCALL_x64_semget = 64, SYSCALL_x64_semop = 65, SYSCALL_x64_semctl = 66, - SYSCALL_x64_shmdt = 67, + SYSCALL_x64__shmdt = 67, SYSCALL_x64_msgget = 68, SYSCALL_x64_msgsnd = 69, SYSCALL_x64_msgrcv = 70,