Exagear is dead

TrashyMG

Sarcasm Dispenser
Staff member
Joined
Jan 18, 2010
Messages
10,637
On the devboard I used exagear a bit to run Dropbox as they don't have an arm release, maybe worth a try with box86.
 

ptitSeb

Serial Porter
Joined
Aug 15, 2012
Messages
8,453
Age
47
Location
France, near Lyon
Well, the problem with Apps is that they don't use SDL or Plain X11, but stuff like glib... Those libs are not (yet?) wrapped in box86, so it needs the i386 version, that use *many* not yet wrapped functions from various libs (X11, xcb, libm, libc...). I gave Telegram a quit try, and I get many many not yet wrapped function error, and yeah, it doesn't work yet... So, still need some work, but it should work later...
 

levi

Still fresh, damnit!
Joined
Oct 6, 2008
Messages
11,478
Location
Somewhere off the coast of the EU
Presumably a lot of these wrappers are simple shims across to the native arm versions of those libs. I guess if there are any multibyte numbers that are returned they'll need their endianness swapping, since I assume the Pandora's libs all provide little endian outputs while x86 libs will expect big endian, and that could affect unicode outputs too, so actually maybe not so many simple shims.
 

ptitSeb

Serial Porter
Joined
Aug 15, 2012
Messages
8,453
Age
47
Location
France, near Lyon
Presumably a lot of these wrappers are simple shims across to the native arm versions of those libs. I guess if there are any multibyte numbers that are returned they'll need their endianness swapping, since I assume the Pandora's libs all provide little endian outputs while x86 libs will expect big endian, and that could affect unicode outputs too, so actually maybe not so many simple shims.
x86 is Little Endian, like Arm, no issue on that side.

The issue is that argument are not always presented the same way on the stack.
To give you an idea, a simple wrapped around memcpy looks like that with Box86:
Code:
GO(memcpy, pFppu)
It's C, but heavily reliying on macro (and a Python script). The meaning is; left of F is "p" means function return a pointer, right is "ppu", means it has 3 arguments: 2 pointers and an unsigned int (in that order)...
 

Grench

Forum Addict!
Joined
Oct 3, 2008
Messages
6,265
It should support other program, but I haven't found any one to test (it seems Skype doesn't exist anymore in Linux 32bits)
Back on X86 games...
Can it allow us to run the X86 Linux Steam client on a Pyra?
There are quite a few old X86 games that are served up through steam with a semi-integrated DosBox included. Using the Steam client to purchase & download the game - then stripping the content out to run in an optimized to Pyra Box86 instead of DosBox could have some fun at the end of it.
 

Askarus

Hardcore Member
Joined
Sep 28, 2011
Messages
4,310
Location
Germany
What a big mistake to tease people.
Now you'll have to answer dozends of questions and won't have time any more to work on the project :p
 

levi

Still fresh, damnit!
Joined
Oct 6, 2008
Messages
11,478
Location
Somewhere off the coast of the EU
Back on X86 games...
Can it allow us to run the X86 Linux Steam client on a Pyra?
There are quite a few old X86 games that are served up through steam with a semi-integrated DosBox included. Using the Steam client to purchase & download the game - then stripping the content out to run in an optimized to Pyra Box86 instead of DosBox could have some fun at the end of it.
Maybe, but you'll have to give Ptitseb the time to get the project even close to that point. For the time being, I'd advise you to take the releases he gives us gratefully as is.
 

Grench

Forum Addict!
Joined
Oct 3, 2008
Messages
6,265
Maybe, but you'll have to give Ptitseb the time to get the project even close to that point. For the time being, I'd advise you to take the releases he gives us gratefully as is.
I will gladly wait for whatever he produces whenever he produces it. I simply want to let him know that, "Yes, people really do want this."

I'm not sure what motivates him, but his work has been a great boon to this community. I'm not sure how to repay that other than encouragement at this point.

So, @ptitSeb - how can we say, "Thank you!"?
 

ptitSeb

Serial Porter
Joined
Aug 15, 2012
Messages
8,453
Age
47
Location
France, near Lyon
I will gladly wait for whatever he produces whenever he produces it. I simply want to let him know that, "Yes, people really do want this."

I'm not sure what motivates him, but his work has been a great boon to this community. I'm not sure how to repay that other than encouragement at this point.

So, @ptitSeb - how can we say, "Thank you!"?
Well, "Thank you!", like for anybody else :p.

