[net.unix-wizards] Bug in Unix System V C compiler

lepreau@utah-cs.UUCP (Jay Lepreau) (08/01/84)

The following program fails to compile under the Sys V.1 compiler:
main()
{
	int godamnid1;
	int godamnid2;
}

This bug is, as usual, not present in the 4.2 BSD C compiler,
which I use in preference to the Sys V one.

gwyn@brl-tgr.UUCP (08/01/84)

And of course you turkeys are careful to write code that
uses long identifiers so that porting it to non-BSD UNIXes
is much more work than it had to be.  Very professional.

clyde@ut-ngp.UUCP (Clyde W. Hoover) (08/02/84)

> And of course you turkeys are careful to write code that
> uses long identifiers so that porting it to non-BSD UNIXes
> is much more work than it had to be.  Very professional.
<<<<FLAME ON>>>>
Doug, I for one am SICK AND GODDAMN TIRED of your kneejerk Berkeley phobia!

You also seem to prefer personal insult (as I have learned firsthand) to
discussion of issues.  I can no longer put up with such junk, so
I will no longer read your submissions, which is a shame
because you do make some useful contributions (especially in net.lang.c).

Net.unix-wizards should be for the discussion of UNIX problems and solutions
NOT for axe-grinding and personal insults.  You are a respected computer
professional (thanks for the System V emulation package). I wish you
could behave in a more 'professional' manner with people on this net,
especially people whom you disagree with.
<<<<FLAME off>>>>
.... Flames to /dev/null	(Forgive my flamage, fellow wizards)
-- 
Clyde W. Hoover @ Univ. of Texas Computation Center; Austin, Texas  
(Shouter-To-Dead-Parrots)
"The ennui is overpowering" - Marvin 
clyde@ut-ngp.{UUCP,ARPA} clyde@ut-sally.{UUCP,ARPA} ihnp4!ut-ngp!clyde

mcferrin@inuxc.UUCP (P McFerrin) (08/03/84)

	main()
	{
		int godamnid1;
		int godamnid2;
	}

The above is not bug for system V C compiler.  Only the 1st 8 characters
of internal names are significant.  Thus the above example attempted to
declare the variable 'godamnid' twice.

jwp@sdchema.UUCP (John Pierce) (08/03/84)

In article <3726@brl-tgr.ARPA> gwyn@brl-tgr.ARPA (Doug Gwyn <gwyn>) writes:
>And of course you turkeys are careful to write code that
>uses long identifiers so that porting it to non-BSD UNIXes
>is much more work than it had to be.  Very professional.

Gee, I didn't realize any of you really extra super professional people working
on those really super professional non-BSD systems considered any of us poor
turkeys running BSD systems capable of writing anything you might *want*.
My goodness!!!  Do you really mean that someday some really extra super non-BSD
superior professional type programmer might really ...  God!  This has me
so excited I can hardly type!! ... might really actually maybe want to port
something some slob BSD hacker wrote to their lovely pristinely professional
non-BSD system!!??  I can hardly believe it!  I mean, like, man, the thought
just really boggles my (admittedly inferior nonprofessional) mind!!!

Golly Whiz!!!  I gonna have to start giving this some thought though that's
probably gonna be hard for a poor nonprofessional like me.  Let's see...  I
guess I can start with cutting identifiers back to 8 characters (since that
seems to be what all the great professional people on the standards committee
think is best)...  And I guess I could put in line numbers so they could find
things easier...  WOW, MAN!!  I just had a BRILLIANT idea (in my nonprofessional
judgement, of course)...  I could write everything in FORTRAN (pure ANSII
standard, of course) since we all know that that's really easy to port...

				John Pierce, Chemistry, UC San Diego
				sdcsvax!sdchema!jwp

rcd@opus.UUCP (Dick Dunn) (08/04/84)

