Package: g++-4.6 Version: 4.6.0-9 Severity: normal
Meanningless inline requests should be ignored by the compiler, but this is not the case on armel (armv5tel), symbols disappear instead. class C { public: C(); private: virtual void foo(); }; inline C::C() { } #ifdef inline_this_virtual inline #endif void C::foo() { } $ g++-4.6 -fPIC -shared -Wl,-z,defs -o testinl.so testinl.cc $ objdump -T testinl.so | c++filt testinl.so: file format elf32-littlearm DYNAMIC SYMBOL TABLE: 00000524 l d .init 00000000 .init 00008678 l d .jcr 00000000 .jcr 00000000 w D *UND* 00000000 __gmon_start__ 00000000 w D *UND* 00000000 _Jv_RegisterClasses 00000000 DO *UND* 00000000 CXXABI_1.3 vtable for __cxxabiv1::__class_type_info 00000000 w DF *UND* 00000000 GLIBC_2.4 __cxa_finalize 00000660 g DO .rodata 00000003 Base typeinfo name for C 0000868c g DO .data.rel.ro 00000008 Base typeinfo for C 00008680 g DO .data.rel.ro 0000000c Base vtable for C 000087c0 g D *ABS* 00000000 Base _bss_end__ 000087c0 g D *ABS* 00000000 Base _end 000087bc g D *ABS* 00000000 Base _edata 000087c0 g D *ABS* 00000000 Base __bss_end__ 000087bc g D *ABS* 00000000 Base __bss_start 00000638 g DF .text 0000001c Base C::foo() 00000524 g DF .init 00000000 Base _init 00000654 g DF .fini 00000000 Base _fini 000087bc g D *ABS* 00000000 Base __bss_start__ 000087c0 g D *ABS* 00000000 Base __end__ $ g++-4.6 -fPIC -shared -Wl,-z,defs -o testinl.so testinl.cc -Dinline_this_virtual $ objdump -T testinl.so | c++filt testinl.so: file format elf32-littlearm DYNAMIC SYMBOL TABLE: 000003b4 l d .init 00000000 .init 000084e0 l d .jcr 00000000 .jcr 00000000 w D *UND* 00000000 __gmon_start__ 00000000 w D *UND* 00000000 _Jv_RegisterClasses 00000000 w DF *UND* 00000000 GLIBC_2.4 __cxa_finalize 0000860c g D *ABS* 00000000 Base _bss_end__ 0000860c g D *ABS* 00000000 Base _end 00008608 g D *ABS* 00000000 Base _edata 0000860c g D *ABS* 00000000 Base __bss_end__ 00008608 g D *ABS* 00000000 Base __bss_start 000003b4 g DF .init 00000000 Base _init 000004c8 g DF .fini 00000000 Base _fini 00008608 g D *ABS* 00000000 Base __bss_start__ 0000860c g D *ABS* 00000000 Base __end__ Now, C::foo() is gone. Note, that this subtlety is specific to the armel architecture only, anywhere else C::foo() is not silently dropped. References: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=602817 http://gcc.gnu.org/ml/gcc-help/2011-05/msg00352.html -- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 2.6.37-2-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages g++-4.6 depends on: ii gcc-4.6 4.6.0-9 The GNU C compiler ii gcc-4.6-base 4.6.0-9 The GNU Compiler Collection (base ii libc6 2.13-4 Embedded GNU C Library: Shared lib ii libcloog-ppl0 0.15.9-3 the Chunky Loop Generator (runtime ii libgmp10 2:5.0.1+dfsg-7 Multiprecision arithmetic library ii libgmpxx4ldbl 2:5.0.1+dfsg-7 Multiprecision arithmetic library ii libmpc2 0.9-3 multiple precision complex floatin ii libmpfr4 3.0.1-3 multiple precision floating-point ii libppl-c4 0.11.2-3 Parma Polyhedra Library (C interfa ii libppl9 0.11.2-3 Parma Polyhedra Library (runtime l ii libstdc++6-4.6-dev 4.6.0-9 The GNU Standard C++ Library v3 (d ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime g++-4.6 recommends no packages. Versions of packages g++-4.6 suggests: ii g++-4.6-multilib 4.6.0-9 The GNU C++ compiler (multilib fil pn gcc-4.6-doc <none> (no description available) pn libstdc++6-4.6-dbg <none> (no description available) -- no debconf information -- To UNSUBSCRIBE, email to debian-gcc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20110526194933.27813.98418.reportbug@sid