Now, of course Steam is on my todo, but as I explained, I haven't focussed much on app yet, more on some games. And because the libs involved are pretty different, I'm not expecting much app to launch for now.
Still, for the fun of it, I gave it a quick run on the Pandora.
Once the unpacking (it's a deb file), I tried to launch the "bootstrap" program:
Code:
/media/sda1/sources/x86/steam$ DISPLAY=:0 LIBGL_FB=3 ../../git/box86/build/box86 ubuntu12_32/steam
Using default BOX86_LD_LIBRARY_PATH: ./:lib/
Using default BOX86_PATH: ./:bin/
Counted 60 Env var
Looking for ubuntu12_32/steam
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) librt.so.1
Using native(wrapped) libm.so.6
Using emulated /mnt/utmp/codeblocks/usr/lib/i386-linux-gnu/libstdc++.so.6
Using emulated /mnt/utmp/codeblocks/usr/lib/i386-linux-gnu/libgcc_s.so.1
Warning, don't know of to handle rel #2469 type: R_386_TLS_DTPMOD32 (0x40ba5a8c)
Warning, don't know of to handle rel #2502 type: R_386_TLS_DTPMOD32 (0x40ba5b80)
Warning, don't know of to handle rel #2562 type: R_386_TLS_DTPMOD32 (0x40ba5d74)
Using native(wrapped) libdl.so.2
Using native(wrapped) libX11.so.6
Error: Global Symbol alphasort64 not found, cannot apply R_386_GLOB_DAT @0x409909ac ((nil))
Error: Symbol fnmatch not found, cannot apply R_386_JMP_SLOT @0x409903f8 (0x22106)
Error: Symbol semget not found, cannot apply R_386_JMP_SLOT @0x4099041c (0x22196)
Error: Symbol semop not found, cannot apply R_386_JMP_SLOT @0x40990424 (0x221b6)
Error: Symbol sendfile64 not found, cannot apply R_386_JMP_SLOT @0x4099044c (0x22256)
Error: Symbol semctl not found, cannot apply R_386_JMP_SLOT @0x40990480 (0x22326)
Error: Symbol nice not found, cannot apply R_386_JMP_SLOT @0x40990558 (0x22686)
Error: Symbol wcscpy not found, cannot apply R_386_JMP_SLOT @0x40990634 (0x229f6)
Error: Symbol pthread_condattr_setclock not found, cannot apply R_386_JMP_SLOT @0x40990688 (0x22b46)
Error: Symbol posix_fadvise not found, cannot apply R_386_JMP_SLOT @0x409906b0 (0x22be6)
Error: Symbol seteuid not found, cannot apply R_386_JMP_SLOT @0x409906bc (0x22c16)
Error: Symbol eventfd not found, cannot apply R_386_JMP_SLOT @0x40990728 (0x22dc6)
Error: Symbol epoll_ctl not found, cannot apply R_386_JMP_SLOT @0x40990780 (0x22f26)
Error: Symbol futimes not found, cannot apply R_386_JMP_SLOT @0x409907d4 (0x23076)
Error: Symbol __realpath_chk not found, cannot apply R_386_JMP_SLOT @0x40990828 (0x231c6)
Error: Symbol malloc_usable_size not found, cannot apply R_386_JMP_SLOT @0x4099088c (0x23356)
Error: Symbol __vasprintf_chk not found, cannot apply R_386_JMP_SLOT @0x409908c8 (0x23446)
Error: Symbol mkfifo not found, cannot apply R_386_JMP_SLOT @0x409908cc (0x23456)
Error: Symbol epoll_create not found, cannot apply R_386_JMP_SLOT @0x409908f4 (0x234f6)
Error: Symbol scandir64 not found, cannot apply R_386_JMP_SLOT @0x40990924 (0x235b6)
Error: Symbol wcstoull not found, cannot apply R_386_JMP_SLOT @0x40990950 (0x23666)
Segmentation fault
So a bunch of unimplemented wrpper missing, and a segfault...
Not very conclusive.
I added the functions. Most were trivial wrapper, but one (scandir64) invole callback, so needed special attention.
Once implemented (I'm getting use to this), the next run is not really better:
Code:
/media/sda1/sources/x86/steam$ DISPLAY=:0 LIBGL_FB=3 ../../git/box86/build/box86 ubuntu12_32/steam
Using default BOX86_LD_LIBRARY_PATH: ./:lib/
Using default BOX86_PATH: ./:bin/
Counted 60 Env var
Looking for ubuntu12_32/steam
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) librt.so.1
Using native(wrapped) libm.so.6
Using emulated /mnt/utmp/codeblocks/usr/lib/i386-linux-gnu/libstdc++.so.6
Using emulated /mnt/utmp/codeblocks/usr/lib/i386-linux-gnu/libgcc_s.so.1
Warning, don't know of to handle rel #2469 type: R_386_TLS_DTPMOD32 (0x40582a8c)
Warning, don't know of to handle rel #2502 type: R_386_TLS_DTPMOD32 (0x40582b80)
Warning, don't know of to handle rel #2562 type: R_386_TLS_DTPMOD32 (0x40582d74)
Using native(wrapped) libdl.so.2
Using native(wrapped) libX11.so.6
Warning, Ignoring signal(0x0D, 0x405cd480)
Segmentation fault
Still segfault...
A quick gdb shows me the segfault is in a memcmp... And runing with log at maximum doesn't gives much information:
Code:
 ....
