mageec  0.1.0
MAchine Guided Energy Efficient Compilation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
mageechash.cpp
Go to the documentation of this file.
1 /* ELF Object Hasher Command
2  Copyright (C) 2013, 2014 Embecosm Limited and University of Bristol
3 
4  This file is part of MAGEEC.
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>. */
18 
20 #include "mageec/elfhash.h"
21 
22 #include <iostream>
23 #include <iomanip>
24 #include <string>
25 
26 using namespace mageec;
27 
28 int main(int argc, char const *argv[])
29 {
30  bool failure = false;
31  int f = 1;
32 
33  if (argc < 2)
34  {
35  std::cerr << "Usage: " << argv[0] << " file [file] ..." << std::endl;
36  return 1;
37  }
38 
39  for (; f < argc; f++)
40  {
41  hashedelf elffile;
42  int err = elffile.hash (argv[f]);
43  if (err != 0)
44  {
45  std::cerr << "Error with " << argv[f] << std::endl;
46  failure = true;
47  }
48  else
49  std::cout << std::setfill('0') << std::setw(16) << std::setbase(16)
50  << elffile.getResult() << ' ' << argv[f] << std::endl;
51  }
52 
53  if (failure)
54  return 1;
55  return 0;
56 }