Bug 29289 - [4.1/4.2] additionally weak symbols referenced/generated
Summary: [4.1/4.2] additionally weak symbols referenced/generated
Status: RESOLVED INVALID
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.1.2
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-09-29 17:44 UTC by Matthias Klose
Modified: 2008-03-27 22:09 UTC (History)
4 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments
difference of symbols (objdump -T) (4.22 KB, text/plain)
2006-09-29 17:46 UTC, Matthias Klose
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matthias Klose 2006-09-29 17:44:12 UTC
seen on various linux architectures, building apt results in a library with several additional weak symbols defined. trying to build and link a program (built with the changed compiler version) to the apt library built with the older compiler version results in a link failure, shown below. rebuilding the library with the changed compiler lets the application link again.

- on the 4.1 branch, the additional symbols seem to be the result
  of a part of the r116763 checkin; reverting the changes for PR26195
  restores the old behaviour.
- not yet searched on mainline; the change is between 20060815 and
  20060923.

is this a bug in apt's use in #pragma interface?


g++ -g -O2 -o synaptic gsynaptic.o gtkpkglist.o rgaboutpanel.o rgcacheprogress.o rgpkgcdrom.o rgpreferenceswindow.o rgfetchprogress.o rgfiltermanager.o rgfindwindow.o rgiconlegend.o rglogview.o rgmisc.o rgsetoptwindow.o rgdummyinstallprogress.o rgdebinstallprogress.o rgterminstallprogress.o rginstallprogress.o rgslideshow.o rgtaskswin.o rgcdscanner.o rgmainwindow.o rgpkgdetails.o rgrepositorywin.o rgvendorswindow.o rgsummarywindow.o rgchangeswindow.o rguserdialog.o rgwindow.o rggladewindow.o ../common/libsynaptic.a -lapt-pkg -lapt-inst -lglade-2.0 -lgtk-x11-2.0 -lxml2 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lcairo -lX11 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lvte -lncurses -lXft -lgtk-x11-2.0 -lpangoxft-1.0 -lpangox-1.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lcairo -lX11 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -llaunchpad-integration -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lpthread
rgpkgcdrom.o: In function `pkgCdromStatus':
/usr/include/apt-pkg/cdrom.h:20: undefined reference to `vtable for pkgCdromStatus'
rgpkgcdrom.o: In function `~pkgCdromStatus':
/usr/include/apt-pkg/cdrom.h:21: undefined reference to `vtable for pkgCdromStatus'
rgpkgcdrom.o: In function `pkgCdromStatus':
/usr/include/apt-pkg/cdrom.h:20: undefined reference to `vtable for pkgCdromStatus'
rgpkgcdrom.o: In function `~pkgCdromStatus':
/usr/include/apt-pkg/cdrom.h:21: undefined reference to `vtable for pkgCdromStatus'
/usr/include/apt-pkg/cdrom.h:21: undefined reference to `vtable for pkgCdromStatus'
rgpkgcdrom.o:/usr/include/apt-pkg/cdrom.h:21: more undefined references to `vtable for pkgCdromStatus' follow
rgpkgcdrom.o:(.rodata._ZTV11RGCDScanner[vtable for RGCDScanner]+0x10): undefined reference to `pkgCdromStatus::SetTotal(int)'
rgpkgcdrom.o:(.rodata._ZTV11RGCDScanner[vtable for RGCDScanner]+0x20): undefined reference to `pkgCdromStatus::GetOpProgress()'
rgpkgcdrom.o:(.rodata._ZTI11RGCDScanner[typeinfo for RGCDScanner]+0x10): undefined reference to `typeinfo for pkgCdromStatus'
rgmainwindow.o: In function `~pkgCdromStatus':
/usr/include/apt-pkg/cdrom.h:21: undefined reference to `vtable for pkgCdromStatus'
../common/libsynaptic.a(rpackagecache.o): In function `~RPkgPolicy':
/tmp/2/synaptic-0.57.11ubuntu9/common/rpackagecache.h:40: undefined reference to `pkgPolicy::~pkgPolicy()'
/tmp/2/synaptic-0.57.11ubuntu9/common/rpackagecache.h:40: undefined reference to `pkgPolicy::~pkgPolicy()'
../common/libsynaptic.a(rpackagelister.o): In function `pkgArchiveCleaner':
/usr/include/apt-pkg/clean.h:20: undefined reference to `vtable for pkgArchiveCleaner'
../common/libsynaptic.a(rpackagelister.o): In function `~pkgArchiveCleaner':
/usr/include/apt-pkg/clean.h:28: undefined reference to `vtable for pkgArchiveCleaner'
/usr/include/apt-pkg/clean.h:28: undefined reference to `vtable for pkgArchiveCleaner'
/usr/include/apt-pkg/clean.h:28: undefined reference to `vtable for pkgArchiveCleaner'
collect2: ld returned 1 exit status
Comment 1 Matthias Klose 2006-09-29 17:46:01 UTC
Created attachment 12355 [details]
difference of symbols (objdump -T)

sources and binaries for the shared library at
http://people.ubuntu.com/~doko/apt/
Comment 2 Andrew Pinski 2006-09-29 17:59:21 UTC
This seems more like an ABI issue in older 4.1's and 4.2's rather than a bug in the newer 4.1.2 and 4.2.0.

I bet we had an accidental ABI change in 4.0.0 and we have no fixed that.
I am thinking we should close this as a non bug.

"#pragma interface" should be killed really, all it does is bring trouble.
Comment 3 Richard Biener 2008-03-27 22:09:15 UTC
As suggested.  Please re-open only with a proper testcase.