7855|0x408f2c97: Calling __libc_malloc (/lib/libc.so.6) (00000030, 037F0F7F, 0000000B...) => return 0xA8139A70
7855|0x403996fa: Calling my___cxa_atexit (../../git/box86/build/box86) (404FB67C, 407A30C0, 40777000...) => return 0x00000000
7855|0x40399741: Calling my___cxa_atexit (../../git/box86/build/box86) (40902F20, 407A32B8, 40777000...) => return 0x00000000
7855|0x4039977f: Calling my___cxa_atexit (../../git/box86/build/box86) (40902F20, 407A32BC, 40777000...) => return 0x00000000
Transfert to main(1, 0xa8099450, 0xa80994f8)=>0x40395ec0 from __libc_start_main
7855|0x403997d1: Calling my___libc_start_main (../../git/box86/build/box86) (40395EC0, 00000001, 408A5ED4...) => return 0x00000000
7855|0x403aab11: Calling sigemptyset (/lib/libc.so.6) (408A4DCC, 00000000, 00000000...) => return 0x00000000
7855|0x403aab21: Calling sigaddset (/lib/libc.so.6) (408A4DCC, 00000011, 00000000...) => return 0x00000000
7855|0x403aab40: Calling sigprocmask (/lib/libc.so.6) (00000000, 408A4DCC, 00000000...) => return 0x00000000
Warning, Ignoring signal(0x0D, 0x403aa480)
7855|0x403aab56: Calling my_signal (../../git/box86/build/box86) (0000000D, 403AA480, 00000000...) => return 0xFFFFFFFF
7855|0x403aab66: Calling getrlimit (/lib/libc.so.6) (00000007, 408A4D90, 00000000...) => return 0x00000000
7855|0x403aabb0: Calling setrlimit (/lib/libc.so.6) (00000007, 408A4D90, 00000000...) => return 0x00000000
7855|0x404b1ffd: Calling strlen (/lib/libc.so.6) (4065F7B7, 00000000, 00000000...) => return 0x00000013
Segmentation fault
(the function that cause the segfault is not even in the log, I'll have to fix that at one point).

So, it was worth a try, but as I suspected, it doesn't work. At this point, I would need to debug and see were the buggy address in the memcmp cames from. I'll do it, but just not now. I'll switch back my focus on opensourcing Box86, create a proprer stread about it... all that. Then we'll continue this discution after the opensourcing...
 

Silent-Hunter

Hardcore Member
Joined
May 29, 2010
Messages
3,088
Hopefully once it's open others can help! Multiple heads are better than one after all. :)
 

Grench

Forum Addict!
Joined
Oct 3, 2008
Messages
6,265
Regarding R_386_TLS_DTPMOD32:
Code:
https://docs.oracle.com/cd/E19120-01/open.solaris/819-0690/6n33n7ffe/index.html
I wish there were something we could do to return the favor(s) though. I have never been to France - I have only made it as close as Ireland. If somehow you and I ever wind up in the same restaurant, bar or coffee shop, though, I'm buying.
 

ptitSeb

Serial Porter
Joined
Aug 15, 2012
Messages
8,453
Age
47
Location
France, near Lyon
Regarding R_386_TLS_DTPMOD32:
Code:
https://docs.oracle.com/cd/E19120-01/open.solaris/819-0690/6n33n7ffe/index.html
Thanks. I digged a bit, and it seems this relocation just need the "Load Index Module" of the refered symbol. It also seems there is an implicit, linux only, special rule with 0=current module, so not doing anything seems correct. I think I'll just remove the frigtning error message for now.
I wish there were something we could do to return the favor(s) though. I have never been to France - I have only made it as close as Ireland. If somehow you and I ever wind up in the same restaurant, bar or coffee shop, though, I'm buying.
Hey, sure, who knows what the future hold, I may travel, or you may...
 

ElPoco

Very Active Member
Joined
Feb 16, 2012
Messages
723
Age
35
Location
Paris, France
Back on X86 games...
Can it allow us to run the X86 Linux Steam client on a Pyra?
On Linux there's Steam-cli. I used it in Exagear to retrieve data files for games with a Pandora port. It might be an easier target than the steam graphical client.
 

dimag0g

Very Active Member
Joined
Jan 12, 2011
Messages
608
Location
Strasbourg, France
Hello all, I apologize for not reading the entire thread. I missed the update e-mail and the last release I have is 2.0. Could someone tell me which is the latest release, and perhaps point me to the place where I can get it?
 

Kippykip

BFG 9000
Joined
Sep 6, 2016
Messages
499
Age
21
Location
'STRAYA
Website
kippykip.com
Hello all, I apologize for not reading the entire thread. I missed the update e-mail and the last release I have is 2.0. Could someone tell me which is the latest release, and perhaps point me to the place where I can get it?
I archived everything I could and put it on my website, I'll send you a DM!
 
Top