unikraft / static-pie-apps

Built Linux applications (static-pie) for Unikraft binary compatibility mode
7 stars 40 forks source link

Build ispell as static-pie executable #15

Open Ioana-Stancioiu opened 2 years ago

razvand commented 1 year ago

Hi, @StefanJum, I added a README.md file and forced push. I don't know about the patches/ directory. I will let @Ioana-Stancioiu answer that.

Ioana-Stancioiu commented 1 year ago

Hi, @StefanJum and @razvand, I originally compiled and tested the code on an older version of Unikraft, the one present on the run-app-elfloader master branch. The lookup.patch file solves a problem that I experienced while running ispell on this version. The number of bytes read on line 7 did not match the specified number. I discovered that reading the hashstring in a while solved the error. The ispellh.patch and term.patch files solve a symbol has multiple definitions linking error, BC variable is defined in the termcap library as well, from what I remember. Without these patches I was unable to compile the binary locally, on Ubuntu 20.04. As @StefanJum suggested I tried testing the binary with the Lyon Hackathon setup with no success. I would be grateful if you could try testing this as well, the patches might prove to be unnecessary.

StefanJum commented 1 year ago

Got it @Ioana-Stancioiu. I tested it using run-elfloader and it works fine, great work.

$ ./run_elfloader -r ../static-pie-apps/ispell/rootfs/ ../static-pie-apps/ispell/ispell
SeaBIOS (version 1.13.0-1ubuntu1.1)
Booting from ROM..Powered by
o.   .o       _ _               __ _
Oo   Oo  ___ (_) | __ __  __ _ ' _) :_
oO   oO ' _ `| | |/ /  _)' _` | |_|  _)
oOo oOO| | | | |   (| | | (_) |  _) :_
 OoOoO ._, ._:_:_,\_._,  .__,_:_, \___)
            Mimas 0.7.0~1e17a9c8-custom
@(#) International Ispell Version 3.4.05 11 Mar 2022
word: word
ok

word: aaaa
not found

word: abc
how about: AAC, ABD, Abe, arc, ATC, NBC

word: qemu-system-x86_64: terminating on signal 2
razvand commented 1 year ago

@Ioana-Stancioiu, @StefanJum, I confirm. It also works on my end: running on top of Unikraft in binary compatibility mode.