This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/6611: Non-weak emission of `std::__default_alloc_template[...]' on platform(s) where it should be weak



>Number:         6611
>Category:       c++
>Synopsis:       Non-weak emission of `std::__default_alloc_template[...]' on platform(s) where it should be weak
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu May 09 02:16:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Gerald Pfeifer, abstracted from confidential source by Loren Rittle
>Release:        mainline
>Organization:
>Environment:
i386-*-freebsd4.5 (by Loren)
i386-*-freebsd* (by Gerald)
i386-*-*linux* (by Gerald)
(some confusion, but I have never seen this issue with 3.1)
>Description:
The original test case is a large C++ program.  The failure
seen is a non-mergeable, duplicate template instantiation
of an implementation class in the libstdc++-v3.  Depending
on the exact order of method definitions (i.e. somewhat
fragile test case) and exactly what is being instantiated,
under some conditions,
std::__default_alloc_template<(bool)1, (int)0>::allocate(unsigned)
is emitted as a text reference instead of a weak reference.
>How-To-Repeat:
Run these commands:
g++ -c -Wall  -O1  planY.C -o planY.o
nm -C planY.o | grep allocate

See:
000006c4 T std::__default_alloc_template<(bool)1, (int)0>::allocate(unsigned)
This should be a weak (W) not a text (T) reference.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="planY.C"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="planY.C"

