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++/1734: gdb loses the name of an empty class


>Number:         1734
>Category:       c++
>Synopsis:       gdb loses the name of an empty class
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Aug 06 09:58:01 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     mec.gnu@mindspring.com
>Release:        gdb 6.2
>Organization:
>Environment:
native i686-pc-linux-gnu
gdb 6.2
gcc HEAD 20040804
binutils 2.15
dwarf-2
>Description:
When gdb is presented with a completely empty class, it doesn't store the name of the class properly.

>From the attached typescript:

  (gdb) ptype E0
  type = void (struct E0 * const)
  (gdb) ptype E1
  No symbol "E1" in current context.
  (gdb) ptype E2
  type = class E2 : public E0 {
  }
  (gdb) print ge2
  $3 = {<> = {<No data fields>}, <No data fields>}

Note the bad output for ptype E0 and ptype E1.  The output for "ptype E2" is okay.  The output for "print ge2" has an incorrect empty basename, "<>" should be "<E0>".

gcc used to emit debug info for synthetic methods even if they weren't generated, so that even an empty class had some members.  Now an empty class is truly empty and gdb gets a little confused.  This change happened in gcc HEAD some time between 2004-07-15 and 2004-07-31.

See the typescript for a full session and the source code.
>How-To-Repeat:
I'm turning this into a test script, gdb.cp/empty.exp, so run empty.exp with gcc HEAD.
>Fix:

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

