1 | /* The host_hooks data structure. |
2 | Copyright (C) 2003-2023 Free Software Foundation, Inc. |
3 | |
4 | This file is part of GCC. |
5 | |
6 | GCC is free software; you can redistribute it and/or modify |
7 | it under the terms of the GNU General Public License as published by |
8 | the Free Software Foundation; either version 3, or (at your option) |
9 | any later version. |
10 | |
11 | GCC is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | GNU General Public License for more details. |
15 | |
16 | You should have received a copy of the GNU General Public License |
17 | along with GCC; see the file COPYING3. If not see |
18 | <http://www.gnu.org/licenses/>. */ |
19 | |
20 | #ifndef GCC_HOST_HOOKS_H |
21 | #define GCC_HOST_HOOKS_H |
22 | |
23 | struct host_hooks |
24 | { |
25 | void (*) (void); |
26 | |
27 | /* Identify an address that's likely to be free in a subsequent invocation |
28 | of the compiler. The area should be able to hold SIZE bytes. FD is an |
29 | open file descriptor if the host would like to probe with mmap. */ |
30 | void * (*gt_pch_get_address) (size_t size, int fd); |
31 | |
32 | /* ADDR is an address returned by gt_pch_get_address. Attempt to allocate |
33 | SIZE bytes at the same address (preferrably) or some other address |
34 | and load it with the data from FD at OFFSET. Return -1 if we couldn't |
35 | allocate memory, otherwise update ADDR to the actual address where it got |
36 | allocated, return 0 if the memory is allocated but the data not loaded, |
37 | return 1 if done. */ |
38 | int (*gt_pch_use_address) (void *&addr, size_t size, int fd, size_t offset); |
39 | |
40 | /* Return the alignment required for allocating virtual memory. Usually |
41 | this is the same as pagesize. */ |
42 | size_t (*gt_pch_alloc_granularity) (void); |
43 | |
44 | /* Whenever you add entries here, make sure you adjust hosthooks-def.h. */ |
45 | }; |
46 | |
47 | /* Each host provides its own. */ |
48 | extern const struct host_hooks host_hooks; |
49 | |
50 | #endif /* GCC_LANG_HOOKS_H */ |
51 | |