i_bsd.pas 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005
  1. {
  2. Copyright (c) 1998-2008 by Peter Vreman
  3. This unit implements support information structures for FreeBSD/NetBSD,
  4. OpenBSD and Darwin (Mac OS X)
  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. { This unit implements support information structures for FreeBSD/NetBSD.
  19. OpenBSD is only added for i386 for now, though it exists for most
  20. other common CPU's too}
  21. unit i_bsd;
  22. {$i fpcdefs.inc}
  23. interface
  24. uses
  25. systems, rescmn;
  26. const
  27. res_macho_info : tresinfo =
  28. (
  29. id : res_macho;
  30. resbin : 'fpcres';
  31. rescmd : '-o $OBJ -a $ARCH -s $SUBARCH -of mach-o $DBG';
  32. rcbin : 'windres';
  33. rccmd : '--include $INC -O res -D FPC -o $RES $RC';
  34. resourcefileclass : nil;
  35. resflags : [];
  36. );
  37. res_macosx_ext_info : tresinfo =
  38. (
  39. id : res_ext;
  40. resbin : 'fpcres';
  41. rescmd : '-o $OBJ -a $ENDIAN -of external $DBG';
  42. rcbin : 'windres';
  43. rccmd : '--include $INC -O res -D FPC -o $RES $RC';
  44. resourcefileclass : nil;
  45. resflags : [res_external_file,res_arch_in_file_name];
  46. );
  47. system_i386_freebsd_info : tsysteminfo =
  48. (
  49. system : system_i386_FreeBSD;
  50. name : 'FreeBSD/ELF for i386';
  51. shortname : 'FreeBSD';
  52. flags : [tf_pic_uses_got,tf_files_case_sensitive,
  53. {$ifdef segment_threadvars}
  54. tf_section_threadvars,
  55. {$endif segment_threadvars}
  56. tf_needs_symbol_type,tf_needs_symbol_size,tf_smartlink_library
  57. ,tf_smartlink_sections,tf_has_winlike_resources];
  58. cpu : cpu_i386;
  59. unit_env : 'BSDUNITS';
  60. extradefines : 'UNIX;BSD;HASUNIX';
  61. exeext : '';
  62. defext : '.def';
  63. scriptext : '.sh';
  64. smartext : '.sl';
  65. unitext : '.ppu';
  66. unitlibext : '.ppl';
  67. asmext : '.s';
  68. objext : '.o';
  69. resext : '.res';
  70. resobjext : '.or';
  71. sharedlibext : '.so';
  72. staticlibext : '.a';
  73. staticlibprefix : 'libp';
  74. sharedlibprefix : 'lib';
  75. sharedClibext : '.so';
  76. staticClibext : '.a';
  77. staticClibprefix : 'lib';
  78. sharedClibprefix : 'lib';
  79. importlibprefix : 'libimp';
  80. importlibext : '.a';
  81. Cprefix : '';
  82. newline : #10;
  83. dirsep : '/';
  84. assem : as_i386_elf32;
  85. assemextern : as_gas;
  86. link : ld_none;
  87. linkextern : ld_bsd;
  88. ar : ar_gnu_ar;
  89. res : res_elf;
  90. dbg : dbg_stabs;
  91. script : script_unix;
  92. endian : endian_little;
  93. alignment :
  94. (
  95. procalign : 4;
  96. loopalign : 4;
  97. jumpalign : 0;
  98. constalignmin : 0;
  99. constalignmax : 4;
  100. varalignmin : 0;
  101. varalignmax : 4;
  102. localalignmin : 0;
  103. localalignmax : 4;
  104. recordalignmin : 0;
  105. recordalignmax : 2;
  106. maxCrecordalign : 4
  107. );
  108. first_parm_offset : 8;
  109. stacksize : 262144;
  110. stackalign : 4;
  111. abi : abi_default;
  112. );
  113. system_x86_64_freebsd_info : tsysteminfo =
  114. (
  115. system : system_x86_64_freebsd;
  116. name : 'FreeBSD for x86-64';
  117. shortname : 'FreeBSD';
  118. flags : [tf_needs_symbol_size,tf_needs_dwarf_cfi,tf_library_needs_pic,tf_needs_symbol_type,
  119. tf_files_case_sensitive,tf_smartlink_library,
  120. tf_dwarf_only_local_labels,
  121. {tf_pic_uses_got,}tf_smartlink_sections,tf_has_winlike_resources];
  122. cpu : cpu_x86_64;
  123. unit_env : 'BSDUNITS';
  124. extradefines : 'UNIX;HASUNIX;BSD';
  125. exeext : '';
  126. defext : '.def';
  127. scriptext : '.sh';
  128. smartext : '.sl';
  129. unitext : '.ppu';
  130. unitlibext : '.ppl';
  131. asmext : '.s';
  132. objext : '.o';
  133. resext : '.res';
  134. resobjext : '.or';
  135. sharedlibext : '.so';
  136. staticlibext : '.a';
  137. staticlibprefix : 'libp';
  138. sharedlibprefix : 'lib';
  139. sharedClibext : '.so';
  140. staticClibext : '.a';
  141. staticClibprefix : 'lib';
  142. sharedClibprefix : 'lib';
  143. importlibprefix : 'libimp';
  144. importlibext : '.a';
  145. Cprefix : '';
  146. newline : #10;
  147. dirsep : '/';
  148. assem : as_x86_64_elf64;
  149. assemextern : as_gas;
  150. link : ld_none;
  151. linkextern : ld_bsd;
  152. ar : ar_gnu_ar;
  153. res : res_elf;
  154. dbg : dbg_dwarf2; //dbg_stabs;
  155. script : script_unix;
  156. endian : endian_little;
  157. alignment :
  158. (
  159. procalign : 8;
  160. loopalign : 4;
  161. jumpalign : 0;
  162. constalignmin : 0;
  163. constalignmax : 8;
  164. varalignmin : 0;
  165. varalignmax : 16;
  166. localalignmin : 4;
  167. localalignmax : 16;
  168. recordalignmin : 0;
  169. recordalignmax : 16;
  170. maxCrecordalign : 16
  171. );
  172. first_parm_offset : 16;
  173. stacksize : 256*1024;
  174. stackalign : 16;
  175. abi : abi_default;
  176. );
  177. system_i386_netbsd_info : tsysteminfo =
  178. (
  179. system : system_i386_NetBSD;
  180. name : 'NetBSD for i386';
  181. shortname : 'NetBSD';
  182. flags : [tf_pic_uses_got,tf_under_development,tf_files_case_sensitive,tf_smartlink_library,tf_has_winlike_resources];
  183. cpu : cpu_i386;
  184. unit_env : 'BSDUNITS';
  185. extradefines : 'UNIX;BSD;HASUNIX';
  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 : '.so';
  197. staticlibext : '.a';
  198. staticlibprefix : 'libp';
  199. sharedlibprefix : 'lib';
  200. sharedClibext : '.so';
  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_i386_elf32;
  210. assemextern : as_gas;
  211. link : ld_none;
  212. linkextern : ld_bsd;
  213. ar : ar_gnu_ar;
  214. res : res_elf;
  215. dbg : dbg_stabs;
  216. script : script_unix;
  217. endian : endian_little;
  218. alignment :
  219. (
  220. procalign : 16;
  221. loopalign : 4;
  222. jumpalign : 0;
  223. constalignmin : 0;
  224. constalignmax : 8;
  225. varalignmin : 0;
  226. varalignmax : 16;
  227. localalignmin : 4;
  228. localalignmax : 8;
  229. recordalignmin : 0;
  230. recordalignmax : 16;
  231. maxCrecordalign : 4
  232. );
  233. first_parm_offset : 8;
  234. stacksize : 262144;
  235. stackalign : 4;
  236. abi : abi_default;
  237. );
  238. system_i386_openbsd_info : tsysteminfo =
  239. (
  240. system : system_i386_OpenBSD;
  241. name : 'OpenBSD for i386';
  242. shortname : 'OpenBSD';
  243. flags : [tf_pic_uses_got,tf_under_development,tf_files_case_sensitive,tf_smartlink_library,tf_has_winlike_resources];
  244. cpu : cpu_i386;
  245. unit_env : 'BSDUNITS';
  246. extradefines : 'UNIX;BSD;HASUNIX';
  247. exeext : '';
  248. defext : '.def';
  249. scriptext : '.sh';
  250. smartext : '.sl';
  251. unitext : '.ppu';
  252. unitlibext : '.ppl';
  253. asmext : '.s';
  254. objext : '.o';
  255. resext : '.res';
  256. resobjext : '.or';
  257. sharedlibext : '.so';
  258. staticlibext : '.a';
  259. staticlibprefix : 'libp';
  260. sharedlibprefix : 'lib';
  261. sharedClibext : '.so';
  262. staticClibext : '.a';
  263. staticClibprefix : 'lib';
  264. sharedClibprefix : 'lib';
  265. importlibprefix : 'libimp';
  266. importlibext : '.a';
  267. Cprefix : '';
  268. newline : #10;
  269. dirsep : '/';
  270. assem : as_gas;
  271. assemextern : as_gas;
  272. link : ld_none;
  273. linkextern : ld_bsd;
  274. ar : ar_gnu_ar;
  275. res : res_elf;
  276. dbg : dbg_stabs;
  277. script : script_unix;
  278. endian : endian_little;
  279. alignment :
  280. (
  281. procalign : 16;
  282. loopalign : 4;
  283. jumpalign : 0;
  284. constalignmin : 0;
  285. constalignmax : 8;
  286. varalignmin : 0;
  287. varalignmax : 16;
  288. localalignmin : 4;
  289. localalignmax : 8;
  290. recordalignmin : 0;
  291. recordalignmax : 16;
  292. maxCrecordalign : 4
  293. );
  294. first_parm_offset : 8;
  295. stacksize : 262144;
  296. stackalign : 4;
  297. abi : abi_default;
  298. );
  299. system_x86_64_openbsd_info : tsysteminfo =
  300. (
  301. system : system_x86_64_openbsd;
  302. name : 'OpenBSD for x86-64';
  303. shortname : 'OpenBSD';
  304. flags : [tf_needs_symbol_size,tf_needs_dwarf_cfi,tf_library_needs_pic,tf_needs_symbol_type,
  305. tf_files_case_sensitive,tf_smartlink_library, tf_under_development,
  306. tf_dwarf_only_local_labels,
  307. { tf_pic_uses_got,}tf_smartlink_sections,tf_has_winlike_resources];
  308. cpu : cpu_x86_64;
  309. unit_env : 'BSDUNITS';
  310. extradefines : 'UNIX;HASUNIX;BSD';
  311. exeext : '';
  312. defext : '.def';
  313. scriptext : '.sh';
  314. smartext : '.sl';
  315. unitext : '.ppu';
  316. unitlibext : '.ppl';
  317. asmext : '.s';
  318. objext : '.o';
  319. resext : '.res';
  320. resobjext : '.or';
  321. sharedlibext : '.so';
  322. staticlibext : '.a';
  323. staticlibprefix : 'libp';
  324. sharedlibprefix : 'lib';
  325. sharedClibext : '.so';
  326. staticClibext : '.a';
  327. staticClibprefix : 'lib';
  328. sharedClibprefix : 'lib';
  329. importlibprefix : 'libimp';
  330. importlibext : '.a';
  331. Cprefix : '';
  332. newline : #10;
  333. dirsep : '/';
  334. assem : as_x86_64_elf64;
  335. assemextern : as_gas;
  336. link : ld_none;
  337. linkextern : ld_bsd;
  338. ar : ar_gnu_ar;
  339. res : res_elf;
  340. dbg : dbg_dwarf2; //dbg_stabs;
  341. script : script_unix;
  342. endian : endian_little;
  343. alignment :
  344. (
  345. procalign : 8;
  346. loopalign : 4;
  347. jumpalign : 0;
  348. constalignmin : 0;
  349. constalignmax : 8;
  350. varalignmin : 0;
  351. varalignmax : 16;
  352. localalignmin : 4;
  353. localalignmax : 16;
  354. recordalignmin : 0;
  355. recordalignmax : 16;
  356. maxCrecordalign : 16
  357. );
  358. first_parm_offset : 16;
  359. stacksize : 256*1024;
  360. stackalign : 16;
  361. abi : abi_default;
  362. );
  363. system_m68k_netbsd_info : tsysteminfo =
  364. (
  365. system : system_m68k_NetBSD;
  366. name : 'NetBSD for m68k';
  367. shortname : 'NetBSD';
  368. flags : [tf_under_development,tf_files_case_sensitive,tf_smartlink_library,tf_has_winlike_resources];
  369. cpu : cpu_m68k;
  370. unit_env : 'BSDUNITS';
  371. extradefines : 'UNIX;BSD;HASUNIX';
  372. exeext : '';
  373. defext : '.def';
  374. scriptext : '.sh';
  375. smartext : '.sl';
  376. unitext : '.ppu';
  377. unitlibext : '.ppl';
  378. asmext : '.s';
  379. objext : '.o';
  380. resext : '.res';
  381. resobjext : '.or';
  382. sharedlibext : '.so';
  383. staticlibext : '.a';
  384. staticlibprefix : 'libp';
  385. sharedlibprefix : 'lib';
  386. sharedClibext : '.so';
  387. staticClibext : '.a';
  388. staticClibprefix : 'lib';
  389. sharedClibprefix : 'lib';
  390. importlibprefix : 'libimp';
  391. importlibext : '.a';
  392. Cprefix : '';
  393. newline : #10;
  394. dirsep : '/';
  395. assem : as_gas;
  396. assemextern : as_gas;
  397. link : ld_none;
  398. linkextern : ld_bsd;
  399. ar : ar_gnu_ar;
  400. res : res_elf;
  401. dbg : dbg_stabs;
  402. script : script_unix;
  403. endian : endian_big;
  404. alignment :
  405. (
  406. procalign : 4;
  407. loopalign : 4;
  408. jumpalign : 0;
  409. constalignmin : 0;
  410. constalignmax : 1;
  411. varalignmin : 0;
  412. varalignmax : 1;
  413. localalignmin : 0;
  414. localalignmax : 1;
  415. recordalignmin : 0;
  416. recordalignmax : 2;
  417. maxCrecordalign : 4
  418. );
  419. first_parm_offset : 8;
  420. stacksize : 262144;
  421. stackalign : 4;
  422. abi : abi_default;
  423. );
  424. system_powerpc_netbsd_info : tsysteminfo =
  425. (
  426. system : system_powerpc_netbsd;
  427. name : 'NetBSD for PowerPC';
  428. shortname : 'NetBSD';
  429. flags : [tf_under_development,tf_files_case_sensitive,tf_smartlink_library,tf_has_winlike_resources];
  430. cpu : cpu_powerpc;
  431. unit_env : '';
  432. extradefines : 'UNIX;BSD;HASUNIX';
  433. exeext : '';
  434. defext : '.def';
  435. scriptext : '.sh';
  436. smartext : '.sl';
  437. unitext : '.ppu';
  438. unitlibext : '.ppl';
  439. asmext : '.s';
  440. objext : '.o';
  441. resext : '.res';
  442. resobjext : '.or';
  443. sharedlibext : '.so';
  444. staticlibext : '.s';
  445. staticlibprefix : 'libp';
  446. sharedlibprefix : 'lib';
  447. sharedClibext : '.so';
  448. staticClibext : '.a';
  449. staticClibprefix : 'lib';
  450. sharedClibprefix : 'lib';
  451. importlibprefix : 'libimp';
  452. importlibext : '.a';
  453. Cprefix : '';
  454. newline : #10;
  455. dirsep : '/';
  456. assem : as_gas;
  457. assemextern : as_gas;
  458. link : ld_none;
  459. linkextern : ld_bsd;
  460. ar : ar_gnu_ar;
  461. res : res_elf;
  462. dbg : dbg_stabs;
  463. script : script_unix;
  464. endian : endian_big;
  465. alignment :
  466. (
  467. procalign : 4;
  468. loopalign : 4;
  469. jumpalign : 0;
  470. constalignmin : 0;
  471. constalignmax : 4;
  472. varalignmin : 0;
  473. varalignmax : 4;
  474. localalignmin : 0;
  475. localalignmax : 4;
  476. recordalignmin : 0;
  477. recordalignmax : 2;
  478. maxCrecordalign : 4 // should be 8 probably
  479. );
  480. first_parm_offset : 8;
  481. stacksize : 32*1024*1024;
  482. stackalign : 16;
  483. { abi_powerpc_sysv doesn't work yet }
  484. abi : abi_powerpc_aix;
  485. );
  486. system_x86_64_netbsd_info : tsysteminfo =
  487. (
  488. system : system_x86_64_netbsd;
  489. name : 'NetBSD for x86-64';
  490. shortname : 'NetBSD';
  491. flags : [tf_needs_symbol_size,tf_needs_dwarf_cfi,tf_library_needs_pic,tf_needs_symbol_type,
  492. tf_files_case_sensitive,tf_smartlink_library, tf_under_development,
  493. tf_dwarf_only_local_labels,
  494. { tf_pic_uses_got,}tf_smartlink_sections,tf_has_winlike_resources];
  495. cpu : cpu_x86_64;
  496. unit_env : 'BSDUNITS';
  497. extradefines : 'UNIX;HASUNIX;BSD';
  498. exeext : '';
  499. defext : '.def';
  500. scriptext : '.sh';
  501. smartext : '.sl';
  502. unitext : '.ppu';
  503. unitlibext : '.ppl';
  504. asmext : '.s';
  505. objext : '.o';
  506. resext : '.res';
  507. resobjext : '.or';
  508. sharedlibext : '.so';
  509. staticlibext : '.a';
  510. staticlibprefix : 'libp';
  511. sharedlibprefix : 'lib';
  512. sharedClibext : '.so';
  513. staticClibext : '.a';
  514. staticClibprefix : 'lib';
  515. sharedClibprefix : 'lib';
  516. importlibprefix : 'libimp';
  517. importlibext : '.a';
  518. Cprefix : '';
  519. newline : #10;
  520. dirsep : '/';
  521. assem : as_x86_64_elf64;
  522. assemextern : as_gas;
  523. link : ld_none;
  524. linkextern : ld_bsd;
  525. ar : ar_gnu_ar;
  526. res : res_elf;
  527. dbg : dbg_dwarf2; //dbg_stabs;
  528. script : script_unix;
  529. endian : endian_little;
  530. alignment :
  531. (
  532. procalign : 8;
  533. loopalign : 4;
  534. jumpalign : 0;
  535. constalignmin : 0;
  536. constalignmax : 8;
  537. varalignmin : 0;
  538. varalignmax : 16;
  539. localalignmin : 4;
  540. localalignmax : 16;
  541. recordalignmin : 0;
  542. recordalignmax : 16;
  543. maxCrecordalign : 16
  544. );
  545. first_parm_offset : 16;
  546. stacksize : 256*1024;
  547. stackalign : 16;
  548. abi : abi_default;
  549. );
  550. system_powerpc_darwin_info : tsysteminfo =
  551. (
  552. system : system_powerpc_darwin;
  553. name : 'Darwin for PowerPC';
  554. shortname : 'Darwin';
  555. 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];
  556. cpu : cpu_powerpc;
  557. unit_env : 'BSDUNITS';
  558. extradefines : 'UNIX;BSD;HASUNIX';
  559. exeext : '';
  560. defext : '.def';
  561. scriptext : '.sh';
  562. smartext : '.sl';
  563. unitext : '.ppu';
  564. unitlibext : '.ppl';
  565. asmext : '.s';
  566. objext : '.o';
  567. resext : '.res';
  568. resobjext : '.or';
  569. sharedlibext : '.dylib';
  570. staticlibext : '.a';
  571. staticlibprefix : 'libp';
  572. sharedlibprefix : 'lib';
  573. sharedClibext : '.dylib';
  574. staticClibext : '.a';
  575. staticClibprefix : 'lib';
  576. sharedClibprefix : 'lib';
  577. importlibprefix : 'libimp';
  578. importlibext : '.a';
  579. Cprefix : '_';
  580. newline : #10;
  581. dirsep : '/';
  582. assem : as_darwin;
  583. assemextern : as_darwin;
  584. link : ld_none;
  585. linkextern : ld_bsd;
  586. ar : ar_gnu_ar;
  587. res : res_macho;
  588. dbg : dbg_stabs;
  589. script : script_unix;
  590. endian : endian_big;
  591. alignment :
  592. (
  593. procalign : 16;
  594. loopalign : 4;
  595. jumpalign : 0;
  596. constalignmin : 0;
  597. constalignmax : 4;
  598. varalignmin : 0;
  599. varalignmax : 4;
  600. localalignmin : 0;
  601. localalignmax : 4;
  602. recordalignmin : 0;
  603. recordalignmax : 4;
  604. maxCrecordalign : 4
  605. );
  606. first_parm_offset : 24;
  607. stacksize : 262144;
  608. stackalign : 16;
  609. abi : abi_powerpc_aix;
  610. );
  611. system_i386_darwin_info : tsysteminfo =
  612. (
  613. system : system_i386_darwin;
  614. name : 'Darwin for i386';
  615. shortname : 'Darwin';
  616. 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];
  617. cpu : cpu_i386;
  618. unit_env : 'BSDUNITS';
  619. extradefines : 'UNIX;BSD;HASUNIX';
  620. exeext : '';
  621. defext : '.def';
  622. scriptext : '.sh';
  623. smartext : '.sl';
  624. unitext : '.ppu';
  625. unitlibext : '.ppl';
  626. asmext : '.s';
  627. objext : '.o';
  628. resext : '.res';
  629. resobjext : '.or';
  630. sharedlibext : '.dylib';
  631. staticlibext : '.a';
  632. staticlibprefix : 'libp';
  633. sharedlibprefix : 'lib';
  634. sharedClibext : '.dylib';
  635. staticClibext : '.a';
  636. staticClibprefix : 'lib';
  637. sharedClibprefix : 'lib';
  638. importlibprefix : 'libimp';
  639. importlibext : '.a';
  640. Cprefix : '_';
  641. newline : #10;
  642. dirsep : '/';
  643. assem : as_darwin;
  644. assemextern : as_darwin;
  645. link : ld_none;
  646. linkextern : ld_bsd;
  647. ar : ar_gnu_ar;
  648. res : res_macho;
  649. dbg : dbg_stabs;
  650. script : script_unix;
  651. endian : endian_little;
  652. alignment :
  653. (
  654. procalign : 16;
  655. loopalign : 4;
  656. jumpalign : 0;
  657. constalignmin : 0;
  658. constalignmax : 8;
  659. varalignmin : 0;
  660. varalignmax : 16;
  661. localalignmin : 0;
  662. localalignmax : 8;
  663. recordalignmin : 0;
  664. recordalignmax : 16;
  665. maxCrecordalign : 16
  666. );
  667. first_parm_offset : 8;
  668. stacksize : 262144;
  669. stackalign : 16;
  670. abi : abi_default;
  671. );
  672. system_i386_iphonesim_info : tsysteminfo =
  673. (
  674. system : system_i386_iphonesim;
  675. name : 'Darwin/iPhoneSim for i386';
  676. shortname : 'iPhoneSim';
  677. 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];
  678. cpu : cpu_i386;
  679. unit_env : 'BSDUNITS';
  680. extradefines : 'UNIX;BSD;HASUNIX;DARWIN'; // also define darwin for code compatibility
  681. exeext : '';
  682. defext : '.def';
  683. scriptext : '.sh';
  684. smartext : '.sl';
  685. unitext : '.ppu';
  686. unitlibext : '.ppl';
  687. asmext : '.s';
  688. objext : '.o';
  689. resext : '.res';
  690. resobjext : '.or';
  691. sharedlibext : '.dylib';
  692. staticlibext : '.a';
  693. staticlibprefix : 'libp';
  694. sharedlibprefix : 'lib';
  695. sharedClibext : '.dylib';
  696. staticClibext : '.a';
  697. staticClibprefix : 'lib';
  698. sharedClibprefix : 'lib';
  699. importlibprefix : 'libimp';
  700. importlibext : '.a';
  701. Cprefix : '_';
  702. newline : #10;
  703. dirsep : '/';
  704. assem : as_darwin;
  705. assemextern : as_darwin;
  706. link : ld_none;
  707. linkextern : ld_bsd;
  708. ar : ar_gnu_ar;
  709. res : res_macho;
  710. dbg : dbg_dwarf2;
  711. script : script_unix;
  712. endian : endian_little;
  713. alignment :
  714. (
  715. procalign : 16;
  716. loopalign : 4;
  717. jumpalign : 0;
  718. constalignmin : 0;
  719. constalignmax : 8;
  720. varalignmin : 0;
  721. varalignmax : 16;
  722. localalignmin : 0;
  723. localalignmax : 8;
  724. recordalignmin : 0;
  725. recordalignmax : 16;
  726. maxCrecordalign : 16
  727. );
  728. first_parm_offset : 8;
  729. stacksize : 262144;
  730. stackalign : 16;
  731. abi : abi_default;
  732. );
  733. system_powerpc64_darwin_info : tsysteminfo =
  734. (
  735. system : system_powerpc64_darwin;
  736. name : 'Darwin for PowerPC64';
  737. shortname : 'Darwin';
  738. 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];
  739. cpu : cpu_powerpc64;
  740. unit_env : 'BSDUNITS';
  741. extradefines : 'UNIX;BSD;HASUNIX';
  742. exeext : '';
  743. defext : '.def';
  744. scriptext : '.sh';
  745. smartext : '.sl';
  746. unitext : '.ppu';
  747. unitlibext : '.ppl';
  748. asmext : '.s';
  749. objext : '.o';
  750. resext : '.res';
  751. resobjext : '.or';
  752. sharedlibext : '.dylib';
  753. staticlibext : '.a';
  754. staticlibprefix : 'libp';
  755. sharedlibprefix : 'lib';
  756. sharedClibext : '.dylib';
  757. staticClibext : '.a';
  758. staticClibprefix : 'lib';
  759. sharedClibprefix : 'lib';
  760. importlibprefix : 'libimp';
  761. importlibext : '.a';
  762. Cprefix : '_';
  763. newline : #10;
  764. dirsep : '/';
  765. assem : as_darwin;
  766. assemextern : as_darwin;
  767. link : ld_none;
  768. linkextern : ld_bsd;
  769. ar : ar_gnu_ar;
  770. res : res_macho;
  771. dbg : dbg_dwarf2;
  772. script : script_unix;
  773. endian : endian_big;
  774. alignment :
  775. (
  776. procalign : 16;
  777. loopalign : 4;
  778. jumpalign : 0;
  779. constalignmin : 4;
  780. constalignmax : 8;
  781. varalignmin : 4;
  782. varalignmax : 8;
  783. localalignmin : 4;
  784. localalignmax : 8;
  785. recordalignmin : 0;
  786. recordalignmax : 8;
  787. maxCrecordalign : 4
  788. );
  789. first_parm_offset : 48;
  790. stacksize : 262144;
  791. stackalign : 16;
  792. abi : abi_powerpc_aix;
  793. );
  794. system_x86_64_darwin_info : tsysteminfo =
  795. (
  796. system : system_x86_64_darwin;
  797. name : 'Darwin for x86_64';
  798. shortname : 'Darwin';
  799. 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];
  800. cpu : cpu_x86_64;
  801. unit_env : 'BSDUNITS';
  802. extradefines : 'UNIX;BSD;HASUNIX';
  803. exeext : '';
  804. defext : '.def';
  805. scriptext : '.sh';
  806. smartext : '.sl';
  807. unitext : '.ppu';
  808. unitlibext : '.ppl';
  809. asmext : '.s';
  810. objext : '.o';
  811. resext : '.res';
  812. resobjext : '.or';
  813. sharedlibext : '.dylib';
  814. staticlibext : '.a';
  815. staticlibprefix : 'libp';
  816. sharedlibprefix : 'lib';
  817. sharedClibext : '.dylib';
  818. staticClibext : '.a';
  819. staticClibprefix : 'lib';
  820. sharedClibprefix : 'lib';
  821. importlibprefix : 'libimp';
  822. importlibext : '.a';
  823. Cprefix : '_';
  824. newline : #10;
  825. dirsep : '/';
  826. assem : as_darwin;
  827. assemextern : as_darwin;
  828. link : ld_none;
  829. linkextern : ld_bsd;
  830. ar : ar_gnu_ar;
  831. res : res_macho;
  832. dbg : dbg_dwarf2;
  833. script : script_unix;
  834. endian : endian_little;
  835. alignment :
  836. (
  837. procalign : 8;
  838. loopalign : 4;
  839. jumpalign : 0;
  840. constalignmin : 0;
  841. constalignmax : 8;
  842. varalignmin : 0;
  843. varalignmax : 16;
  844. localalignmin : 4;
  845. localalignmax : 16;
  846. recordalignmin : 0;
  847. recordalignmax : 16;
  848. maxCrecordalign : 16
  849. );
  850. first_parm_offset : 16;
  851. stacksize : 262144;
  852. stackalign : 16;
  853. abi : abi_default;
  854. );
  855. system_arm_darwin_info : tsysteminfo =
  856. (
  857. system : system_arm_darwin;
  858. name : 'Darwin for ARM';
  859. shortname : 'Darwin';
  860. flags : [tf_p_ext_support,tf_requires_proper_alignment,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,tf_dwarf_only_local_labels,tf_has_winlike_resources,tf_pic_default];
  861. cpu : cpu_arm;
  862. unit_env : 'BSDUNITS';
  863. extradefines : 'UNIX;BSD;HASUNIX;CPUARMEL';
  864. exeext : '';
  865. defext : '.def';
  866. scriptext : '.sh';
  867. smartext : '.sl';
  868. unitext : '.ppu';
  869. unitlibext : '.ppl';
  870. asmext : '.s';
  871. objext : '.o';
  872. resext : '.res';
  873. resobjext : '.or';
  874. sharedlibext : '.dylib';
  875. staticlibext : '.a';
  876. staticlibprefix : 'libp';
  877. sharedlibprefix : 'lib';
  878. sharedClibext : '.dylib';
  879. staticClibext : '.a';
  880. staticClibprefix : 'lib';
  881. sharedClibprefix : 'lib';
  882. importlibprefix : 'libimp';
  883. importlibext : '.a';
  884. Cprefix : '_';
  885. newline : #10;
  886. dirsep : '/';
  887. assem : as_darwin;
  888. assemextern : as_darwin;
  889. link : ld_none;
  890. linkextern : ld_bsd;
  891. ar : ar_gnu_ar;
  892. res : res_macho;
  893. dbg : dbg_dwarf2;
  894. script : script_unix;
  895. endian : endian_little;
  896. alignment :
  897. (
  898. procalign : 4;
  899. loopalign : 4;
  900. jumpalign : 0;
  901. constalignmin : 0;
  902. constalignmax : 8;
  903. varalignmin : 0;
  904. varalignmax : 8;
  905. localalignmin : 4;
  906. localalignmax : 8;
  907. recordalignmin : 0;
  908. recordalignmax : 8;
  909. maxCrecordalign : 8
  910. );
  911. first_parm_offset : 8;
  912. stacksize : 262144;
  913. stackalign : 4;
  914. abi : abi_default
  915. );
  916. implementation
  917. initialization
  918. {$ifdef cpui386}
  919. {$ifdef FreeBSD}
  920. set_source_info(system_i386_FreeBSD_info);
  921. {$endif}
  922. {$ifdef NetBSD}
  923. set_source_info(system_i386_NetBSD_info);
  924. {$endif}
  925. {$ifdef OpenBSD}
  926. set_source_info(system_i386_OpenBSD_info);
  927. {$endif}
  928. {$ifdef Darwin}
  929. set_source_info(system_i386_Darwin_info);
  930. {$endif Darwin}
  931. {$endif cpui386}
  932. {$ifdef cpux86_64}
  933. {$ifdef FreeBSD}
  934. set_source_info(system_x86_64_FreeBSD_info);
  935. {$endif}
  936. {$ifdef OpenBSD}
  937. set_source_info(system_x86_64_OpenBSD_info);
  938. {$endif}
  939. {$ifdef NetBSD}
  940. set_source_info(system_x86_64_NetBSD_info);
  941. {$endif}
  942. {$ifdef Darwin}
  943. set_source_info(system_x86_64_darwin_info);
  944. {$endif}
  945. {$endif}
  946. {$ifdef cpu68}
  947. {$ifdef NetBSD}
  948. set_source_info(system_m68k_NetBSD_info);
  949. {$endif NetBSD}
  950. {$endif cpu68}
  951. {$ifdef cpupowerpc32}
  952. {$ifdef Darwin}
  953. set_source_info(system_powerpc_darwin_info);
  954. {$endif Darwin}
  955. {$ifdef NetBSD}
  956. set_source_info(system_powerpc_netbsd_info);
  957. {$endif}
  958. {$endif cpupowerpc32}
  959. {$ifdef cpupowerpc64}
  960. {$ifdef Darwin}
  961. set_source_info(system_powerpc64_darwin_info);
  962. {$endif Darwin}
  963. {$endif powerpc64}
  964. {$ifdef cpuarm}
  965. {$ifdef Darwin}
  966. set_source_info(system_arm_darwin_info);
  967. {$endif Darwin}
  968. {$endif cpuarm}
  969. end.