Merge pull request #14 from vgmoose/master

[macos] fix compiling issues
This commit is contained in:
misson20000 2017-11-22 19:53:04 -08:00 committed by GitHub
commit 99c42d1edb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 17 deletions

View file

@ -1,6 +1,14 @@
dist: trusty
sudo: required
language: c++
matrix:
include:
- os: linux
dist: trusty
sudo: required
- os: osx
osx_image: xcode9.1
compiler: clang
addons:
apt:
@ -14,10 +22,17 @@ addons:
- lld-5.0
- liblz4-dev
install:
- sudo pip2 install -r requirements.txt
- pip2 install --user -r requirements.txt
- git clone https://github.com/reswitched/unicorn.git
- cd unicorn
- UNICORN_ARCHS="aarch64" ./make.sh
- sudo ./make.sh install
- 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

View file

@ -37,7 +37,7 @@ void mmioHook(uc_engine *uc, uc_mem_type type, gptr address, uint32_t size, gptr
break;
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);
break;
}

9
Ctu.h
View file

@ -47,8 +47,13 @@ const gptr TERMADDR = 1ULL << 61;
#define FOURCC(a, b, c, d) (((d) << 24) | ((c) << 16) | ((b) << 8) | (a))
#define ADDRFMT "%016lx"
#define LONGFMT "%lx"
#ifdef __APPLE__
#define ADDRFMT "%016llx"
#define LONGFMT "%llx"
#else
#define ADDRFMT "%016lx"
#define LONGFMT "%lx"
#endif
enum LogLevel {
None = 0,

View file

@ -243,7 +243,7 @@ void GdbStub::removeBreakpoint(BreakpointType type, gptr addr) {
auto bp = p.find(addr);
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);
ctu->cpu.removeBreakpoint(bp->second.hook);
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)) {
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);
return true;
}
@ -508,7 +508,7 @@ void GdbStub::readMemory() {
start_offset = addr_pos + 1;
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)) {
sendReply("E01");
@ -580,7 +580,7 @@ bool GdbStub::commitBreakpoint(BreakpointType type, gptr addr, uint32_t len) {
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);
return true;

View file

@ -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) {
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);
bsd_errno = errno;
sockaddr_len = size;
addr->sa_family = htons(addr->sa_family);
addr->sa_family = fam_htons(addr->sa_family);
} else {
ret = 888;
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");
if(passthrough) {
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);
bsd_errno = errno;
} 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");
if(passthrough) {
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);
bsd_errno = errno;
} 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);
errno = bsd_errno;
sockaddr_len = addr_len;
addr->sa_family = htons(addr->sa_family);
addr->sa_family = fam_htons(addr->sa_family);
} else {
sockaddr_len = 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");
if(passthrough) {
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);
bsd_errno = errno;
} else {

View file

@ -1,5 +1,4 @@
#include "Ctu.h"
#include <byteswap.h>
/*$IPC$
partial nn::lm::ILogger {