> > And of course you turkeys are careful to write code that
> > uses long identifiers so that porting it to non-BSD UNIXes
> > is much more work than it had to be.  Very professional.
> <<<<FLAME ON>>>>
> Doug, I for one am SICK AND GODDAMN TIRED of your kneejerk Berkeley phobia!
> 
> Net.unix-wizards should be for the discussion of UNIX problems and solutions
> NOT for axe-grinding and personal insults...

Go back and read the whole sequence.  Then just back off.  Doug was
responding to some fool posting that claimed that the System V C compiler
had a bug because it didn't discriminate between two overly-long
identifiers.  Since the poster of THAT article labeled his coding problem
as a compiler bug, and compounded it by using "godamnid1" as the
identifier which illustrated it, it had already gone from a technical
matter to a flame when Doug shot back.

I don't find the treatment of long identifiers to be particularly nice, but
that's the way the language works right now and it gets tired to see people
keep flaming about the same old problems.  Moreover, I'm neither a
Berkeleyphobe nor a Berkeleyphile, but it's getting pretty old to see such
a cheap shot anytime someone like Doug tries to advocate software which is
portable to the extent of not using every little feature and featurette
that Berkeley tossed in.
-- 
Dick Dunn	{hao,ucbvax,allegra}!nbires!rcd		(303)444-5710 x3086
	...Lately it occurs to me what a long, strange trip it's been.

ron@BRL-TGR.ARPA (08/04/84)

From:      Ron Natalie <ron@BRL-TGR.ARPA>

The problem is that even cutting back to only eight letters is not
sufficient because no AT&T C compiler seems to be able to handle even
eight properly.

-Ron

mats@dual.UUCP (Mats Wichmann) (08/04/84)

