Path: utzoo!attcan!uunet!mcvax!enea!naggum!isncr!ra
From: ra@isncr.is.se (Robert Andersson)
Newsgroups: comp.lang.c
Subject: Re: six-character extern id limit
Message-ID: <169@isncr.is.se>
Date: 19 Sep 88 16:55:58 GMT
References: <5162@hoptoad.uucp> <225800069@uxe.cso.uiuc.edu> <8507@smoke.ARPA> <4003@bsu-cs.UUCP>
Organization: International Systems, Oslo, Norway
Lines: 33

In article <4003@bsu-cs.UUCP>, dhesi@bsu-cs.UUCP (Rahul Dhesi) writes:
> 
> But although I have been
> following this newsgroup for some time, I don't recall any specific
> cases being described of linkers that can't handle more than
> 6-character externals and that will of necessity be used to link C
> code.  Are there more than just a few?  (Remember, we're talking about
> a 6-character limit, not 7 or 8, which are more common.)
> -- 

The linker on the Honeywell Bull DPS6 minicomputers is limited to 
6-character uppercase-only externals, and the C-compiler has to live
with this severe limitation. In order to make life a bit easier (though
sometimes it just makes it worse, see below), the C-compiler does the
following with externals. Flames to Honeywell Bull, not to me :-)
1. All characters are changed to uppercase.
2. All underscores are removed.
3. If more than six characters remain, vowels are eliminated from right
   to left until either; (1) there are only siz characters left, or
   (2) there are no more vowels.
4. If there is still more than six characters left, the excess is truncated
   right to left.

I remember I had a program with a function called strcomp(). By rule 3 
above it got reduced to strcmp(), and the linker didn't complain that
this symbol was defined both in my program and in the C-library. All
calls to strcmp() thus ended up calling my strcomp(), not exactly what
I wanted.
-- 
Robert Andersson, International Systems, Oslo, Norway
Internet:         ra@isncr.is.se 
UUCP:             ...!{uunet,mcvax,enea}!isncr.is.se!ra
UUCP in Norway:   ...!ndosl!ifi!naggum!isncr!ra