Data Definitions should not include mangled C++ names
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
lsb |
In Progress
|
Medium
|
Unassigned | ||
Mandriva |
In Progress
|
Medium
|
Bug Description
This bug is split from bug 3883, which may get closed.
Defines, data types and function signatures are emitted into build_env .defs
files, which become the Data Defintions in the LSB specification. In the case
of libraries implemented in C++, many elements are recorded with mangled names,
because the actual ABI is implemented by libraries which contain such symbols.
The LSB data import of C++ libraries is incomplete, and is not used to generate
working headers. Headers are in fact generated, but are not included in the
SDK, instead headers built from the source tarballs of the matching upstream
projects (currently libstdc++, Qt3 and Qt4) are used. In the case of the data
definitions, inclusion is only partial - some purely C++ elements like class
definitions are not produced, but what is put into the .defs files is used
complete and as-is in the specification. In researching for bug 3883, it
became evident that Enum types are handled incorrectly - because mangled names
are used. For example, for example, from:
http://
we see:
17.3.61. QtCore/qthread.h
class QThread;
enum _ZN7QThread8Pri
IdlePriority = 0,
LowestPriority = 1,
LowPriority = 2,
NormalPriority = 3,
HighPriority = 4,
HighestPriority = 5,
TimeCritica
InheritPriority = 7
};
It's pretty clear that if we're going to include this enum it should use the
unmangled name. The Type entry does contain this name:
INSERT INTO `Type` VALUES (15516,
==> '_ZN7QThread8Pr
==> 'QThread:
In the upstream header we see this as:
class Q_CORE_EXPORT QThread : public QObject
{
public:
...
enum Priority {
};
else we could leave out the enums entirely, not sure which makes more sense.
The values of the enum elements should be fixed as that is part of the ABI, but
since none of the rest of the class contents are listed....
Changed in mandriva: | |
importance: | Unknown → Medium |
status: | Unknown → In Progress |
tags: | added: zclose |