i_bsd.pas 28 KB

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