i_bsd.pas 27 KB

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