![]() If so, the bug will not be present, and in addition, 64-bit programs are often more efficient than 32-bit programs. If you are on a 32-bit x86 Solaris platform, consider whether you can build in 64-bit mode. The bug does not exist on these platforms: However, on platforms introduced after the bug was discovered, there was no issue with backward compatibility. We have chosen to leave the bug in place on older platforms, to avoid breaking working programs. If we don't fix the bug, some valid programs will not link, as in your example. If we fix the bug, some currently working programs will fail to link, if they mix old and new binaries. (read this short article before reading the rest of this post) You have run into a known bug in name mangling, documented here: I have noticed the same difference in mangling for Sun Studio 12 (CC: Sun C++ 5.9 SunOS_sparc Patch 124863-01 5) Maybe the demangler does not correctly decode the small difference in the symbols above which decoded properly would indicate what the compiler "thought" of the function in while exporting and using as extern ![]() I think mangling should be a 1-to-1 function not allowing two different codings for same prototype. Where does the difference come from? is it a bug in mangler or demangler? Is there any document describing mangling rules of CC compiler? I have once read an article at Oracle sites about ABI stability which mentions publishing such a document but I cannot google it anywhere. I guess if the function were mangled same in both cases the linker would resolve it and the resulting shared object would not have undefined symbols ^^^ ^^I have marked characters which are different (7 replaced with rk5 and 8 with 9B)ĭemangled output shows the same prototype but manglings are different (11 coming from abstractview.cpp and UNDEF from qmlstate.cpp) | 0| 0|FUNC |GLOB |0 |UNDEF |QmlDesigner::ModelNode QmlDesigner::AbstractView::createModelNode(const QString&,int,int,const QList >&,const QList >&,const QString&,QmlDesigner::ModelNode::NodeSourceType) ![]() | 1576144| 169|FUNC |GLOB |0 |11 |QmlDesigner::ModelNode QmlDesigner::AbstractView::createModelNode(const QString&,int,int,const QList >&,const QList >&,const QString&,QmlDesigner::ModelNode::NodeSourceType) Nm -C applied to the resulting shared object gives: ModelNode createModelNode(const QString&, int, int, const PropertyListType&, const PropertyListType&, const QString&, ModelNode::NodeSourceType) It is exported from the implementation file abstractview.cpp and used in qmlstate.cpp file linked to the same library While compiling QtCreator using Solaris Studio I have come across to an interesting issue with name mangling:Ĭlass QmlDesigner::AbstractView contains method 1.7K Training / Learning / Certification.165.3K Java EE (Java Enterprise Edition).7.9K Oracle Database Express Edition (XE).3.8K Java and JavaScript in the Database.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |