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]

breakpoints/1778: can't set conditional breakpoints with c++ expr (containing '::') in 'if' condition


>Number:         1778
>Category:       breakpoints
>Synopsis:       can't set conditional breakpoints with c++ expr (containing '::') in 'if' condition
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Sep 17 12:28:01 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     madmax@revolt.botik.ru
>Release:        GNU gdb 6.2.1
>Organization:
>Environment:
2.4.27 #1 SMP i686 GNU/Linux, Debian unstable (sid),
gcc version 3.3.4 (Debian 1:3.3.4-11)
>Description:
can't set conditional breakpoint when condition contains a double colon ('::').
as a result of pasre error we have:
> >(gdb) b dummy.cc:2 if 'qwe::asd::zxc'
> >Function "dummy" not defined.
> >Make breakpoint pending on future shared library load? (y or [n]) n

or even:
> >(gdb) b dummy.cc:2 if 'qwe::asd::zxc'
> >Junk at end of arguments.

if function dummy defined
>How-To-Repeat:
its a parse error, works everywhere...
>Fix:
the exact place (line marked with '==>') where error occures (if we have '::' in condition): 
in linespec.c:locate_first_half(...)
[...]
      if (!*p
	  || p[0] == '\t'
	  || ((p[0] == ':')
==>	      && ((p[1] == ':') || (strchr (p + 1, ':') == NULL)))
	  || ((p[0] == ' ') && !*is_quote_enclosed))
	break;
=======================================
the "if condition" part is unwantesd in this func at all, so... 
in patch i "zap it out" as in set_flags() func was done...
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch"

