brad%bnrmtl.UUCP@LARRY.MCRCIM.MCGILL.EDU (Brad Fowlow) (01/09/90)
I'm not sure this is a bug but it hurts when it bites. If an enum is seen under extern "C" it gets a different name for function-parameter encoding than if the same enum is seen by C++ directly. The following session demonstrates. Note that the linkage name for 'check' in the nm output at the bottom varies for a.cc and b.cc. Script started on Mon Jan 8 15:46:14 1990 tsingtao.brad 1 % tsingtao.brad 1 % cat a.cc /* * Version A - C linkage for enum */ extern "C" { typedef enum { Stop, Go } E; } void check( E ); void test() { check( Stop ); } tsingtao.brad 2 % cat b.cc /* * Version B - C++ linkage for enum */ typedef enum { Stop, Go } E; void check( E ); void test() { check( Stop ); } tsingtao.brad 3 % g++ -v -c a.cc b.cc gcc version 1.36.1 (based on GCC 1.36) /usr/local/lib/gcc-cpp -+ -v -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 a.cc /usr/tmp/cca11478.cpp GNU CPP version 1.36 /usr/local/lib/gcc-cc1plus /usr/tmp/cca11478.cpp -quiet -dumpbase a.cc -version -o /usr/tmp/cca11478.s GNU C++ version 1.36.1 (based on GCC 1.36) (68k, MIT syntax) compiled by GNU C version 1.36. default target switches: -m68020 -mc68020 -m68881 -mbitfield /usr/local/lib/gcc-as -mc68020 -o a.o /usr/tmp/cca11478.s /usr/local/lib/gcc-cpp -+ -v -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 b.cc /usr/tmp/cca11478.cpp GNU CPP version 1.36 /usr/local/lib/gcc-cc1plus /usr/tmp/cca11478.cpp -quiet -dumpbase b.cc -version -o /usr/tmp/cca11478.s GNU C++ version 1.36.1 (based on GCC 1.36) (68k, MIT syntax) compiled by GNU C version 1.36. default target switches: -m68020 -mc68020 -m68881 -mbitfield /usr/local/lib/gcc-as -mc68020 -o b.o /usr/tmp/cca11478.s tsingtao.brad 4 % nm a.o b.o a.o: U _check__F3$_0 00000000 T _test__Fv 00000000 t gcc_compiled. b.o: U _check__F1E 00000000 T _test__Fv 00000000 t gcc_compiled. tsingtao.brad 5 % exit tsingtao.brad 6 % script done on Mon Jan 8 15:47:58 1990 ................................................................. Brad Fowlow bnrmtl!brad@larry.mcrcim.mcgill.edu ..................................................... BNR 3 Place du Commerce, Verdun, Quebec, Canada H3E 1H6
tiemann@AI.MIT.EDU (Micheal Tiemann) (01/10/90)
Fixed it. Michael