This is the mail archive of the gdb-prs@sources.redhat.com mailing list for the GDB 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++/1209: Enums as template parameters produce "can't find class" errors


>Number:         1209
>Category:       c++
>Synopsis:       Enums as template parameters produce "can't find class" errors
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue May 13 01:08:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Ervan Darnell
>Release:        5.3
>Organization:
>Environment:
Red Hat Linux on i686 and using g++ 3.2.2 both to compile gdb 
and the test program.
>Description:
When an integer-style template parameter is specified with 
an enum, the demangler sees the integer value but the stabs
encodes the enum name.  For instance:

enum GNetConn {  GSimpleNetConn,  GLongNetConn };

template <GNetConn T>
class Sub2 : public Base { ....

Will cause the stabs to have Sub2<GsimpleNetConn> but the 
demangling will report Sub2<(GNetConn) 0>.  While logically
the same, gdb cannot find the correct class based on the 
(GNetConn) 0 cast:

warning: can't find class named `SubSub<(GNetConn)0>', as given by C++ RTTI

and it fails completely to print anything (the full 
attached example has another level of subclassing). 
Even when the proper cast is explicitly given, it still reports 
the error, but at least it works:
 p *(SubSub<GSimpleNetConn>*)z
warning: can't find class named `SubSub<(GNetConn)0>', as given by C++ RTTI
warning: can't find class named `SubSub<(GNetConn)0>', as given by C++ RTTI
$7 = warning: can't find class named `SubSub<(GNetConn)0>', as given by C++ RTTI
{<Sub2<GSimpleNetConn>> = {<Base> = {_vptr.Base = 0x8049af0, i = 6}, 
    k = 6}, t = 5}  


This bears some resemblance to PR.488.
>How-To-Repeat:
g++ -g gdbprob.cc
gdb ./a.out
then breakpoint in foo and print argument z.  The attachment
contains the full gdb interaction.
>Fix:

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

Ly8gVGVtcGxhdGluZyBiYXNlZCBvbiBlbnVtcyBjb25mdXNlcyBnZGIgCi8vIEluIHRoZSBmb2xs
b3dpbmcsICJ4IiBjYW4gYmUgcHJpbnRlZCBpbiB0aGUgZGVidWdnZXIKLy8gYnV0ICJ5c2ltcGxl
IiBjYW5ub3QuIAoKY2xhc3MgQmFzZSB7CiAgICBpbnQgaTsKcHVibGljOgogICAgQmFzZSAoaW50
IGkpIDogaShpKSB7fTsKICAgIHZpcnR1YWwgaW50IGdldCgpIHsgcmV0dXJuIGk7IH0KfTsKCmNs
YXNzIFN1YjEgOiBwdWJsaWMgQmFzZSB7CiAgICBpbnQgajsKcHVibGljOgogICAgU3ViMSAoaW50
IGkpIDogQmFzZShpKzEpLCBqKGkrMSkge307CiAgICB2aXJ0dWFsIGludCBnZXQoKSB7IHJldHVy
biBCYXNlOjpnZXQoKSsxMDsgfQp9OwoKZW51bSBHTmV0Q29ubiB7CiAgR1NpbXBsZU5ldENvbm4s
CiAgR0xvbmdOZXRDb25uCn07CgoKdGVtcGxhdGUgPEdOZXRDb25uIFQ+CmNsYXNzIFN1YjIgOiBw
dWJsaWMgQmFzZSB7CiAgICBpbnQgazsKcHVibGljOgogICAgU3ViMiAoaW50IGkpIDogQmFzZShp
KzIpLCBrKGkrMikge307CiAgICB2aXJ0dWFsIGludCBnZXQoKSB7IHJldHVybiBCYXNlOjpnZXQo
KSsyMDsgfQp9OwoKdGVtcGxhdGUgPEdOZXRDb25uIFQ+CmNsYXNzIFN1YlN1YiA6IHB1YmxpYyBT
dWIyPFQ+IHsKICAgIGludCB0OwpwdWJsaWM6CiAgICBTdWJTdWIgKGludCBpLCBpbnQgdCkgOiBT
dWIyPFQ+KGkpLCB0KHQpIHt9OwogICAgdmlydHVhbCBpbnQgZ2V0KCkgeyByZXR1cm4gU3ViMjxU
Pjo6Z2V0KCkrMTAwOyB9Cn07CgppbnQgZm9vIChCYXNlKiB6KSB7CiAgICByZXR1cm4gei0+Z2V0
KCk7Cn0KCmludCBtYWluICgpIHsKICAgIFN1YjEgeCgzKTsKICAgIFN1YlN1YjxHU2ltcGxlTmV0
Q29ubj4gKnlzaW1wbGUgPSBuZXcgU3ViU3ViPEdTaW1wbGVOZXRDb25uPig0LDUpOwogICAgU3Vi
U3ViPEdMb25nTmV0Q29ubj4gKnlsb25nID0gbmV3IFN1YlN1YjxHTG9uZ05ldENvbm4+KDQsIDYp
OwogICAgaW50IHogPSBmb28oJngpICsgZm9vKHlzaW1wbGUpOwogICAgcmV0dXJuIDA7Cn0KCiNp
ZiBFWEFNUExFX09GX1RFU1RJTkdfQVRfTElOVVhfQ09NTUFORF9MSU5FCgo+Z2RiIC12CkdOVSBn
ZGIgNS4zCkNvcHlyaWdodCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpHREIg
aXMgZnJlZSBzb2Z0d2FyZSwgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UsIGFuZCB5b3UgYXJlCndlbGNvbWUgdG8gY2hhbmdlIGl0IGFuZC9vciBkaXN0cmlidXRlIGNv
cGllcyBvZiBpdCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuClR5cGUgInNob3cgY29weWluZyIg
dG8gc2VlIHRoZSBjb25kaXRpb25zLgpUaGVyZSBpcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5IGZv
ciBHREIuICBUeXBlICJzaG93IHdhcnJhbnR5IiBmb3IgZGV0YWlscy4KVGhpcyBHREIgd2FzIGNv
bmZpZ3VyZWQgYXMgImk2ODYtcGMtbGludXgtZ251Ii4KPmcrKyAtdgpSZWFkaW5nIHNwZWNzIGZy
b20gL2ltcG9ydC9tYW54L3Rvb2xzL2djYy9kaXN0L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMi4yL3NwZWNzCkNvbmZpZ3VyZWQgd2l0aDogLi4vZ2NjLTMuMi4yL2NvbmZpZ3VyZSAt
LXByZWZpeD0vaW1wb3J0L21hbngvdG9vbHMvZ2NjL2Rpc3QgLS1lbmFibGUtbGFuZ3VhZ2VzPWMs
YysrClRocmVhZCBtb2RlbDogcG9zaXgKZ2NjIHZlcnNpb24gMy4yLjIKPmcrKyAtZyBnZGJwcm9i
LmNjCj5nZGIgLi9hLm91dApHTlUgZ2RiIDUuMwpDb3B5cmlnaHQgMjAwMiBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4KR0RCIGlzIGZyZWUgc29mdHdhcmUsIGNvdmVyZWQgYnkgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgeW91IGFyZQp3ZWxjb21lIHRvIGNoYW5nZSBp
dCBhbmQvb3IgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgaXQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25z
LgpUeXBlICJzaG93IGNvcHlpbmciIHRvIHNlZSB0aGUgY29uZGl0aW9ucy4KVGhlcmUgaXMgYWJz
b2x1dGVseSBubyB3YXJyYW50eSBmb3IgR0RCLiAgVHlwZSAic2hvdyB3YXJyYW50eSIgZm9yIGRl
dGFpbHMuClRoaXMgR0RCIHdhcyBjb25maWd1cmVkIGFzICJpNjg2LXBjLWxpbnV4LWdudSIuLi4K
KGdkYikgYiBtYWluCkJyZWFrcG9pbnQgMSBhdCAweDgwNDg3NTk6IGZpbGUgZ2RicHJvYi5jYywg
bGluZSA0Ni4KKGdkYikgcnVuClN0YXJ0aW5nIHByb2dyYW06IC9ob21lL2VydmFuL2J1Z3MvMTQw
NC9hLm91dCAKCkJyZWFrcG9pbnQgMSwgbWFpbiAoKSBhdCBnZGJwcm9iLmNjOjQ2CjQ2CSAgICBT
dWIxIHgoMyk7CihnZGIpIG4gMwo0OQkgICAgaW50IHogPSBmb28oJngpICsgZm9vKHlzaW1wbGUp
OwooZ2RiKSBwIHgKJDEgPSB7PEJhc2U+ID0ge192cHRyLkJhc2UgPSAweDgwNDliNDAsIGkgPSA0
fSwgaiA9IDR9CihnZGIpIHAgKnlzaW1wbGUKd2FybmluZzogY2FuJ3QgZmluZCBjbGFzcyBuYW1l
ZCBgU3ViU3ViPChHTmV0Q29ubikwPicsIGFzIGdpdmVuIGJ5IEMrKyBSVFRJCiQyID0gezxTdWIy
PEdTaW1wbGVOZXRDb25uPj4gPSB7PEJhc2U+ID0ge192cHRyLkJhc2UgPSAweDgwNDlhZjAsIGkg
PSA2fSwgCiAgICBrID0gNn0sIHQgPSA1fSAgLS0tICoqKiB3b3JrZWQgaGVyZSwgZGVzcGl0ZSB3
YXJuaW5nCihnZGIpIHMKZm9vKEJhc2UqKSAoej0weGJmZmZmMTkwKSBhdCBnZGJwcm9iLmNjOjQy
CjQyCSAgICByZXR1cm4gei0+Z2V0KCk7CihnZGIpIHNldCBwcmludCBvYmplY3Qgb24KKGdkYikg
cCAqegokNCA9IChTdWIxKSB7PEJhc2U+ID0ge192cHRyLkJhc2UgPSAweDgwNDliNDAsIGkgPSA0
fSwgaiA9IDR9ICAtLS0gKioqKiAgd29ya2VkIGhlcmUKKGdkYikgZmluClJ1biB0aWxsIGV4aXQg
ZnJvbSAjMCAgZm9vKEJhc2UqKSAoej0weGJmZmZmMTkwKSBhdCBnZGJwcm9iLmNjOjQyCjB4MDgw
NDg4NjMgaW4gbWFpbiAoKSBhdCBnZGJwcm9iLmNjOjQ5CjQ5CSAgICBpbnQgeiA9IGZvbygmeCkg
KyBmb28oeXNpbXBsZSk7ClZhbHVlIHJldHVybmVkIGlzICQ1ID0gMTQKKGdkYikgcwpmb28oQmFz
ZSopICh6PTB4ODA0OWVmOCkgYXQgZ2RicHJvYi5jYzo0Mgo0MgkgICAgcmV0dXJuIHotPmdldCgp
OwooZ2RiKSBwICp6Cndhcm5pbmc6IGNhbid0IGZpbmQgY2xhc3MgbmFtZWQgYFN1YlN1YjwoR05l
dENvbm4pMD4nLCBhcyBnaXZlbiBieSBDKysgUlRUSQokNiA9IHdhcm5pbmc6IGNhbid0IGZpbmQg
Y2xhc3MgbmFtZWQgYFN1YlN1YjwoR05ldENvbm4pMD4nLCBhcyBnaXZlbiBieSBDKysgUlRUSQp7
X3ZwdHIuQmFzZSA9IDB4ODA0OWFmMCwgaSA9IDZ9IC0tLSAqKioqIGZhaWxlZCBoZXJlCihnZGIp
IHAgKihTdWJTdWI8R1NpbXBsZU5ldENvbm4+Kil6Cndhcm5pbmc6IGNhbid0IGZpbmQgY2xhc3Mg
bmFtZWQgYFN1YlN1YjwoR05ldENvbm4pMD4nLCBhcyBnaXZlbiBieSBDKysgUlRUSQp3YXJuaW5n
OiBjYW4ndCBmaW5kIGNsYXNzIG5hbWVkIGBTdWJTdWI8KEdOZXRDb25uKTA+JywgYXMgZ2l2ZW4g
YnkgQysrIFJUVEkKJDcgPSB3YXJuaW5nOiBjYW4ndCBmaW5kIGNsYXNzIG5hbWVkIGBTdWJTdWI8
KEdOZXRDb25uKTA+JywgYXMgZ2l2ZW4gYnkgQysrIFJUVEkKezxTdWIyPEdTaW1wbGVOZXRDb25u
Pj4gPSB7PEJhc2U+ID0ge192cHRyLkJhc2UgPSAweDgwNDlhZjAsIGkgPSA2fSwgCiAgICBrID0g
Nn0sIHQgPSA1fSAgLS0tICoqKiB3b3JrZWQgaGVyZSB3aXRoIGV4cGxpY2l0IGNhc3QgCiNlbmRp
Zgo=


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