Ryan C. Gordon
e8c5bc119e
Implemented support for "iterated" data pages.
...
Fixes initial load of jv12mi36.dll (Java 1.3 that ships with OS/2 Warp 4.52).
2016-10-18 01:06:31 -04:00
Ryan C. Gordon
460e454ff3
runLx* don't need to adjust the stack for the TIB space any more.
2016-10-17 21:55:20 -04:00
Ryan C. Gordon
c4a784b9dc
Whoops, unbroke my EMX hack.
2016-10-17 21:45:11 -04:00
Ryan C. Gordon
60e62a1306
Moved the path conversion code to lx_loader.c, and use it.
...
Fixes loading "emx.dll" when the loader asked for "EMX.dll", etc.
2016-10-17 21:10:29 -04:00
Ryan C. Gordon
2016af81a2
Added support for import-by-name fixup records.
...
Fixes Watcom C's wlink.exe not loading at all.
(...and now it actually links binaries!).
2016-10-17 20:06:52 -04:00
Ryan C. Gordon
cbffb2ff60
Initialize the PIB at startup.
...
Otherwise, it won't be available to DLL init code when run before the
main executable starts.
Fixes Watcom C's wlink.exe crashing because it gets a NULL command line.
2016-10-17 17:00:32 -04:00
Ryan C. Gordon
7dcce0cbd8
Removed some commented-out incorrect code.
2016-10-17 15:53:11 -04:00
Ryan C. Gordon
47f074837a
Whoops, that's not what waitpid() returns.
2016-10-17 15:51:22 -04:00
Ryan C. Gordon
1c1e6de400
Implemented DosQueryAppType().
2016-10-17 15:44:47 -04:00
Ryan C. Gordon
b9a799e22e
Fixes to DosQueryCurrentDir().
...
This API shouldn't return a drive letter or initial path separator,
and also shouldn't leak memory.
2016-10-17 15:44:20 -04:00
Ryan C. Gordon
8047d55bcb
Wire up loading of LX name tables. Fixes DosQueryProcAddr() with strings.
2016-10-17 15:43:08 -04:00
Ryan C. Gordon
2c2526abe1
Fixed some details of DLL loading.
2016-10-17 12:00:57 -04:00
Ryan C. Gordon
e011e5cec1
Implemented more APIs; a little further into Watcom C's wcc386.exe now...
2016-10-17 10:56:50 -04:00
Ryan C. Gordon
dc00a7e998
Implemented more APIs. Watcom C's "wasm.exe" works now.
2016-10-17 02:35:39 -04:00
Ryan C. Gordon
b2e32aeb37
Separate TIB from OS/2 stack.
2016-10-16 12:24:38 -04:00
Ryan C. Gordon
ef4d529544
Pass actual selector (without shifting) so we deinit the segment correctly.
2016-10-16 12:23:24 -04:00
Ryan C. Gordon
d8f62859c7
Library init passes the library module handle on the stack, as it should.
2016-10-16 12:21:32 -04:00
Ryan C. Gordon
af2e92fa73
Pass the exe's module handle to the OS/2 process entry point.
2016-10-15 22:10:29 -04:00
Ryan C. Gordon
6454917556
Fixed environment/command line tables passed in at OS/2 process entry.
...
This worked before on EMX-based binaries, but this fix makes it also work
on binaries compiled with Watcom C.
2016-10-15 22:09:56 -04:00
Ryan C. Gordon
544033f2ae
Some APIs that Watcom's wasm.exe needs to start up.
2016-10-15 22:08:00 -04:00
Ryan C. Gordon
ea0a7618b1
Turned some error output back on.
2016-10-14 03:40:24 -04:00
Ryan C. Gordon
68aa18c5a1
Consolidate and turn off all the debug logging for now.
2016-10-14 02:51:37 -04:00
Ryan C. Gordon
0349122bd7
Bunch More Work: more APIs, subprocesses, multithreading.
...
EMX's GCC compiler can now build hello.c when run from lx_loader!
2016-10-14 02:39:17 -04:00
Ryan C. Gordon
b4d0e571e7
Implemented some file i/o APIs and stubbed some threading primitives.
...
Now EMX's build of cpp.exe (GNU's C preprocessor) runs on Linux...granted,
it picks up the Linux /usr/include headers, but this is still a triumph!
2016-10-09 13:45:58 -04:00
Ryan C. Gordon
086e05dd0c
DosFlatToSel() is called like any other OS/2 API.
...
I must have been reading docs for device drivers, or something...?
Now it returns the top word of the linear pointer, in hopes that this will
just get mushed back together later, knock on wood.
2016-10-09 13:44:10 -04:00
Ryan C. Gordon
ccad3a0dbb
Hooked up the FS register and TIB support.
2016-10-08 16:34:59 -04:00
Ryan C. Gordon
c00940caf0
This is me trying to figure out how to change the %fs register on Linux. :)
2016-10-07 20:25:03 -04:00
Ryan C. Gordon
b04f032caa
Fixed passing of command lines to LX program.
2016-10-06 16:37:46 -04:00
Ryan C. Gordon
fa77133baf
Added program to test command line and environment variable passing.
2016-10-06 16:37:13 -04:00
Ryan C. Gordon
262b428f51
Implemented DosGetDateTime() and DosOpen().
2016-10-06 15:56:20 -04:00
Ryan C. Gordon
97ced670ce
Added FIXME and STUBBED macros
2016-10-06 15:55:37 -04:00
Ryan C. Gordon
a13361e080
Added -D_FILE_OFFSET_BITS=64
2016-10-06 15:55:09 -04:00
Ryan C. Gordon
95d666c01b
Add native modules to the loaded modules list.
...
Otherwise we'd reload/reinit libdoscalls.so (etc) for every module!
2016-10-05 15:52:11 -04:00
Ryan C. Gordon
fae99dc048
Turn off some debug output. I'm sure I'll regret this soon. :)
2016-10-05 15:45:23 -04:00
Ryan C. Gordon
88ca89f160
Implemented some HFILE-related code better. tests/helloc.exe now works!
2016-10-05 15:44:29 -04:00
Ryan C. Gordon
71653286cd
Implemented some more APIs.
...
This is enough to survive emx.dll intialization and a printf("hello world")
mainline, but note that we need to properly implement DosQueryHType()
before EMX's printf() will work, though (as it currently thinks stdout isn't
open), so we're not quite through a proper C Hello World test yet.
2016-10-02 18:26:27 -04:00
Ryan C. Gordon
8a6c7fef87
Initialize the DosExitList() items' function pointers.
2016-10-02 18:23:28 -04:00
Ryan C. Gordon
d9823705c0
Nop out the read of the FS register in EMX's syscall interface for now.
...
Eventually, we'll maybe need to set the FS register to be a proper TIB pointer,
but I'm mostly hoping that everything else was well-behaved enough to always
use DosGetInfoBlocks() instead. Yeah, right.
2016-10-02 18:21:51 -04:00
Ryan C. Gordon
f681be1b1f
Reworked the native module loading code.
2016-10-02 18:18:31 -04:00
Ryan C. Gordon
ebe5f95a3e
Put a real CMake project in here.
2016-09-30 18:08:36 -04:00
Ryan C. Gordon
bee2afe62b
Bunch More Work, mostly cleanup and organization.
...
Wanted to do this now before it gets out of hand.
Ideally, this can be used for a Winelib-like option eventually, too, where you
don't load OS/2 binaries at all but rather compile and link your OS/2-based
source code against this API reimplementation.
2016-09-30 15:58:48 -04:00
Ryan C. Gordon
6220544d06
Bunch More Work on getting an EMX-based "hello world" to run.
...
It looks like most of the remaining work for that is filling in dozens of
OS/2 APIs that EMX uses at startup just so we can get to our single
printf() call. :)
2016-09-30 10:36:33 -04:00
Ryan C. Gordon
08eaf1f59f
Fixed buffer overflow.
2016-09-27 10:07:47 -04:00
Ryan C. Gordon
3df4fc0544
Report caller address for missing functions.
2016-09-27 10:05:08 -04:00
Ryan C. Gordon
141ff8bdcd
More fixup fixes. We're now into EMX crt0.s, calling missing doscalls APIs.
2016-09-26 15:31:54 -04:00
Ryan C. Gordon
4c09b9b6f5
Call library init/termination code.
2016-09-26 12:14:45 -04:00
Ryan C. Gordon
d3e686276b
Fixups fixes.
2016-09-26 12:13:18 -04:00
Ryan C. Gordon
41e66c9071
Some more work on getting DLLs working.
2016-09-25 14:21:31 -04:00
Ryan C. Gordon
c3d9945942
Fixup source offsets are signed values (and sometimes negative!).
2016-09-25 14:20:20 -04:00
Ryan C. Gordon
17a64c9407
Don't load modules that are marked as non-loadable.
...
(Whatever that means in practice.)
2016-09-25 11:06:34 -04:00