From owner-freebsd-bugs Tue Oct 17 14:46:33 2000 Delivered-To: freebsd-bugs@freebsd.org Received: from mrout1.yahoo.com (mrout1.yahoo.com [208.48.125.95]) by hub.freebsd.org (Postfix) with ESMTP id B7A8137B4D7; Tue, 17 Oct 2000 14:46:31 -0700 (PDT) Received: from daintree.yahoo.com (daintree.yahoo.com [205.216.162.172]) by mrout1.yahoo.com (8.10.0/8.10.0/y.out) with ESMTP id e9HLkM273025; Tue, 17 Oct 2000 14:46:22 -0700 (PDT) Received: (from peter@localhost) by daintree.yahoo.com (8.11.0/8.11.0) id e9HLkMr17330; Tue, 17 Oct 2000 14:46:22 -0700 (PDT) (envelope-from peter) Date: Tue, 17 Oct 2000 14:46:22 -0700 (PDT) From: Peter Wemm Message-Id: <200010172146.e9HLkMr17330@daintree.yahoo.com> To: freebsd-gnats-submit@freebsd.org Subject: Re: gnu/20966: binutils break C++ in GCC 2.95.x and GCC-current Cc: freebsd-bugs@freebsd.org Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The problem is that our crt foo is incompatable with g++'s constructor and thread mechanism. In order to get g++ working at yahoo, we had to back out to the old crt{i,n}.o and use gcc's crt{begin,end}.o so that the frame hooks etc were called in the right places. See glibc's own crtbegin/end etc for how to do an elf-specific set of crt files that remain gcc/g++ compatable. According to my recollection of the original AT&T/USL manuals that I have (in Australia) that cover ELF, toolchain, linking, abi's, etc, I still believe our crt{i,n}.o are broken. We have replaced the extensible "linker set"-like mechanism that was part of the ELF linking defintion with a static _init() and _fini() function. Other systems, notably g++, depend on the original system working. Anyway, I will be checking out the details in about 2 weeks when I get back to .au and look it up. -Peter To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message