The task-depends.dot file generated with "bitbake -g target" does show the starting tasks (tasks not depending on others, e.g m4-native.do_fetch) but misses their labels in dump. And if you run the command against a starter task, say, "bitbake -g m4-native -c do_fetch", the generated task-depends.dot doesn't contain any nodes. I think it makes more sense to have an orphan node in the dot file for this corner case by having this line in the dot file: "m4-native.do_fetch" [label="m4-native do_unpack\n:1.4.17-r0\n...] This should also fix the missing label. I believe the starters get dumped just because they are depended by others. The root cause is probably in the logic to build dependency tree and dot file in cooker.py, that only covers the depended for a task, but not including task itself.
With running 'bitbake -g m4-native -c do_unpack', other dot files, pn-depends.dot and package-depends.dot show the similar issue of missing the labels of starter packages. But generated pn-depends.dot and package-depends.dot doesn't have missing-node issue seen in a task-depends.dot when I only dump a starter package. They show the orphan node with label as expected, e.g "bitbake -g texinfo-dummy-native -c do_unpack. The logic for these dot files may need multiple treatment for a unified correct result.
http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=66b8c16659ecfff41deea92256b10b370d4b650f