svn commit: r514202 - in head/emulators/rpcs3: . files

Jan Beich jbeich at FreeBSD.org
Thu Oct 10 00:45:18 UTC 2019


Author: jbeich
Date: Thu Oct 10 00:45:17 2019
New Revision: 514202
URL: https://svnweb.freebsd.org/changeset/ports/514202

Log:
  emulators/rpcs3: update to 0.0.6.8835
  
  Changes:	https://github.com/RPCS3/rpcs3/compare/36de3d4f4...e9ea226e3

Added:
  head/emulators/rpcs3/files/extra-patch-revert-6b1e1e402049   (contents, props changed)
Modified:
  head/emulators/rpcs3/Makefile   (contents, props changed)
  head/emulators/rpcs3/distinfo   (contents, props changed)

Modified: head/emulators/rpcs3/Makefile
==============================================================================
--- head/emulators/rpcs3/Makefile	Thu Oct 10 00:45:10 2019	(r514201)
+++ head/emulators/rpcs3/Makefile	Thu Oct 10 00:45:17 2019	(r514202)
@@ -2,8 +2,8 @@
 
 PORTNAME=	rpcs3
 DISTVERSIONPREFIX=	v
-DISTVERSION=	0.0.7-8838 # git rev-list --count HEAD
-DISTVERSIONSUFFIX=	-g36de3d4f4
+DISTVERSION=	0.0.7-8852 # git rev-list --count HEAD
+DISTVERSIONSUFFIX=	-ge9ea226e3
 CATEGORIES=	emulators
 
 MAINTAINER=	jbeich at FreeBSD.org
@@ -50,6 +50,7 @@ LLD_UNSAFE=	yes # XXX ports/219089
 # XXX Remove after FreeBSD 11.2/12.0 reach EOL i.e., around 2020-02-01
 # XXX Switch to bundled libc++ to avoid error-prone reverts
 .if !exists(/usr/include/c++/v1/charconv) && exists(/usr/lib/libc++.so)
+EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-revert-6b1e1e402049
 EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-revert-9710473a2e3e
 EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-revert-f9ad6358563b
 EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-revert-4504ac2d1248

Modified: head/emulators/rpcs3/distinfo
==============================================================================
--- head/emulators/rpcs3/distinfo	Thu Oct 10 00:45:10 2019	(r514201)
+++ head/emulators/rpcs3/distinfo	Thu Oct 10 00:45:17 2019	(r514202)
@@ -1,6 +1,6 @@
-TIMESTAMP = 1570492353
-SHA256 (RPCS3-rpcs3-v0.0.7-8838-g36de3d4f4_GH0.tar.gz) = a1f6cfc24abd2f4c9cd44dd2968853e5ac742a428bf4c6ab7f9a6508890a36b2
-SIZE (RPCS3-rpcs3-v0.0.7-8838-g36de3d4f4_GH0.tar.gz) = 5602936
+TIMESTAMP = 1570645283
+SHA256 (RPCS3-rpcs3-v0.0.7-8852-ge9ea226e3_GH0.tar.gz) = 328558000c4ab2be09ba3ca2d2acdf168056cce8dfeac5fe4bdfe5f22f049d7e
+SIZE (RPCS3-rpcs3-v0.0.7-8852-ge9ea226e3_GH0.tar.gz) = 5604491
 SHA256 (RPCS3-hidapi-hidapi-0.8.0-rc1-27-g9220f5e_GH0.tar.gz) = 3120e0b701943f452760e45f9fc1ac50bab356ad4c807b4cac4598041c5ca1a5
 SIZE (RPCS3-hidapi-hidapi-0.8.0-rc1-27-g9220f5e_GH0.tar.gz) = 105400
 SHA256 (RPCS3-llvm-b860b5e8f4ee_GH0.tar.gz) = c151972a0c8ceac568c24b61e63d2ecbdac0f125185e23fc2238e0a14048256e

