johnnyonflame / droidports Goto Github PK
View Code? Open in Web Editor NEWA repository for experimenting with elf loading and in-place patching of android native libraries on non-android operating systems.
License: GNU General Public License v3.0
A repository for experimenting with elf loading and in-place patching of android native libraries on non-android operating systems.
License: GNU General Public License v3.0
I'm trying to get this running on my RasPi 3B, and none of the games I've tried it with (a fresh AM2r 1.5.5 created from AM2r loader, an older AM2R 1.5.2 downloaded from the internet, and Maldita Castilla for the Ouya) seem to have any libc++_shared.so files, so gmloader will not run them.
Hello
Executing emuelec 4.6 commit d044d90 on odroidn2+ arm compilation
When executing am2r-another-metroid-2-remake-1-5-2.apk it starts the game but it suddenly crashes with the following issue.
I see Shanti removed usleep in via the package file https://github.com/EmuELEC/EmuELEC/blob/dev/packages/lib32/emuelec/emulators/lib32-droidports/package.mk on misc_bridges
and there is an issue already open stating remove it
Pls can you help me to fix it?
thx
EmuELEC Run Log
##############################################
##############################################
EmuELEC (Community - EmuELEC is FREE! NOT FOR SALE!): 4.6 (Amlogic-ng.aarch64)
PLATFORM: gmloader
ROM NAME: /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk
BASE ROM NAME: am2r-another-metroid-2-remake-1-5-2.apk
USING CONFIG: /storage/.config/retroarch/retroarch.cfg
1st Argument: /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk
2nd Argument: -Pgmloader
3rd Argument: --core=gmloader
4th Argument: --emulator=gmloader
Full arguments: /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk -Pgmloader --core=gmloader --emulator=gmloader --controllers=-p1index 0 -p1guid 030086655e040000a10200000a060000
Run Command is:
/usr/bin/bash gmloader.sh /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk --controllers=-p1index 0 -p1guid 030086655e040000a10200000a060000
Emulator Output is:
�[?25l/home/kelv/newc/EmuELEC/build.EmuELEC-Amlogic-ng.aarch64-4/build/lib32-droidports-d044d90d81927d175018396d673fb4ff077aebb3/platform/common/so_util.c:453: Unknown symbol "usleep" (0x417ae024).
exit 255
I had an issue where the game wouldn't start however I fixed it by marking the files that needed to be executed as executable, just thought I should tell you. Also thanks for this port I love Deltarune!
Tried following the guide including in the release, but it didn't work. I suspect it's due to the newer version of the game. Please fix this as I want to look cool in front of my friends.
Process:
git clone --recursive https://github.com/JohnnyonFlame/droidports
cd droidports
mkdir build-gmloader
cd build-gmloader
cmake CMakeLists.txt -DCMAKE_BUILD_TYPE=Release -DPLATFORM=linux -DPORT=gmloader ..
make -j$(($(nproc)+1))
Output:
fordi@sproket:~/Personal$ git clone --recursive https://github.com/JohnnyonFlame/droidports
Cloning into 'droidports'...
remote: Enumerating objects: 713, done.
remote: Counting objects: 100% (136/136), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 713 (delta 129), reused 124 (delta 124), pack-reused 577
Receiving objects: 100% (713/713), 243.01 KiB | 1.09 MiB/s, done.
Resolving deltas: 100% (409/409), done.
Submodule '3rdparty/freetype' (https://github.com/freetype/freetype) registered for path '3rdparty/freetype'
Submodule '3rdparty/lodepng' (https://github.com/lvandeve/lodepng) registered for path '3rdparty/lodepng'
Cloning into '/home/fordi/Personal/droidports/3rdparty/freetype'...
remote: Enumerating objects: 87663, done.
remote: Counting objects: 100% (578/578), done.
remote: Compressing objects: 100% (295/295), done.
remote: Total 87663 (delta 327), reused 452 (delta 283), pack-reused 87085
Receiving objects: 100% (87663/87663), 28.32 MiB | 1.04 MiB/s, done.
Resolving deltas: 100% (72289/72289), done.
Cloning into '/home/fordi/Personal/droidports/3rdparty/lodepng'...
remote: Enumerating objects: 2684, done.
remote: Counting objects: 100% (81/81), done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 2684 (delta 48), reused 57 (delta 34), pack-reused 2603
Receiving objects: 100% (2684/2684), 1.67 MiB | 1.07 MiB/s, done.
Resolving deltas: 100% (1143/1143), done.
Submodule path '3rdparty/freetype': checked out '3785393d1a3c12fb1b4a3995cc0e953a58531cfe'
Submodule 'dlg' (https://github.com/nyorain/dlg.git) registered for path '3rdparty/freetype/subprojects/dlg'
Cloning into '/home/fordi/Personal/droidports/3rdparty/freetype/subprojects/dlg'...
remote: Enumerating objects: 1135, done.
remote: Counting objects: 100% (125/125), done.
remote: Compressing objects: 100% (67/67), done.
remote: Total 1135 (delta 54), reused 92 (delta 37), pack-reused 1010
Receiving objects: 100% (1135/1135), 3.49 MiB | 1.00 MiB/s, done.
Resolving deltas: 100% (625/625), done.
Submodule path '3rdparty/freetype/subprojects/dlg': checked out '0cc0d3eaed28483fc8036d90ac18878ebd83ed87'
Submodule path '3rdparty/lodepng': checked out '7fdcc96a5e5864eee72911c3ca79b1d9f0d12292'
fordi@sproket:~/Personal$ cd droidports
fordi@sproket:~/Personal/droidports$ mkdir build-gmloader
fordi@sproket:~/Personal/droidports$ cd build-gmloader
fordi@sproket:~/Personal/droidports/build-gmloader$ cmake CMakeLists.txt -DCMAKE_BUILD_TYPE=Release -DPLATFORM=linux -DPORT=gmloader ..
CMake Warning:
Ignoring extra path from command line:
"/home/fordi/Personal/droidports/build-gmloader"
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found SDL2: /usr/lib/x86_64-linux-gnu/libSDL2main.a;/usr/lib/x86_64-linux-gnu/libSDL2.so
-- Found OpenAL: /usr/lib/x86_64-linux-gnu/libopenal.so
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Found BZip2: /usr/lib/x86_64-linux-gnu/libbz2.so (found version "1.0.8")
-- Looking for BZ2_bzCompressInit
-- Looking for BZ2_bzCompressInit - found
-- Found PNG: /usr/lib/x86_64-linux-gnu/libpng.so (found version "1.6.38")
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
CMake Warning (dev) at /usr/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to `find_package_handle_standard_args` (LIBZIP)
does not match the name of the calling package (LibZip). This can lead to
problems in calling code that expects `find_package` result variables
(e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
cmake/FindLibZip.cmake:24 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:25 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
-- Found LIBZIP: /usr/lib/x86_64-linux-gnu/libzip.so
-- Found Freetype: /usr/lib/x86_64-linux-gnu/libfreetype.so (found version "2.12.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/fordi/Personal/droidports/build-gmloader
fordi@sproket:~/Personal/droidports/build-gmloader$ make -j$(($(nproc)+1))
[ 3%] Building C object 3rdparty/CMakeFiles/lodepng.dir/lodepng.c.o
[ 6%] Linking C static library liblodepng.a
[ 6%] Built target lodepng
[ 17%] Building C object CMakeFiles/gmloader.dir/bridges/openal_bridge.c.o
[ 20%] Building C object CMakeFiles/gmloader.dir/ports/gmloader/achievements.c.o
[ 17%] Building C object CMakeFiles/gmloader.dir/bridges/zip_bridge.c.o
[ 17%] Building C object CMakeFiles/gmloader.dir/ports/gmloader/RunnerJNILib.c.o
[ 24%] Building C object CMakeFiles/gmloader.dir/bridges/freetype_bridge.c.o
[ 27%] Building C object CMakeFiles/gmloader.dir/ports/gmloader/main.c.o
[ 31%] Building C object CMakeFiles/gmloader.dir/ports/gmloader/gamepad_impl.c.o
[ 34%] Building C object CMakeFiles/gmloader.dir/ports/gmloader/libyoyo.c.o
[ 37%] Building C object CMakeFiles/gmloader.dir/ports/gmloader/mouse_impl.c.o
In file included from /home/fordi/Personal/droidports/ports/gmloader/RunnerJNILib.c:173:
/home/fordi/Personal/droidports/jni/prologue_helpers.h: In function ‘RunnerJNILib_OsGetInfo_V’:
/home/fordi/Personal/droidports/jni/prologue_helpers.h:37:14: warning: assignment to ‘jobject’ {aka ‘_jobject *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
37 | *ret = CL ## _ ## ID(ARGC); \
| ^
/home/fordi/Personal/droidports/ports/gmloader/RunnerJNILib.h:14:5: note: in expansion of macro ‘DECL_STATIC_MANAGED’
14 | DECL_STATIC_MANAGED ( RunnerJNILib, OsGetInfo, jobject, F_v, ARG0, "()I") \
| ^~~~~~~~~~~~~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/RunnerJNILib.c:18:27: note: in expansion of macro ‘JNIRUNNER_MANAGED_LIB_FUNCS’
18 | #define MANAGED_LIB_FUNCS JNIRUNNER_MANAGED_LIB_FUNCS
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/fordi/Personal/droidports/jni/prologue_helpers.h:54:1: note: in expansion of macro ‘MANAGED_LIB_FUNCS’
54 | MANAGED_LIB_FUNCS
| ^~~~~~~~~~~~~~~~~
/home/fordi/Personal/droidports/jni/prologue_helpers.h: In function ‘RunnerJNILib_SetMP3Volume_V’:
/home/fordi/Personal/droidports/jni/prologue_helpers.h:54:1: warning: conversion from ‘jdouble’ {aka ‘double’} to ‘jfloat’ {aka ‘float’} may change value [-Wfloat-conversion]
/home/fordi/Personal/droidports/jni/prologue_helpers.h: In function ‘RunnerJNILib_OsGetInfo_A’:
/home/fordi/Personal/droidports/jni/prologue_helpers.h:65:14: warning: assignment to ‘jobject’ {aka ‘_jobject *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
65 | *ret = CL ## _ ## ID(ARGC); \
| ^
/home/fordi/Personal/droidports/ports/gmloader/RunnerJNILib.h:14:5: note: in expansion of macro ‘DECL_STATIC_MANAGED’
14 | DECL_STATIC_MANAGED ( RunnerJNILib, OsGetInfo, jobject, F_v, ARG0, "()I") \
| ^~~~~~~~~~~~~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/RunnerJNILib.c:18:27: note: in expansion of macro ‘JNIRUNNER_MANAGED_LIB_FUNCS’
18 | #define MANAGED_LIB_FUNCS JNIRUNNER_MANAGED_LIB_FUNCS
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/fordi/Personal/droidports/jni/prologue_helpers.h:82:1: note: in expansion of macro ‘MANAGED_LIB_FUNCS’
82 | MANAGED_LIB_FUNCS
| ^~~~~~~~~~~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c: In function ‘gamepad_get_description’:
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:51:16: warning: implicit declaration of function ‘malloc’ [-Wimplicit-function-declaration]
51 | Ref *ref = malloc(sizeof(*ref));
| ^~~~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:6:1: note: include ‘<stdlib.h>’ or provide a declaration of ‘malloc’
5 | #include "libyoyo.h"
+++ |+#include <stdlib.h>
6 |
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:51:16: warning: incompatible implicit declaration of built-in function ‘malloc’ [-Wbuiltin-declaration-mismatch]
51 | Ref *ref = malloc(sizeof(*ref));
| ^~~~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:51:16: note: include ‘<stdlib.h>’ or provide a declaration of ‘malloc’
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:55:19: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]
55 | .m_size = strlen("Xbox 360 Controller (XInput STANDARD GAMEPAD)"),
| ^~~~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:6:1: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
5 | #include "libyoyo.h"
+++ |+#include <string.h>
6 |
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:55:19: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatch]
55 | .m_size = strlen("Xbox 360 Controller (XInput STANDARD GAMEPAD)"),
| ^~~~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:55:19: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:56:20: warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration]
56 | .m_thing = strdup("Xbox 360 Controller (XInput STANDARD GAMEPAD)")
| ^~~~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:56:20: warning: incompatible implicit declaration of built-in function ‘strdup’ [-Wbuiltin-declaration-mismatch]
In file included from /home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:3:
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c: In function ‘GamePadRestart’:
/home/fordi/Personal/droidports/platform/common/so_util.h:27:9: warning: implicit declaration of function ‘exit’ [-Wimplicit-function-declaration]
27 | exit(-1); \
| ^~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:190:5: note: in expansion of macro ‘ENSURE_SYMBOL’
190 | ENSURE_SYMBOL(libyoyo, CreateDsMap, "_Z11CreateDsMapiz");
| ^~~~~~~~~~~~~
/home/fordi/Personal/droidports/platform/common/so_util.h:27:9: note: include ‘<stdlib.h>’ or provide a declaration of ‘exit’
27 | exit(-1); \
| ^~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:190:5: note: in expansion of macro ‘ENSURE_SYMBOL’
190 | ENSURE_SYMBOL(libyoyo, CreateDsMap, "_Z11CreateDsMapiz");
| ^~~~~~~~~~~~~
/home/fordi/Personal/droidports/platform/common/so_util.h:27:9: warning: incompatible implicit declaration of built-in function ‘exit’ [-Wbuiltin-declaration-mismatch]
27 | exit(-1); \
| ^~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:190:5: note: in expansion of macro ‘ENSURE_SYMBOL’
190 | ENSURE_SYMBOL(libyoyo, CreateDsMap, "_Z11CreateDsMapiz");
| ^~~~~~~~~~~~~
/home/fordi/Personal/droidports/platform/common/so_util.h:27:9: note: include ‘<stdlib.h>’ or provide a declaration of ‘exit’
27 | exit(-1); \
| ^~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:190:5: note: in expansion of macro ‘ENSURE_SYMBOL’
190 | ENSURE_SYMBOL(libyoyo, CreateDsMap, "_Z11CreateDsMapiz");
| ^~~~~~~~~~~~~
/home/fordi/Personal/droidports/platform/common/so_util.h:27:9: warning: incompatible implicit declaration of built-in function ‘exit’ [-Wbuiltin-declaration-mismatch]
27 | exit(-1); \
| ^~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:191:5: note: in expansion of macro ‘ENSURE_SYMBOL’
191 | ENSURE_SYMBOL(libyoyo, CreateAsynEventWithDSMap, "_Z24CreateAsynEventWithDSMapii");
| ^~~~~~~~~~~~~
/home/fordi/Personal/droidports/platform/common/so_util.h:27:9: note: include ‘<stdlib.h>’ or provide a declaration of ‘exit’
27 | exit(-1); \
| ^~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:191:5: note: in expansion of macro ‘ENSURE_SYMBOL’
191 | ENSURE_SYMBOL(libyoyo, CreateAsynEventWithDSMap, "_Z24CreateAsynEventWithDSMapii");
| ^~~~~~~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c: In function ‘register_gamepad_functs’:
/home/fordi/Personal/droidports/ports/gmloader/gamepad_impl.c:221:49: warning: passing argument 3 of ‘hook_symbol’ makes integer from pointer without a cast [-Wint-conversion]
221 | hook_symbol(libyoyo, "_Z14GamePadRestartv", GamePadRestart, 1);
| ^~~~~~~~~~~~~~
| |
| void (*)()
/home/fordi/Personal/droidports/platform/common/so_util.h:82:64: note: expected ‘uintptr_t’ {aka ‘long unsigned int’} but argument is of type ‘void (*)()’
82 | void hook_symbol(so_module *mod, const char *symbol, uintptr_t dst, int is_optional);
| ~~~~~~~~~~^~~
[ 41%] Building C object CMakeFiles/gmloader.dir/ports/gmloader/sdl2_media.c.o
[ 44%] Building C object CMakeFiles/gmloader.dir/bridges/ctype_bridge.c.o
[ 48%] Building C object CMakeFiles/gmloader.dir/bridges/gles2_bridge.c.o
[ 51%] Building C object CMakeFiles/gmloader.dir/bridges/math_bridge.c.o
[ 55%] Building C object CMakeFiles/gmloader.dir/bridges/misc_bridges.c.o
[ 58%] Building C object CMakeFiles/gmloader.dir/bridges/pthread_bridge.c.o
[ 62%] Building C object CMakeFiles/gmloader.dir/bridges/stdio_bridge.c.o
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c: In function ‘CAudioGroupMan__LoadGroup_reimpl’:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:317:29: warning: assignment to ‘void (*)(CThread *, void *, void *, char *)’ from ‘uintptr_t’ {aka ‘long unsigned int’} makes pointer from integer without a cast [-Wint-conversion]
317 | CThread__start_PcNS = so_symbol(libyoyo, "_ZN7CThread5StartEPFPvS0_ES0_PcNS_9ePriorityE");
| ^
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:318:27: warning: assignment to ‘void (*)(CThread *, void *, void *)’ from ‘uintptr_t’ {aka ‘long unsigned int’} makes pointer from integer without a cast [-Wint-conversion]
318 | CThread__start_NS = so_symbol(libyoyo, "_ZN7CThread5StartEPFPvS0_ES0_NS_9ePriorityE");
| ^
/home/fordi/Personal/droidports/bridges/misc_bridges.c:327:5: error: conflicting types for ‘usleep’; have ‘int(long int)’
327 | int usleep(long usec)
| ^~~~~~
In file included from /usr/include/x86_64-linux-gnu/bits/sigstksz.h:24,
from /usr/include/signal.h:328,
from /home/fordi/Personal/droidports/bridges/misc_bridges.c:9:
/usr/include/unistd.h:480:12: note: previous declaration of ‘usleep’ with type ‘int(__useconds_t)’ {aka ‘int(unsigned int)’}
480 | extern int usleep (__useconds_t __useconds);
| ^~~~~~
/home/fordi/Personal/droidports/bridges/misc_bridges.c:413:5: warning: ‘mallinfo’ is deprecated [-Wdeprecated-declarations]
413 | {"mallinfo", (uintptr_t)&mallinfo},
| ^
In file included from /home/fordi/Personal/droidports/bridges/misc_bridges.c:11:
/usr/include/malloc.h:114:24: note: declared here
114 | extern struct mallinfo mallinfo (void) __THROW __MALLOC_DEPRECATED;
| ^~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:393:9: warning: implicit declaration of function ‘munmap’ [-Wimplicit-function-declaration]
393 | munmap(mem, mem_sz);
| ^~~~~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c: At top level:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:404:19: warning: type defaults to ‘int’ in declaration of ‘Mutex__dtor’ [-Wimplicit-int]
404 | static ABI_ATTR (*Mutex__dtor)(void *) = NULL;
| ^~~~~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:405:19: warning: type defaults to ‘int’ in declaration of ‘MemoryManager__Free’ [-Wimplicit-int]
405 | static ABI_ATTR (*MemoryManager__Free)(void *) = NULL;
| ^~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/gmloader.dir/build.make:258: CMakeFiles/gmloader.dir/bridges/misc_bridges.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c: In function ‘RunnerLoadGame_reimpl’:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:454:22: warning: assignment to ‘void **’ from ‘uintptr_t’ {aka ‘long unsigned int’} makes pointer from integer without a cast [-Wint-conversion]
454 | g_ppYYStackTrace = so_symbol(libyoyo, "g_ppYYStackTrace");
| ^
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:460:20: warning: assignment to ‘void *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
460 | *g_nYYCode = (*g_pLLVMVars)->nYYCode;
| ^
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c: In function ‘patch_specifics’:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:549:44: warning: passing argument 3 of ‘hook_symbol’ makes integer from pointer without a cast [-Wint-conversion]
549 | hook_symbol(mod, "_Z13IO_Start_Stepv", IO_Start_Step_hook, 1);
| ^~~~~~~~~~~~~~~~~~
| |
| void (*)()
In file included from /home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:14:
/home/fordi/Personal/droidports/platform/common/so_util.h:82:64: note: expected ‘uintptr_t’ {aka ‘long unsigned int’} but argument is of type ‘void (*)()’
82 | void hook_symbol(so_module *mod, const char *symbol, uintptr_t dst, int is_optional);
| ~~~~~~~~~~^~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c: In function ‘invoke_app’:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:667:14: warning: implicit declaration of function ‘isalnum’ [-Wimplicit-function-declaration]
667 | if (!isalnum(*c))
| ^~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:23:1: note: include ‘<ctype.h>’ or provide a declaration of ‘isalnum’
22 | #include "gles2.h"
+++ |+#include <ctype.h>
23 |
In file included from /home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:17:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:682:28: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
682 | MK_JSTRING(apk_path),
| ^~~~~~~~
/home/fordi/Personal/droidports/jni/fake_jni.h:443:69: note: in definition of macro ‘MK_JSTRING’
443 | #define MK_JSTRING(data) (_jstring){.clazz = &jstring_class, .str = data}
| ^~~~
/home/fordi/Personal/droidports/bridges/pthread_bridge.c: In function ‘pthread_mutex_lock_bridge’:
/home/fordi/Personal/droidports/bridges/pthread_bridge.c:75:13: warning: comparison of distinct pointer types lacks a cast
75 | if (uid < (BIONIC_pthread_mutex_t*)0x1000)
| ^
/home/fordi/Personal/droidports/bridges/pthread_bridge.c: In function ‘pthread_mutex_unlock_bridge’:
/home/fordi/Personal/droidports/bridges/pthread_bridge.c:90:41: warning: passing argument 1 of ‘pthread_mutex_init_bridge’ from incompatible pointer type [-Wincompatible-pointer-types]
90 | ret = pthread_mutex_init_bridge(uid, NULL);
| ^~~
| |
| pthread_mutex_t **
/home/fordi/Personal/droidports/bridges/pthread_bridge.c:37:64: note: expected ‘BIONIC_pthread_mutex_t *’ but argument is of type ‘pthread_mutex_t **’
37 | ABI_ATTR int pthread_mutex_init_bridge(BIONIC_pthread_mutex_t *_uid, pthread_mutexattr_t **mutexattr)
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~
/home/fordi/Personal/droidports/bridges/pthread_bridge.c: In function ‘pthread_cond_wait_bridge’:
/home/fordi/Personal/droidports/bridges/pthread_bridge.c:150:29: warning: initialization of ‘pthread_mutex_t **’ from incompatible pointer type ‘BIONIC_pthread_mutex_t *’ [-Wincompatible-pointer-types]
150 | pthread_mutex_t **mtx = _mtx;
| ^~~~
/home/fordi/Personal/droidports/bridges/pthread_bridge.c: In function ‘pthread_cond_timedwait_bridge’:
/home/fordi/Personal/droidports/bridges/pthread_bridge.c:162:29: warning: initialization of ‘pthread_mutex_t **’ from incompatible pointer type ‘BIONIC_pthread_mutex_t *’ [-Wincompatible-pointer-types]
162 | pthread_mutex_t **mtx = _mtx;
| ^~~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c: In function ‘CAudioGroupMan__LoadGroup_reimpl’:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:339:45: warning: ‘audiogroup’ directive output may be truncated writing 10 bytes into a region of size between 1 and 4096 [-Wformat-truncation=]
339 | snprintf(filename, sizeof(filename), "%saudiogroup%d.dat", get_platform_savedir(), groupId);
| ^~~~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:339:42: note: directive argument in the range [1, 2147483646]
339 | snprintf(filename, sizeof(filename), "%saudiogroup%d.dat", get_platform_savedir(), groupId);
| ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:906,
from /home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:1:
In function ‘snprintf’,
inlined from ‘CAudioGroupMan__LoadGroup_reimpl’ at /home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:339:5:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:54:10: note: ‘__builtin___snprintf_chk’ output between 16 and 4120 bytes into a destination of size 4096
54 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 | __glibc_objsize (__s), __fmt,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 | __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c: In function ‘RunnerLoadGame_reimpl’:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:469:47: warning: ‘%s’ directive output may be truncated writing 10 bytes into a region of size between 1 and 4096 [-Wformat-truncation=]
469 | snprintf(WADNAME, sizeof(WADNAME), "%s%s", get_platform_savedir(), "game.droid");
| ^~ ~~~~~~~~~~~~
In function ‘snprintf’,
inlined from ‘RunnerLoadGame_reimpl’ at /home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:469:9:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:54:10: note: ‘__builtin___snprintf_chk’ output between 11 and 4106 bytes into a destination of size 4096
54 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 | __glibc_objsize (__s), __fmt,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 | __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c: In function ‘setup_platform_savedir’:
/home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:94:54: warning: ‘%s’ directive output may be truncated writing up to 4095 bytes into a region of size 4087 [-Wformat-truncation=]
94 | snprintf(mkdir_cmd, sizeof(mkdir_cmd), "mkdir -p %s", platform_savedir);
| ^~ ~~~~~~~~~~~~~~~~
In function ‘snprintf’,
inlined from ‘setup_platform_savedir’ at /home/fordi/Personal/droidports/ports/gmloader/libyoyo.c:94:5:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:54:10: note: ‘__builtin___snprintf_chk’ output between 10 and 4105 bytes into a destination of size 4096
54 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 | __glibc_objsize (__s), __fmt,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 | __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/gmloader.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
fordi@sproket:~/Personal/droidports/build-gmloader$
I think this is specific to the 64bit RPi OS, but it's possible I'm just missing a specific library. I attempted to follow the build instructions, and it gets most of the way through the build. There are few warnings that pop up, but all the compiles complete successfully. At the final linking step, it runs into an error trying to find all the _aeabi* functions:
[100%] Linking C executable gmloader
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x4c8): undefined reference to '__aeabi_d2f'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x4d8): undefined reference to '__aeabi_d2iz'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x4e8): undefined reference to '__aeabi_d2lz'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x4f8): undefined reference to '__aeabi_d2uiz'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x508): undefined reference to '__aeabi_d2ulz'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x518): undefined reference to '__aeabi_dadd'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x528): undefined reference to '__aeabi_dcmpeq'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x538): undefined reference to '__aeabi_dcmpge'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x548): undefined reference to '__aeabi_dcmpgt'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x558): undefined reference to '__aeabi_dcmple'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x568): undefined reference to '__aeabi_dcmplt'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x578): undefined reference to '__aeabi_ddiv'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x588): undefined reference to '__aeabi_dmul'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x598): undefined reference to '__aeabi_dsub'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x5a8): undefined reference to '__aeabi_f2d'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x5b8): undefined reference to '__aeabi_f2iz'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x5c8): undefined reference to '__aeabi_f2uiz'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x5d8): undefined reference to '__aeabi_fadd'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x5e8): undefined reference to '__aeabi_fcmpeq'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x5f8): undefined reference to '__aeabi_fcmpge'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x608): undefined reference to '__aeabi_fcmpgt'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x618): undefined reference to '__aeabi_fcmple'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x628): undefined reference to '__aeabi_fcmplt'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x638): undefined reference to '__aeabi_fdiv'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x648): undefined reference to '__aeabi_fmul'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x658): undefined reference to '__aeabi_fsub'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x668): undefined reference to '__aeabi_i2d'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x678): undefined reference to '__aeabi_i2f'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x688): undefined reference to '__aeabi_idiv'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x698): undefined reference to '__aeabi_idivmod'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x6a8): undefined reference to '__aeabi_l2d'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x6b8): undefined reference to '__aeabi_l2f'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x6c8): undefined reference to '__aeabi_ldivmod'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x6d8): undefined reference to '__aeabi_ui2d'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x6e8): undefined reference to '__aeabi_ui2f'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x6f8): undefined reference to '__aeabi_uidiv'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x708): undefined reference to '__aeabi_uidivmod'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x718): undefined reference to '__aeabi_ul2d'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/math_bridge.c.o:(.data.rel+0x728): undefined reference to '__aeabi_uldivmod'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/misc_bridges.c.o:(.data.rel+0x8): undefined reference to '__gnu_Unwind_Find_exidx'
/usr/bin/ld: CMakeFiles/gmloader.dir/bridges/misc_bridges.c.o:(.data.rel+0x18): undefined reference to '__gnu_Unwind_Find_exidx'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/gmloader.dir/build.make:501: gmloader] Error 1
make[1]: *** [CMakeFiles/Makefile2:115: CMakeFiles/gmloader.dir/all] Error 2
make: *** [Makefile:103: all] Error 2
I compiled it but it runs into "out of memory" error. would you like to tell me if I got the wrong direction?
Hello
I updated gmloader to 9e43646 on odroid n2+ and I'm getting
/ports/gmloader/main.c:120: Failed to acquire libc++_shared.so, exiting.
Pls can you help me to find where the issue is?
thx
EmuELEC Run Log
##############################################
##############################################
EmuELEC (Community - EmuELEC is FREE! NOT FOR SALE!): 4.7-_devel_20231001172804 (Amlogic-ng.aarch64)
PLATFORM: gmloader
ROM NAME: /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk
BASE ROM NAME: am2r-another-metroid-2-remake-1-5-2.apk
USING CONFIG: /storage/.config/retroarch/retroarch.cfg
1st Argument: /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk
2nd Argument: -Pgmloader
3rd Argument: --core=gmloader
4th Argument: --emulator=gmloader
Full arguments: /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk -Pgmloader --core=gmloader --emulator=gmloader --controllers=-p1index 0 -p1guid 030086655e040000a10200000a060000
Run Command is:
/usr/bin/bash gmloader.sh /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk --controllers=-p1index 0 -p1guid 030086655e040000a10200000a060000
Emulator Output is:
�[?25lSetting video mode 1920x1080.
Initializing OpenGL funcs...
Opening /storage/roms/ports/gmloader/am2r-another-metroid-2-remake-1-5-2.apk...
Creating zip handle...
Inflating lib/armeabi-v7a/libc++_shared.so...
/platform/common/zip_util.c:71: Failed to stat file 'lib/armeabi-v7a/libc++_shared.so'.
/ports/gmloader/main.c:120: Failed to acquire libc++_shared.so, exiting.
exit 255
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.