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