1------------------------------------------------------------------------------ 2-- -- 3-- GNAT COMPILER COMPONENTS -- 4-- -- 5-- G E T _ T A R G -- 6-- -- 7-- B o d y -- 8-- -- 9-- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- 10-- -- 11-- GNAT is free software; you can redistribute it and/or modify it under -- 12-- terms of the GNU General Public License as published by the Free Soft- -- 13-- ware Foundation; either version 3, or (at your option) any later ver- -- 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 16-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- 17-- for more details. You should have received a copy of the GNU General -- 18-- Public License distributed with GNAT; see file COPYING3. If not, go to -- 19-- http://www.gnu.org/licenses for a complete copy of the license. -- 20-- -- 21-- GNAT was originally developed by the GNAT team at New York University. -- 22-- Extensive contributions were provided by Ada Core Technologies Inc. -- 23-- -- 24------------------------------------------------------------------------------ 25 26-- Version for use with GCC 27 28package body Get_Targ is 29 30 -- Functions returning individual run-time values. For the standard (GCC) 31 -- back end, these come from C interface functions (one for each value). 32 33 ----------------------- 34 -- Get_Bits_Per_Unit -- 35 ----------------------- 36 37 function Get_Bits_Per_Unit return Pos is 38 function C_Get_Bits_Per_Unit return Pos; 39 pragma Import (C, C_Get_Bits_Per_Unit, 40 "get_target_bits_per_unit"); 41 begin 42 return C_Get_Bits_Per_Unit; 43 end Get_Bits_Per_Unit; 44 45 ----------------------- 46 -- Get_Bits_Per_Word -- 47 ----------------------- 48 49 function Get_Bits_Per_Word return Pos is 50 function C_Get_Bits_Per_Word return Pos; 51 pragma Import (C, C_Get_Bits_Per_Word, 52 "get_target_bits_per_word"); 53 begin 54 return C_Get_Bits_Per_Word; 55 end Get_Bits_Per_Word; 56 57 ------------------- 58 -- Get_Char_Size -- 59 ------------------- 60 61 function Get_Char_Size return Pos is 62 function C_Get_Char_Size return Pos; 63 pragma Import (C, C_Get_Char_Size, 64 "get_target_char_size"); 65 begin 66 return C_Get_Char_Size; 67 end Get_Char_Size; 68 69 ---------------------- 70 -- Get_Wchar_T_Size -- 71 ---------------------- 72 73 function Get_Wchar_T_Size return Pos is 74 function C_Get_Wchar_T_Size return Pos; 75 pragma Import (C, C_Get_Wchar_T_Size, 76 "get_target_wchar_t_size"); 77 begin 78 return C_Get_Wchar_T_Size; 79 end Get_Wchar_T_Size; 80 81 -------------------- 82 -- Get_Short_Size -- 83 -------------------- 84 85 function Get_Short_Size return Pos is 86 function C_Get_Short_Size return Pos; 87 pragma Import (C, C_Get_Short_Size, 88 "get_target_short_size"); 89 begin 90 return C_Get_Short_Size; 91 end Get_Short_Size; 92 93 ------------------ 94 -- Get_Int_Size -- 95 ------------------ 96 97 function Get_Int_Size return Pos is 98 function C_Get_Int_Size return Pos; 99 pragma Import (C, C_Get_Int_Size, 100 "get_target_int_size"); 101 begin 102 return C_Get_Int_Size; 103 end Get_Int_Size; 104 105 ------------------- 106 -- Get_Long_Size -- 107 ------------------- 108 109 function Get_Long_Size return Pos is 110 function C_Get_Long_Size return Pos; 111 pragma Import (C, C_Get_Long_Size, 112 "get_target_long_size"); 113 begin 114 return C_Get_Long_Size; 115 end Get_Long_Size; 116 117 ------------------------ 118 -- Get_Long_Long_Size -- 119 ------------------------ 120 121 function Get_Long_Long_Size return Pos is 122 function C_Get_Long_Long_Size return Pos; 123 pragma Import (C, C_Get_Long_Long_Size, 124 "get_target_long_long_size"); 125 begin 126 return C_Get_Long_Long_Size; 127 end Get_Long_Long_Size; 128 129 ----------------------------- 130 -- Get_Long_Long_Long_Size -- 131 ----------------------------- 132 133 function Get_Long_Long_Long_Size return Pos is 134 function C_Get_Long_Long_Long_Size return Pos; 135 pragma Import (C, C_Get_Long_Long_Long_Size, 136 "get_target_long_long_long_size"); 137 begin 138 return C_Get_Long_Long_Long_Size; 139 end Get_Long_Long_Long_Size; 140 141 ---------------------- 142 -- Get_Pointer_Size -- 143 ---------------------- 144 145 function Get_Pointer_Size return Pos is 146 function C_Get_Pointer_Size return Pos; 147 pragma Import (C, C_Get_Pointer_Size, 148 "get_target_pointer_size"); 149 begin 150 return C_Get_Pointer_Size; 151 end Get_Pointer_Size; 152 153 --------------------------- 154 -- Get_Maximum_Alignment -- 155 --------------------------- 156 157 function Get_Maximum_Alignment return Pos is 158 function C_Get_Maximum_Alignment return Pos; 159 pragma Import (C, C_Get_Maximum_Alignment, 160 "get_target_maximum_alignment"); 161 begin 162 return C_Get_Maximum_Alignment; 163 end Get_Maximum_Alignment; 164 165 ------------------------ 166 -- Get_Float_Words_BE -- 167 ------------------------ 168 169 function Get_Float_Words_BE return Nat is 170 function C_Get_Float_Words_BE return Nat; 171 pragma Import (C, C_Get_Float_Words_BE, 172 "get_target_float_words_be"); 173 begin 174 return C_Get_Float_Words_BE; 175 end Get_Float_Words_BE; 176 177 ------------------ 178 -- Get_Words_BE -- 179 ------------------ 180 181 function Get_Words_BE return Nat is 182 function C_Get_Words_BE return Nat; 183 pragma Import (C, C_Get_Words_BE, 184 "get_target_words_be"); 185 begin 186 return C_Get_Words_BE; 187 end Get_Words_BE; 188 189 ------------------ 190 -- Get_Bytes_BE -- 191 ------------------ 192 193 function Get_Bytes_BE return Nat is 194 function C_Get_Bytes_BE return Nat; 195 pragma Import (C, C_Get_Bytes_BE, 196 "get_target_bytes_be"); 197 begin 198 return C_Get_Bytes_BE; 199 end Get_Bytes_BE; 200 201 ----------------- 202 -- Get_Bits_BE -- 203 ----------------- 204 205 function Get_Bits_BE return Nat is 206 function C_Get_Bits_BE return Nat; 207 pragma Import (C, C_Get_Bits_BE, 208 "get_target_bits_be"); 209 begin 210 return C_Get_Bits_BE; 211 end Get_Bits_BE; 212 213 --------------------- 214 -- Get_Short_Enums -- 215 --------------------- 216 217 function Get_Short_Enums return Int is 218 flag_short_enums : Int; 219 pragma Import (C, flag_short_enums); 220 begin 221 return flag_short_enums; 222 end Get_Short_Enums; 223 224 -------------------------- 225 -- Get_Strict_Alignment -- 226 -------------------------- 227 228 function Get_Strict_Alignment return Nat is 229 function C_Get_Strict_Alignment return Nat; 230 pragma Import (C, C_Get_Strict_Alignment, 231 "get_target_strict_alignment"); 232 begin 233 return C_Get_Strict_Alignment; 234 end Get_Strict_Alignment; 235 236 ------------------------------------ 237 -- Get_System_Allocator_Alignment -- 238 ------------------------------------ 239 240 function Get_System_Allocator_Alignment return Nat is 241 function C_Get_System_Allocator_Alignment return Nat; 242 pragma Import (C, C_Get_System_Allocator_Alignment, 243 "get_target_system_allocator_alignment"); 244 begin 245 return C_Get_System_Allocator_Alignment; 246 end Get_System_Allocator_Alignment; 247 248 -------------------------------- 249 -- Get_Double_Float_Alignment -- 250 -------------------------------- 251 252 function Get_Double_Float_Alignment return Nat is 253 function C_Get_Double_Float_Alignment return Nat; 254 pragma Import (C, C_Get_Double_Float_Alignment, 255 "get_target_double_float_alignment"); 256 begin 257 return C_Get_Double_Float_Alignment; 258 end Get_Double_Float_Alignment; 259 260 --------------------------------- 261 -- Get_Double_Scalar_Alignment -- 262 --------------------------------- 263 264 function Get_Double_Scalar_Alignment return Nat is 265 function C_Get_Double_Scalar_Alignment return Nat; 266 pragma Import (C, C_Get_Double_Scalar_Alignment, 267 "get_target_double_scalar_alignment"); 268 begin 269 return C_Get_Double_Scalar_Alignment; 270 end Get_Double_Scalar_Alignment; 271 272 ------------------------------ 273 -- Get_Back_End_Config_File -- 274 ------------------------------ 275 276 function Get_Back_End_Config_File return String_Ptr is 277 begin 278 return null; 279 end Get_Back_End_Config_File; 280 281 ----------------------------- 282 -- Get_Max_Unaligned_Field -- 283 ----------------------------- 284 285 function Get_Max_Unaligned_Field return Pos is 286 begin 287 return 64; -- Can be different on some targets 288 end Get_Max_Unaligned_Field; 289 290 ----------------------------- 291 -- Register_Back_End_Types -- 292 ----------------------------- 293 294 procedure Register_Back_End_Types (Call_Back : Register_Type_Proc) is 295 procedure Enumerate_Modes (Call_Back : Register_Type_Proc); 296 pragma Import (C, Enumerate_Modes, "enumerate_modes"); 297 begin 298 Enumerate_Modes (Call_Back); 299 end Register_Back_End_Types; 300 301end Get_Targ; 302