mirror of git://gcc.gnu.org/git/gcc.git
Build compiler checksum from object files v2
gcc/
2010-10-07 Andi Kleen <ak@linux.intel.com>
* Makefile.in (MOSTLYCLEANFILES): Remove cc1*dummy, add
checksum-options.
(checksum-options): Add.
(cc1-dummy): Remove.
(cc1-checksum): Change to run checksum over object files
and options only.
* dummy-checksum.c: Remove.
* genchecksum.c: Update copyright.
(usage): Allow multiple arguments.
(BLOCKSIZE): Add.
(dosum): Change for incremental checksum. Remove C output.
(main): Iterate over all argument files. Add C output.
gcc/cp
2010-10-07 Andi Kleen <ak@linux.intel.com>
* Make-lang.in (c++_OBJS): Remove dummy-checksum.o.
(cc1plus-dummy): Remove.
(cc1plus-checksum): Change to run checksum over object files
and options only.
gcc/objc
2010-10-07 Andi Kleen <ak@linux.intel.com>
* Make-lang.in (cc1obj-dummy): Remove.
(cc1obj-checksum): Change to run checksum over object files
and options only.
gcc/objcp
2010-10-07 Andi Kleen <ak@linux.intel.com>
* Make-lang.in (cc1objplus-dummy): Remove.
(cc1objplus-checksum): Change to run checksum over object files
and options only.
From-SVN: r165305
This commit is contained in:
parent
128dc8e230
commit
d6d5951a4a
|
|
@ -1,3 +1,18 @@
|
||||||
|
2010-10-07 Andi Kleen <ak@linux.intel.com>
|
||||||
|
|
||||||
|
* Makefile.in (MOSTLYCLEANFILES): Remove cc1*dummy, add
|
||||||
|
checksum-options.
|
||||||
|
(checksum-options): Add.
|
||||||
|
(cc1-dummy): Remove.
|
||||||
|
(cc1-checksum): Change to run checksum over object files
|
||||||
|
and options only.
|
||||||
|
* dummy-checksum.c: Remove.
|
||||||
|
* genchecksum.c: Update copyright.
|
||||||
|
(usage): Allow multiple arguments.
|
||||||
|
(BLOCKSIZE): Add.
|
||||||
|
(dosum): Change for incremental checksum. Remove C output.
|
||||||
|
(main): Iterate over all argument files. Add C output.
|
||||||
|
|
||||||
2010-10-11 Joseph Myers <joseph@codesourcery.com>
|
2010-10-11 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* params.c (set_param_value_internal): New.
|
* params.c (set_param_value_internal): New.
|
||||||
|
|
|
||||||
|
|
@ -1489,10 +1489,10 @@ BACKEND = main.o @TREEBROWSER@ libbackend.a $(CPPLIB) $(LIBDECNUMBER)
|
||||||
MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
|
MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
|
||||||
insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
|
insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
|
||||||
insn-attr.h insn-attrtab.c insn-opinit.c insn-preds.c insn-constants.h \
|
insn-attr.h insn-attrtab.c insn-opinit.c insn-preds.c insn-constants.h \
|
||||||
tm-preds.h tm-constrs.h \
|
tm-preds.h tm-constrs.h checksum-options \
|
||||||
tree-check.h min-insn-modes.c insn-modes.c insn-modes.h \
|
tree-check.h min-insn-modes.c insn-modes.c insn-modes.h \
|
||||||
genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \
|
genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \
|
||||||
xgcc$(exeext) cpp$(exeext) cc1$(exeext) cc1*-dummy$(exeext) $(EXTRA_PASSES) \
|
xgcc$(exeext) cpp$(exeext) cc1$(exeext) $(EXTRA_PASSES) \
|
||||||
$(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross$(exeext) \
|
$(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross$(exeext) \
|
||||||
$(SPECS) collect2$(exeext) lto-wrapper$(exeext) \
|
$(SPECS) collect2$(exeext) lto-wrapper$(exeext) \
|
||||||
gcov-iov$(build_exeext) gcov$(exeext) gcov-dump$(exeext) \
|
gcov-iov$(build_exeext) gcov$(exeext) gcov-dump$(exeext) \
|
||||||
|
|
@ -1832,14 +1832,16 @@ $(SPECS): xgcc$(exeext)
|
||||||
gcc-cross$(exeext): xgcc$(exeext)
|
gcc-cross$(exeext): xgcc$(exeext)
|
||||||
cp xgcc$(exeext) gcc-cross$(exeext)
|
cp xgcc$(exeext) gcc-cross$(exeext)
|
||||||
|
|
||||||
dummy-checksum.o : dummy-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
checksum-options:
|
||||||
|
echo "$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS)" > checksum-options.tmp \
|
||||||
|
&& $(srcdir)/../move-if-change checksum-options.tmp checksum-options
|
||||||
|
|
||||||
cc1-dummy$(exeext): $(C_OBJS) dummy-checksum.o $(BACKEND) $(LIBDEPS)
|
# compute checksum over all object files and the options
|
||||||
+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) \
|
cc1-checksum.c : build/genchecksum$(build_exeext) checksum-options \
|
||||||
dummy-checksum.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
|
$(C_OBJS) $(BACKEND) $(LIBDEPS)
|
||||||
|
build/genchecksum$(build_exeext) $(C_OBJS) $(BACKEND) $(LIBDEPS) \
|
||||||
cc1-checksum.c : cc1-dummy$(exeext) build/genchecksum$(build_exeext)
|
checksum-options > cc1-checksum.c.tmp && \
|
||||||
build/genchecksum$(build_exeext) cc1-dummy$(exeext) > $@
|
$(srcdir)/../move-if-change cc1-checksum.c.tmp cc1-checksum.c
|
||||||
|
|
||||||
cc1-checksum.o : cc1-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
cc1-checksum.o : cc1-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,10 @@
|
||||||
|
2010-10-07 Andi Kleen <ak@linux.intel.com>
|
||||||
|
|
||||||
|
* Make-lang.in (c++_OBJS): Remove dummy-checksum.o.
|
||||||
|
(cc1plus-dummy): Remove.
|
||||||
|
(cc1plus-checksum): Change to run checksum over object files
|
||||||
|
and options only.
|
||||||
|
|
||||||
2010-10-08 Joseph Myers <joseph@codesourcery.com>
|
2010-10-08 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* cp-objcp-common.h (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
|
* cp-objcp-common.h (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
|
||||||
|
|
|
||||||
|
|
@ -86,17 +86,17 @@ CXX_AND_OBJCXX_OBJS = cp/call.o cp/decl.o cp/expr.o cp/pt.o cp/typeck2.o \
|
||||||
# Language-specific object files for C++.
|
# Language-specific object files for C++.
|
||||||
CXX_OBJS = cp/cp-lang.o c-family/stub-objc.o $(CXX_AND_OBJCXX_OBJS)
|
CXX_OBJS = cp/cp-lang.o c-family/stub-objc.o $(CXX_AND_OBJCXX_OBJS)
|
||||||
|
|
||||||
c++_OBJS = $(CXX_OBJS) dummy-checksum.o cc1plus-checksum.o cp/g++spec.o
|
c++_OBJS = $(CXX_OBJS) cc1plus-checksum.o cp/g++spec.o
|
||||||
|
|
||||||
# Use strict warnings for this front end.
|
# Use strict warnings for this front end.
|
||||||
cp-warn = $(STRICT_WARN)
|
cp-warn = $(STRICT_WARN)
|
||||||
|
|
||||||
cc1plus-dummy$(exeext): $(CXX_OBJS) dummy-checksum.o $(BACKEND) $(LIBDEPS)
|
# compute checksum over all object files and the options
|
||||||
$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
|
cc1plus-checksum.c : build/genchecksum$(build_exeext) checksum-options \
|
||||||
$(CXX_OBJS) dummy-checksum.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
|
$(CXX_OBJS) $(BACKEND) $(LIBDEPS)
|
||||||
|
build/genchecksum$(build_exeext) $(CXX_OBJS) $(BACKEND) $(LIBDEPS) \
|
||||||
cc1plus-checksum.c : cc1plus-dummy$(exeext) build/genchecksum$(build_exeext)
|
checksum-options > cc1plus-checksum.c.tmp && \
|
||||||
build/genchecksum$(build_exeext) cc1plus-dummy$(exeext) > $@
|
$(srcdir)/../move-if-change cc1plus-checksum.c.tmp cc1plus-checksum.c
|
||||||
|
|
||||||
cc1plus-checksum.o : cc1plus-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
cc1plus-checksum.o : cc1plus-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
#include "config.h"
|
|
||||||
#include "system.h"
|
|
||||||
EXPORTED_CONST unsigned char executable_checksum[16] = { 0 };
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Generate checksums of executables for PCH validation
|
/* Generate checksums of executables for PCH validation
|
||||||
Copyright (C) 2005, 2007, 2009
|
Copyright (C) 2005, 2007, 2009, 2010
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
@ -25,15 +25,18 @@ along with GCC; see the file COPYING3. If not see
|
||||||
static void
|
static void
|
||||||
usage (void)
|
usage (void)
|
||||||
{
|
{
|
||||||
fputs ("Usage: genchecksums <filename>\n", stderr);
|
fputs ("Usage: genchecksums <filename> ...\n", stderr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Important: BLOCKSIZE must be a multiple of 64. */
|
||||||
|
#define BLOCKSIZE 4096
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dosum (const char *file)
|
dosum (struct md5_ctx *ctx, const char *file)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
unsigned char result[16];
|
char buffer[BLOCKSIZE + 72];
|
||||||
int i;
|
size_t sum;
|
||||||
|
|
||||||
f = fopen (file, "rb");
|
f = fopen (file, "rb");
|
||||||
if (!f)
|
if (!f)
|
||||||
|
|
@ -49,30 +52,70 @@ dosum (const char *file)
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (md5_stream (f, result) != 0
|
/* Iterate over full file contents. */
|
||||||
|| fclose (f) != 0)
|
while (1)
|
||||||
|
{
|
||||||
|
/* We read the file in blocks of BLOCKSIZE bytes. One call of the
|
||||||
|
computation function processes the whole buffer so that with the
|
||||||
|
next round of the loop another block can be read. */
|
||||||
|
size_t n;
|
||||||
|
sum = 0;
|
||||||
|
|
||||||
|
/* Read block. Take care for partial reads. */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
n = fread (buffer + sum, 1, BLOCKSIZE - sum, f);
|
||||||
|
|
||||||
|
sum += n;
|
||||||
|
}
|
||||||
|
while (sum < BLOCKSIZE && n != 0);
|
||||||
|
if (n == 0 && ferror (f))
|
||||||
|
exit (1);
|
||||||
|
|
||||||
|
/* If end of file is reached, end the loop. */
|
||||||
|
if (n == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Process buffer with BLOCKSIZE bytes. Note that
|
||||||
|
BLOCKSIZE % 64 == 0
|
||||||
|
*/
|
||||||
|
md5_process_block (buffer, BLOCKSIZE, ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add the last bytes if necessary. */
|
||||||
|
if (sum > 0)
|
||||||
|
md5_process_bytes (buffer, sum, ctx);
|
||||||
|
|
||||||
|
if (fclose (f) != 0)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "reading %s: %s\n", file, xstrerror (errno));
|
fprintf (stderr, "reading %s: %s\n", file, xstrerror (errno));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char ** argv)
|
||||||
|
{
|
||||||
|
struct md5_ctx ctx;
|
||||||
|
unsigned char result[16];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
{
|
||||||
|
usage ();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
md5_init_ctx (&ctx);
|
||||||
|
for (i = 1; i < argc; i++)
|
||||||
|
dosum (&ctx, argv[i]);
|
||||||
|
md5_finish_ctx (&ctx, result);
|
||||||
|
|
||||||
puts ("#include \"config.h\"");
|
puts ("#include \"config.h\"");
|
||||||
puts ("#include \"system.h\"");
|
puts ("#include \"system.h\"");
|
||||||
fputs ("EXPORTED_CONST unsigned char executable_checksum[16] = { ", stdout);
|
fputs ("EXPORTED_CONST unsigned char executable_checksum[16] = { ", stdout);
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
printf ("0x%02x%s", result[i], i == 15 ? " };\n" : ", ");
|
printf ("0x%02x%s", result[i], i == 15 ? " };\n" : ", ");
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int argc, char ** argv)
|
|
||||||
{
|
|
||||||
if (argc != 2)
|
|
||||||
{
|
|
||||||
usage ();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
dosum (argv[1]);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
|
2010-10-07 Andi Kleen <ak@linux.intel.com>
|
||||||
|
|
||||||
|
* Make-lang.in (cc1obj-dummy): Remove.
|
||||||
|
(cc1obj-checksum): Change to run checksum over object files
|
||||||
|
and options only.
|
||||||
|
|
||||||
2010-10-07 Nicola Pero <nicola.pero@meta-innovation.com>
|
2010-10-07 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||||
|
|
||||||
PR objc/45925
|
PR objc/45925
|
||||||
|
|
|
||||||
|
|
@ -51,13 +51,11 @@ OBJC_OBJS = objc/objc-lang.o objc/objc-act.o
|
||||||
|
|
||||||
objc_OBJS = $(OBJC_OBJS) cc1obj-checksum.o
|
objc_OBJS = $(OBJC_OBJS) cc1obj-checksum.o
|
||||||
|
|
||||||
cc1obj-dummy$(exeext): $(OBJC_OBJS) $(C_AND_OBJC_OBJS) dummy-checksum.o $(BACKEND) $(LIBDEPS)
|
cc1obj-checksum.c : build/genchecksum$(build_exeext) checksum-options \
|
||||||
+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
|
$(OBJC_OBJS) $(C_AND_OBJC_OBJS) $(BACKEND) $(LIBDEPS)
|
||||||
$(OBJC_OBJS) $(C_AND_OBJC_OBJS) dummy-checksum.o \
|
build/genchecksum$(build_exeext) $(OBJC_OBJS) $(C_AND_OBJC_OBJS) \
|
||||||
$(BACKEND) $(LIBS) $(BACKENDLIBS)
|
$(BACKEND) $(LIBDEPS) checksum-options > cc1obj-checksum.c.tmp && \
|
||||||
|
$(srcdir)/../move-if-change cc1obj-checksum.c.tmp cc1obj-checksum.c
|
||||||
cc1obj-checksum.c : cc1obj-dummy$(exeext) build/genchecksum$(build_exeext)
|
|
||||||
build/genchecksum$(build_exeext) cc1obj-dummy$(exeext) > $@
|
|
||||||
|
|
||||||
cc1obj-checksum.o : cc1obj-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
cc1obj-checksum.o : cc1obj-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
|
2010-10-07 Andi Kleen <ak@linux.intel.com>
|
||||||
|
|
||||||
|
* Make-lang.in (cc1objplus-dummy): Remove.
|
||||||
|
(cc1objplus-checksum): Change to run checksum over object files
|
||||||
|
and options only.
|
||||||
|
|
||||||
2010-10-04 Andi Kleen <ak@linux.intel.com>
|
2010-10-04 Andi Kleen <ak@linux.intel.com>
|
||||||
|
|
||||||
* Make-lang.in (cc1objplus-dummy, cc1objplus): Add + to build rule.
|
* Make-lang.in (cc1objplus-dummy, cc1objplus): Add + to build rule.
|
||||||
|
|
|
||||||
|
|
@ -54,13 +54,12 @@ OBJCXX_OBJS = objcp/objcp-act.o objcp/objcp-lang.o objcp/objcp-decl.o \
|
||||||
|
|
||||||
obj-c++_OBJS = $(OBJCXX_OBJS) cc1objplus-checksum.o
|
obj-c++_OBJS = $(OBJCXX_OBJS) cc1objplus-checksum.o
|
||||||
|
|
||||||
cc1objplus-dummy$(exeext): $(OBJCXX_OBJS) dummy-checksum.o $(BACKEND) \
|
cc1objplus-checksum.c : build/genchecksum$(build_exeext) checksum-options \
|
||||||
$(LIBDEPS)
|
$(OBJCXX_OBJS) $(BACKEND) $(LIBDEPS)
|
||||||
+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
|
build/genchecksum$(build_exeext) $(OBJCXX_OBJS) $(BACKEND) \
|
||||||
$(OBJCXX_OBJS) dummy-checksum.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
|
$(LIBDEPS) checksum-options > cc1objplus-checksum.c && \
|
||||||
|
$(srcdir)/../move-if-change cc1objplus-checksum.c.tmp \
|
||||||
cc1objplus-checksum.c : cc1objplus-dummy$(exeext) build/genchecksum$(build_exeext)
|
cc1objplus-checksum.c
|
||||||
build/genchecksum$(build_exeext) cc1objplus-dummy$(exeext) > $@
|
|
||||||
|
|
||||||
cc1objplus-checksum.o : cc1objplus-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
cc1objplus-checksum.o : cc1objplus-checksum.c $(CONFIG_H) $(SYSTEM_H)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue