changing the console; alloca missing from 9021?

jim frost madd at world.std.com
Tue Aug 7 12:20:21 AEST 1990


kent at opus.austin.ibm.com (Kent Malave') writes:
>> Also, it looks like alloca isn't in libbsd.a or libc.a.  Was this just an
>> oversight in this release?  If this is true, is there someone who can give
>> me a copy (hello IBM?)
>>
>	You may want to look in /usr/lpp/bos.  In this directory there are
>	to very good articles on AIX and BSD differences in system administration
>	(file bsdadm) and porting of code (file bsdport).

The bsdport file is pretty good, if you're porting bsd code I
recommend it.  There are still some gotchas, though.

First gotcha is you need to include #pragma alloca to get alloca.
It's pretty hard to build a function that does alloca on a lot of
machines (the rios is one of them) so it's done inline.  It also uses
an extra register because it keeps both a stack pointer (r1) and a
frame pointer (r31) so you get moderately less efficient code.

Second gotcha is that if you're using /lib/cpp as recommended in
bsdport, #pragma alloca will cause it to internal error.  You can do
this in one line:

	% cat > foo.c
	#pragma alloca
	^D
	% cc -B/lib/ foo.c # bsdcc from bsdport does this
	[some number] Internal error -- please contact your IBM representative.

I might be wrong about the -B flag, I don't have the documentation
handy and it might be some other letter.  The internal cpp doesn't
internal error.  It does, however, barf on at-signs (@) which is
hardly nice behavior.

On the up-side, compatibility with BSD code seems very high.  About
the only problem I had on the stuff I have ported was that sigcontext
(mstsave or whatever on the rios) is radically different and that
compiling in BSD mode is pretty slow.

Happy hacking,

jim frost
saber software
jimf at saber.com



More information about the Comp.unix.aix mailing list