+#include <string>
+#include <unordered_map>
+
+#include \"src/mc/mc_dwarf.hpp\""
+
+cat - > src/mc/mc_dwarf_tagnames.cpp <<EOF
+$HEADER
+
+namespace {
+const std::unordered_map<int, const char*> tagname_map = {
+ {0x00, "DW_TAG_invalid"},
+$(cat "$1" | grep DW_TAG_ | sed 's/.*\(DW_TAG_[^ ]*\) = \(0x[0-9a-f]*\).*/ {\2, "\1"},/')
+};
+}