>which is passed as an argument (or stored into a data structure). I've>been told that the HP Snake C compiler apparently makes a little 'stub'>procedure for this case.

[moderator notes]>all pointers aren't the same size, so compiler writers finesse it by>making a procedure pointer actually point to a little stub that loads up>the data pointer and jumps to the code. That's the second entry point.

All quite true for the PA. But there are other cases there procedures
may have multiple entry points on the PA.

1) Argument relocation stubs. These are used to make sure caller
and callee agree what registers hold arguments/return values. You'll
have to read the PA calling conventions closely to realize these
get used a great deal more than one would think.

2) Long-call stubs. The PA's instruction to perform function calls
only ask a +-256kb range (egad)!. When the instruction can't reach
the target, the linker makes an alternate entry for the target
(hopefully within reach of the caller :)