Index: head/emulators/rpcs3/Makefile =================================================================== --- head/emulators/rpcs3/Makefile (revision 514361) +++ head/emulators/rpcs3/Makefile (revision 514362) @@ -1,93 +1,89 @@ # $FreeBSD$ PORTNAME= rpcs3 DISTVERSIONPREFIX= v -DISTVERSION= 0.0.7-8861 # git rev-list --count HEAD -DISTVERSIONSUFFIX= -g0172e097f +DISTVERSION= 0.0.7-8871 # git rev-list --count HEAD +DISTVERSIONSUFFIX= -g9bcd7b534 CATEGORIES= emulators MAINTAINER= jbeich@FreeBSD.org COMMENT= PS3 emulator/debugger LICENSE= BSD3CLAUSE BSL GPLv2 MIT ZLIB LICENSE_COMB= multi LICENSE_FILE_BSD3CLAUSE=${WRKSRC_cereal}/LICENSE LICENSE_FILE_MIT= ${WRKSRC_GSL}/LICENSE LICENSE_FILE_ZLIB= ${WRKSRC_asmjit}/LICENSE.md LIB_DEPENDS= libpng.so:graphics/png \ libavcodec.so:multimedia/ffmpeg ONLY_FOR_ARCHS= amd64 ONLY_FOR_ARCHS_REASON= requires int128 and SSE2 USE_GITHUB= yes GH_ACCOUNT= RPCS3 GH_TUPLE= RPCS3:hidapi:hidapi-0.8.0-rc1-27-g9220f5e:hidapi/3rdparty/hidapi \ RPCS3:llvm:b860b5e8f4ee:llvm/llvm \ Cyan4973:xxHash:v0.6.5:xxHash/3rdparty/xxHash \ jbeder:yaml-cpp:yaml-cpp-0.6.2-23-geca9cfd:yamlcpp/3rdparty/yaml-cpp \ kobalicek:asmjit:fc251c9:asmjit/asmjit \ KhronosGroup:glslang:7.11.3214:glslang/Vulkan/glslang \ Microsoft:GSL:v2.0.0:GSL/3rdparty/GSL \ USCiLab:cereal:v1.2.0:cereal/3rdparty/cereal \ zeux:pugixml:v1.9-51-g8bf806c:pugixml/3rdparty/pugixml USES= cmake compiler:c++17-lang iconv:wchar_t localbase:ldflags \ openal:soft pkgconfig qt:5 USE_GL= gl glew USE_QT= qmake_build buildtools_build core dbus declarative gui network widgets USE_XORG= x11 CMAKE_ON= CMAKE_SKIP_RPATH USE_SYSTEM_FFMPEG USE_SYSTEM_LIBPNG CMAKE_OFF= USE_NATIVE_INSTRUCTIONS LDFLAGS+= -Wl,--as-needed # GLU # XXX Drop after FreeBSD 12.0 EOL .if exists(/usr/lib/clang/6.0.1) LLD_UNSAFE= yes # XXX ports/219089 .endif # 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 EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-revert-5bd17a44c972 .endif -OPTIONS_DEFINE= ALSA EVDEV GDB LLVM PULSEAUDIO VULKAN +OPTIONS_DEFINE= ALSA EVDEV LLVM PULSEAUDIO VULKAN OPTIONS_DEFAULT=LLVM VULKAN ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins ALSA_CMAKE_BOOL= USE_ALSA EVDEV_DESC= libevdev-based joystick support EVDEV_CMAKE_BOOL= USE_LIBEVDEV EVDEV_BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto EVDEV_LIB_DEPENDS= libevdev.so:devel/libevdev - -GDB_DESC= GDB remote stub (powerpc64 target) -GDB_CMAKE_BOOL= WITH_GDB -GDB_BROKEN= https://github.com/RPCS3/rpcs3/issues/5946 LLVM_DESC= LLVM-based PPU recompiler LLVM_CMAKE_BOOL_OFF= WITHOUT_LLVM PULSEAUDIO_LIB_DEPENDS= libpulse-simple.so:audio/pulseaudio PULSEAUDIO_CMAKE_BOOL= USE_PULSE VULKAN_DESC= Vulkan renderer VULKAN_BUILD_DEPENDS= ${LOCALBASE}/include/vulkan/vulkan.h:devel/vulkan-headers VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader VULKAN_CMAKE_BOOL= USE_VULKAN post-patch: @${REINPLACE_CMD} -e '/GIT_BRANCH/s/unknown/master/' \ -e '/GIT_TAG/s/unknown/${GH_TAGNAME:C/-.*//}/' \ -e '/GIT_VERSION/s/unknown/${GH_TAGNAME:C/[^-]*-//}/' \ ${WRKSRC}/${PORTNAME}/git-version.cmake .include Index: head/emulators/rpcs3/distinfo =================================================================== --- head/emulators/rpcs3/distinfo (revision 514361) +++ head/emulators/rpcs3/distinfo (revision 514362) @@ -1,21 +1,21 @@ -TIMESTAMP = 1570823710 -SHA256 (RPCS3-rpcs3-v0.0.7-8861-g0172e097f_GH0.tar.gz) = 00c3483845c73b0d5765d7c0d9a70f615bdcc2cc0db2ea3230121543ef2914a4 -SIZE (RPCS3-rpcs3-v0.0.7-8861-g0172e097f_GH0.tar.gz) = 5606464 +TIMESTAMP = 1570914153 +SHA256 (RPCS3-rpcs3-v0.0.7-8871-g9bcd7b534_GH0.tar.gz) = fe6d2620c9b3ea04a9e72dfb29808e2d09ffad8f0f8923f87a97517023665752 +SIZE (RPCS3-rpcs3-v0.0.7-8871-g9bcd7b534_GH0.tar.gz) = 5609537 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 SIZE (RPCS3-llvm-b860b5e8f4ee_GH0.tar.gz) = 47286737 SHA256 (Cyan4973-xxHash-v0.6.5_GH0.tar.gz) = 19030315f4fc1b4b2cdb9d7a317069a109f90e39d1fe4c9159b7aaa39030eb95 SIZE (Cyan4973-xxHash-v0.6.5_GH0.tar.gz) = 37521 SHA256 (jbeder-yaml-cpp-yaml-cpp-0.6.2-23-geca9cfd_GH0.tar.gz) = 554f6fac1d9524f807345f95ba9223332c644e56d7a7fdb2bcea1f5793b764fa SIZE (jbeder-yaml-cpp-yaml-cpp-0.6.2-23-geca9cfd_GH0.tar.gz) = 1397220 SHA256 (kobalicek-asmjit-fc251c9_GH0.tar.gz) = 0fb6271fccf8ee86d27affda7e27a6d655bfabfda83a7dd0d41f7fd05b384aad SIZE (kobalicek-asmjit-fc251c9_GH0.tar.gz) = 446910 SHA256 (KhronosGroup-glslang-7.11.3214_GH0.tar.gz) = b30b4668734328d256e30c94037e60d3775b1055743c04d8fd709f2960f302a9 SIZE (KhronosGroup-glslang-7.11.3214_GH0.tar.gz) = 2841979 SHA256 (Microsoft-GSL-v2.0.0_GH0.tar.gz) = 6cce6fb16b651e62711a4f58e484931013c33979b795d1b1f7646f640cfa9c8e SIZE (Microsoft-GSL-v2.0.0_GH0.tar.gz) = 64726 SHA256 (USCiLab-cereal-v1.2.0_GH0.tar.gz) = 1ccf3ed205a7a2f0d6a060415b123f1ae0d984cd4435db01af8de11a2eda49c1 SIZE (USCiLab-cereal-v1.2.0_GH0.tar.gz) = 299883 SHA256 (zeux-pugixml-v1.9-51-g8bf806c_GH0.tar.gz) = 37bed90f3dadb642acca41508391d1409a75af05f34f13da56c866d5c3c4b00d SIZE (zeux-pugixml-v1.9-51-g8bf806c_GH0.tar.gz) = 560956 Index: head/emulators/rpcs3/files/extra-patch-revert-6b1e1e402049 =================================================================== --- head/emulators/rpcs3/files/extra-patch-revert-6b1e1e402049 (revision 514361) +++ head/emulators/rpcs3/files/extra-patch-revert-6b1e1e402049 (revision 514362) @@ -1,188 +1,188 @@ rpcs3/Emu/GDB.cpp:33:10: fatal error: 'charconv' file not found #include ^~~~~~~~~~ --- 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 #include "Emu/Memory/vm.h" #include "Emu/System.h" #include "Emu/IdManager.h" @@ -14,24 +14,17 @@ #ifdef _WIN32 #include #include -#include // sockaddr_un #else #include #include #include #include #include -#include #include #include #include -#include // sockaddr_un #endif -#include -#include -#include - 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(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()) +- while (server_socket != -1 && thread_ctrl::state() != thread_state::aborting) ++ while (thread_ctrl::state() != thread_state::aborting) { sockaddr_in client; socklen_t client_len = sizeof(client);