From: Rob Taylor <rob.taylor@codethink.co.uk>
To: Thomas Schmid <Thomas.Schmid@br-automation.com>
Cc: linux-sparse@vger.kernel.org, Pavel Roskin <proski@gnu.org>,
Josh Triplett <josht@linux.vnet.ibm.com>
Subject: Re: Antwort: Re: Finding all typedefs
Date: Fri, 03 Aug 2007 01:49:19 +0100 [thread overview]
Message-ID: <46B27B8F.2040008@codethink.co.uk> (raw)
In-Reply-To: <OF8B0579A2.47A003A7-ONC125732B.00280B65-C125732B.00295803@br-automation.com>
[-- Attachment #1: Type: text/plain, Size: 1069 bytes --]
Thomas Schmid wrote:
> linux-sparse-owner@vger.kernel.org schrieb am 02.08.2007 02:15:34:
>
>> Another annoying thing is that the types are always resolved for
>> typedefs. i.e. for
>>
>> typedef int foo;
>> foo bar;
>>
>> the symbol for bar has a base type of int.
>
> ...and a base_type->ident named "foo". But if you add another typedef on
> "int", i.e.
>
> typedef int DINT;
>
> base_type->ident changes to "DINT", now there's no way to get out, that
> symbol "bar" was declared with "foo".
> Tell me if I'm wrong, but a solution for this would also help me on that:
> http://marc.info/?l=linux-sparse&m=118171213001092&w=2
>
>> Any suggestions for how to solve this would be greatly appreciated :)
> I agree! ;-)
Ok, I've hacked up a little patch that does a small bit of the job
(attached), but this breaks comparisons to abstract types (and probably
a whole load more besides). I'll carry on hacking this some more and see
if I can sort those issues, but I'd greatly appreciate some input from
anyone with deeper knowledge!
Thanks,
Rob Taylor
[-- Attachment #2: 0001-cracked-ideas-to-track-user-types.patch --]
[-- Type: text/x-patch, Size: 1595 bytes --]
From 06cae878ce87d71bb5c827c4e8df7f3e5a1df40f Mon Sep 17 00:00:00 2001
From: Rob Taylor <rob.taylor@codethink.co.uk>
Date: Fri, 3 Aug 2007 01:37:58 +0100
Subject: [PATCH] cracked ideas to track user types.
---
c2xml.c | 6 ++++--
parse.c | 7 +++++--
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/c2xml.c b/c2xml.c
index 37f29cf..42f059e 100644
--- a/c2xml.c
+++ b/c2xml.c
@@ -166,8 +166,6 @@ static void examine_symbol(struct symbol *sym, xmlNodePtr node)
return;
child = new_sym_node(sym, get_type_name(sym->type), node);
- examine_modifiers(sym, child);
- examine_layout(sym, child);
if (sym->ctype.base_type) {
if ((base = builtin_typename(sym->ctype.base_type)) == NULL) {
@@ -199,6 +197,10 @@ static void examine_symbol(struct symbol *sym, xmlNodePtr node)
newProp(child, "base-type-builtin", builtin_typename(sym));
break;
}
+
+ examine_modifiers(sym, child);
+ examine_layout(sym, child);
+
return;
}
diff --git a/parse.c b/parse.c
index f452042..1ac7586 100644
--- a/parse.c
+++ b/parse.c
@@ -1101,12 +1101,15 @@ static struct token *declaration_specifiers(struct token *next, struct ctype *ct
break;
if (ctype->base_type)
break;
- /* User types only mix with qualifiers */
if (mod & MOD_USERTYPE) {
+ /* User types only mix with qualifiers */
if (ctype->modifiers & MOD_SPECIFIER)
break;
+ /* Point to the user type */
+ ctype->base_type = s;
}
- ctype->base_type = type;
+ else
+ ctype->base_type = type;
}
check_modifiers(&token->pos, s, ctype->modifiers);
--
1.5.3.GIT
prev parent reply other threads:[~2007-08-03 0:46 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-27 22:08 Finding all typedefs Pavel Roskin
2007-07-27 23:01 ` Randy Dunlap
2007-08-01 15:45 ` Pavel Roskin
2007-08-01 17:01 ` Josh Triplett
2007-08-02 0:15 ` Rob Taylor
2007-08-02 7:31 ` Antwort: " Thomas Schmid
2007-08-03 0:49 ` Rob Taylor [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46B27B8F.2040008@codethink.co.uk \
--to=rob.taylor@codethink.co.uk \
--cc=Thomas.Schmid@br-automation.com \
--cc=josht@linux.vnet.ibm.com \
--cc=linux-sparse@vger.kernel.org \
--cc=proski@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).