From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Robert J. Brown" To: Chris Howard Cc: c++-embedded@cygnus.com, crossgcc@cygnus.com Subject: gcc vs g++ and linking with as Date: Fri, 26 Jun 1998 00:59:00 -0000 Message-id: <199806260747.CAA03710@eli.elilabs.com> References: <35926CEF.9F0E576F@intellistor.com> X-SW-Source: 1998/msg00009.html >>>>> "Chris" == Chris Howard writes: Chris> binutils 2.9 gcc/g++ 2.8.0 Chris> Host Sun Sparc Solaris 2.5 Target Motorola Coldfire Chris> (-m5200) a.out object format Chris> --- Chris> Not using stdlib (-nostdlib) Chris> We have some code in assembler, and some in C. Compiling Chris> with as,gcc and linking with ld works fine. Compiling with Chris> as,g++ and linking with ld does not work, undefined symbols Chris> for those things written in assembler. You will have to declare the asm routines "extern 'C'" because the assembler does not perform C++ name mangling for you. Chris> The .o files output from g++ compilation have exported Chris> symbols that end in '__Fv' whereas the assembler output .o Chris> files don't have '__Fv' on the symbols. Is that the Chris> problem? Is there some way to make it work? What is __Fv? These are C++ mangled names. Use c++filt to de-mangle C++ mangled names. The mangling encodes type information into the names so that the linker can resolve functions with the same name but different signatures. Chris> An alternative might be to put the assembly code in C/C++ Chris> wrapper functions. Any hints/comments that would be Chris> appreciated also. This is not necessary -- just declare the asm functions extern 'C' and the compiler will know not to mangle those names, so the linker will be able to resolve them. Chris> -- Chris Howard Fujitsu Computer Products of America Chris> Longmont, Colorado -- -------- "And there came a writing to him from Elijah" [2Ch 21:12] -------- R. J. Brown III rj@elilabs.com http://www.elilabs.com/~rj voice 847 543-4060 Elijah Laboratories Inc. 457 Signal Lane, Grayslake IL 60030 fax 847 543-4061 ----- M o d e l i n g t h e M e t h o d s o f t h e M i n d ------