i_bsd.pas 27 KB

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