123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /* Target hook definitions for C-family front ends.
- Copyright (C) 2001-2015 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 3, or (at your option) any
- later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
- /* See target-hooks-macros.h for details of macros that should be
- provided by the including file, and how to use them here. */
- #include "target-hooks-macros.h"
- #undef HOOK_TYPE
- #define HOOK_TYPE "C Target Hook"
- HOOK_VECTOR (TARGETCM_INITIALIZER, gcc_targetcm)
- #undef HOOK_PREFIX
- #define HOOK_PREFIX "TARGET_"
- /* Handle target switch CODE (an OPT_* value). ARG is the argument
- passed to the switch; it is NULL if no argument was. VALUE is the
- value of ARG if CODE specifies a UInteger option, otherwise it is
- 1 if the positive form of the switch was used and 0 if the negative
- form was. Return true if the switch was valid. */
- DEFHOOK
- (handle_c_option,
- "",
- bool, (size_t code, const char *arg, int value),
- default_handle_c_option)
- /* Targets may provide a string object type that can be used within
- and between C, C++, and Objective-C dialects. */
- DEFHOOK
- (objc_construct_string_object,
- "Targets may provide a string object type that can be used within\
- and between C, C++ and their respective Objective-C dialects.\
- A string object might, for example, embed encoding and length information.\
- These objects are considered opaque to the compiler and handled as references.\
- An ideal implementation makes the composition of the string object\
- match that of the Objective-C @code{NSString} (@code{NXString} for GNUStep),\
- allowing efficient interworking between C-only and Objective-C code.\
- If a target implements string objects then this hook should return a\
- reference to such an object constructed from the normal `C' string\
- representation provided in @var{string}.\
- At present, the hook is used by Objective-C only, to obtain a\
- common-format string object when the target provides one.",
- tree, (tree string),
- NULL)
- DEFHOOK
- (objc_declare_unresolved_class_reference,
- "Declare that Objective C class @var{classname} is referenced\
- by the current TU.",
- void, (const char *classname),
- NULL)
- DEFHOOK
- (objc_declare_class_definition,
- "Declare that Objective C class @var{classname} is defined\
- by the current TU.",
- void, (const char *classname),
- NULL)
- DEFHOOK
- (string_object_ref_type_p,
- "If a target implements string objects then this hook should return\
- @code{true} if @var{stringref} is a valid reference to such an object.",
- bool, (const_tree stringref),
- hook_bool_const_tree_false)
- DEFHOOK
- (check_string_object_format_arg,
- "If a target implements string objects then this hook should should\
- provide a facility to check the function arguments in @var{args_list}\
- against the format specifiers in @var{format_arg} where the type of\
- @var{format_arg} is one recognized as a valid string reference type.",
- void, (tree format_arg, tree args_list),
- NULL)
- DEFHOOK
- (c_preinclude,
- "Define this hook to return the name of a header file to be included at\
- the start of all compilations, as if it had been included with\
- @code{#include <@var{file}>}. If this hook returns @code{NULL}, or is\
- not defined, or the header is not found, or if the user specifies\
- @option{-ffreestanding} or @option{-nostdinc}, no header is included.\n\
- \n\
- This hook can be used together with a header provided by the system C\
- library to implement ISO C requirements for certain macros to be\
- predefined that describe properties of the whole implementation rather\
- than just the compiler.",
- const char *, (void),
- hook_constcharptr_void_null)
- DEFHOOK
- (cxx_implicit_extern_c,
- "Define this hook to add target-specific C++ implicit extern C functions.\
- If this function returns true for the name of a file-scope function, that\
- function implicitly gets extern \"C\" linkage rather than whatever language\
- linkage the declaration would normally have. An example of such function\
- is WinMain on Win32 targets.",
- bool, (const char*),
- NULL)
-
- HOOK_VECTOR_END (C90_EMPTY_HACK)
|