#!/bin/sh # Generate files from a given dwarf.h # Usage: tools/generate-dwarf-functions /usr/include/dwarf.h cat - > src/mc/mc_dwarf_tagnames.cpp < #include #include namespace simgrid { namespace dwarf { /** \brief Get the name of a dwarf tag (DW_TAG_*) from its code * * \param tag tag code (see the DWARF specification) * \return name of the tag */ XBT_PRIVATE const char *tagname(int tag) { switch (tag) { $(cat "$1" | grep DW_TAG_ | sed 's/.*\(DW_TAG_[^ ]*\) = \(0x[0-9a-f]*\).*/ case \2: return "\1";/') case DW_TAG_invalid: return "DW_TAG_invalid"; default: return "DW_TAG_unknown"; } } } } EOF cat - > src/mc/mc_dwarf_attrnames.cpp << EOF /* Copyright (c) 2014-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ /* Warning: autogenerated, do not edit! */ #include #include namespace simgrid { namespace dwarf { /** \brief Get the name of an attribute (DW_AT_*) from its code * * \param attr attribute code (see the DWARF specification) * \return name of the attribute */ XBT_PRIVATE const char *attrname(int attr) { switch (attr) { $(cat "$1" | grep DW_AT_ | sed 's/.*\(DW_AT_[^ ]*\) = \(0x[0-9a-f]*\).*/ case \2: return "\1";/') default: return "DW_AT_unknown"; } } } } EOF