i_bsd.pas 38 KB

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