X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f29b8940106312a89054635c2e1926874c2ce47d..047872771f0685df5ad0db3422b3333e26696330:/tools/generate-dwarf-functions diff --git a/tools/generate-dwarf-functions b/tools/generate-dwarf-functions index 6f503c2cb0..8ecc0fa42c 100755 --- a/tools/generate-dwarf-functions +++ b/tools/generate-dwarf-functions @@ -1,9 +1,9 @@ -#!/bin/sh +#!/usr/bin/env sh # Generate files from a given dwarf.h # Usage: tools/generate-dwarf-functions /usr/include/dwarf.h -cat - > src/mc/mc_dwarf_tagnames.cpp < +cat - > src/mc/mc_dwarf_tagnames.cpp < tagname_map = { + {0x00, "DW_TAG_invalid"}, +$(cat "$1" | grep DW_TAG_ | sed 's/.*\(DW_TAG_[^ ]*\) = \(0x[0-9a-f]*\).*/ {\2, "\1"},/') +}; +} namespace simgrid { namespace dwarf { @@ -27,13 +37,8 @@ namespace dwarf { 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"; - } + auto name = tagname_map.find(tag); + return name == tagname_map.end() ? "DW_TAG_unknown" : name->second; } } @@ -41,17 +46,13 @@ $(cat "$1" | grep DW_TAG_ | sed 's/.*\(DW_TAG_[^ ]*\) = \(0x[0-9a-f]*\).*/ case EOF cat - > src/mc/mc_dwarf_attrnames.cpp << EOF -/* Copyright (c) 2014-2015. The SimGrid Team. - * All rights reserved. */ +$HEADER -/* 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 { +const std::unordered_map attrname_map = { +$(cat "$1" | grep DW_AT_ | sed 's/.*\(DW_AT_[^ ]*\) = \(0x[0-9a-f]*\).*/ {\2, "\1"},/') +}; +} namespace simgrid { namespace dwarf { @@ -64,11 +65,8 @@ namespace dwarf { 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"; - } + auto name = attrname_map.find(attr); + return name == attrname_map.end() ? "DW_AT_unknown" : name->second; } }