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
This commit is contained in:
parent
57d01e696f
commit
926a822f2b
@ -1,3 +1,10 @@
|
||||
2003-10-22 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* 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 <dtaylor@emc.com>
|
||||
|
||||
PR debug/12500
|
||||
|
14
gcc/c-pch.c
14
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. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user