From: Mark Mitchell Date: Wed, 22 Oct 2003 15:44:44 +0000 (+0000) Subject: c-pch.c (struct c_pch_validity): Add pch_init field. X-Git-Tag: releases/gcc-3.4.0~2804 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=926a822f2b78aad8c5891d0d902841209600fe99;p=thirdparty%2Fgcc.git c-pch.c (struct c_pch_validity): Add pch_init field. * c-pch.c (struct c_pch_validity): Add pch_init field. (pch_init): Set it. (c_common_valid_pch): Check it. (get_ident): Bump the PCH version number. From-SVN: r72804 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a6f80eae810f..580c3d01da14 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-10-22 Mark Mitchell + + * c-pch.c (struct c_pch_validity): Add pch_init field. + (pch_init): Set it. + (c_common_valid_pch): Check it. + (get_ident): Bump the PCH version number. + 2003-10-22 David Taylor PR debug/12500 diff --git a/gcc/c-pch.c b/gcc/c-pch.c index 7fea10c5fe32..f7830b2ba279 100644 --- a/gcc/c-pch.c +++ b/gcc/c-pch.c @@ -48,6 +48,7 @@ struct c_pch_validity unsigned char target_machine_length; unsigned char version_length; unsigned char debug_info_type; + void (*pch_init) (void); }; struct c_pch_header @@ -113,6 +114,7 @@ pch_init (void) v.version_length = strlen (version_string); v.debug_info_type = write_symbols; + v.pch_init = &pch_init; if (fwrite (get_ident(), IDENT_LENGTH, 1, f) != 1 || fwrite (&v, sizeof (v), 1, f) != 1 || fwrite (host_machine, v.host_machine_length, 1, f) != 1 @@ -285,6 +287,18 @@ c_common_valid_pch (cpp_reader *pfile, const char *name, int fd) return 2; } + /* If the text segment was not loaded at the same address as it was + when the PCH file was created, function pointers loaded from the + PCH will not be valid. We could in theory remap all the function + pointers, but no support for that exists at present. */ + if (v.pch_init != &pch_init) + { + if (cpp_get_options (pfile)->warn_invalid_pch) + cpp_error (pfile, DL_WARNING, + "%s: had text segment at different address", name); + return 2; + } + /* Check the preprocessor macros are the same as when the PCH was generated. */