[PATCH 3/3] dissect: Show typedefs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For indexing purposes, it is useful to see type definitions.

$ semind search __kernel_ulong_t
(def) include/uapi/asm-generic/posix_types.h 16 23 typedef unsigned long   __kernel_ulong_t;

Signed-off-by: Alexey Gladkov <gladkov.alexey@xxxxxxxxx>
---
 dissect.c      | 13 ++++++++++++-
 test-dissect.c |  2 ++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/dissect.c b/dissect.c
index 7d5d92c9..300d5ca9 100644
--- a/dissect.c
+++ b/dissect.c
@@ -615,6 +615,11 @@ static inline bool is_macro(struct symbol *sym)
 	return (sym->namespace == NS_MACRO || sym->namespace == NS_UNDEF);
 }
 
+static inline bool is_typedef(struct symbol *sym)
+{
+	return (sym->namespace == NS_TYPEDEF);
+}
+
 static inline struct symbol *do_symbol(struct symbol *sym)
 {
 	struct symbol *type = base_type(sym);
@@ -659,7 +664,7 @@ static void do_sym_list(struct symbol_list *list)
 
 static inline bool valid_namespace(enum namespace ns)
 {
-	return (ns == NS_MACRO || ns == NS_UNDEF || ns == NS_STRUCT || ns == NS_SYMBOL);
+	return (ns == NS_TYPEDEF || ns == NS_MACRO || ns == NS_UNDEF || ns == NS_STRUCT || ns == NS_SYMBOL);
 }
 
 static void do_file(char *file)
@@ -673,6 +678,12 @@ static void do_file(char *file)
 
 	DO_LIST(file_scope->symbols, sym,
 		if (input_streams[sym->pos.stream].fd != -1 && valid_namespace(sym->namespace)) {
+			if (is_typedef(sym)) {
+				sym->kind = 't';
+				reporter->r_symdef(sym);
+				continue;
+			}
+
 			if (is_macro(sym)) {
 				sym->kind = 'd';
 				reporter->r_symdef(sym);
diff --git a/test-dissect.c b/test-dissect.c
index 3d870a97..65b205f8 100644
--- a/test-dissect.c
+++ b/test-dissect.c
@@ -63,6 +63,8 @@ static void r_symbol(unsigned mode, struct position *pos, struct symbol *sym)
 		if (sym->type == SYM_STRUCT || sym->type == SYM_UNION)
 			break;
 		goto err;
+	case 't':
+		break;
 	case 'f':
 		if (sym->type != SYM_BAD && sym->ctype.base_type->type != SYM_FN)
 			goto err;
-- 
2.33.0




[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux