Skip to contentSkip to conversation

Interesting failures of 'cscope'

DISCUSSION Carl Spalletta 2 participants 2 messages Aug 4, 2004

lore
Share & tools
lore
#0 lore raw

FYI

The first failure seems to be a confusion between function declarations and definitions -
eg for linux-2.6.7, it says FsmNew() is called by drivers/isdn/hisax/fsm.h::CallcNew, thus:

$cscope -d -p9 -L -3 FsmNew
...
drivers/isdn/hisax/fsm.h CallcNew 50 int FsmNew(struct Fsm *fsm, struct FsmNode,*fnlist, int
fncount);
...

but there is no call there, only an external declaration of FsmNew, and no declaration of
CallcNew of any kind whatsoever in that file!

The second failure appears to be related to an inability to cope with complicated declarations
within a prototype, such of those of type pointer-to-function. For example, the definition:

struct net_device *alloc_netdev(int sizeof_priv, const char *mask,
void (*setup)(struct net_device *))

from line 73 of drivers/net/net_init.c, is not recognized by cscope as a valid function definition and so it does not find the call to kmalloc (or anything else) contained in that function.

$ cscope -d -p9 -L -1 alloc_netdev
<nothing>
$ cscope -d -p9 -L -3 kmalloc | grep alloc_netdev
<nothing>
#1 lore raw

Various versions of cscope are buggy as hell, and I'm not at all sure the recent ones are any better than older ones ... caveat user ;-)

Personally I use an old binary ripped off RH 6.2, which still seems to work ... any current ones I've tried are broken.

M.

Quoted 37 lines · --On Wednesday, August 04, 2004 16:22:52 -0700 Carl Spalletta…

FYI

The first failure seems to be a confusion between function declarations and definitions -
eg for linux-2.6.7, it says FsmNew() is called by drivers/isdn/hisax/fsm.h::CallcNew, thus:

$cscope -d -p9 -L -3 FsmNew
...
drivers/isdn/hisax/fsm.h CallcNew 50 int FsmNew(struct Fsm *fsm, struct FsmNode,*fnlist, int
fncount);
...

but there is no call there, only an external declaration of FsmNew, and no declaration of
CallcNew of any kind whatsoever in that file!

The second failure appears to be related to an inability to cope with complicated declarations
within a prototype, such of those of type pointer-to-function. For example, the definition:

struct net_device *alloc_netdev(int sizeof_priv, const char *mask,
void (*setup)(struct net_device *))

from line 73 of drivers/net/net_init.c, is not recognized by cscope as a valid function definition and so it does not find the call to kmalloc (or anything else) contained in that function.

$ cscope -d -p9 -L -1 alloc_netdev
<nothing>
$ cscope -d -p9 -L -3 kmalloc | grep alloc_netdev
<nothing>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/