2
0

i_darwin.pas 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  1. {
  2. Copyright (c) 1998-2008 by Peter Vreman
  3. This unit implements support information structures for Darwin
  4. (Mac OS X/OS X/macOS/iOS/iPhoneSimulator/...)
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2 of the License, or
  8. (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program; if not, write to the Free Software
  15. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16. ****************************************************************************
  17. }
  18. unit i_darwin;
  19. {$i fpcdefs.inc}
  20. interface
  21. uses
  22. systems;
  23. const
  24. res_macho_info : tresinfo =
  25. (
  26. id : res_macho;
  27. resbin : 'fpcres';
  28. rescmd : '-o $OBJ -a $ARCH -s $SUBARCH -of mach-o $DBG';
  29. rcbin : 'windres';
  30. rccmd : '--include $INC -O res -D FPC -o $RES $RC';
  31. resourcefileclass : nil;
  32. resflags : [];
  33. );
  34. res_macosx_ext_info : tresinfo =
  35. (
  36. id : res_ext;
  37. resbin : 'fpcres';
  38. rescmd : '-o $OBJ -a $ENDIAN -of external $DBG';
  39. rcbin : 'windres';
  40. rccmd : '--include $INC -O res -D FPC -o $RES $RC';
  41. resourcefileclass : nil;
  42. resflags : [res_external_file,res_arch_in_file_name];
  43. );
  44. system_powerpc_darwin_info : tsysteminfo =
  45. (
  46. system : system_powerpc_darwin;
  47. name : 'Darwin for PowerPC';
  48. shortname : 'Darwin';
  49. flags : [tf_p_ext_support,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,tf_dwarf_only_local_labels,tf_pic_default,tf_has_winlike_resources,
  50. tf_supports_hidden_symbols];
  51. cpu : cpu_powerpc;
  52. unit_env : 'BSDUNITS';
  53. extradefines : 'UNIX;BSD;HASUNIX';
  54. exeext : '';
  55. defext : '.def';
  56. scriptext : '.sh';
  57. smartext : '.sl';
  58. unitext : '.ppu';
  59. unitlibext : '.ppl';
  60. asmext : '.s';
  61. objext : '.o';
  62. resext : '.res';
  63. resobjext : '.or';
  64. sharedlibext : '.dylib';
  65. staticlibext : '.a';
  66. staticlibprefix : 'libp';
  67. sharedlibprefix : 'lib';
  68. sharedClibext : '.dylib';
  69. staticClibext : '.a';
  70. staticClibprefix : 'lib';
  71. sharedClibprefix : 'lib';
  72. importlibprefix : 'libimp';
  73. importlibext : '.a';
  74. Cprefix : '_';
  75. newline : #10;
  76. dirsep : '/';
  77. assem : as_darwin;
  78. assemextern : as_darwin;
  79. link : ld_none;
  80. linkextern : ld_darwin;
  81. ar : ar_gnu_ar;
  82. res : res_macho;
  83. dbg : dbg_stabs;
  84. script : script_unix;
  85. endian : endian_big;
  86. alignment :
  87. (
  88. procalign : 16;
  89. loopalign : 4;
  90. jumpalign : 0;
  91. jumpalignskipmax : 0;
  92. coalescealign : 0;
  93. coalescealignskipmax: 0;
  94. constalignmin : 0;
  95. constalignmax : 4;
  96. varalignmin : 0;
  97. varalignmax : 4;
  98. localalignmin : 0;
  99. localalignmax : 4;
  100. recordalignmin : 0;
  101. recordalignmax : 4;
  102. maxCrecordalign : 4
  103. );
  104. first_parm_offset : 24;
  105. stacksize : 262144;
  106. stackalign : 16;
  107. abi : abi_powerpc_darwin;
  108. llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v128:128:128-n32';
  109. );
  110. system_i386_darwin_info : tsysteminfo =
  111. (
  112. system : system_i386_darwin;
  113. name : 'Darwin for i386';
  114. shortname : 'Darwin';
  115. flags : [tf_p_ext_support,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,tf_dwarf_only_local_labels,tf_pic_uses_got,
  116. tf_pic_default,tf_has_winlike_resources,tf_use_hlcfi,tf_supports_symbolorderfile,tf_supports_hidden_symbols];
  117. cpu : cpu_i386;
  118. unit_env : 'BSDUNITS';
  119. extradefines : 'UNIX;BSD;HASUNIX';
  120. exeext : '';
  121. defext : '.def';
  122. scriptext : '.sh';
  123. smartext : '.sl';
  124. unitext : '.ppu';
  125. unitlibext : '.ppl';
  126. asmext : '.s';
  127. objext : '.o';
  128. resext : '.res';
  129. resobjext : '.or';
  130. sharedlibext : '.dylib';
  131. staticlibext : '.a';
  132. staticlibprefix : 'libp';
  133. sharedlibprefix : 'lib';
  134. sharedClibext : '.dylib';
  135. staticClibext : '.a';
  136. staticClibprefix : 'lib';
  137. sharedClibprefix : 'lib';
  138. importlibprefix : 'libimp';
  139. importlibext : '.a';
  140. Cprefix : '_';
  141. newline : #10;
  142. dirsep : '/';
  143. assem : as_clang_asdarwin;
  144. assemextern : as_clang_asdarwin;
  145. link : ld_none;
  146. linkextern : ld_darwin;
  147. ar : ar_gnu_ar;
  148. res : res_macho;
  149. dbg : dbg_dwarf2;
  150. script : script_unix;
  151. endian : endian_little;
  152. alignment :
  153. (
  154. procalign : 16;
  155. loopalign : 8;
  156. jumpalign : 16;
  157. jumpalignskipmax : 10;
  158. coalescealign : 0;
  159. coalescealignskipmax: 0;
  160. constalignmin : 0;
  161. constalignmax : 16;
  162. varalignmin : 0;
  163. varalignmax : 16;
  164. localalignmin : 0;
  165. localalignmax : 8;
  166. recordalignmin : 0;
  167. recordalignmax : 16;
  168. maxCrecordalign : 16
  169. );
  170. first_parm_offset : 8;
  171. stacksize : 262144;
  172. stackalign : 16;
  173. abi : abi_i386_dynalignedstack;
  174. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128';
  175. );
  176. system_i386_iphonesim_info : tsysteminfo =
  177. (
  178. system : system_i386_iphonesim;
  179. name : 'Darwin/iPhoneSim for i386';
  180. shortname : 'iPhoneSim';
  181. flags : [tf_p_ext_support,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,tf_dwarf_only_local_labels,
  182. tf_pic_uses_got,tf_pic_default,tf_has_winlike_resources,tf_use_hlcfi,tf_supports_symbolorderfile,tf_supports_hidden_symbols];
  183. cpu : cpu_i386;
  184. unit_env : 'BSDUNITS';
  185. extradefines : 'UNIX;BSD;HASUNIX;DARWIN'; // also define darwin for code compatibility
  186. exeext : '';
  187. defext : '.def';
  188. scriptext : '.sh';
  189. smartext : '.sl';
  190. unitext : '.ppu';
  191. unitlibext : '.ppl';
  192. asmext : '.s';
  193. objext : '.o';
  194. resext : '.res';
  195. resobjext : '.or';
  196. sharedlibext : '.dylib';
  197. staticlibext : '.a';
  198. staticlibprefix : 'libp';
  199. sharedlibprefix : 'lib';
  200. sharedClibext : '.dylib';
  201. staticClibext : '.a';
  202. staticClibprefix : 'lib';
  203. sharedClibprefix : 'lib';
  204. importlibprefix : 'libimp';
  205. importlibext : '.a';
  206. Cprefix : '_';
  207. newline : #10;
  208. dirsep : '/';
  209. assem : as_clang_asdarwin;
  210. assemextern : as_clang_asdarwin;
  211. link : ld_none;
  212. linkextern : ld_darwin;
  213. ar : ar_gnu_ar;
  214. res : res_macho;
  215. dbg : dbg_dwarf2;
  216. script : script_unix;
  217. endian : endian_little;
  218. alignment :
  219. (
  220. procalign : 16;
  221. loopalign : 8;
  222. jumpalign : 16;
  223. jumpalignskipmax : 10;
  224. coalescealign : 0;
  225. coalescealignskipmax: 0;
  226. constalignmin : 0;
  227. constalignmax : 16;
  228. varalignmin : 0;
  229. varalignmax : 16;
  230. localalignmin : 0;
  231. localalignmax : 16;
  232. recordalignmin : 0;
  233. recordalignmax : 16;
  234. maxCrecordalign : 16
  235. );
  236. first_parm_offset : 8;
  237. stacksize : 262144;
  238. stackalign : 16;
  239. abi : abi_i386_dynalignedstack;
  240. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128';
  241. );
  242. system_powerpc64_darwin_info : tsysteminfo =
  243. (
  244. system : system_powerpc64_darwin;
  245. name : 'Darwin for PowerPC64';
  246. shortname : 'Darwin';
  247. flags : [tf_p_ext_support,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,tf_dwarf_only_local_labels,
  248. tf_pic_default,tf_has_winlike_resources,tf_supports_hidden_symbols];
  249. cpu : cpu_powerpc64;
  250. unit_env : 'BSDUNITS';
  251. extradefines : 'UNIX;BSD;HASUNIX';
  252. exeext : '';
  253. defext : '.def';
  254. scriptext : '.sh';
  255. smartext : '.sl';
  256. unitext : '.ppu';
  257. unitlibext : '.ppl';
  258. asmext : '.s';
  259. objext : '.o';
  260. resext : '.res';
  261. resobjext : '.or';
  262. sharedlibext : '.dylib';
  263. staticlibext : '.a';
  264. staticlibprefix : 'libp';
  265. sharedlibprefix : 'lib';
  266. sharedClibext : '.dylib';
  267. staticClibext : '.a';
  268. staticClibprefix : 'lib';
  269. sharedClibprefix : 'lib';
  270. importlibprefix : 'libimp';
  271. importlibext : '.a';
  272. Cprefix : '_';
  273. newline : #10;
  274. dirsep : '/';
  275. assem : as_darwin;
  276. assemextern : as_darwin;
  277. link : ld_none;
  278. linkextern : ld_darwin;
  279. ar : ar_gnu_ar;
  280. res : res_macho;
  281. dbg : dbg_dwarf2;
  282. script : script_unix;
  283. endian : endian_big;
  284. alignment :
  285. (
  286. procalign : 16;
  287. loopalign : 4;
  288. jumpalign : 0;
  289. jumpalignskipmax : 0;
  290. coalescealign : 0;
  291. coalescealignskipmax: 0;
  292. constalignmin : 4;
  293. constalignmax : 8;
  294. varalignmin : 4;
  295. varalignmax : 8;
  296. localalignmin : 4;
  297. localalignmax : 8;
  298. recordalignmin : 0;
  299. recordalignmax : 8;
  300. maxCrecordalign : 4
  301. );
  302. first_parm_offset : 48;
  303. stacksize : 262144;
  304. stackalign : 16;
  305. abi : abi_powerpc_darwin;
  306. llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64';
  307. );
  308. system_x86_64_darwin_info : tsysteminfo =
  309. (
  310. system : system_x86_64_darwin;
  311. name : 'Darwin for x86_64';
  312. shortname : 'Darwin';
  313. flags : [tf_p_ext_support,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,tf_dwarf_only_local_labels,tf_pic_default,tf_has_winlike_resources,tf_use_hlcfi
  314. {$ifdef llvm},tf_use_psabieh{$endif},tf_supports_symbolorderfile,tf_supports_hidden_symbols];
  315. cpu : cpu_x86_64;
  316. unit_env : 'BSDUNITS';
  317. extradefines : 'UNIX;BSD;HASUNIX';
  318. exeext : '';
  319. defext : '.def';
  320. scriptext : '.sh';
  321. smartext : '.sl';
  322. unitext : '.ppu';
  323. unitlibext : '.ppl';
  324. asmext : '.s';
  325. objext : '.o';
  326. resext : '.res';
  327. resobjext : '.or';
  328. sharedlibext : '.dylib';
  329. staticlibext : '.a';
  330. staticlibprefix : 'libp';
  331. sharedlibprefix : 'lib';
  332. sharedClibext : '.dylib';
  333. staticClibext : '.a';
  334. staticClibprefix : 'lib';
  335. sharedClibprefix : 'lib';
  336. importlibprefix : 'libimp';
  337. importlibext : '.a';
  338. Cprefix : '_';
  339. newline : #10;
  340. dirsep : '/';
  341. assem : as_clang_asdarwin;
  342. assemextern : as_clang_asdarwin;
  343. link : ld_none;
  344. linkextern : ld_darwin;
  345. ar : ar_gnu_ar;
  346. res : res_macho;
  347. dbg : dbg_dwarf2;
  348. script : script_unix;
  349. endian : endian_little;
  350. alignment :
  351. (
  352. procalign : 16;
  353. loopalign : 8;
  354. jumpalign : 16;
  355. jumpalignskipmax : 10;
  356. coalescealign : 0;
  357. coalescealignskipmax: 0;
  358. constalignmin : 0;
  359. constalignmax : 16;
  360. varalignmin : 0;
  361. varalignmax : 16;
  362. localalignmin : 4;
  363. localalignmax : 16;
  364. recordalignmin : 0;
  365. recordalignmax : 16;
  366. maxCrecordalign : 16
  367. );
  368. first_parm_offset : 16;
  369. stacksize : 262144;
  370. stackalign : 16;
  371. abi : abi_default;
  372. llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
  373. );
  374. system_x86_64_iphonesim_info : tsysteminfo =
  375. (
  376. system : system_x86_64_iphonesim;
  377. name : 'Darwin/iPhoneSim for x86_64';
  378. shortname : 'iPhoneSim';
  379. flags : [tf_p_ext_support,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,tf_dwarf_only_local_labels,
  380. tf_pic_default,tf_has_winlike_resources,tf_use_hlcfi,tf_supports_symbolorderfile,tf_supports_hidden_symbols];
  381. cpu : cpu_x86_64;
  382. unit_env : 'BSDUNITS';
  383. extradefines : 'UNIX;BSD;HASUNIX;DARWIN'; // also define darwin for code compatibility
  384. exeext : '';
  385. defext : '.def';
  386. scriptext : '.sh';
  387. smartext : '.sl';
  388. unitext : '.ppu';
  389. unitlibext : '.ppl';
  390. asmext : '.s';
  391. objext : '.o';
  392. resext : '.res';
  393. resobjext : '.or';
  394. sharedlibext : '.dylib';
  395. staticlibext : '.a';
  396. staticlibprefix : 'libp';
  397. sharedlibprefix : 'lib';
  398. sharedClibext : '.dylib';
  399. staticClibext : '.a';
  400. staticClibprefix : 'lib';
  401. sharedClibprefix : 'lib';
  402. importlibprefix : 'libimp';
  403. importlibext : '.a';
  404. Cprefix : '_';
  405. newline : #10;
  406. dirsep : '/';
  407. assem : as_clang_asdarwin;
  408. assemextern : as_clang_asdarwin;
  409. link : ld_none;
  410. linkextern : ld_darwin;
  411. ar : ar_gnu_ar;
  412. res : res_macho;
  413. dbg : dbg_dwarf2;
  414. script : script_unix;
  415. endian : endian_little;
  416. alignment :
  417. (
  418. procalign : 16;
  419. loopalign : 8;
  420. jumpalign : 16;
  421. jumpalignskipmax : 10;
  422. coalescealign : 0;
  423. coalescealignskipmax: 0;
  424. constalignmin : 0;
  425. constalignmax : 16;
  426. varalignmin : 0;
  427. varalignmax : 16;
  428. localalignmin : 4;
  429. localalignmax : 16;
  430. recordalignmin : 0;
  431. recordalignmax : 16;
  432. maxCrecordalign : 16
  433. );
  434. first_parm_offset : 16;
  435. stacksize : 262144;
  436. stackalign : 16;
  437. abi : abi_default;
  438. llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
  439. );
  440. system_arm_ios_info : tsysteminfo =
  441. (
  442. system : system_arm_ios;
  443. name : 'iOS for ARM';
  444. shortname : 'iOS';
  445. flags : [tf_p_ext_support,tf_requires_proper_alignment,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,
  446. tf_dwarf_only_local_labels,tf_has_winlike_resources,tf_pic_default,tf_supports_symbolorderfile,tf_supports_hidden_symbols];
  447. cpu : cpu_arm;
  448. unit_env : 'BSDUNITS';
  449. extradefines : 'UNIX;BSD;HASUNIX;CPUARMEL;DARWIN';
  450. exeext : '';
  451. defext : '.def';
  452. scriptext : '.sh';
  453. smartext : '.sl';
  454. unitext : '.ppu';
  455. unitlibext : '.ppl';
  456. asmext : '.s';
  457. objext : '.o';
  458. resext : '.res';
  459. resobjext : '.or';
  460. sharedlibext : '.dylib';
  461. staticlibext : '.a';
  462. staticlibprefix : 'libp';
  463. sharedlibprefix : 'lib';
  464. sharedClibext : '.dylib';
  465. staticClibext : '.a';
  466. staticClibprefix : 'lib';
  467. sharedClibprefix : 'lib';
  468. importlibprefix : 'libimp';
  469. importlibext : '.a';
  470. Cprefix : '_';
  471. newline : #10;
  472. dirsep : '/';
  473. assem : as_clang_asdarwin;
  474. assemextern : as_clang_asdarwin;
  475. link : ld_none;
  476. linkextern : ld_darwin;
  477. ar : ar_gnu_ar;
  478. res : res_macho;
  479. dbg : dbg_dwarf2;
  480. script : script_unix;
  481. endian : endian_little;
  482. alignment :
  483. (
  484. procalign : 16;
  485. loopalign : 4;
  486. jumpalign : 0;
  487. jumpalignskipmax : 0;
  488. coalescealign : 0;
  489. coalescealignskipmax: 0;
  490. constalignmin : 0;
  491. constalignmax : 8;
  492. varalignmin : 0;
  493. varalignmax : 8;
  494. localalignmin : 4;
  495. localalignmax : 8;
  496. recordalignmin : 0;
  497. recordalignmax : 8;
  498. maxCrecordalign : 8
  499. );
  500. first_parm_offset : 8;
  501. stacksize : 262144;
  502. stackalign : 4;
  503. abi : abi_default;
  504. { note: default LLVM stack alignment is 8 bytes for this target }
  505. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
  506. );
  507. system_aarch64_ios_info : tsysteminfo =
  508. (
  509. system : system_aarch64_ios;
  510. name : 'iOS for AArch64';
  511. shortname : 'iOS';
  512. flags : [tf_p_ext_support,tf_requires_proper_alignment,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,
  513. tf_dwarf_only_local_labels,tf_pic_default,tf_has_winlike_resources,tf_supports_symbolorderfile,tf_supports_hidden_symbols];
  514. cpu : cpu_aarch64;
  515. unit_env : 'BSDUNITS';
  516. extradefines : 'UNIX;BSD;HASUNIX;DARWIN';
  517. exeext : '';
  518. defext : '.def';
  519. scriptext : '.sh';
  520. smartext : '.sl';
  521. unitext : '.ppu';
  522. unitlibext : '.ppl';
  523. asmext : '.s';
  524. objext : '.o';
  525. resext : '.res';
  526. resobjext : '.or';
  527. sharedlibext : '.dylib';
  528. staticlibext : '.a';
  529. staticlibprefix : 'libp';
  530. sharedlibprefix : 'lib';
  531. sharedClibext : '.dylib';
  532. staticClibext : '.a';
  533. staticClibprefix : 'lib';
  534. sharedClibprefix : 'lib';
  535. importlibprefix : 'libimp';
  536. importlibext : '.a';
  537. Cprefix : '_';
  538. newline : #10;
  539. dirsep : '/';
  540. assem : as_clang_asdarwin;
  541. assemextern : as_clang_asdarwin;
  542. link : ld_none;
  543. linkextern : ld_darwin;
  544. ar : ar_gnu_ar;
  545. res : res_macho;
  546. dbg : dbg_dwarf2;
  547. script : script_unix;
  548. endian : endian_little;
  549. alignment :
  550. (
  551. procalign : 16;
  552. loopalign : 4;
  553. jumpalign : 0;
  554. jumpalignskipmax : 0;
  555. coalescealign : 0;
  556. coalescealignskipmax: 0;
  557. constalignmin : 0;
  558. constalignmax : 16;
  559. varalignmin : 0;
  560. varalignmax : 16;
  561. localalignmin : 4;
  562. localalignmax : 16;
  563. recordalignmin : 0;
  564. recordalignmax : 16;
  565. maxCrecordalign : 16
  566. );
  567. first_parm_offset : 16;
  568. stacksize : 8*1024*1024;
  569. stackalign : 16;
  570. abi : abi_aarch64_darwin;
  571. llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
  572. );
  573. system_aarch64_darwin_info : tsysteminfo =
  574. (
  575. system : system_aarch64_darwin;
  576. name : 'Darwin for AArch64';
  577. shortname : 'Darwin';
  578. flags : [tf_p_ext_support,tf_requires_proper_alignment,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,
  579. tf_dwarf_only_local_labels,tf_pic_default,tf_has_winlike_resources,tf_supports_symbolorderfile,tf_supports_hidden_symbols
  580. {$ifdef llvm},tf_use_psabieh{$endif}];
  581. cpu : cpu_aarch64;
  582. unit_env : 'BSDUNITS';
  583. extradefines : 'UNIX;BSD;HASUNIX';
  584. exeext : '';
  585. defext : '.def';
  586. scriptext : '.sh';
  587. smartext : '.sl';
  588. unitext : '.ppu';
  589. unitlibext : '.ppl';
  590. asmext : '.s';
  591. objext : '.o';
  592. resext : '.res';
  593. resobjext : '.or';
  594. sharedlibext : '.dylib';
  595. staticlibext : '.a';
  596. staticlibprefix : 'libp';
  597. sharedlibprefix : 'lib';
  598. sharedClibext : '.dylib';
  599. staticClibext : '.a';
  600. staticClibprefix : 'lib';
  601. sharedClibprefix : 'lib';
  602. importlibprefix : 'libimp';
  603. importlibext : '.a';
  604. Cprefix : '_';
  605. newline : #10;
  606. dirsep : '/';
  607. assem : as_clang_asdarwin;
  608. assemextern : as_clang_asdarwin;
  609. link : ld_none;
  610. linkextern : ld_darwin;
  611. ar : ar_gnu_ar;
  612. res : res_macho;
  613. dbg : dbg_dwarf2;
  614. script : script_unix;
  615. endian : endian_little;
  616. alignment :
  617. (
  618. procalign : 16;
  619. loopalign : 4;
  620. jumpalign : 0;
  621. jumpalignskipmax : 0;
  622. coalescealign : 0;
  623. coalescealignskipmax: 0;
  624. constalignmin : 0;
  625. constalignmax : 16;
  626. varalignmin : 0;
  627. varalignmax : 16;
  628. localalignmin : 4;
  629. localalignmax : 16;
  630. recordalignmin : 0;
  631. recordalignmax : 16;
  632. maxCrecordalign : 16
  633. );
  634. first_parm_offset : 16;
  635. stacksize : 8*1024*1024;
  636. stackalign : 16;
  637. abi : abi_aarch64_darwin;
  638. llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
  639. );
  640. implementation
  641. initialization
  642. {$ifdef cpui386}
  643. {$ifdef Darwin}
  644. set_source_info(system_i386_Darwin_info);
  645. {$endif Darwin}
  646. {$endif cpui386}
  647. {$ifdef cpux86_64}
  648. {$ifdef Darwin}
  649. set_source_info(system_x86_64_darwin_info);
  650. {$endif}
  651. {$endif cpux86_64}
  652. {$ifdef cpupowerpc32}
  653. {$ifdef Darwin}
  654. set_source_info(system_powerpc_darwin_info);
  655. {$endif Darwin}
  656. {$endif cpupowerpc32}
  657. {$ifdef cpupowerpc64}
  658. {$ifdef Darwin}
  659. set_source_info(system_powerpc64_darwin_info);
  660. {$endif Darwin}
  661. {$endif powerpc64}
  662. {$ifdef cpuarm}
  663. {$ifdef Darwin}
  664. set_source_info(system_arm_ios_info);
  665. {$endif Darwin}
  666. {$endif cpuarm}
  667. {$ifdef cpuaarch64}
  668. {$ifdef Darwin}
  669. {$ifdef ios}
  670. set_source_info(system_aarch64_ios_info);
  671. {$else}
  672. set_source_info(system_aarch64_darwin_info);
  673. {$endif}
  674. {$endif Darwin}
  675. {$endif cpuaarch64}
  676. end.