| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | ILINK`s undocumented statements |
Hello Mike!
Thursday March 28 1996 10:47, Mike Bilow wrote to Rinat Sadretdinow:
MB> Most of these keywords are useful only with regard to segmented Ring 0
MB> code, such as device drivers, which are technically not supported
MB> under LINK386.
Well. But why device drivers are not supported under LINK386? For example,
SIO.SYS has been linked by LINK386 (I guess) and although it is a device
driver,
it has an ordinary LX structure. And if I cannot link drivers with LINK386 (I
still do not believe that, I made my own drivers for the ATM I'm programming
for
and linked them with LINK386), so which linker should I have to produce such
device drivers?
MB> Some of the keywords simply set attribute bits in the EXE header; see
MB> the EXE386.H file in the OS/2 Toolkit for more information,
MB> specifically the O32_FLAGS definition.
There are a number of keywords that can not be found neither in EXE386.H nor in
NEWEXE.H. For example ROBASE (ReadOnly BASE) and SYSBASE. What the gain I may
have if use these ones?
The main reason I am interested in these keywords was the question: "how had
OS2KRNL been linked? which linker did IBM use?" I explored an LX header from
OS2KRNL and found it has very interesting structure. I've already posted a cut
from EXEHDR output here, but now I repost only a little part just to illustrate
the questions I'm interesting in:
no. virtual virtual map map flags
address size index size
0001 00000000 0000b36c 00000001 00000008 READABLE, WRITEABLE, SHARED, PRELOAD,
16:16 ALIAS
> 1) Look, virtual address is 0x00000000, OS2KRNL is a DLL, LINK386 does
> not allow to use base value lower than 0x10000. How did IBM made such
> address?
0002 00000000 0000c280 00000009 0000000d EXECUTABLE, READABLE, PRELOAD,
16:16 ALIAS
0003 00000000 00010000 00000016 00000010 READABLE, WRITEABLE, SHARED,
INVALID-PAGES, 16:16 ALIAS, IOPL
0004 00000000 00001ea8 00000026 00000002 READABLE, WRITEABLE, SHARED,
16:16 ALIAS, IOPL
0005 00000000 000050a2 00000028 00000002 READABLE, WRITEABLE, SHARED,
16:16 ALIAS
0006 00000000 000025c4 0000002a 00000003 EXECUTABLE, READABLE, 16:16 ALIAS
0007 00110000 000001ac 0000002d 00000001 READABLE, WRITEABLE, DISCARDABLE,
RESIDENT, 32-bit
0008 00120000 000019a4 0000002e 00000002 READABLE, WRITEABLE, DISCARDABLE,
32-bit
> 2) Segments from 1 to 8 all have *identical* virtual addresses,
> 0x00000000, but LINK386 builds the address of the next segment
> from the address of the previous segment incremented by rounded length
> of the previous segment. How did IBM made such addresses?
0009 fff1d000 0000835c 00000030 00000006 READABLE, WRITEABLE, SHARED,
DISCARDABLE, 32-bit
> 3) The rest segments all have their own, unique addresses, that cannot
> be computed as base of the previous segment plus length of the previous
> segment. How did IBM specify such addresses?
I think if IBM uses LINK386 for their OS/2 developing some reserved keywords
can answer my questions. If IBM uses a third-party linker I'd like to know what
linker they use and where I can obtain it if it's possible.
Well, I'd pay some bucks to see OS2KRNL.DEF :-)
Bye!
Rinat Sadretdinow [Team OS/2]
--- GoldED/2 2.50.A0715 UNREG
* Origin: -= Thunder Bird =- +7 095 947 1209 10:00pm-08:00am (2:5020/620)SEEN-BY: 50/99 78/0 270/101 620/243 711/401 409 410 413 430 808 809 934 955 SEEN-BY: 712/407 515 517 628 713/888 800/1 7877/2809 @PATH: 5020/620 509 35 400 464/200 31 72 34 5100/8 396/1 270/101 712/515 @PATH: 711/808 809 934 |
|
| SOURCE: echomail via fidonet.ozzmosis.com | |
Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.