LS0tIGdkYi02LjIuMS1vcmlnL2dkYi9saW5lc3BlYy5jCTIwMDQtMDYtMTkgMDE6MzY6MTUuMDAw
MDAwMDAwICswNDAwCisrKyBnZGItNi4yLjEvZ2RiL2xpbmVzcGVjLmMJMjAwNC0wOS0xNyAxNToy
Mjo1Ni4wMDAwMDAwMDAgKzA0MDAKQEAgLTY3MSw2ICs2NzEsOSBAQAogICBpbnQgaXNfcXVvdGVf
ZW5jbG9zZWQ7CiAgIGludCBpc19vYmpjX21ldGhvZCA9IDA7CiAgIGNoYXIgKnNhdmVkX2FyZyA9
ICphcmdwdHI7CisgIGNoYXIgKmlpOworICBpbnQgaGFzX2lmID0gMDsKKwogCiAgIGlmIChub3Rf
Zm91bmRfcHRyKQogICAgICpub3RfZm91bmRfcHRyID0gMDsKQEAgLTY4NCw2ICs2ODcsMjMgQEAK
ICAgaWYgKCoqYXJncHRyID09ICcqJykKICAgICByZXR1cm4gZGVjb2RlX2luZGlyZWN0IChhcmdw
dHIpOwogCisgIC8qICdoYXNfaWYnIGlzIGZvciB0aGUgc3ludGF4OgorICAgICAgICAoZ2RiKSBi
cmVhayBmb28gaWYgKGE9PWIpCisgICovCisgIGlmICgoaWkgPSBzdHJzdHIgKCphcmdwdHIsICIg
aWYgIikpICE9IE5VTEwgfHwKKyAgICAgIChpaSA9IHN0cnN0ciAoKmFyZ3B0ciwgIlx0aWYgIikp
ICE9IE5VTEwgfHwKKyAgICAgIChpaSA9IHN0cnN0ciAoKmFyZ3B0ciwgIiBpZlx0IikpICE9IE5V
TEwgfHwKKyAgICAgIChpaSA9IHN0cnN0ciAoKmFyZ3B0ciwgIlx0aWZcdCIpKSAhPSBOVUxMIHx8
CisgICAgICAoaWkgPSBzdHJzdHIgKCphcmdwdHIsICIgaWYoIikpICE9IE5VTEwgfHwKKyAgICAg
IChpaSA9IHN0cnN0ciAoKmFyZ3B0ciwgIlx0aWYoICIpKSAhPSBOVUxMKQorICAgIGhhc19pZiA9
IDE7CisgIC8qIFRlbXBvcmFyaWx5IHphcCBvdXQgImlmIChjb25kaXRpb24pIiB0byBub3QgY29u
ZnVzZSB0aGUgY29kZSBiZWxvdy4gIAorICAgICBUaGlzIGlzIHVuZG9uZSBiZWxvdy4gRG8gbm90
IGNoYW5nZSBpaSEhICAqLworICBpZiAoaGFzX2lmKQorICAgIHsKKyAgICAgICppaSA9ICdcMCc7
CisgICAgfQorCiAgIC8qIFNldCB2YXJpb3VzIGZsYWdzLiAgJ3BhcmVuX3BvaW50ZXInIGlzIGlt
cG9ydGFudCBmb3Igb3ZlcmxvYWQKICAgICAgY2hlY2tpbmcsIHdoZXJlIHdlIGFsbG93IHRoaW5n
cyBsaWtlOgogICAgICAgICAoZ2RiKSBicmVhayBjOjpmKGludCkKQEAgLTcwMiw2ICs3MjIsMTAg
QEAKIAogICBwID0gbG9jYXRlX2ZpcnN0X2hhbGYgKGFyZ3B0ciwgJmlzX3F1b3RlX2VuY2xvc2Vk
KTsKIAorICAvKiBwdXQgYmFjayAiIGlmIChjb25kaXRpb24pIiBzbyBvdXRlciBsYXllcnMgY2Fu
IHNlZSBpdC4gICovCisgIGlmIChoYXNfaWYpCisgICAgKmlpID0gJyAnOworCiAgIC8qIENoZWNr
IGlmIHRoaXMgaXMgYW4gT2JqZWN0aXZlLUMgbWV0aG9kIChhbnl0aGluZyB0aGF0IHN0YXJ0cyB3
aXRoCiAgICAgIGEgJysnIG9yICctJyBhbmQgYSAnWycpLiAgKi8KICAgaWYgKGlzX29iamNfbWV0
aG9kX2Zvcm1hdCAocCkpCkBAIC04OTksMjcgKzkyMyw2IEBACiBzdGF0aWMgdm9pZAogc2V0X2Zs
YWdzIChjaGFyICphcmcsIGludCAqaXNfcXVvdGVkLCBjaGFyICoqcGFyZW5fcG9pbnRlcikKIHsK
LSAgY2hhciAqaWk7Ci0gIGludCBoYXNfaWYgPSAwOwotCi0gIC8qICdoYXNfaWYnIGlzIGZvciB0
aGUgc3ludGF4OgotICAgICAgICAoZ2RiKSBicmVhayBmb28gaWYgKGE9PWIpCi0gICovCi0gIGlm
ICgoaWkgPSBzdHJzdHIgKGFyZywgIiBpZiAiKSkgIT0gTlVMTCB8fAotICAgICAgKGlpID0gc3Ry
c3RyIChhcmcsICJcdGlmICIpKSAhPSBOVUxMIHx8Ci0gICAgICAoaWkgPSBzdHJzdHIgKGFyZywg
IiBpZlx0IikpICE9IE5VTEwgfHwKLSAgICAgIChpaSA9IHN0cnN0ciAoYXJnLCAiXHRpZlx0Iikp
ICE9IE5VTEwgfHwKLSAgICAgIChpaSA9IHN0cnN0ciAoYXJnLCAiIGlmKCIpKSAhPSBOVUxMIHx8
Ci0gICAgICAoaWkgPSBzdHJzdHIgKGFyZywgIlx0aWYoICIpKSAhPSBOVUxMKQotICAgIGhhc19p
ZiA9IDE7Ci0gIC8qIFRlbXBvcmFyaWx5IHphcCBvdXQgImlmIChjb25kaXRpb24pIiB0byBub3Qg
Y29uZnVzZSB0aGUKLSAgICAgcGFyZW50aGVzaXMtY2hlY2tpbmcgY29kZSBiZWxvdy4gIFRoaXMg
aXMgdW5kb25lIGJlbG93LiBEbyBub3QKLSAgICAgY2hhbmdlIGlpISEgICovCi0gIGlmIChoYXNf
aWYpCi0gICAgewotICAgICAgKmlpID0gJ1wwJzsKLSAgICB9Ci0KICAgKmlzX3F1b3RlZCA9ICgq
YXJnCiAJCSYmIHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFjdGVycyAoKSwK
IAkJCSAgICphcmcpICE9IE5VTEwpOwpAQCAtOTI4LDEwICs5MzEsNiBAQAogICBpZiAoKnBhcmVu
X3BvaW50ZXIgIT0gTlVMTCkKICAgICAqcGFyZW5fcG9pbnRlciA9IHN0cnJjaHIgKCpwYXJlbl9w
b2ludGVyLCAnKScpOwogCi0gIC8qIE5vdyB0aGF0IHdlJ3JlIHNhZmVseSBwYXN0IHRoZSBwYXJl
bl9wb2ludGVyIGNoZWNrLCBwdXQgYmFjayAiIGlmCi0gICAgIChjb25kaXRpb24pIiBzbyBvdXRl
ciBsYXllcnMgY2FuIHNlZSBpdC4gICovCi0gIGlmIChoYXNfaWYpCi0gICAgKmlpID0gJyAnOwog
fQogCiAMCg==


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