diff options
author | dannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-05 07:28:27 +0000 |
---|---|---|
committer | dannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-05 07:28:27 +0000 |
commit | 62b4d90e930cf306be641282558f65fec69f3754 (patch) | |
tree | 546ccfa4f253ff907aa47680a32cadae4b2a9bc1 /gcc/ggc-common.c | |
parent | 3cdc65fb5d7b881e06e1995e6a3f6020245febba (diff) | |
download | gcc-62b4d90e930cf306be641282558f65fec69f3754.tar.gz |
* toplev.c (init_asm_output): Add explicit 'b' to mode when
opening asm_out_file.
* c-pch.c (c_common_write_pch): Remove unnecessary fflush before
reading asm_out_file. Replace fflush after reading asm_out_file
with fseek.
* hosthooks-def.h (HOST_HOOKS_GT_PCH_ALLOC_GRANULARITY): Define
default and add to HOST_HOOKS_INITIALIZER.
* hosthooks.h (gt_pch_alloc_granularity): Declare hook function.
* ggc-common.c (default_gt_pch_alloc_granularity): New function.
(gt_pch_save): Use host_hooks.gt_pch_alloc_granularity
to set mmi.offset padding.
* config.gcc (i[34567]86-*-mingw32*): Set target_gtfiles to
$(srcdir)/config/i386/winnt.c.
(i[34567]86-*-pe | i[34567]86-*-cygwin*): Likewise.
(i[34567]86-*-uwin*): Likewise.
*i[34567]86-*-interix3*): Likewise.
* config.host (i[34567]86-*-mingw32*): Set out_host_hook_obj.
* config/i386/host-mingw32.c: New file.
* config/i386/x-mingw32: Add rule for host-mingw32.o.
* config/i386/winnt.c: (struct extern_list) Tag as GTY.
(extern_head): Likewise.
(struct export_list) Likewise.
(export_head): Likewise.
(i386_pe_record_external_function): Use ggc_alloc.
(i386_pe_record_exported_symbol): Likewise.
Include "gt-winnt.h" at end.
* doc/hostconfig.texi: Document
HOST_HOOKS_GT_PCH_ALLOC_GRANULARITY.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82643 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ggc-common.c')
-rw-r--r-- | gcc/ggc-common.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c index 4939cb69888..cc0dc93be84 100644 --- a/gcc/ggc-common.c +++ b/gcc/ggc-common.c @@ -431,7 +431,7 @@ gt_pch_save (FILE *f) char *this_object = NULL; size_t this_object_size = 0; struct mmap_info mmi; - size_t page_size = getpagesize(); + const size_t mmap_offset_alignment = host_hooks.gt_pch_alloc_granularity(); gt_pch_save_stringpool (); @@ -481,14 +481,15 @@ gt_pch_save (FILE *f) ggc_pch_prepare_write (state.d, state.f); - /* Pad the PCH file so that the mmapped area starts on a page boundary. */ + /* Pad the PCH file so that the mmapped area starts on an allocation + granularity (usually page) boundary. */ { long o; o = ftell (state.f) + sizeof (mmi); if (o == -1) fatal_error ("can't get position in PCH file: %m"); - mmi.offset = page_size - o % page_size; - if (mmi.offset == page_size) + mmi.offset = mmap_offset_alignment - o % mmap_offset_alignment; + if (mmi.offset == mmap_offset_alignment) mmi.offset = 0; mmi.offset += o; } @@ -612,6 +613,16 @@ default_gt_pch_use_address (void *base, size_t size, int fd ATTRIBUTE_UNUSED, return (addr == base) - 1; } +/* Default version of HOST_HOOKS_GT_PCH_GET_ADDRESS. Return the + alignment required for allocating virtual memory. Usually this is the + same as pagesize. */ + +size_t +default_gt_pch_alloc_granularity (void) +{ + return getpagesize(); +} + #if HAVE_MMAP_FILE /* Default version of HOST_HOOKS_GT_PCH_GET_ADDRESS when mmap is present. We temporarily allocate SIZE bytes, and let the kernel place the data |