Mailinglist Archive: opensuse-programming-de (42 mails)

< Previous Next >
Re: [opensuse-programming-de] Fehler bei Seamonkey 2.0 / gcc 3.3.5
  • From: David Haller <dnh@xxxxxxxxxxxx>
  • Date: Sun, 15 Nov 2009 01:36:51 +0100
  • Message-id: <20091115003651.GA5510@xxxxxxxxxxxxxxxxxx>
Hallo,

Am Sam, 14 Nov 2009, Sebastian Siebert schrieb:
David Haller schrieb:
In file included from nsDOMFile.cpp:39:
../../../dist/include/content/nsDOMFile.h: At global scope:
../../../dist/include/content/nsDOMFile.h:56: warning: `class nsDOMFile' has
virtual functions but non-virtual destructor
../../../dist/include/xpcom/nsCOMPtr.h: In constructor `
nsCOMPtr<T>::nsCOMPtr(T*) [with T = nsIFile]':
../../../dist/include/content/nsDOMFile.h:63: instantiated from here
../../../dist/include/xpcom/nsCOMPtr.h:552: error: no matching function for
call to `nsCOMPtr_base::nsCOMPtr_base(nsIFile*&)'
../../../dist/include/xpcom/nsCOMPtr.h:416: error: candidates are:
nsCOMPtr_base::nsCOMPtr_base(const nsCOMPtr_base&)
../../../dist/include/xpcom/nsCOMPtr.h:420: error:
nsCOMPtr_base::nsCOMPtr_base(nsISupports*)

==== dist/include/content/nsDOMFile.h ====
class nsDOMFile : public nsIDOMFile,
public nsICharsetDetectionObserver
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIDOMFILE

nsDOMFile(nsIFile *aFile)
: mFile(aFile)
{}
virtual ~nsDOMFile() {};
[..]
private:
nsCOMPtr<nsIFile> mFile;
====

==== dist/include/xpcom/nsCOMPtr.h ====
class
nsCOMPtr_base
{
public:

nsCOMPtr_base( nsISupports* rawPtr = 0 )
: mRawPtr(rawPtr) Zeile.
{
// nothing else to do here
====

Liegt's am gcc-3.3.5 oder ...? Ich steh ziemlich auf dem Schlauch.

- Welche Schalter gibst du dem configure-script?
- Welche Schalter werden an c++ übergeben bevor der Fehler auftritt?
(komplette Zeile vom Bau mal einfügen)

Ah, sorry. Weitgehend die gleichen wie beim 1.1.11 ;)


ccache /opt/gcc/3.3.5/bin/g++ -o nsDOMFile.o -c
-DMOZILLA_INTERNAL_API -D_IMPL_NS_COM -DEXPORT_XPT_API
-DEXPORT_XPTC_API -D_IMPL_NS_COM_OBSOLETE -D_IMPL_NS_GFX
-D_IMPL_NS_WIDGET -DIMPL_XREAPI -DIMPL_NS_NET -DIMPL_THEBES
-DMOZ_SUITE=1 -DOSTYPE=\"Linux2.4.37\" -DOSARCH=Linux
-D_IMPL_NS_LAYOUT
[Massig seamonkey-eigene -I-Optionen, da fehlt auch nix]
-fPIC -frtti -fexceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth
-Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-long-long -O2
-march=athlon -mcpu=athlon -malign-double -m3dnow -mmmx -falign-functions=0
-Wall -W -Wno-unused -I/opt/gettext/0.16/include -I/opt/gcc/3.3.5/include
-Wno-reorder -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG
-DTRIMMED -O2 -DMOZILLA_CLIENT -include ../../../mozilla-config.h
-Wp,-MD,.deps/nsDOMFile.pp nsDOMFile.cpp

Die CXXFLAGS (-O2 bis -Wno-reorder) sind meine default-flags, mit
denen auch sonst meist alles sauber kompiliert.

VERSION=2.0
[..]
./configure \
--prefix="/opt/seamonkey/${VERSION}" \
--with-pthreads \
--with-system-jpeg \
--with-system-zlib \
--with-system-bz2 \
--enable-application=suite \
--disable-ldap \
--enable-mailnews \
--disable-gnomevfs \
--disable-gnomeui \
--disable-dbus \
--disable-accessibility \
--enable-native-uconv \
--disable-composer \
--disable-xpcom-obsolete \
--disable-updater \
--enable-leaky \
--disable-jemalloc \
--disable-parental-controls \
--enable-help-viewer \
--enable-safe-browsing \
--enable-chrome-format=both \
--with-user-appdir=".seamonkey-${VERSION}" \
--enable-cpp-rtti \
--enable-cpp-exceptions \
--enable-libxul \
--disable-calendar \
--disable-tree-freetype \
--disable-pango \
--disable-pedantic \
--disable-ogg --disable-wave \
--enable-optimize="-O2" \
--enable-system-cairo

Achso, bei xpidl hab ich auch Probleme, das muß ich mit -O0
kompilieren, sonst gibt's segfaults (war aber auch bei früheren
Versionen so). Wenn's dann mal kompiliert ist tut's und der seamonkey
1.1.11 bei dem ich das gleiche hatte läuft hier schon recht lange
sauber.

glibc ist 2.1.3, der relevante Rest des Systems ist "selbsgestrickt"
mit allerlei Versionsständen, aber obiges Problem scheint mir
Mozilla-Intern zu sein (bis auf gcc eben).

An anderer Stelle mit ähnlicher Problematik konnte ich das Problem
beheben, durch nen Cast oder dem "auseinandernehmen" des Ausdrucks,
z.B.:

res = iconv(mConverter,
- (char**)&aSrc,
+ (const char**)&aSrc,
&inLeft,
(char**)&aDest,
&outLeft);

oder

- nsCOMPtr<nsIVariant>
arg1(already_AddRefed<nsIVariant>(XPCVariant::newVariant(ccx, argv[1])));
+ already_AddRefed<nsIVariant> t =
already_AddRefed<nsIVariant>(XPCVariant::newVariant(ccx, argv[1]));
+ nsCOMPtr<nsIVariant> arg1(t);

TIA,
-dnh

--
"I stopped at Land's End, because to go any further would have been Scilly."
-- Robert Billing
--
To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-programming-de+help@xxxxxxxxxxxx

< Previous Next >