1 /* Generate checksums of executables for PCH validation
2 Copyright (C) 2005, 2007, 2009
3 Free Software Foundation, Inc.
5 This file is part of GCC.
7 GCC is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 3, or (at your option) any later
12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17 You should have received a copy of the GNU General Public License
18 along with GCC; see the file COPYING3. If not see
19 <http://www.gnu.org/licenses/>. */
28 fputs ("Usage: genchecksums <filename>\n", stderr
);
32 dosum (const char *file
)
35 unsigned char result
[16];
38 f
= fopen (file
, "rb");
41 fprintf (stderr
, "opening %s: %s\n", file
, xstrerror (errno
));
45 /* Some executable formats have timestamps in the first 16 bytes, yuck. */
46 if (fseek (f
, 16, SEEK_SET
) != 0)
48 fprintf (stderr
, "seeking in %s: %s\n", file
, xstrerror (errno
));
52 if (md5_stream (f
, result
) != 0
55 fprintf (stderr
, "reading %s: %s\n", file
, xstrerror (errno
));
59 puts ("#include \"config.h\"");
60 puts ("#include \"system.h\"");
61 fputs ("EXPORTED_CONST unsigned char executable_checksum[16] = { ", stdout
);
62 for (i
= 0; i
< 16; i
++)
63 printf ("%#02x%s", result
[i
], i
== 15 ? " };\n" : ", ");
67 main (int argc
, char ** argv
)