Invalid pointer traps (S/6000)
Jeff Smith
jeffs at soul.esd.sgi.com
Thu Feb 14 09:35:57 AEST 1991
In article <1991Feb12.033513.27494 at athena.mit.edu>, jfc at athena.mit.edu
(John F Carr) writes:
|> Speculation: IBM found too many things broke when they made NULL pointer
|> dereferences trap. The documentation even says that *(int *)0 == 0. AIX
|> 1.1 made NULL pointer reads trap, and IBM changed this for AIX 1.2 to allow
|> reads from location 0. I don't know if the AIX 1 developers talk to the AIX
|> 3 developers or not.
Lots of things do break when *(char *)0 != 0. On early AIX/ps 1, *(char *)0
was really 'L'. The coff header was mapped in at address 0, and the first
byte of the magic number corresponded 'L' I belive. This broke lots of
utilities from the RT tree (parts of PS/2 and RS/6000 AIX started here).
I wasn't around when they made *(char *)0 trap, but, I know it wasn't a
easy time. Surprised they changed it back in 1.2 though. I used 1.2 for
8 months or so, but never noticed it.
And no, the AIX 1 developers (PS/2) and the AIX 3 (RS/6000) developers
don't talk much.
jeffs at sgi.com
More information about the Comp.unix.aix
mailing list