Exagear is dead

Discussion in 'Everything else' started by WizardStan, Feb 15, 2019.

  1. Askarus

    Askarus Hardcore Member

    Joined:
    Sep 28, 2011
    Messages:
    4,284
    Location:
    Germany
    @ptitSeb
    IS it only for games or does it also support other programs?
     
  2. ptitSeb

    ptitSeb Serial Porter

    Joined:
    Aug 15, 2012
    Messages:
    8,361
    Location:
    France, near Lyon
    It should support other program, but I haven't found any one to test (it seems Skype doesn't exist anymore in Linux 32bits)
     
  3. Silent-Hunter

    Silent-Hunter Hardcore Member

    Joined:
    May 29, 2010
    Messages:
    3,025
    You could try the 32 bit Linux version of Telegram. There's a precompiled one.
     
  4. TrashyMG

    TrashyMG Sarcasm Dispenser Staff Member

    Joined:
    Jan 18, 2010
    Messages:
    10,493
    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.
     
  5. ptitSeb

    ptitSeb Serial Porter

    Joined:
    Aug 15, 2012
    Messages:
    8,361
    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 likes this.
  6. levi

    levi Still fresh, damnit!

    Joined:
    Oct 6, 2008
    Messages:
    10,986
    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.
     
  7. ptitSeb

    ptitSeb Serial Porter

    Joined:
    Aug 15, 2012
    Messages:
    8,361
    Location:
    France, near Lyon
    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)...
     
    CommanderB, Grench and levi like this.
  8. Grench

    Grench Forum Addict!

    Joined:
    Oct 3, 2008
    Messages:
    6,045
    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.
     
  9. Askarus

    Askarus Hardcore Member

    Joined:
    Sep 28, 2011
    Messages:
    4,284
    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
     
    Alperoot likes this.
  10. levi

    levi Still fresh, damnit!

    Joined:
    Oct 6, 2008
    Messages:
    10,986
    Location:
    Somewhere off the coast of the EU
    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.
     
  11. Grench

    Grench Forum Addict!

    Joined:
    Oct 3, 2008
    Messages:
    6,045
    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!"?
     
    PokeParadox and levi like this.
  12. ptitSeb

    ptitSeb Serial Porter

    Joined:
    Aug 15, 2012
    Messages:
    8,361
    Location:
    France, near Lyon
    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...
     
  13. Silent-Hunter

    Silent-Hunter Hardcore Member

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

    Grench Forum Addict!

    Joined:
    Oct 3, 2008
    Messages:
    6,045
    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.
     
    ckblackm likes this.
  15. ptitSeb

    ptitSeb Serial Porter

    Joined:
    Aug 15, 2012
    Messages:
    8,361
    Location:
    France, near Lyon
    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.
    Hey, sure, who knows what the future hold, I may travel, or you may...
     
  16. ptitSeb

    ptitSeb Serial Porter

    Joined:
    Aug 15, 2012
    Messages:
    8,361
    Location:
    France, near Lyon
  17. ElPoco

    ElPoco Very Active Member

    Joined:
    Feb 16, 2012
    Messages:
    707
    Location:
    Paris, France
    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.
     
  18. ptitSeb

    ptitSeb Serial Porter

    Joined:
    Aug 15, 2012
    Messages:
    8,361
    Location:
    France, near Lyon
    There is a proprer Box86 thread now for this kind of discussion.
     
  19. dimag0g

    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?
     
  20. Kippykip

    Kippykip BFG 9000

    Joined:
    Sep 6, 2016
    Messages:
    498
    Location:
    'STRAYA
    I archived everything I could and put it on my website, I'll send you a DM!
     

Share This Page

Loading...