From: "Andrew Crabtree" Newsgroups: comp.os.msdos.djgpp Subject: Re: BUG in gcc ? Date: Thu, 14 May 1998 09:48:55 -0700 Organization: Hewlett-Packard, Roseville Lines: 58 Message-ID: <6jf79l$8gv$1@rosenews.rose.hp.com> References: <1 DOT 5 DOT 4 DOT 16 DOT 19980514164848 DOT 2e2ff3da AT um2gess0> NNTP-Posting-Host: ros51675cra.rose.hp.com To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Michel JULIER wrote in message <1 DOT 5 DOT 4 DOT 16 DOT 19980514164848 DOT 2e2ff3da AT um2gess0>... >with gcc -g program.c >I get the following message: > d:/djgpp/tmp/RH1aaaaa/ccbag1ji: Assembler messages: > d:/djgpp/tmp/RH1aaaaa/ccbag1ji:33: Fatal error: C_EFCN symbol out of scope >I get that with gcc2.7.2.1 or gcc2.8.1, with as2.7.2.1 or as2.8.1, for >DJGPP with MS-DOS 6.20 + Win3.11. Sounds like another coff/debug limitation. > -if you use gcc2.7.2 for sparc-sun-solaris2.5 or > gcc2.7.2 for sparc-sun-sunos4.1.3 > -if you use (gcc-2.7.2,binutils-2.6.0.14) for Linux (according to HB Broeker) Neither of those use coff, this is a coff specific problem. >So, I believe that this is a real bug. Am I the only one to see it? I'm undecided if this is a real bug or not. It may simply be another limitation of the coff debug format (which really sucks btw, as you found out with your #include stuff not working properly). There is no easy way to redefine symbols in debug format. Note that you can compile with -gstabs and things work OK. If you want a definitive answer, then do the following. 1) Make a message with your small source .c file, and then include the output program.s of 'gcc -S -g program.c' and post the error message you get when you compile normally. 2) Post this message to gnu.utils.bug and make the topic 'possible bug in gas 2.81' (it also happens with 2.9.x btw) 3) Wait for Ian Lance Taylor to respond with an answer, he is pretty good about responding. If you want my guesses here they are - This is not a problem with gcc, but may possibly be a problem in the assembler (unlikely though). C_EFCN is an internal #define used by binutils that just happens to show up in the error message. It means 'physical end of function'. The reason you are getting the error is that the assembler is reading the debug stuff for your common variable, but it thinks that the name for that is already associated with a function. So, it goes to find what function it is currently in to end it, but the function has already been ended. So, you hit an error condition in the assembler. My guess as to the response from one of the real gurus 'limitation of coff debug format'. HTH Andy