Ly8gUnVuIHRoZXNlIGNvbW1hbmRzOgovLyBnKysgLWMgLVdhbGwgIC1PMSAgcGxhblkuQyAtbyBw
bGFuWS5vOyBubSAtQyBwbGFuWS5vIHwgZ3JlcCBhbGxvY2F0ZQovLyBTZWU6Ci8vIDAwMDAwNmM0
IFQgc3RkOjpfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8KGJvb2wpMSwgKGludCkwPjo6YWxsb2Nh
dGUodW5zaWduZWQpCi8vIFRoaXMgc2hvdWxkIGJlIGEgd2VhayAoVykgbm90IGEgdGV4dCAoVCkg
cmVmZXJlbmNlLgovLwovLyBUaGlzIHRlc3QgY2FzZSB3YXMgYWJzdHJhY3RlZCBieSBMSlIgZnJv
bSBhIGxhcmdlIHByb2dyYW0gc3VibWl0dGVkCi8vIGJ5IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVy
QGRiYWkudHV3aWVuLmFjLmF0Pi4gIEF0IHRoaXMgdGltZSwgaXQgaXMgdW5rbm93bgovLyB3aGV0
aGVyIHRoZSBsaWJyYXJ5IGltcGxlbWVudGF0aW9uLCBnKysgb3IgdmFyaW91cyBwb3J0cyBjYXVz
ZSB0aGlzLgoKI2luY2x1ZGUgPHZlY3Rvcj4KCmNsYXNzIFBOCnsKICBzdGQ6OnZlY3RvcjxpbnQ+
IHR5cGVzOwoKcHVibGljOgogIGJvb2wgdGVzdFAoc3RkOjpzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuICh0eXBlc1tpbmRleF0pOyB9Cn07CgpjbGFzcyBJRAp7CiAgaW50IHR5cGU7CiAgaW50
IGRhdGE7CgpwdWJsaWM6CiAgSUQoY29uc3QgSUQmIGlkZW50KSA6IHR5cGUoaWRlbnQudHlwZSks
IGRhdGEoaWRlbnQuZGF0YSkge30KICBJRChjb25zdCBpbnQgbnVtYmVyKSA6IHR5cGUgKDApLCBk
YXRhIChudW1iZXIpIHt9CiAgfklEKCkge30KfTsKCnR5cGVkZWYgc3RkOjp2ZWN0b3I8aW50PiBJ
RFM7CnR5cGVkZWYgc3RkOjpwYWlyPElELCBib29sPiBHUjsKCnN0YXRpYyBzdGQ6OnZlY3Rvcjxz
dGQ6OnZlY3RvcjxJRCo+Ojpjb25zdF9pdGVyYXRvcj4gaTJoQWdncmVnYXRlRnVuY3Rpb25UYWJs
ZTsKCmNsYXNzIEFBCnsKICBJRCAqYWdncmVnYXRlRnVuY3Rpb247CiAgdW5zaWduZWQgYWdncmVn
YXRlRnVuY3Rpb25JbmRleDsKICBHUiBsb3dlckd1YXJkOwogIEdSIHVwcGVyR3VhcmQ7CgogIGNv
bnN0IElEICZnZXRBZ2dyZWdhdGVGdW5jdGlvbkZyb21IVGFibGUoKSBjb25zdDsKICBJRCogZ2V0
QWdncmVnYXRlRnVuY3Rpb25Gcm9tSFRhYmxlUHRyKCkgY29uc3QKICB7CiAgICByZXR1cm4gKCAq
aTJoQWdncmVnYXRlRnVuY3Rpb25UYWJsZVthZ2dyZWdhdGVGdW5jdGlvbkluZGV4XSApOwogIH0K
ICAgIApwdWJsaWM6CiAgQUEoKTsKICBBQShjb25zdCBBQSYgYTIpCiAgICA6IGFnZ3JlZ2F0ZUZ1
bmN0aW9uKDApLCBhZ2dyZWdhdGVGdW5jdGlvbkluZGV4KGEyLmFnZ3JlZ2F0ZUZ1bmN0aW9uSW5k
ZXgpLAogICAgICBsb3dlckd1YXJkKGEyLmxvd2VyR3VhcmQpLCB1cHBlckd1YXJkKGEyLnVwcGVy
R3VhcmQpCiAgewogICAgaWYgKCBhMi5hZ2dyZWdhdGVGdW5jdGlvbiApCiAgICAgIGFnZ3JlZ2F0
ZUZ1bmN0aW9uID0gYTIuYWdncmVnYXRlRnVuY3Rpb247CiAgICBlbHNlCiAgICAgIGFnZ3JlZ2F0
ZUZ1bmN0aW9uID0gbmV3IElEKCphMi5nZXRBZ2dyZWdhdGVGdW5jdGlvbkZyb21IVGFibGVQdHIo
KSk7CiAgfQogIH5BQSgpIHt9Cn07CgpjbGFzcyBBVAp7CiAgc3RkOjpzaXplX3QgcF9pbmRleDsK
ICBJRFMqIHBhcmFtczsKICBBQSogYWdncmVnYXRlOwogIHN0YXRpYyBQTiBQcmVkaWNhdGVzOwoK
ICB2b2lkIHNldFBhcmFtcyhjb25zdCBJRFMgKnBhcmFtczIpCiAgewogICAgaWYoIHBhcmFtczIg
KQogICAgICBwYXJhbXM9bmV3IElEUygqcGFyYW1zMik7CiAgICBlbHNlCiAgICAgIHBhcmFtcz0w
OwogIH0KICB2b2lkIHNldEFnZ3JlZ2F0ZShjb25zdCBBQSAqYWdncmVnYXRlMikKICB7CiAgICBp
ZiggYWdncmVnYXRlMiApCiAgICAgIGFnZ3JlZ2F0ZT1uZXcgQUEoKmFnZ3JlZ2F0ZTIpOwogICAg
ZWxzZQogICAgICBhZ2dyZWdhdGU9MDsKICB9CgpwdWJsaWM6CiAgQVQoY29uc3QgQVQgJmF0b20y
KSA6IHBfaW5kZXgoYXRvbTIucF9pbmRleCksIHBhcmFtcygwKSwgYWdncmVnYXRlKDApCiAgewog
ICAgaWYoIGF0b20yLnRlc3RQKCkgKQogICAgICBzZXRBZ2dyZWdhdGUoYXRvbTIuYWdncmVnYXRl
KTsKICAgIGVsc2UKICAgICAgc2V0UGFyYW1zKGF0b20yLnBhcmFtcyk7CiAgfQogIEFUKGNvbnN0
IEFBICZhZ2dyZWdhdGUyKSA6IHBfaW5kZXgoMCksIHBhcmFtcygwKQogIHsKICAgIHNldEFnZ3Jl
Z2F0ZSggJmFnZ3JlZ2F0ZTIgKTsKICB9CiAgfkFUKCkge30KCiAgYm9vbCB0ZXN0UCgpIGNvbnN0
IHsgcmV0dXJuIFByZWRpY2F0ZXMudGVzdFAocF9pbmRleCk7IH0KfTsKClBOIEFUOjpQcmVkaWNh
dGVzOwoKY2xhc3MgS0FUCnsKICBJRFMgKnBhcmFtczsKICBBVCAqYXRvbTsKCnB1YmxpYzoKICBL
QVQoY29uc3QgSURTKiBwYXJhbXMyKSA6IHBhcmFtcyhwYXJhbXMyID8gbmV3IElEUygqcGFyYW1z
MikgOiAwKSwgYXRvbSgwKSB7fQogIEtBVChjb25zdCBLQVQmIGMpIDogcGFyYW1zKDApLCBhdG9t
IChjLmF0b20gPyBuZXcgQVQoKihjLmF0b20pKSA6IDApIHt9CiAgfktBVCgpIHt9Cn07CgpjbGFz
cyBSVUwKewogIEtBVCAqY2F1c2VkOwoKcHVibGljOgogIFJVTCgpOwogIFJVTChjb25zdCBSVUwm
IHJ1bCkgOiBjYXVzZWQgKHJ1bC5jYXVzZWQgPyBuZXcgS0FUKCoocnVsLmNhdXNlZCkpIDogMCkg
e30KICB+UlVMKCkge30KfTsKClJVTDo6UlVMICgpIDogY2F1c2VkKDApIHt9CgpzdGQ6OnZlY3Rv
cjxSVUw+IHJ1bHM7IAoKdm9pZApiYXIoKQp7CiAgcnVscy5wdXNoX2JhY2soUlVMKCkpOwp9Cgpp
bnQgbWFpbigpCnsKICBLQVQqIGsgPSBuZXcgS0FUKDApOwogIGJhcigpOwogIHJldHVybiAwOwp9
Cg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]