U2NyaXB0IHN0YXJ0ZWQgb24gRnJpIEF1ZyAgNiAwNToxMjoxNSAyMDA0CgpbbWVjLmdudUBiZXJt
YW4gZW1wdHldJCBjYXQgZW1wdHkuY2MKLyogQ29weXJpZ2h0IDIwMDQgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuCgogICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCgogICBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
ZGlmeQogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKICAgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgoKICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAgIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAgQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuICAqLwoKLy8gU29tZSBlbXB0eSBjbGFzc2VzLgoKY2xhc3MgRTAg
eyB9OwpjbGFzcyBFMSB7IH07CgovLyBTb21lIGNsYXNzZXMgZGVyaXZlZCBmcm9tIGVtcHR5IGNs
YXNzZXMuCgpjbGFzcyBFMiA6IHB1YmxpYyBFMCB7IH07CmNsYXNzIEUzIDogcHVibGljIEUyIHsg
fTsKY2xhc3MgRTQgOiBwdWJsaWMgRTAsIHB1YmxpYyBFMSB7IH07CgovLyBBbiBlbXB0eSBkaWFt
b25kLgoKY2xhc3MgRTUgOiBwdWJsaWMgdmlydHVhbCBFMCB7IH07CmNsYXNzIEU2IDogcHVibGlj
IHZpcnR1YWwgRTAgeyB9OwpjbGFzcyBFNyA6IHB1YmxpYyB2aXJ0dWFsIEU1LCBwdWJsaWMgdmly
dHVhbCBFNiB7IH07CgovLyBTb21lIGdsb2JhbCB2YXJpYWJsZXMuCkUwIGdlMDsKRTEgZ2UxOwpF
MiBnZTI7CkUzIGdlMzsKRTQgZ2U0OwpFNSBnZTU7CkU2IGdlNjsKRTcgZ2U3OwoKLy8gU3RvcCB0
aGUgY29tcGlsZXIgZnJvbSBvcHRpbWl6aW5nIGF3YXkgZGF0YS4Kdm9pZCByZWZlciAodm9pZCAq
KQp7CiAgOwp9CgppbnQgbWFpbiAoKQp7CiAgLy8gU29tZSBhdXRvIHZhcmlhYmxlcy4KICBFMCBh
ZTA7CiAgRTEgYWUxOwogIEUyIGFlMjsKICBFMyBhZTM7CiAgRTQgYWU0OwogIEU1IGFlNTsKICBF
NiBhZTY7CiAgRTcgYWU3OwoKICByZWZlcigmZ2UwKTsKICByZWZlcigmZ2UxKTsKICByZWZlcigm
Z2UyKTsKICByZWZlcigmZ2UzKTsKICByZWZlcigmZ2U0KTsKICByZWZlcigmZ2U1KTsKICByZWZl
cigmZ2U2KTsKICByZWZlcigmZ2U3KTsKCiAgcmVmZXIoJmFlMCk7CiAgcmVmZXIoJmFlMSk7CiAg
cmVmZXIoJmFlMik7CiAgcmVmZXIoJmFlMyk7CiAgcmVmZXIoJmFlNCk7CiAgcmVmZXIoJmFlNSk7
CiAgcmVmZXIoJmFlNik7CiAgcmVmZXIoJmFlNyk7Cn0KClttZWMuZ251QGJlcm1hbiBlbXB0eV0k
IC9iZXJtYW4vZnNmL19jdXJyZW50Xy9iZXJtYW4vaW5zdGFsbC90YXJnZXQvbmF0aXZlL2djYy9n
Y2NjLUhFQUQtYXMtMi4xNS1sZC0yLjE1L2Jpbi9nKysgLXYKUmVhZGluZyBzcGVjcyBmcm9tIC9i
ZXJtYW4vZnNmL19jdXJyZW50Xy9iZXJtYW4vaW5zdGFsbC90YXJnZXQvbmF0aXZlL2djYy9nY2Mt
SEVBRC1hcy0yLjE1LWxkLTIuMTUvbGliL2djYy9pNjg2LXBjLWxpbnV4LWdudS8zLjUuMC9zcGVj
cwpDb25maWd1cmVkIHdpdGg6IC9iZXJtYW4vZnNmL19jdXJyZW50Xy9zb3VyY2UvZ2NjL0hFQUQv
Z2NjL2NvbmZpZ3VyZSAtLWRpc2FibGUtc2hhcmVkIC0tcHJlZml4PS9iZXJtYW4vZnNmL19jdXJy
ZW50Xy9iZXJtYW4vaW5zdGFsbC90YXJnZXQvbmF0aXZlL2djYy9nY2MtSEVBRC1hcy0yLjE1LWxk
LTIuMTUgLS13aXRoLWdudS1hcyAtLXdpdGgtYXM9L2Jlcm1hbi9taWdjaGFpbi9pbnN0YWxsL3Rh
cmdldC9uYXRpdmUvYmludXRpbHMtMi4xNS9iaW4vYXMgLS13aXRoLWdudS1sZCAtLXdpdGgtbGQ9
L2Jlcm1hbi9taWdjaGFpbi9pbnN0YWxsL3RhcmdldC9uYXRpdmUvYmludXRpbHMtMi4xNS9iaW4v
bGQKVGhyZWFkIG1vZGVsOiBwb3NpeApnY2MgdmVyc2lvbiAzLjUuMCAyMDA0MDgwNCAoZXhwZXJp
bWVudGFsKQoKW21lYy5nbnVAYmVybWFuIGVtcHR5XSQgL2Jlcm1hbi9mc2YvX2N1cnJlbnRfL2Jl
cm1hbi9pbnN0YWxsL3RhcmdldC9uYXRpdmUvZ2NjL2djY2MtSEVBRC1hcy0yLjE1LWxkLTIuMTUv
YmluL2crKyAtZ2R3YXJmLTIgZW1wdHkuY2MKClttZWMuZ251QGJlcm1hbiBlbXB0eV0kIC9iZXJt
YW4vbWlnY2hhaW4vaW5zdGFsbC90YXJnZXQvbmF0aXZlL2dkYi02LjIvYmluL2dkYiBhIC5vdXQK
R05VIGdkYiA2LjIKQ29weXJpZ2h0IDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
CkdEQiBpcyBmcmVlIHNvZnR3YXJlLCBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSwgYW5kIHlvdSBhcmUKd2VsY29tZSB0byBjaGFuZ2UgaXQgYW5kL29yIGRpc3RyaWJ1
dGUgY29waWVzIG9mIGl0IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4KVHlwZSAic2hvdyBjb3B5
aW5nIiB0byBzZWUgdGhlIGNvbmRpdGlvbnMuClRoZXJlIGlzIGFic29sdXRlbHkgbm8gd2FycmFu
dHkgZm9yIEdEQi4gIFR5cGUgInNob3cgd2FycmFudHkiIGZvciBkZXRhaWxzLgpUaGlzIEdEQiB3
YXMgY29uZmlndXJlZCBhcyAiaTY4Ni1wYy1saW51eC1nbnUiLi4uVXNpbmcgaG9zdCBsaWJ0aHJl
YWRfZGIgbGlicmFyeSAiL2xpYi9saWJ0aHJlYWRfZGIuc28uMSIuCgooZ2RiKSBicmVhayBtYWlu
CkJyZWFrcG9pbnQgMSBhdCAweDgwNDg5Zjg6IGZpbGUgZW1wdHkuY2MsIGxpbmUgNjEuCihnZGIp
IHJ1bgpTdGFydGluZyBwcm9ncmFtOiAvYmVybWFuL2hvbWUvbWVjLmdudS9nZGIvZW1wdHkvYS5v
dXQgCgpCcmVha3BvaW50IDEsIG1haW4gKCkgYXQgZW1wdHkuY2M6NjEKNjEJICBFNSBhZTU7Cihn
ZGIpIHB0eXBlIEUwCnR5cGUgPSB2b2lkIChzdHJ1Y3QgRTAgKiBjb25zdCkKKGdkYikgcHR5cGUg
RTEKTm8gc3ltYm9sICJFMSIgaW4gY3VycmVudCBjb250ZXh0LgooZ2RiKSBwdHlwZSBFMgp0eXBl
ID0gY2xhc3MgRTIgOiBwdWJsaWMgRTAgewp9CihnZGIpIHByaW50IGdlMAokMSA9IHs8Tm8gZGF0
YSBmaWVsZHM+fQooZ2RiKSBwcmludCBnZTEKJDIgPSB7PE5vIGRhdGEgZmllbGRzPn0KKGdkYikg
cHJpbnQgZ2UyCiQzID0gezw+ID0gezxObyBkYXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+
fQooZ2RiKSBwcmludCBnZTMKJDQgPSB7PEUyPiA9IHs8PiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwg
PE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59CihnZGIpIHByaW50IGdlNAokNSA9
IHs8PiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgPD4gPSB7PE5vIGRhdGEgZmllbGRzPn0sIDxObyBk
YXRhIGZpZWxkcz59CihnZGIpIHByaW50IGdlNQokNiA9IHs8PiA9IHs8Tm8gZGF0YSBmaWVsZHM+
fSwgX3ZwdHIuRTUgPSAweDgwNTIzN2N9CihnZGIpIHB0eXBlIGdlMAp0eXBlID0gc3RydWN0IEUw
IHsKICAgIDxubyBkYXRhIGZpZWxkcz4KfQooZ2RiKSBwdHlwZSBnZTEKdHlwZSA9IHN0cnVjdCBF
MSB7CiAgICA8bm8gZGF0YSBmaWVsZHM+Cn0KKGdkYikgcHR5cGUgZ2UyCnR5cGUgPSBjbGFzcyBF
MiA6IHB1YmxpYyBFMCB7Cn0KKGdkYikgcXVpdApUaGUgcHJvZ3JhbSBpcyBydW5uaW5nLiAgRXhp
dCBhbnl3YXk/ICh5IG9yIG4pIHkKClttZWMuZ251QGJlcm1hbiBlbXB0eV0kIGV4aXQKZXhpdAoK
U2NyaXB0IGRvbmUgb24gRnJpIEF1ZyAgNiAwNToxNDo1MiAyMDA0Cg==


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