Xref: utzoo comp.lang.c:12880 comp.std.c:400
Path: utzoo!attcan!uunet!husc6!bloom-beacon!spdcc!ima!haddock!karl
From: karl@haddock.ima.isc.com (Karl Heuer)
Newsgroups: comp.lang.c,comp.std.c
Subject: Re: six-character extern id limit
Message-ID: <8035@haddock.ima.isc.com>
Date: 23 Sep 88 20:11:57 GMT
References: <5162@hoptoad.uucp> <225800069@uxe.cso.uiuc.edu> <8507@smoke.ARPA> <4003@bsu-cs.UUCP> <169@isncr.is.se>
Reply-To: karl@haddock.ima.isc.com (Karl Heuer)
Followup-To: comp.std.c
Organization: Interactive Systems, Boston
Lines: 18

In article <169@isncr.is.se> ra@isncr.is.se (Robert Andersson) writes:
>The linker on the Honeywell Bull DPS6 minicomputers is limited to
>6-character uppercase-only externals, and the C-compiler [removes underscores
>and vowels in order to compress to six letters, thus unintentionally mapping
>strcomp() to the same name as strcmp().]

Fortunately, such an algorithm would not be legal in an ANSI C compiler.  An
implementation is allowed to restrict the significance to six characters, but
"any identifiers that differ in a significant character are different
identifiers" [3.1.2].

I hadn't noticed this before, but the rules imply that underscores must be
significant in external identifiers.  This would be a potential problem if the
linker doesn't allow underscores.  Are there any linkers that require symbol
names to be alphanumeric only?

Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint
Followups to comp.std.c.