The sharp wit and biting sarcasm of the referenced articles has me falling
asleep. I am not going to hope that this old argument can be put to rest,
but....could we please try? The use of long identifiers provided in the
BSD compiler is typical of nonportable language exentsions that we have
all suffered through with many other languages, and it would have been 
nice if this could have been avoided with C. However.....now AT&T is
muddying the waters with flexnames in the Sys V compiler, while the
ANSI standard proposal does not call for this `feature'. It is hard to
flame someone for using the tools available to him locally, UNLESS that
person is specifically working on a commercial product designed to be
portable. For some reason we (and I don't claim innocence here myself)
seem very ready to pronounce the author of a program an idiot for using
some particular feature. 

	    Mats Wichmann
	    Dual Systems Corp.
	    ...{ucbvax,amd,ihnp4,cbosgd,decwrl,fortune}!dual!mats

gwyn@brl-tgr.UUCP (08/05/84)

Lack of Berkeleyphilia is not synonymous with Berkeleyphobia.

It is interesting (psychologically, not technically) that every time
I suggest that there has been considerable progress made in some
aspects of UNIX inside AT&T (in this case, a better VAX C compiler),
I get accused of raving Berkeleyphobia.  Do you people who blindly
believe that everything Berkeley does is perfect whereas everything AT&T
does is stupid feel threatened when your (unjustified and unjustifiable)
beliefs are called into question?

Jay's silly example of a UNIX System V compiler "bug" (in not supporting
identifiers longer than 8 characters, which is not even true any more)
in response to my pointing out that one can get correct code generation
on 4.2BSD by using the System V compiler (which is what I do), seemed
to me to call for some sort of rebuttal.  Since my team had not long ago
tried to port some of U. Utah's C code to a non-BSD UNIX system (by the
way, we helped fund the development of some of this code, so I feel I
have a right to complain), I have had first-hand experience with the
unnecessary porting difficulty that  extreme reliance on long
identifiers can cause.

Clyde's "personal insult" from me consisted of my private response to
his net flame that the Teletype 5620 and the layers software were
"obsolete klunkers" (or words to that effect) in which I said that I did
not think he knew what he was talking about (as 5620 users can attest).
When he in turn responded that he was used to receiving personal abuse,
I suggested that there might be a reason for that (using approximately
the same number and tone of words that appear in my paraphrases here).
I wanted to keep this correspondence private, but Clyde has referred to
it publicly without explaining what transpired.  One nice thing, though,
is that since he is no longer reading my postings I don't have to worry
about a flame back in response to this.

Sorry to tie up net bandwidth with this, but I felt that silence could
be misconstrued as acquiescence.

henry@utzoo.UUCP (Henry Spencer) (08/05/84)

Some of us agree with Doug.  Using not-distinct-in-first-8 identifiers
and then claiming that your software is "portable" is fraud.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry

mcferrin@inuxc.UUCP (P McFerrin) (08/06/84)

>    From ihnp4!zehntel!hplabs!sri-unix!ron@BRL-TGR.ARPA Sat Aug  4 07:08:15 1984
>    Relay-Version: version B 2.10.1 6/24/83; site inuxc.UUCP
>    Path: inuxc!ihnp4!zehntel!hplabs!sri-unix!ron@BRL-TGR.ARPA
>    From: ron@BRL-TGR.ARPA
>    Newsgroups: net.unix-wizards
>    Subject: Re:  Bug in Unix System V C compiler
>    Message-ID: <739@sri-arpa.UUCP>
>    Article-I.D.: sri-arpa.739
>    Posted: Sat Aug  4 07:08:15 1984
>    From:      Ron Natalie <ron@BRL-TGR.ARPA>
>    
>    The problem is that even cutting back to only eight letters is not
>    sufficient because no AT&T C compiler seems to be able to handle even
>    eight properly.
>    
>    -Ron
>    
>    
The limit of 8 characters for variable names are for 'internal' variables.
The ones that are NOT global and defined within local proceedures.
It is the external (globbal) variables that have additional characters added
to form the external symbol.  Therefore, external variables usually have
a limit less than 8.  I don't remember how much but I think that it varies
among different releases of the compiler.

laura@utzoo.UUCP (Laura Creighton) (08/06/84)

But how many ``clearly not intended to be portable'' ``obviously of local
interest only'' and ``but gee, I only wrote it as a 10 minute throw away
program'' hacks get pressed into service? And who has time to rewrite them?

(answer: the poor sucker who has to port them to another architecture 
	and/or another flavour of UNIX.)

Laura Creighton
utzoo!laura

LeFebvre.wbst@XEROX.ARPA (08/06/84)

> And of course you turkeys are careful to write code that
> uses long identifiers so that porting it to non-BSD UNIXes
> is much more work than it had to be.  Very professional.

No gwyn, us "turkeys" believe in writing code that is readable
and understandable (not to mention professional).  This requires
variable names that make more sense than "ad", "admod", "pts",
"pslp", "ev", "evi", "it", "itmac", "lt1", "ndf", "nx", "pto",
"smnt", "nrbits" (I could go on and on and on).  I think a program
that has descriptive variable names *is* very professional.

	William LeFebvre
	Department of Computer Science
	Rice University
	<phil@Rice.arpa>
	Using long variable names at Xerox for the summer

ron@BRL-TGR.ARPA (08/06/84)

From:      Ron Natalie <ron@BRL-TGR.ARPA>

The truth of the matter that with the system V compiler only 7
characters are significant.  If you had done the test that the
person reporting the bug had asked to, you would have seen the
problem.  The test had eight character identifiers, not nine as
you used in your example.  When you use two identifiers that
differ only in the eighth character it generates a message
saying the identifiers conflict.  This is only slightly better
than the earlier versions of the compiler that actually used
the same symbol for both and caused the assembler's heart to
break, issuing the message 'm 0012'.  Not entirely obvious.

This is all becuase the C compiler prepends it's variable names
with _ making the eight character names nine characters and the
assmebler only has eight characters of significance as well.
One solution would be not to prefix the symbol with the underscore.
This leads to other problems.  The RSI compiler for the 370 did this.
When you declare C variables to be things like R0 all hell breaks
loose.

-Ron

lcc.bob@UCLA-LOCUS.ARPA (08/06/84)

From:            Bob English <lcc.bob@UCLA-LOCUS.ARPA>

	Date:     Sat, 4 Aug 84 06:34:24 PDT
	From:     oly.postman
	Date:     Sat, 4 Aug 84 8:08:15 EDT
	From:     Ron Natalie <ron@BRL-TGR.ARPA>
	To:       hplabs!sdcrdcf!sdcsvax!sdchema!jwp@UCB-VAX.ARPA
	cc:       Unix-Wizards@BRL-VGR.ARPA
	Subject:  Re:  Bug in Unix System V C compiler

	The problem is that even cutting back to only eight letters is not
	sufficient because no AT&T C compiler seems to be able to handle even
	eight properly.

	-Ron

When you all get tired of questioning each other's ancestry, I
suppose you'll stop clogging the mail with invective.

--bob--

moss@BRL-VLD.ARPA (08/06/84)

From:      "Gary S. Moss (DRXBR-VLD-V)" <moss@BRL-VLD.ARPA>

Seriously folks, it is MOST ASSUREDLY professional to use long variable
names that are unique in the first 8 characters, this allows descriptive
names with minimal restriction.  After all, just because the compiler
ignores the rest of the name doesn't mean you have to.  Let's face it,
either you're aware of non-portable constructs or you aren't, either you
choose to write portable code or you don't, but implying that portable
code must have short variable names is misleading.

That's why the original example didn't bomb out with a compiler error
like "Identifier too long : godamnid1" or "Godamn what? [ Let's leave
God out of this one ;-) ]".

-- Moss.


	

bsa@ncoast.UUCP (The WITNESS) (08/07/84)

Come on, guys!  I have complained about 4.2BSD in the past, but mainly because
I have been working with Unix for only 8 months and the system manager here
expects me to take every program we get with BSD stuff in it and get it running
on here -- while Rich thinks I'm a wizard, apprentice sorceror comes a little
closer to the mark.  (What the heck is a SIGTSTP, anyway?)

The past few weeks or so have seen the coming of wars between System V users
and Berkeleyites.  Personally, I like what I hear of 4.2 more (and am eagerly
awaiting an upgrade to it (on a new system) here), but then I have yet to hear
SysV people come out and tell us what their system really does, as opposed to
LOTS of 4.2 articles all over the net.

Will someone please tell me why it matters which is "better", anyway?  And why
we compare them at all, given that 4.2 is a programming environment and SysV
is a runtime business environment?   After all, there are not that many com-
panies that really need the C language, make, and so on (not to mention f77,
which we don't have, and lex and yacc, which we do).  Why would Widget Mfg. Co.
which has purchased a full business package (Micro Manufacturing Systems' MCS
package, requiring RM-COBOL runtime but nothing else, for example), need to
play with /usr/include/sys/callo.h?  Or "symbolic links"?  (I speak from
experience here; I do some business programming... mainly because the mfg.
package we use is not compatible with the customer order entry package; we
don't have the room on our current system to run the compatible one.)

If System V people want to do development work, they probably can, with AT&T
"add-on" packages.  Bugs?  System V is still fairly new; let them get worked
out by being reported; with enough pressure brought to bear, even AT&T will
bend.  And 4.2, from all accounts, has a few bugs of its own.

If you guys have time to burn (by flaming each other), why don't you come up
with a standardized way of easily making 4.2 and SysV source compatible?  Maybe
some kind of alternate -lc with simulations for those functions that can be
simulated, such things as the Berkeley compatibility library to present the
"old-style" Unix directory in the "new" Berkeley format, and such?  Those
without source licenses might not be able to use them, but there could be a way
to get object code for "standard" systems, and source-licensed sites for the
others could provide object versions on their own; maybe a hex-type protocol
could be used to post them to the net for VAXen, etc.  (Look out: Intel hex
format rides again! :-)  Not only will it give you something to do, it would
benefit all of us (including both Berkeley and AT&T).

<<<<flame off>>>>
-- 
		Brandon Allbery: decvax!cwruecmp{!atvax}!bsafw
		  6504 Chestnut Road, Independence, OH 44131

		  Witness, n.  To watch and learn, joyously.

gwyn@BRL-VLD.ARPA (08/08/84)

From:      Doug Gwyn (VLD/VMB) <gwyn@BRL-VLD.ARPA>

The restriction to 7 significant characters in a C symbol applies
only to static symbols, not auto or register variables.  The latter
have truncated symbols in the symbol table but the code generated
is correct, since it does not have to refer to the symbol name.
The extra character prepended to the symbol is ~ in this case, _
for externs.  The current PDP-11 (Ritchie) C compiler, as Ron
noted, warns whenever there is an important symbol clash, but
it is quiet in those cases where correct code will result.

A complete solution to the problem of using the 8 characters
at the assembler level would require that all `reserved' assembler
symbols be given a special form different from any possible
compiler-generated symbols, e.g. they could start with a .
This seems like too much work.  Another approach would be to
convert the PDP-11 to flexnames but for some unknown reason
this has not been done.

