mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-12 13:13:43 +00:00
Continue fixing strict aliasing warnings
This commit is contained in:
parent
aff63028d4
commit
c22e1e71f0
@ -16,6 +16,7 @@
|
||||
#include "Utilities/StrUtil.h"
|
||||
#include "Utilities/span.h"
|
||||
#include "util/init_mutex.hpp"
|
||||
#include "util/asm.hpp"
|
||||
|
||||
#include <thread>
|
||||
|
||||
@ -1343,7 +1344,7 @@ error_code cellDiscGameGetBootDiscInfo(vm::ptr<CellDiscGameSystemFileParam> getP
|
||||
}
|
||||
|
||||
// Always sets 0 at first dword
|
||||
reinterpret_cast<nse_t<u32, 1>*>(getParam->titleId)[0] = 0;
|
||||
*utils::bless<nse_t<u32, 1>>(getParam->titleId + 0) = 0;
|
||||
|
||||
// This is also called by non-disc games, see NPUB90029
|
||||
static const std::string dir = "/dev_bdvd/PS3_GAME"s;
|
||||
|
@ -9,6 +9,8 @@
|
||||
#include "Emu/Cell/lv2/sys_fs.h"
|
||||
#include "cellGifDec.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
LOG_CHANNEL(cellGifDec);
|
||||
|
||||
// Temporarily
|
||||
@ -131,8 +133,8 @@ error_code cellGifDecReadHeader(PMainHandle mainHandle, PSubHandle subHandle, PI
|
||||
}
|
||||
}
|
||||
|
||||
if (*reinterpret_cast<be_t<u32>*>(buffer) != 0x47494638u ||
|
||||
(*reinterpret_cast<le_t<u16>*>(buffer + 4) != 0x6139u && *reinterpret_cast<le_t<u16>*>(buffer + 4) != 0x6137u)) // Error: The first 6 bytes are not a valid GIF signature
|
||||
if (*utils::bless<be_t<u32>>(buffer + 0) != 0x47494638u ||
|
||||
(*utils::bless<le_t<u16>>(buffer + 4) != 0x6139u && *utils::bless<le_t<u16>>(buffer + 4) != 0x6137u)) // Error: The first 6 bytes are not a valid GIF signature
|
||||
{
|
||||
return CELL_GIFDEC_ERROR_STREAM_FORMAT; // Surprisingly there is no error code related with headerss
|
||||
}
|
||||
|
@ -9,6 +9,8 @@
|
||||
#include "Emu/Cell/lv2/sys_fs.h"
|
||||
#include "cellJpgDec.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
LOG_CHANNEL(cellJpgDec);
|
||||
|
||||
// Temporarily
|
||||
@ -146,8 +148,8 @@ error_code cellJpgDecReadHeader(u32 mainHandle, u32 subHandle, vm::ptr<CellJpgDe
|
||||
}
|
||||
}
|
||||
|
||||
if (*reinterpret_cast<le_t<u32>*>(buffer.get()) != 0xE0FFD8FF || // Error: Not a valid SOI header
|
||||
*reinterpret_cast<u32*>(buffer.get() + 6) != "JFIF"_u32) // Error: Not a valid JFIF string
|
||||
if (*utils::bless<le_t<u32>>(buffer.get() + 0) != 0xE0FFD8FF || // Error: Not a valid SOI header
|
||||
*utils::bless<u32>(buffer.get() + 6) != "JFIF"_u32) // Error: Not a valid JFIF string
|
||||
{
|
||||
return CELL_JPGDEC_ERROR_HEADER;
|
||||
}
|
||||
|
@ -16,6 +16,8 @@ typedef const char *HostCode;
|
||||
|
||||
#include "cellL10n.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
LOG_CHANNEL(cellL10n);
|
||||
|
||||
// Translate code id to code name. some codepage may has another name.
|
||||
@ -235,7 +237,7 @@ s32 _ConvertStr(s32 src_code, const void *src, s32 src_len, s32 dst_code, void *
|
||||
if (dst != NULL)
|
||||
{
|
||||
usz dstLen = *dst_len;
|
||||
usz ictd = iconv(ict, const_cast<char**>(reinterpret_cast<const char**>(&src)), &srcLen, reinterpret_cast<char**>(&dst), &dstLen);
|
||||
usz ictd = iconv(ict, utils::bless<char*>(&src), &srcLen, utils::bless<char*>(&dst), &dstLen);
|
||||
*dst_len -= dstLen;
|
||||
if (ictd == umax)
|
||||
{
|
||||
@ -260,7 +262,7 @@ s32 _ConvertStr(s32 src_code, const void *src, s32 src_len, s32 dst_code, void *
|
||||
{
|
||||
//char *bufPtr = buf;
|
||||
usz bufLeft = sizeof(buf);
|
||||
usz ictd = iconv(ict, const_cast<char**>(reinterpret_cast<const char**>(&src)), &srcLen, reinterpret_cast<char**>(&dst), &bufLeft);
|
||||
usz ictd = iconv(ict, utils::bless<char*>(&src), &srcLen, utils::bless<char*>(&dst), &bufLeft);
|
||||
*dst_len += sizeof(buf) - bufLeft;
|
||||
if (ictd == umax && errno != E2BIG)
|
||||
{
|
||||
|
@ -548,7 +548,7 @@ struct nt_p2p_port
|
||||
|
||||
auto* hdr_ptr = reinterpret_cast<lv2_socket::p2ps_i::encapsulated_tcp *>(packet_data+sizeof(u16));
|
||||
hdr_ptr->checksum = 0;
|
||||
hdr_ptr->checksum = tcp_checksum(reinterpret_cast<u16 *>(hdr_ptr), sizeof(lv2_socket::p2ps_i::encapsulated_tcp) + datasize);
|
||||
hdr_ptr->checksum = tcp_checksum(utils::bless<u16>(hdr_ptr), sizeof(lv2_socket::p2ps_i::encapsulated_tcp) + datasize);
|
||||
|
||||
return packet;
|
||||
}
|
||||
|
@ -2,6 +2,8 @@
|
||||
#include "Skylander.h"
|
||||
#include "Emu/Cell/lv2/sys_usbd.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
LOG_CHANNEL(skylander_log, "skylander");
|
||||
|
||||
sky_portal g_skyportal;
|
||||
@ -89,9 +91,9 @@ void sky_portal::get_status(u8* reply_buf)
|
||||
status |= s.status;
|
||||
}
|
||||
|
||||
memset(reply_buf, 0, 0x20);
|
||||
std::memset(reply_buf, 0, 0x20);
|
||||
reply_buf[0] = 0x53;
|
||||
reinterpret_cast<le_t<u16>&>(reply_buf[1]) = status;
|
||||
*utils::bless<le_t<u16>>(reply_buf + 1) = status;
|
||||
reply_buf[5] = interrupt_counter++;
|
||||
reply_buf[6] = 0x01;
|
||||
}
|
||||
@ -157,7 +159,7 @@ u8 sky_portal::load_skylander(u8* buf, fs::file in_file)
|
||||
{
|
||||
std::lock_guard lock(sky_mutex);
|
||||
|
||||
u32 sky_serial = reinterpret_cast<le_t<u32>&>(buf[0]);
|
||||
u32 sky_serial = *utils::bless<le_t<u32>>(buf);
|
||||
u8 found_slot = 0xFF;
|
||||
|
||||
// mimics spot retaining on the portal
|
||||
|
@ -11,6 +11,8 @@
|
||||
#include "Emu/IdManager.h"
|
||||
#include "Emu/System.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
#include "generated/np2_structs_generated.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
@ -421,8 +423,8 @@ bool rpcn_client::manage_connection()
|
||||
{
|
||||
if (msg.size() == 6)
|
||||
{
|
||||
addr_sig = reinterpret_cast<const le_t<u32>&>(msg[0]);
|
||||
port_sig = reinterpret_cast<const be_t<u16>&>(msg[4]);
|
||||
addr_sig = *utils::bless<le_t<u32>>(&msg[0]);
|
||||
port_sig = *utils::bless<be_t<u16>>(&msg[4]);
|
||||
|
||||
[[maybe_unused]] in_addr orig{};
|
||||
orig.s_addr = addr_sig;
|
||||
@ -440,7 +442,7 @@ bool rpcn_client::manage_connection()
|
||||
{
|
||||
std::vector<u8> ping(9);
|
||||
ping[0] = 1;
|
||||
*reinterpret_cast<le_t<s64>*>(&ping[1]) = user_id;
|
||||
*utils::bless<le_t<s64, 1>>(&ping[1]) = user_id;
|
||||
if (send_packet_from_p2p_port(ping, addr_rpcn_udp) == -1)
|
||||
{
|
||||
rpcn_log.error("Failed to send ping to rpcn!");
|
||||
@ -462,9 +464,9 @@ bool rpcn_client::manage_connection()
|
||||
}
|
||||
|
||||
const u8 packet_type = header[0];
|
||||
const u16 command = reinterpret_cast<le_t<u16>&>(header[1]);
|
||||
const u16 packet_size = reinterpret_cast<le_t<u16>&>(header[3]);
|
||||
const u32 packet_id = reinterpret_cast<le_t<u32>&>(header[5]);
|
||||
const u16 command = *utils::bless<le_t<u16>>(&header[1]);
|
||||
const u16 packet_size = *utils::bless<le_t<u16>>(&header[3]);
|
||||
const u32 packet_id = *utils::bless<le_t<u32>>(&header[5]);
|
||||
|
||||
if (packet_size < RPCN_HEADER_SIZE)
|
||||
return error_and_disconnect("Invalid packet size");
|
||||
@ -844,7 +846,7 @@ bool rpcn_client::search_room(u32 req_id, const SceNpCommunicationId& communicat
|
||||
}
|
||||
flatbuffers::Offset<flatbuffers::Vector<u16>> attrid_vec;
|
||||
if (req->attrIdNum)
|
||||
attrid_vec = builder.CreateVector(reinterpret_cast<const u16*>(req->attrId.get_ptr()), req->attrIdNum);
|
||||
attrid_vec = builder.CreateVector(utils::bless<const u16>(req->attrId.get_ptr()), req->attrIdNum);
|
||||
|
||||
SearchRoomRequestBuilder s_req(builder);
|
||||
s_req.add_option(req->option);
|
||||
@ -940,7 +942,7 @@ bool rpcn_client::get_roomdata_internal(u32 req_id, const SceNpCommunicationId&
|
||||
|
||||
flatbuffers::Offset<flatbuffers::Vector<u16>> final_attr_ids_vec;
|
||||
if (req->attrIdNum)
|
||||
final_attr_ids_vec = builder.CreateVector(reinterpret_cast<const u16*>(req->attrId.get_ptr()), req->attrIdNum);
|
||||
final_attr_ids_vec = builder.CreateVector(utils::bless<const u16>(req->attrId.get_ptr()), req->attrIdNum);
|
||||
|
||||
auto req_finished = CreateGetRoomDataInternalRequest(builder, req->roomId, final_attr_ids_vec);
|
||||
|
||||
@ -994,7 +996,7 @@ bool rpcn_client::set_roomdata_internal(u32 req_id, const SceNpCommunicationId&
|
||||
|
||||
flatbuffers::Offset<flatbuffers::Vector<u16>> final_ownerprivilege_vec;
|
||||
if (req->ownerPrivilegeRankNum)
|
||||
final_ownerprivilege_vec = builder.CreateVector(reinterpret_cast<const u16*>(req->ownerPrivilegeRank.get_ptr()), req->ownerPrivilegeRankNum);
|
||||
final_ownerprivilege_vec = builder.CreateVector(utils::bless<const u16>(req->ownerPrivilegeRank.get_ptr()), req->ownerPrivilegeRankNum);
|
||||
|
||||
auto req_finished =
|
||||
CreateSetRoomDataInternalRequest(builder, req->roomId, req->flagFilter, req->flagAttr, final_binattrinternal_vec, final_grouppasswordconfig_vec, final_passwordSlotMask, final_ownerprivilege_vec);
|
||||
@ -1021,7 +1023,7 @@ bool rpcn_client::ping_room_owner(u32 req_id, const SceNpCommunicationId& commun
|
||||
data.resize(COMMUNICATION_ID_SIZE + sizeof(u64));
|
||||
|
||||
memcpy(data.data(), communication_id.data, COMMUNICATION_ID_SIZE);
|
||||
reinterpret_cast<le_t<u64>&>(data[COMMUNICATION_ID_SIZE]) = room_id;
|
||||
*utils::bless<le_t<u64>>(&data[COMMUNICATION_ID_SIZE]) = room_id;
|
||||
|
||||
if (!forge_send(CommandType::PingRoomOwner, req_id, data))
|
||||
return false;
|
||||
|
@ -5,6 +5,8 @@
|
||||
#include <chrono>
|
||||
#include "Utilities/mutex.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <winsock2.h>
|
||||
#include <WS2tcpip.h>
|
||||
@ -45,7 +47,7 @@ public:
|
||||
error = true;
|
||||
return 0;
|
||||
}
|
||||
T res = reinterpret_cast<le_t<T>&>(vec[i]);
|
||||
T res = *utils::bless<le_t<T, 1>>(&vec[i]);
|
||||
i += sizeof(T);
|
||||
return res;
|
||||
}
|
||||
@ -84,7 +86,7 @@ public:
|
||||
template <typename T>
|
||||
void insert(T value)
|
||||
{
|
||||
value = reinterpret_cast<le_t<T>>(value);
|
||||
value = std::bit_cast<le_t<T>, T>(value);
|
||||
// resize + memcpy instead?
|
||||
for (usz index = 0; index < sizeof(T); index++)
|
||||
{
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
#include "util/to_endian.hpp"
|
||||
#include "util/sysinfo.hpp"
|
||||
#include "util/asm.hpp"
|
||||
|
||||
#include "emmintrin.h"
|
||||
#include "immintrin.h"
|
||||
@ -142,8 +143,8 @@ namespace
|
||||
|
||||
if (remaining)
|
||||
{
|
||||
const auto src_ptr2 = reinterpret_cast<const se_t<u32, true, 1>*>(src_ptr);
|
||||
const auto dst_ptr2 = reinterpret_cast<nse_t<u32, 1>*>(dst_ptr);
|
||||
const auto src_ptr2 = utils::bless<const se_t<u32, true, 1>>(src_ptr);
|
||||
const auto dst_ptr2 = utils::bless<nse_t<u32, 1>>(dst_ptr);
|
||||
|
||||
for (u32 i = 0; i < remaining; ++i)
|
||||
dst_ptr2[i] = src_ptr2[i];
|
||||
@ -220,8 +221,8 @@ namespace
|
||||
|
||||
if (remaining)
|
||||
{
|
||||
const auto src_ptr2 = reinterpret_cast<const se_t<u32, true, 1>*>(src_ptr);
|
||||
const auto dst_ptr2 = reinterpret_cast<nse_t<u32, 1>*>(dst_ptr);
|
||||
const auto src_ptr2 = utils::bless<const se_t<u32, true, 1>>(src_ptr);
|
||||
const auto dst_ptr2 = utils::bless<nse_t<u32, 1>>(dst_ptr);
|
||||
|
||||
for (u32 i = 0; i < remaining; ++i)
|
||||
{
|
||||
@ -285,8 +286,8 @@ namespace
|
||||
|
||||
if (remaining)
|
||||
{
|
||||
auto src_ptr2 = reinterpret_cast<const se_t<u16, true, 1>*>(src_ptr);
|
||||
auto dst_ptr2 = reinterpret_cast<nse_t<u16, 1>*>(dst_ptr);
|
||||
auto src_ptr2 = utils::bless<const se_t<u16, true, 1>>(src_ptr);
|
||||
auto dst_ptr2 = utils::bless<nse_t<u16, 1>>(dst_ptr);
|
||||
|
||||
for (u32 i = 0; i < remaining; ++i)
|
||||
dst_ptr2[i] = src_ptr2[i];
|
||||
@ -349,8 +350,8 @@ namespace
|
||||
const u8 attribute_sz = min_block_size >> 2;
|
||||
for (u32 n = 0; n < remainder; ++n)
|
||||
{
|
||||
auto src_ptr2 = reinterpret_cast<const be_t<u32>*>(src_ptr);
|
||||
auto dst_ptr2 = reinterpret_cast<u32*>(dst_ptr);
|
||||
auto src_ptr2 = utils::bless<const be_t<u32>>(src_ptr);
|
||||
auto dst_ptr2 = utils::bless<u32>(dst_ptr);
|
||||
|
||||
for (u32 v = 0; v < attribute_sz; ++v)
|
||||
dst_ptr2[v] = src_ptr2[v];
|
||||
@ -415,8 +416,8 @@ namespace
|
||||
const u8 attribute_sz = min_block_size >> 1;
|
||||
for (u32 n = 0; n < remainder; ++n)
|
||||
{
|
||||
auto src_ptr2 = reinterpret_cast<const be_t<u16>*>(src_ptr);
|
||||
auto dst_ptr2 = reinterpret_cast<u16*>(dst_ptr);
|
||||
auto src_ptr2 = utils::bless<const be_t<u16>>(src_ptr);
|
||||
auto dst_ptr2 = utils::bless<u16>(dst_ptr);
|
||||
|
||||
for (u32 v = 0; v < attribute_sz; ++v)
|
||||
dst_ptr2[v] = src_ptr2[v];
|
||||
|
@ -2,6 +2,8 @@
|
||||
#include "ds3_pad_handler.h"
|
||||
#include "Emu/Io/pad_config.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
LOG_CHANNEL(ds3_log, "DS3");
|
||||
|
||||
struct ds3_rumble
|
||||
@ -444,14 +446,14 @@ void ds3_pad_handler::get_extended_info(const std::shared_ptr<PadDevice>& device
|
||||
|
||||
#ifdef _WIN32
|
||||
// Official Sony Windows DS3 driver seems to do the same modification of this value as the ps3
|
||||
pad->m_sensors[0].m_value = *reinterpret_cast<le_t<u16, 1>*>(&ds3dev->padData[41 + DS3_HID_OFFSET]);
|
||||
pad->m_sensors[0].m_value = *utils::bless<le_t<u16, 1>>(&ds3dev->padData[41 + DS3_HID_OFFSET]);
|
||||
#else
|
||||
// When getting raw values from the device this adjustement is needed
|
||||
pad->m_sensors[0].m_value = 512 - (*reinterpret_cast<le_t<u16, 1>*>(&ds3dev->padData[41]) - 512);
|
||||
pad->m_sensors[0].m_value = 512 - (*utils::bless<le_t<u16, 1>>(&ds3dev->padData[41]) - 512);
|
||||
#endif
|
||||
pad->m_sensors[1].m_value = *reinterpret_cast<le_t<u16, 1>*>(&ds3dev->padData[45 + DS3_HID_OFFSET]);
|
||||
pad->m_sensors[2].m_value = *reinterpret_cast<le_t<u16, 1>*>(&ds3dev->padData[43 + DS3_HID_OFFSET]);
|
||||
pad->m_sensors[3].m_value = *reinterpret_cast<le_t<u16, 1>*>(&ds3dev->padData[47 + DS3_HID_OFFSET]);
|
||||
pad->m_sensors[1].m_value = *utils::bless<le_t<u16, 1>>(&ds3dev->padData[45 + DS3_HID_OFFSET]);
|
||||
pad->m_sensors[2].m_value = *utils::bless<le_t<u16, 1>>(&ds3dev->padData[43 + DS3_HID_OFFSET]);
|
||||
pad->m_sensors[3].m_value = *utils::bless<le_t<u16, 1>>(&ds3dev->padData[47 + DS3_HID_OFFSET]);
|
||||
|
||||
// Those are formulas used to adjust sensor values in sys_hid code but I couldn't find all the vars.
|
||||
//auto polish_value = [](s32 value, s32 dword_0x0, s32 dword_0x4, s32 dword_0x8, s32 dword_0xC, s32 dword_0x18, s32 dword_0x1C) -> u16
|
||||
|
@ -2,6 +2,8 @@
|
||||
#include "custom_dialog.h"
|
||||
#include "Emu/Cell/Modules/cellMsgDialog.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
#include <QDialogButtonBox>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
@ -173,7 +175,7 @@ void osk_dialog_frame::Create(const std::string& title, const std::u16string& me
|
||||
|
||||
void osk_dialog_frame::SetOskText(const QString& text)
|
||||
{
|
||||
std::memcpy(osk_text, reinterpret_cast<const char16_t*>(text.constData()), (text.size() + 1u) * sizeof(char16_t));
|
||||
std::memcpy(osk_text, utils::bless<char16_t>(text.constData()), (text.size() + 1u) * sizeof(char16_t));
|
||||
}
|
||||
|
||||
void osk_dialog_frame::Close(bool accepted)
|
||||
|
@ -6,6 +6,8 @@
|
||||
#include "skylander_dialog.h"
|
||||
#include "Emu/Io/Skylander.h"
|
||||
|
||||
#include "util/asm.hpp"
|
||||
|
||||
#include <QLabel>
|
||||
#include <QGroupBox>
|
||||
#include <QFileDialog>
|
||||
@ -643,17 +645,17 @@ skylander_creator_dialog::skylander_creator_dialog(QWidget* parent)
|
||||
std::array<u8, 0x40 * 0x10> buf{};
|
||||
auto data = buf.data();
|
||||
// Set the block permissions
|
||||
reinterpret_cast<le_t<u32>&>(data[0x36]) = 0x690F0F0F;
|
||||
*utils::bless<le_t<u32>>(&data[0x36]) = 0x690F0F0F;
|
||||
for (u32 index = 1; index < 0x10; index++)
|
||||
{
|
||||
reinterpret_cast<le_t<u32>&>(data[(index * 0x40) + 0x36]) = 0x69080F7F;
|
||||
*utils::bless<le_t<u32>>(&data[(index * 0x40) + 0x36]) = 0x69080F7F;
|
||||
}
|
||||
// Set the skylander infos
|
||||
reinterpret_cast<le_t<u16>&>(data[0]) = (sky_id | sky_var) + 1;
|
||||
reinterpret_cast<le_t<u16>&>(data[0x10]) = sky_id;
|
||||
reinterpret_cast<le_t<u16>&>(data[0x1C]) = sky_var;
|
||||
*utils::bless<le_t<u16>>(&data[0]) = (sky_id | sky_var) + 1;
|
||||
*utils::bless<le_t<u16>>(&data[0x10]) = sky_id;
|
||||
*utils::bless<le_t<u16>>(&data[0x1C]) = sky_var;
|
||||
// Set checksum
|
||||
reinterpret_cast<le_t<u16>&>(data[0x1E]) = skylander_crc16(0xFFFF, data, 0x1E);
|
||||
*utils::bless<le_t<u16>>(&data[0x1E]) = skylander_crc16(0xFFFF, data, 0x1E);
|
||||
|
||||
sky_file.write(buf.data(), buf.size());
|
||||
sky_file.close();
|
||||
|
Loading…
x
Reference in New Issue
Block a user