cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

feature_to_c.sh (1927B)


      1#!/bin/sh
      2
      3# Convert text files to compilable C arrays.
      4#
      5# Copyright (C) 2007 Free Software Foundation, Inc.
      6#
      7# This file is part of GDB.
      8#
      9# This program is free software; you can redistribute it and/or modify
     10# it under the terms of the GNU General Public License as published by
     11# the Free Software Foundation; either version 2 of the License, or
     12# (at your option) any later version.
     13#
     14# This program is distributed in the hope that it will be useful,
     15# but WITHOUT ANY WARRANTY; without even the implied warranty of
     16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17# GNU General Public License for more details.
     18#
     19# You should have received a copy of the GNU General Public License
     20# along with this program; if not, see <http://www.gnu.org/licenses/>.
     21
     22if test -z "$1"; then
     23  echo "Usage: $0 INPUTFILE..."
     24  exit 1
     25fi
     26
     27for input; do
     28  arrayname=xml_feature_$(echo $input | sed 's,.*/,,; s/[-.]/_/g')
     29
     30  ${AWK:-awk} 'BEGIN { n = 0
     31      printf "#include \"qemu/osdep.h\"\n"
     32      print "static const char '$arrayname'[] = {"
     33      for (i = 0; i < 255; i++)
     34        _ord_[sprintf("%c", i)] = i
     35    } {
     36      split($0, line, "");
     37      printf "  "
     38      for (i = 1; i <= length($0); i++) {
     39        c = line[i]
     40        if (c == "'\''") {
     41          printf "'\''\\'\'''\'', "
     42        } else if (c == "\\") {
     43          printf "'\''\\\\'\'', "
     44        } else if (_ord_[c] >= 32 && _ord_[c] < 127) {
     45	  printf "'\''%s'\'', ", c
     46        } else {
     47          printf "'\''\\%03o'\'', ", _ord_[c]
     48        }
     49        if (i % 10 == 0)
     50          printf "\n   "
     51      }
     52      printf "'\''\\n'\'', \n"
     53    } END {
     54      print "  0 };"
     55    }' < $input
     56done
     57
     58echo
     59echo "const char *const xml_builtin[][2] = {"
     60
     61for input; do
     62  basename=$(echo $input | sed 's,.*/,,')
     63  arrayname=xml_feature_$(echo $input | sed 's,.*/,,; s/[-.]/_/g')
     64  echo "  { \"$basename\", $arrayname },"
     65done
     66
     67echo "  { (char *)0, (char *)0 }"
     68echo "};"