Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2017-11-21 17:30:47 -0500
committerEugene Tarassov2017-11-21 17:30:47 -0500
commit1d82208507e225e3d864a631b7508878dc0a7c1a (patch)
tree9d8274cc5e3cec17a3122bc503516c35e820e2f4
parenta2c23219671f2b7ba4e681182e62cead81bb1775 (diff)
downloadorg.eclipse.tcf.agent-1d82208507e225e3d864a631b7508878dc0a7c1a.tar.gz
org.eclipse.tcf.agent-1d82208507e225e3d864a631b7508878dc0a7c1a.tar.xz
org.eclipse.tcf.agent-1d82208507e225e3d864a631b7508878dc0a7c1a.zip
TCF Agent: Symbols service: fixed handling of identical objects defined in multiple name spaces in C++
-rw-r--r--agent/tcf/services/dwarfcache.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/agent/tcf/services/dwarfcache.c b/agent/tcf/services/dwarfcache.c
index 399de89f..54d031d7 100644
--- a/agent/tcf/services/dwarfcache.c
+++ b/agent/tcf/services/dwarfcache.c
@@ -1217,6 +1217,21 @@ static int cmp_pub_objects(ObjectInfo * x, ObjectInfo * y) {
DOIF_const_value;
if ((x->mFlags & flags) != (y->mFlags & flags)) return 0;
+ if (x->mParent != y->mParent) {
+ ObjectInfo * px = x->mParent;
+ ObjectInfo * py = y->mParent;
+ for (;;) {
+ if (px == NULL || py == NULL) return 0;
+ if (px->mTag != py->mTag) return 0;
+ if (px->mTag != TAG_namespace) break;
+ if (px->mName != py->mName) {
+ if (px->mName == NULL || py->mName == NULL) return 0;
+ if (strcmp(px->mName, py->mName) != 0) return 0;
+ }
+ px = px->mParent;
+ py = py->mParent;
+ }
+ }
switch (x->mTag) {
case TAG_base_type:
case TAG_fund_type:

Back to the top