Home | History | Annotate | Line # | Download | only in config
      1 /* Darwin support needed only by D front-end.
      2    Copyright (C) 2020-2022 Free Software Foundation, Inc.
      3 
      4 GCC is free software; you can redistribute it and/or modify it under
      5 the terms of the GNU General Public License as published by the Free
      6 Software Foundation; either version 3, or (at your option) any later
      7 version.
      8 
      9 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
     10 WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     12 for more details.
     13 
     14 You should have received a copy of the GNU General Public License
     15 along with GCC; see the file COPYING3.  If not see
     16 <http://www.gnu.org/licenses/>.  */
     17 
     18 #include "config.h"
     19 #include "system.h"
     20 #include "coretypes.h"
     21 #include "tm.h"
     22 #include "tm_d.h"
     23 #include "d/d-target.h"
     24 #include "d/d-target-def.h"
     25 
     26 /* Implement TARGET_D_OS_VERSIONS for Darwin targets.  */
     27 
     28 static void
     29 darwin_d_os_builtins (void)
     30 {
     31   d_add_builtin_version ("Posix");
     32   d_add_builtin_version ("OSX");
     33   d_add_builtin_version ("darwin");
     34 }
     35 
     36 /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
     37 
     38 static tree
     39 darwin_d_handle_target_object_format (void)
     40 {
     41   const char *objfmt = "macho";
     42 
     43   return build_string_literal (strlen (objfmt) + 1, objfmt);
     44 }
     45 
     46 /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for Darwin targets.  */
     47 
     48 static void
     49 darwin_d_register_target_info (void)
     50 {
     51   const struct d_target_info_spec handlers[] = {
     52     { "objectFormat", darwin_d_handle_target_object_format },
     53     { NULL, NULL },
     54   };
     55 
     56   d_add_target_info_handlers (handlers);
     57 }
     58 
     59 #undef TARGET_D_OS_VERSIONS
     60 #define TARGET_D_OS_VERSIONS darwin_d_os_builtins
     61 
     62 #undef TARGET_D_REGISTER_OS_TARGET_INFO
     63 #define TARGET_D_REGISTER_OS_TARGET_INFO darwin_d_register_target_info
     64 
     65 /* Define TARGET_D_MINFO_SECTION for Darwin targets.  */
     66 
     67 #undef TARGET_D_MINFO_SECTION
     68 #define TARGET_D_MINFO_SECTION "__DATA,__minfodata"
     69 
     70 #undef TARGET_D_MINFO_START_NAME
     71 #define TARGET_D_MINFO_START_NAME "*section$start$__DATA$__minfodata"
     72 
     73 #undef TARGET_D_MINFO_END_NAME
     74 #define TARGET_D_MINFO_END_NAME "*section$end$__DATA$__minfodata"
     75 
     76 struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
     77