grt@hocda.UUCP (G.TOMASEVICH) (08/09/84)

>The problem is that even cutting back to only eight letters is not
>sufficient because no AT&T C compiler seems to be able to handle even
>eight properly.

The compiler prefixes the name with underscore in the translation to assembly
code, so if the assembler takes only 8 characters, then only 7 of the
original characters get through.
	George Tomasevich, AT&T-BL

root%nsf-cs.csnet@CSNET-RELAY.ARPA (08/09/84)

From:       usually Rick Adrion <root%nsf-cs.csnet@CSNET-RELAY.ARPA>


Sorry to land on you but I have to stop unix wizards by Friday.
Please stop sending mail to bboard.nsf-cs@csnet-relay. Thanks

gwyn@brl-tgr.ARPA (Doug Gwyn <gwyn>) (08/10/84)

Brandon, someone HAS done something about bringing about source
compatibility between 4.2BSD and UNIX System V.  Happens he was
one of the persons most deeply embroiled in the recent flaming.
Directory access routines?  Yes.  Alternate C library?  Yes.
Hex protocol?  No way.  Send for more details:
	gwyn@brl-vld.arpa
	{esquire,decvax,research}!brl-bmd!gwyn (UUCP)

ron@BRL-TGR.ARPA (08/13/84)

