i_bsd.pas 27 KB

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