Re: Cross-compilation for OS/2 target
Tomas Hajny via fpc-pascal <[email protected]> Tue, 16 Jun 2026 11:11:41 +0200
| Newsgroups | gmane.comp.compilers.free-pascal.general |
|---|---|
| Message-ID | <[email protected]> |
On 2026-05-07 14:57, Tomas Hajny wrote: > On 2026-04-21 11:11, Tomas Hajny wrote: >> On 2026-04-21 10:21, Karoly Balogh via fpc-pascal wrote: Hi, > . > . >>> Are you sure? There seem to be several very recent cross-emx >>> toolchains on >>> GitHub, for example: >>> >>> https://github.com/komh/cross-os2emx . . > FWIW, an update on this topic: > > 1) The binaries provided with cross-os2emx don't work with Debian > oldstable (BookWorm) running on my machine, but they work with Debian > stable (Trixie), i.e. this is no problem. > > 2) For some reason, the (cross-)linker complains about a duplicate > symbol in the OS/2 RTL. From a technical point of view, the complaint > is correct and I can resolve it, but it's strange that I don't get such > a complaint when linking natively. However, no big deal. > > 3) The ported emxbind doesn't accept the same parameters as the native > version. That surprises me (I wouldn't expect a port to Linux to behave > differently from the original OS/2 program), but it's no problem to fix > it (the unsupported parameters are related to EMX binaries able to run > under both OS/2 and DOS natively and that is not supported for the OS/2 > target anyway - unlike the EMX target - so I can simply skip them for > the OS/2 target). > > 4) Unfortunately, I get another error from emxbind (i.e. the final > linking stage transforming the generated a.out file to OS/2 EXE): > "emxbind: invalid data segment (does not start with 0xba0bab)". That's > certainly not something I could fix myself - it suggests that probably > either the ported as version, or the ported ld linker create something > not expected by emxbind. I'll experiment with it a bit more to locate > the culprit (it might be an error in the emxbind port as well) and try > contacting author of the port in order to get some support from him. I > suspect that he might be using emxomfld instead, thus not working with > emxbind at all, but binaries created that way cannot be debugged with > gdb (or anything else) and, moreover, I couldn't make emxomfld to work > for me with FPC compiled binaries when experimenting with this option > in the past. The update promised earlier - after my report of the problem mentioned in point 4 above, the latest release 1.2.0 of the cross-os2emx project allows successful cross-compilation of OS/2 binaries under Linux (obviously with a 32-bit FPC compiler) together with my 2 fixes (one for the loader file within the OS/2 RTL, another for the linker parameters) which should be hopefully included with the 3.2.4 release (without these changes, one must compile with -s and modify the linker parameters manually). Needless to say, it's useful to create symbolic links for the cross-os2emx binaries in order to allow FPC finding the assembler (as), linker (ld) and linking post-processor (emxbind) with the expected prefixes (i386-os2-). In addition, it should be possible to use this solution on a MS Windows machine as well if combined with WSL (Windows Services for Linux). ;-) Direct compilation of the cross-os2emx sources to native MS Windows executables might be possible as well, but I didn't try that and the author of the cross-os2emx port doesn't provide MS Windows binaries (perfectly understandable decision as far as I'm concerned :-) ). I didn't try building a complete OS/2 release with this setup yet, but I might test it later; if nothing else, I assume that some additional make parameters would be necessary compared to native building in order to use zip rather than tar as expected for OS/2, but it should be perfectly doable. Regardless from that, I'll continue building the OS/2 release under OS/2 natively, it's just to provide alternatives for anybody possibly interested. Tomas _______________________________________________ fpc-pascal maillist - [email protected] https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal