Date: Wed, 18 Mar 1998 17:53:10 +0300 (MSK) From: Dmitrij Tejblum <tejblum@arc.hq.cti.ru> To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: gnu/6055: as(1) sometimes incorrectly handle EGCS output Message-ID: <199803181453.RAA11391@yandex.hq.cti.ru>
next in thread | raw e-mail | index | archive | help
>Number: 6055 >Category: gnu >Synopsis: as(1) sometimes incorrectly handle EGCS output >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Mar 18 07:00:06 PST 1998 >Last-Modified: >Originator: Dmitrij Tejblum >Organization: CompTek >Release: FreeBSD 2.2.5-STABLE i386 >Environment: FreeBSD 2.2.5-stable EGCS 1.0.2 configured with --with-gnu-as --with-gnu-ld >Description: When a C++ program contains a static variable with a constructor, GCC emit something like .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$whatever GCC 2.7.2.1 always emit it after __GLOBAL_$I$whatever was defined. EGCS sometimes (apparently, with -O3, as I see now) emit it before __GLOBAL_$I$whatever was defined. In this case, assembler silently convert that stab to "usual" text symbol. As a result, ld complains about multiply defined ___CTOR_LIST__. >How-To-Repeat: put something like .stabs "___CTOR_LIST__",22,0,0,_qq _qq: movl %eax, %eax to an .s file, assemble it, look at result with nm. >Fix: Not sure about correct fix. Here is my workaround, just FYI. (And so I have a chance to hear that all my object are hopelessly broken :). --- config/obj-aout.c Tue Mar 17 11:25:17 1998 +++ config/obj-aout.c Tue Mar 17 11:55:42 1998 @@ -469,7 +469,8 @@ /* JF deal with forward references first... */ for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next(symbolP)) { if (symbolP->sy_forward && symbolP->sy_forward != symbolP) { - S_SET_SEGMENT(symbolP, + if ((symbolP->sy_symbol.n_type & 0xf0) == 0) + S_SET_SEGMENT(symbolP, S_GET_SEGMENT(symbolP->sy_forward)); S_SET_VALUE(symbolP, S_GET_VALUE(symbolP) + S_GET_VALUE(symbolP->sy_forward) >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199803181453.RAA11391>