mirror of
https://github.com/reswitched/Mephisto.git
synced 2024-06-23 14:43:45 -04:00
Merge pull request #14 from vgmoose/master
[macos] fix compiling issues
This commit is contained in:
commit
99c42d1edb
23
.travis.yml
23
.travis.yml
|
@ -1,6 +1,14 @@
|
||||||
dist: trusty
|
|
||||||
sudo: required
|
|
||||||
language: c++
|
language: c++
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: linux
|
||||||
|
dist: trusty
|
||||||
|
sudo: required
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode9.1
|
||||||
|
compiler: clang
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
|
@ -14,10 +22,17 @@ addons:
|
||||||
- lld-5.0
|
- lld-5.0
|
||||||
- liblz4-dev
|
- liblz4-dev
|
||||||
install:
|
install:
|
||||||
- sudo pip2 install -r requirements.txt
|
- pip2 install --user -r requirements.txt
|
||||||
- git clone https://github.com/reswitched/unicorn.git
|
- git clone https://github.com/reswitched/unicorn.git
|
||||||
- cd unicorn
|
- cd unicorn
|
||||||
- UNICORN_ARCHS="aarch64" ./make.sh
|
- UNICORN_ARCHS="aarch64" ./make.sh
|
||||||
- sudo ./make.sh install
|
- sudo ./make.sh install
|
||||||
- cd ..
|
- cd ..
|
||||||
script: make LD=ld.lld-5.0
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then CC=clang++-5.0; Ld=ld.lld-5.0; fi
|
||||||
|
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then CC=clang++; brew update; brew install lz4; fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
script: make LD=$Ld CC=$CC
|
||||||
|
|
||||||
|
|
2
Cpu.cpp
2
Cpu.cpp
|
@ -37,7 +37,7 @@ void mmioHook(uc_engine *uc, uc_mem_type type, gptr address, uint32_t size, gptr
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case UC_MEM_WRITE:
|
case UC_MEM_WRITE:
|
||||||
LOG_DEBUG(Cpu, "MMIO Write at " ADDRFMT " size %x data %lx", physicalAddress, size, value);
|
LOG_DEBUG(Cpu, "MMIO Write at " ADDRFMT " size %x data " LONGFMT, physicalAddress, size, value);
|
||||||
mmio->write(physicalAddress, size, value);
|
mmio->write(physicalAddress, size, value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
9
Ctu.h
9
Ctu.h
|
@ -47,8 +47,13 @@ const gptr TERMADDR = 1ULL << 61;
|
||||||
|
|
||||||
#define FOURCC(a, b, c, d) (((d) << 24) | ((c) << 16) | ((b) << 8) | (a))
|
#define FOURCC(a, b, c, d) (((d) << 24) | ((c) << 16) | ((b) << 8) | (a))
|
||||||
|
|
||||||
#define ADDRFMT "%016lx"
|
#ifdef __APPLE__
|
||||||
#define LONGFMT "%lx"
|
#define ADDRFMT "%016llx"
|
||||||
|
#define LONGFMT "%llx"
|
||||||
|
#else
|
||||||
|
#define ADDRFMT "%016lx"
|
||||||
|
#define LONGFMT "%lx"
|
||||||
|
#endif
|
||||||
|
|
||||||
enum LogLevel {
|
enum LogLevel {
|
||||||
None = 0,
|
None = 0,
|
||||||
|
|
|
@ -243,7 +243,7 @@ void GdbStub::removeBreakpoint(BreakpointType type, gptr addr) {
|
||||||
|
|
||||||
auto bp = p.find(addr);
|
auto bp = p.find(addr);
|
||||||
if(bp != p.end()) {
|
if(bp != p.end()) {
|
||||||
LOG_DEBUG(GdbStub, "gdb: removed a breakpoint: %016lx bytes at %016lx of type %d",
|
LOG_DEBUG(GdbStub, "gdb: removed a breakpoint: " ADDRFMT " bytes at " ADDRFMT " of type %d",
|
||||||
bp->second.len, bp->second.addr, type);
|
bp->second.len, bp->second.addr, type);
|
||||||
ctu->cpu.removeBreakpoint(bp->second.hook);
|
ctu->cpu.removeBreakpoint(bp->second.hook);
|
||||||
p.erase(addr);
|
p.erase(addr);
|
||||||
|
@ -275,7 +275,7 @@ bool GdbStub::checkBreakpoint(gptr addr, BreakpointType type) {
|
||||||
|
|
||||||
if(bp->second.active && (addr >= bp->second.addr && addr < bp->second.addr + len)) {
|
if(bp->second.active && (addr >= bp->second.addr && addr < bp->second.addr + len)) {
|
||||||
LOG_DEBUG(GdbStub,
|
LOG_DEBUG(GdbStub,
|
||||||
"Found breakpoint type %d @ %016lx, range: %016lx - %016lx (%d bytes)", type,
|
"Found breakpoint type %d @ " ADDRFMT ", range: " ADDRFMT " - " ADDRFMT " (%d bytes)", type,
|
||||||
addr, bp->second.addr, bp->second.addr + len, (uint32_t) len);
|
addr, bp->second.addr, bp->second.addr + len, (uint32_t) len);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -508,7 +508,7 @@ void GdbStub::readMemory() {
|
||||||
start_offset = addr_pos + 1;
|
start_offset = addr_pos + 1;
|
||||||
auto len = hexToInt(start_offset, static_cast<uint32_t>((commandBuffer + commandLength) - start_offset));
|
auto len = hexToInt(start_offset, static_cast<uint32_t>((commandBuffer + commandLength) - start_offset));
|
||||||
|
|
||||||
LOG_DEBUG(GdbStub, "gdb: addr: %016lx len: %016lx", addr, len);
|
LOG_DEBUG(GdbStub, "gdb: addr: " ADDRFMT " len: " ADDRFMT, addr, len);
|
||||||
|
|
||||||
if(len * 2 > sizeof(reply)) {
|
if(len * 2 > sizeof(reply)) {
|
||||||
sendReply("E01");
|
sendReply("E01");
|
||||||
|
@ -580,7 +580,7 @@ bool GdbStub::commitBreakpoint(BreakpointType type, gptr addr, uint32_t len) {
|
||||||
|
|
||||||
p.insert({addr, breakpoint});
|
p.insert({addr, breakpoint});
|
||||||
|
|
||||||
LOG_DEBUG(GdbStub, "gdb: added %d breakpoint: %016lx bytes at %016lx", type, breakpoint.len,
|
LOG_DEBUG(GdbStub, "gdb: added %d breakpoint: " ADDRFMT " bytes at " ADDRFMT, type, breakpoint.len,
|
||||||
breakpoint.addr);
|
breakpoint.addr);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -14,6 +14,15 @@
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#define fam_ntohs passthru_uint8
|
||||||
|
#define fam_htons passthru_uint8
|
||||||
|
__uint8_t passthru_uint8(__uint8_t a) { return a; }
|
||||||
|
#else
|
||||||
|
#define fam_htons htons
|
||||||
|
#define fam_ntohs ntohs
|
||||||
|
#endif
|
||||||
|
|
||||||
nn::socket::sf::IClient::IClient(Ctu *_ctu) : IpcService(_ctu) {
|
nn::socket::sf::IClient::IClient(Ctu *_ctu) : IpcService(_ctu) {
|
||||||
passthrough = _ctu->socketsEnabled;
|
passthrough = _ctu->socketsEnabled;
|
||||||
}
|
}
|
||||||
|
@ -26,7 +35,7 @@ uint32_t nn::socket::sf::IClient::Accept(IN uint32_t socket, OUT int32_t& ret, O
|
||||||
ret = ::accept(socket, addr, &size);
|
ret = ::accept(socket, addr, &size);
|
||||||
bsd_errno = errno;
|
bsd_errno = errno;
|
||||||
sockaddr_len = size;
|
sockaddr_len = size;
|
||||||
addr->sa_family = htons(addr->sa_family);
|
addr->sa_family = fam_htons(addr->sa_family);
|
||||||
} else {
|
} else {
|
||||||
ret = 888;
|
ret = 888;
|
||||||
bsd_errno = 0;
|
bsd_errno = 0;
|
||||||
|
@ -37,7 +46,7 @@ uint32_t nn::socket::sf::IClient::Bind(IN uint32_t socket, IN sockaddr * _1, gui
|
||||||
LOG_DEBUG(IpcStubs, "Stub implementation for nn::socket::sf::IClient::bind");
|
LOG_DEBUG(IpcStubs, "Stub implementation for nn::socket::sf::IClient::bind");
|
||||||
if(passthrough) {
|
if(passthrough) {
|
||||||
struct sockaddr *addr = (struct sockaddr *) _1;
|
struct sockaddr *addr = (struct sockaddr *) _1;
|
||||||
addr->sa_family = ntohs(addr->sa_family);
|
addr->sa_family = fam_ntohs(addr->sa_family);
|
||||||
ret = ::bind(socket, addr, (uint32_t) _1_size);
|
ret = ::bind(socket, addr, (uint32_t) _1_size);
|
||||||
bsd_errno = errno;
|
bsd_errno = errno;
|
||||||
} else {
|
} else {
|
||||||
|
@ -61,7 +70,7 @@ uint32_t nn::socket::sf::IClient::Connect(IN uint32_t socket, IN sockaddr * _1,
|
||||||
LOG_DEBUG(IpcStubs, "Stub implementation for nn::socket::sf::IClient::connect");
|
LOG_DEBUG(IpcStubs, "Stub implementation for nn::socket::sf::IClient::connect");
|
||||||
if(passthrough) {
|
if(passthrough) {
|
||||||
struct sockaddr *addr = (struct sockaddr *) _1;
|
struct sockaddr *addr = (struct sockaddr *) _1;
|
||||||
addr->sa_family = ntohs(addr->sa_family); // yes, this is network byte order on the switch and host byte order on linux
|
addr->sa_family = fam_ntohs(addr->sa_family); // yes, this is network byte order on the switch and host byte order on linux
|
||||||
ret = ::connect(socket, (struct sockaddr *) addr, (socklen_t) _1_size);
|
ret = ::connect(socket, (struct sockaddr *) addr, (socklen_t) _1_size);
|
||||||
bsd_errno = errno;
|
bsd_errno = errno;
|
||||||
} else {
|
} else {
|
||||||
|
@ -78,7 +87,7 @@ uint32_t nn::socket::sf::IClient::GetSockName(IN uint32_t socket, OUT int32_t& r
|
||||||
ret = ::getsockname(socket, addr, &addr_len);
|
ret = ::getsockname(socket, addr, &addr_len);
|
||||||
errno = bsd_errno;
|
errno = bsd_errno;
|
||||||
sockaddr_len = addr_len;
|
sockaddr_len = addr_len;
|
||||||
addr->sa_family = htons(addr->sa_family);
|
addr->sa_family = fam_htons(addr->sa_family);
|
||||||
} else {
|
} else {
|
||||||
sockaddr_len = 0;
|
sockaddr_len = 0;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
@ -123,7 +132,7 @@ uint32_t nn::socket::sf::IClient::SendTo(IN uint32_t socket, IN uint32_t flags,
|
||||||
LOG_DEBUG(IpcStubs, "Stub implementation for nn::socket::sf::IClient::sendto");
|
LOG_DEBUG(IpcStubs, "Stub implementation for nn::socket::sf::IClient::sendto");
|
||||||
if(passthrough) {
|
if(passthrough) {
|
||||||
struct sockaddr *addr = (struct sockaddr *) _3;
|
struct sockaddr *addr = (struct sockaddr *) _3;
|
||||||
addr->sa_family = ntohs(addr->sa_family);
|
addr->sa_family = fam_ntohs(addr->sa_family);
|
||||||
ret = (uint32_t) ::sendto(socket, _2, (size_t) _2_size, flags, (struct sockaddr *) addr, (socklen_t) _3_size);
|
ret = (uint32_t) ::sendto(socket, _2, (size_t) _2_size, flags, (struct sockaddr *) addr, (socklen_t) _3_size);
|
||||||
bsd_errno = errno;
|
bsd_errno = errno;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#include "Ctu.h"
|
#include "Ctu.h"
|
||||||
#include <byteswap.h>
|
|
||||||
|
|
||||||
/*$IPC$
|
/*$IPC$
|
||||||
partial nn::lm::ILogger {
|
partial nn::lm::ILogger {
|
||||||
|
|
Loading…
Reference in a new issue