From:      Ron Natalie <ron@BRL-TGR.ARPA>

It slices, it dices, it makes julienne fries, but you've got to hit
that sucker just right.

Sounds like "an automatic vegetable slicer that works on television but
not when you get it home"  (Apologies to Alan Sherman).

Enter John Little, inventor of the vegamatic operating system.

-Ron

bsa@ncoast.UUCP (The WITNESS) (08/15/84)

THEN WHY IN USENET ARE THEY FLAMING, FOR GOODNESS' SAKE????????????????????

--bsa
-- 
      Brandon Allbery: decvax!cwruecmp{!atvax}!bsa: R0176@CSUOHIO.BITNET
					       ^ Note name change!
	 6504 Chestnut Road, Independence, OH 44131 <> (216) 524-1416

"The more they overthink the plumbin', the easier 'tis tae stop up the drain."

cdash@druxv.UUCP (Shub) (08/15/84)

> From:      Ron Natalie <ron@BRL-TGR.ARPA>
> 
> It slices, it dices, it makes julienne fries, but you've got to hit
> that sucker just right.
> 
> Sounds like "an automatic vegetable slicer that works on television but
> not when you get it home"  (Apologies to Alan Sherman).
> 
> Enter John Little, inventor of the vegamatic operating system.
> 
> -Ron

sounds more like a SLEDGEomatic to me  :-)>>> (bearded smile)

...!druxv!cdash {charlie shub AT&T-IS Denver (303) 538-3922}