Added: head/emulators/rpcs3/files/extra-patch-revert-6b1e1e402049
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/rpcs3/files/extra-patch-revert-6b1e1e402049	Thu Oct 10 00:45:17 2019	(r514202)
@@ -0,0 +1,188 @@
+rpcs3/Emu/GDB.cpp:33:10: fatal error: 'charconv' file not found
+#include <charconv>
+         ^~~~~~~~~~
+
+--- rpcs3/Emu/GDB.cpp.orig	2019-10-09 18:21:23 UTC
++++ rpcs3/Emu/GDB.cpp
+@@ -2,7 +2,7 @@
+ 
+ #include "GDB.h"
+ #include "Utilities/Log.h"
+-#include "Utilities/StrUtil.h"
++#include <algorithm>
+ #include "Emu/Memory/vm.h"
+ #include "Emu/System.h"
+ #include "Emu/IdManager.h"
+@@ -14,24 +14,17 @@
+ #ifdef _WIN32
+ #include <WinSock2.h>
+ #include <WS2tcpip.h>
+-#include <afunix.h> // sockaddr_un
+ #else
+ #include <errno.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <netinet/tcp.h>
+-#include <netdb.h>
+ #include <arpa/inet.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+-#include <sys/un.h> // sockaddr_un
+ #endif
+ 
+-#include <algorithm>
+-#include <regex>
+-#include <charconv>
+-
+ extern void ppu_set_breakpoint(u32 addr);
+ extern void ppu_remove_breakpoint(u32 addr);
+ 
+@@ -43,22 +36,10 @@ int closesocket(int s)
+ 	return close(s);
+ }
+ 
+-void set_nonblocking(int s)
+-{
+-	fcntl(s, F_SETFL, fcntl(s, F_GETFL) | O_NONBLOCK);
+-}
+-
+ #define sscanf_s sscanf
+ #define HEX_U32 "x"
+ #define HEX_U64 "lx"
+ #else
+-
+-void set_nonblocking(int s)
+-{
+-	u_long mode = 1;
+-	ioctlsocket(s, FIONBIO, &mode);
+-}
+-
+ #define HEX_U32 "lx"
+ #define HEX_U64 "llx"
+ #endif
+@@ -122,93 +103,46 @@ u64 hex_to_u64(std::string val) {
+ 
+ void gdb_thread::start_server()
+ {
+-	// IPv4 address:port in format 127.0.0.1:2345
+-	static const std::regex ipv4_regex("^([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})\\:([0-9]{1,5})$");
++	server_socket = socket(AF_INET, SOCK_STREAM, 0);
+ 
+-	if (g_cfg.misc.gdb_server.get()[0] == '\0')
++	if (server_socket == -1)
+ 	{
+-		// Empty string or starts with null: GDB server disabled
+-		GDB.notice("GDB Server is disabled.");
++		GDB.error("Error creating server socket.");
+ 		return;
+ 	}
+ 
+-	// Try to detect socket type
+-	std::smatch match;
+-
+-	if (std::regex_match(g_cfg.misc.gdb_server.get(), match, ipv4_regex))
++#ifdef WIN32
+ 	{
+-		struct addrinfo hints{};
+-		struct addrinfo* info;
+-		hints.ai_flags    = AI_PASSIVE;
+-		hints.ai_socktype = SOCK_STREAM;
+-
+-		std::string bind_addr = match[1].str();
+-		std::string bind_port = match[2].str();
+-
+-		if (getaddrinfo(bind_addr.c_str(), bind_port.c_str(), &hints, &info) == 0)
+-		{
+-			server_socket = socket(info->ai_family, info->ai_socktype, info->ai_protocol);
+-
+-			if (server_socket == -1)
+-			{
+-				GDB.error("Error creating IP socket for '%s'.", g_cfg.misc.gdb_server.get());
+-				freeaddrinfo(info);
+-				return;
+-			}
+-
+-			set_nonblocking(server_socket);
+-
+-			if (bind(server_socket, info->ai_addr, static_cast<int>(info->ai_addrlen)) != 0)
+-			{
+-				GDB.error("Failed to bind socket on '%s'.", g_cfg.misc.gdb_server.get());
+-				freeaddrinfo(info);
+-				return;
+-			}
+-
+-			freeaddrinfo(info);
+-
+-			if (listen(server_socket, 1) != 0)
+-			{
+-				GDB.error("Failed to listen on '%s'.", g_cfg.misc.gdb_server.get());
+-				return;
+-			}
+-
+-			GDB.notice("Started listening on '%s'.", g_cfg.misc.gdb_server.get());
+-			return;
+-		}
++		int mode = 1;
++		ioctlsocket(server_socket, FIONBIO, (u_long FAR *)&mode);
+ 	}
++#else
++	fcntl(server_socket, F_SETFL, fcntl(server_socket, F_GETFL) | O_NONBLOCK);
++#endif
+ 
+-	// Fallback to UNIX socket
+-	server_socket = socket(AF_UNIX, SOCK_STREAM, 0);
++	int err;
+ 
+-	if (server_socket == -1)
+-	{
+-		GDB.error("Failed to create Unix socket. Possibly unsupported.");
+-		return;
+-	}
++	sockaddr_in server_saddr;
++	server_saddr.sin_family = AF_INET;
++	int port = 2345;
++	server_saddr.sin_port = htons(port);
++	server_saddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ 
+-	// Delete existing socket (TODO?)
+-	fs::remove_file(g_cfg.misc.gdb_server.get());
+-
+-	set_nonblocking(server_socket);
+-
+-	sockaddr_un unix_saddr;
+-	unix_saddr.sun_family = AF_UNIX;
+-	strcpy_trunc(unix_saddr.sun_path, g_cfg.misc.gdb_server.get());
+-
+-	if (bind(server_socket, (struct sockaddr*) &unix_saddr, sizeof(unix_saddr)) != 0)
++	err = bind(server_socket, (struct sockaddr *) &server_saddr, sizeof(server_saddr));
++	if (err == -1)
+ 	{
+-		GDB.error("Failed to bind Unix socket '%s'.", g_cfg.misc.gdb_server.get());
++		GDB.error("Error binding to port %d.", port);
+ 		return;
+ 	}
+ 
+-	if (listen(server_socket, 1) != 0)
++	err = listen(server_socket, 1);
++	if (err == -1)
+ 	{
+-		GDB.error("Failed to listen on Unix socket '%s'.", g_cfg.misc.gdb_server.get());
++		GDB.error("Error listening on port %d.", port);
+ 		return;
+ 	}
+ 
+-	GDB.notice("Started listening on Unix socket '%s'.", g_cfg.misc.gdb_server.get());
++	GDB.notice("Started listening on port %d.", port);
+ }
+ 
+ int gdb_thread::read(void* buf, int cnt)
+@@ -852,7 +786,7 @@ void gdb_thread::operator()()
+ {
+ 	start_server();
+ 
+-	while (server_socket != -1 && !Emu.IsStopped())
++	while (!Emu.IsStopped())
+ 	{
+ 		sockaddr_in client;
+ 		socklen_t client_len = sizeof(client);


More information about the svn-ports-head mailing list