i_linux.pas 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322
  1. {
  2. Copyright (c) 1998-2008 by Peter Vreman
  3. This unit implements support information structures for linux
  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 linux. }
  18. unit i_linux;
  19. {$i fpcdefs.inc}
  20. interface
  21. uses
  22. systems;
  23. const
  24. system_i386_linux_info : tsysteminfo =
  25. (
  26. system : system_i386_LINUX;
  27. name : 'Linux for i386';
  28. shortname : 'Linux';
  29. flags : [tf_needs_symbol_size,tf_pic_uses_got,tf_smartlink_sections{,tf_winlikewidestring},
  30. {$ifdef tls_threadvars}
  31. tf_section_threadvars,
  32. {$endif tls_threadvars}
  33. tf_needs_symbol_type,tf_files_case_sensitive,
  34. tf_needs_dwarf_cfi,tf_has_winlike_resources,
  35. tf_safecall_exceptions, tf_safecall_clearstack
  36. {$ifdef psabieh}
  37. ,tf_use_psabieh
  38. {$endif psabieh}
  39. ,tf_supports_hidden_symbols];
  40. cpu : cpu_i386;
  41. unit_env : 'LINUXUNITS';
  42. extradefines : 'UNIX;HASUNIX';
  43. exeext : '';
  44. defext : '.def';
  45. scriptext : '.sh';
  46. smartext : '.sl';
  47. unitext : '.ppu';
  48. unitlibext : '.ppl';
  49. asmext : '.s';
  50. objext : '.o';
  51. resext : '.res';
  52. resobjext : '.or';
  53. sharedlibext : '.so';
  54. staticlibext : '.a';
  55. staticlibprefix : 'libp';
  56. sharedlibprefix : 'lib';
  57. sharedClibext : '.so';
  58. staticClibext : '.a';
  59. staticClibprefix : 'lib';
  60. sharedClibprefix : 'lib';
  61. importlibprefix : 'libimp';
  62. importlibext : '.a';
  63. Cprefix : '';
  64. newline : #10;
  65. dirsep : '/';
  66. assem : as_i386_elf32;
  67. assemextern : as_gas;
  68. link : ld_none;
  69. linkextern : ld_linux;
  70. ar : ar_gnu_ar;
  71. res : res_elf;
  72. dbg : dbg_dwarf2;
  73. script : script_unix;
  74. endian : endian_little;
  75. alignment :
  76. (
  77. procalign : 16;
  78. loopalign : 8;
  79. jumpalign : 16;
  80. jumpalignskipmax : 10;
  81. coalescealign : 0;
  82. coalescealignskipmax: 0;
  83. constalignmin : 0;
  84. constalignmax : 16;
  85. varalignmin : 0;
  86. varalignmax : 16;
  87. localalignmin : 4;
  88. localalignmax : 8;
  89. recordalignmin : 0;
  90. recordalignmax : 16;
  91. maxCrecordalign : 4
  92. );
  93. first_parm_offset : 8;
  94. stacksize : 8*1024*1024;
  95. stackalign : 16;
  96. abi : abi_linux386_sysv;
  97. { note: default LLVM stack alignment is 16 bytes for this target }
  98. 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';
  99. );
  100. system_x86_6432_linux_info : tsysteminfo =
  101. (
  102. system : system_x86_6432_LINUX;
  103. name : 'Linux for x64_6432';
  104. shortname : 'Linux6432';
  105. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  106. tf_pic_uses_got,tf_smartlink_sections,
  107. tf_has_winlike_resources,tf_supports_hidden_symbols];
  108. cpu : cpu_x86_64;
  109. unit_env : 'LINUXUNITS';
  110. extradefines : 'UNIX;HASUNIX';
  111. exeext : '';
  112. defext : '.def';
  113. scriptext : '.sh';
  114. smartext : '.sl';
  115. unitext : '.ppu';
  116. unitlibext : '.ppl';
  117. asmext : '.s';
  118. objext : '.o';
  119. resext : '.res';
  120. resobjext : '.or';
  121. sharedlibext : '.so';
  122. staticlibext : '.a';
  123. staticlibprefix : 'libp';
  124. sharedlibprefix : 'lib';
  125. sharedClibext : '.so';
  126. staticClibext : '.a';
  127. staticClibprefix : 'lib';
  128. sharedClibprefix : 'lib';
  129. importlibprefix : 'libimp';
  130. importlibext : '.a';
  131. Cprefix : '';
  132. newline : #10;
  133. dirsep : '/';
  134. assem : as_i386_elf32;
  135. assemextern : as_gas;
  136. link : ld_none;
  137. linkextern : ld_linux;
  138. ar : ar_gnu_ar;
  139. res : res_elf;
  140. dbg : dbg_stabs;
  141. script : script_unix;
  142. endian : endian_little;
  143. alignment :
  144. (
  145. procalign : 16;
  146. loopalign : 4;
  147. jumpalign : 0;
  148. jumpalignskipmax : 0;
  149. coalescealign : 0;
  150. coalescealignskipmax: 0;
  151. constalignmin : 0;
  152. constalignmax : 16;
  153. varalignmin : 0;
  154. varalignmax : 16;
  155. localalignmin : 4;
  156. localalignmax : 8;
  157. recordalignmin : 0;
  158. recordalignmax : 16;
  159. maxCrecordalign : 4
  160. );
  161. first_parm_offset : 8;
  162. stacksize : 8*1024*1024;
  163. stackalign : 16;
  164. abi : abi_default;
  165. llvmdatalayout : 'todo';
  166. );
  167. system_m68k_linux_info : tsysteminfo =
  168. (
  169. system : system_m68k_linux;
  170. name : 'Linux for m68k';
  171. shortname : 'Linux';
  172. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  173. tf_smartlink_sections,tf_safecall_exceptions,tf_safecall_clearstack,
  174. tf_requires_proper_alignment, { Coldfire seems to need this at least (KB) }
  175. tf_has_winlike_resources,tf_supports_hidden_symbols];
  176. cpu : cpu_m68k;
  177. unit_env : 'LINUXUNITS';
  178. extradefines : 'UNIX;HASUNIX';
  179. exeext : '';
  180. defext : '';
  181. scriptext : '.sh';
  182. smartext : '.sl';
  183. unitext : '.ppu';
  184. unitlibext : '.ppl';
  185. asmext : '.s';
  186. objext : '.o';
  187. resext : '.res';
  188. resobjext : '.or';
  189. sharedlibext : '.so';
  190. staticlibext : '.a';
  191. staticlibprefix : 'libp';
  192. sharedlibprefix : 'lib';
  193. sharedClibext : '.so';
  194. staticClibext : '.a';
  195. staticClibprefix : 'lib';
  196. sharedClibprefix : 'lib';
  197. importlibprefix : 'libimp';
  198. importlibext : '.a';
  199. Cprefix : '';
  200. newline : #10;
  201. dirsep : '/';
  202. assem : as_gas;
  203. assemextern : as_gas;
  204. link : ld_none;
  205. linkextern : ld_linux;
  206. ar : ar_gnu_ar;
  207. res : res_elf;
  208. dbg : dbg_stabs;
  209. script : script_unix;
  210. endian : endian_big;
  211. alignment :
  212. (
  213. procalign : 4;
  214. loopalign : 4;
  215. jumpalign : 0;
  216. jumpalignskipmax : 0;
  217. coalescealign : 0;
  218. coalescealignskipmax: 0;
  219. constalignmin : 0;
  220. constalignmax : 4;
  221. varalignmin : 0;
  222. varalignmax : 4;
  223. localalignmin : 4;
  224. localalignmax : 4;
  225. recordalignmin : 0;
  226. recordalignmax : 4;
  227. maxCrecordalign : 2;
  228. );
  229. first_parm_offset : 8;
  230. stacksize : 32*1024*1024;
  231. stackalign : 4;
  232. abi : abi_default;
  233. llvmdatalayout : 'todo';
  234. );
  235. system_powerpc_linux_info : tsysteminfo =
  236. (
  237. system : system_powerpc_LINUX;
  238. name : 'Linux for PowerPC';
  239. shortname : 'Linux';
  240. flags : [tf_needs_symbol_size,tf_smartlink_sections,
  241. tf_needs_symbol_type,tf_files_case_sensitive,
  242. tf_has_winlike_resources,tf_supports_hidden_symbols];
  243. cpu : cpu_powerpc;
  244. unit_env : '';
  245. extradefines : 'UNIX;HASUNIX';
  246. exeext : '';
  247. defext : '.def';
  248. scriptext : '.sh';
  249. smartext : '.sl';
  250. unitext : '.ppu';
  251. unitlibext : '.ppl';
  252. asmext : '.s';
  253. objext : '.o';
  254. resext : '.res';
  255. resobjext : '.or';
  256. sharedlibext : '.so';
  257. staticlibext : '.a';
  258. staticlibprefix : 'libp';
  259. sharedlibprefix : 'lib';
  260. sharedClibext : '.so';
  261. staticClibext : '.a';
  262. staticClibprefix : 'lib';
  263. sharedClibprefix : 'lib';
  264. importlibprefix : 'libimp';
  265. importlibext : '.a';
  266. Cprefix : '';
  267. newline : #10;
  268. dirsep : '/';
  269. assem : as_gas;
  270. assemextern : as_gas;
  271. link : ld_none;
  272. linkextern : ld_linux;
  273. ar : ar_gnu_ar;
  274. res : res_elf;
  275. dbg : dbg_stabs;
  276. script : script_unix;
  277. endian : endian_big;
  278. alignment :
  279. (
  280. procalign : 4;
  281. loopalign : 4;
  282. jumpalign : 0;
  283. jumpalignskipmax : 0;
  284. coalescealign : 0;
  285. coalescealignskipmax: 0;
  286. constalignmin : 0;
  287. constalignmax : 4;
  288. varalignmin : 0;
  289. varalignmax : 4;
  290. localalignmin : 4;
  291. localalignmax : 4;
  292. recordalignmin : 0;
  293. recordalignmax : 4;
  294. maxCrecordalign : 8
  295. );
  296. first_parm_offset : 8;
  297. stacksize : 32*1024*1024;
  298. stackalign : 16;
  299. abi : abi_powerpc_sysv;
  300. 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';
  301. );
  302. system_powerpc64_linux_info : tsysteminfo =
  303. (
  304. system : system_powerpc64_LINUX;
  305. name : 'Linux for PowerPC64';
  306. shortname : 'Linux';
  307. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  308. tf_requires_proper_alignment,tf_smartlink_sections,tf_has_winlike_resources,
  309. tf_supports_hidden_symbols];
  310. cpu : cpu_powerpc64;
  311. unit_env : '';
  312. extradefines : 'UNIX;HASUNIX';
  313. exeext : '';
  314. defext : '.def';
  315. scriptext : '.sh';
  316. smartext : '.sl';
  317. unitext : '.ppu';
  318. unitlibext : '.ppl';
  319. asmext : '.s';
  320. objext : '.o';
  321. resext : '.res';
  322. resobjext : '.or';
  323. sharedlibext : '.so';
  324. staticlibext : '.a';
  325. staticlibprefix : 'libp';
  326. sharedlibprefix : 'lib';
  327. sharedClibext : '.so';
  328. staticClibext : '.a';
  329. staticClibprefix : 'lib';
  330. sharedClibprefix : 'lib';
  331. importlibprefix : 'libimp';
  332. importlibext : '.a';
  333. Cprefix : '';
  334. newline : #10;
  335. dirsep : '/';
  336. assem : as_gas;
  337. assemextern : as_gas;
  338. link : ld_none;
  339. linkextern : ld_linux;
  340. ar : ar_gnu_ar;
  341. res : res_elf;
  342. dbg : dbg_dwarf2;
  343. script : script_unix;
  344. endian : endian_big;
  345. alignment :
  346. (
  347. procalign : 8;
  348. loopalign : 4;
  349. jumpalign : 0;
  350. jumpalignskipmax : 0;
  351. coalescealign : 0;
  352. coalescealignskipmax: 0;
  353. constalignmin : 4;
  354. constalignmax : 16;
  355. varalignmin : 4;
  356. varalignmax : 16;
  357. localalignmin : 0;
  358. localalignmax : 16;
  359. recordalignmin : 0;
  360. recordalignmax : 16;
  361. maxCrecordalign : 16
  362. );
  363. first_parm_offset : 8;
  364. stacksize : 10*1024*1024;
  365. stackalign : 16;
  366. abi : abi_powerpc_sysv;
  367. 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-f128:64:64-v128:128:128-n32:64';
  368. );
  369. system_x86_64_linux_info : tsysteminfo =
  370. (
  371. system : system_x86_64_LINUX;
  372. name : 'Linux for x86-64';
  373. shortname : 'Linux';
  374. flags : [tf_smartlink_sections,tf_needs_symbol_size,tf_needs_dwarf_cfi,
  375. {$ifdef tls_threadvars}
  376. tf_section_threadvars,
  377. {$endif tls_threadvars}
  378. tf_library_needs_pic,tf_needs_symbol_type,tf_files_case_sensitive,
  379. tf_has_winlike_resources,tf_safecall_exceptions,tf_safecall_clearstack
  380. {$ifdef llvm},tf_use_psabieh{$endif}
  381. {$ifdef psabieh}
  382. ,tf_use_psabieh
  383. {$endif psabieh}
  384. ,tf_supports_hidden_symbols
  385. ];
  386. cpu : cpu_x86_64;
  387. unit_env : 'LINUXUNITS';
  388. extradefines : 'UNIX;HASUNIX';
  389. exeext : '';
  390. defext : '.def';
  391. scriptext : '.sh';
  392. smartext : '.sl';
  393. unitext : '.ppu';
  394. unitlibext : '.ppl';
  395. asmext : '.s';
  396. objext : '.o';
  397. resext : '.res';
  398. resobjext : '.or';
  399. sharedlibext : '.so';
  400. staticlibext : '.a';
  401. staticlibprefix : 'libp';
  402. sharedlibprefix : 'lib';
  403. sharedClibext : '.so';
  404. staticClibext : '.a';
  405. staticClibprefix : 'lib';
  406. sharedClibprefix : 'lib';
  407. importlibprefix : 'libimp';
  408. importlibext : '.a';
  409. Cprefix : '';
  410. newline : #10;
  411. dirsep : '/';
  412. assem : as_x86_64_elf64;
  413. assemextern : as_gas;
  414. link : ld_none;
  415. linkextern : ld_linux;
  416. ar : ar_gnu_ar;
  417. res : res_elf;
  418. dbg : dbg_dwarf2;
  419. script : script_unix;
  420. endian : endian_little;
  421. alignment :
  422. (
  423. procalign : 16;
  424. loopalign : 8;
  425. jumpalign : 16;
  426. jumpalignskipmax : 10;
  427. coalescealign : 0;
  428. coalescealignskipmax: 0;
  429. constalignmin : 0;
  430. constalignmax : 16;
  431. varalignmin : 0;
  432. varalignmax : 16;
  433. localalignmin : 4;
  434. localalignmax : 16;
  435. recordalignmin : 0;
  436. recordalignmax : 16;
  437. maxCrecordalign : 16
  438. );
  439. first_parm_offset : 16;
  440. stacksize : 8*1024*1024;
  441. stackalign : 16;
  442. abi : abi_default;
  443. 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';
  444. );
  445. system_sparc_linux_info : tsysteminfo =
  446. (
  447. system : system_SPARC_Linux;
  448. name : 'Linux for SPARC';
  449. shortname : 'Linux';
  450. flags : [tf_needs_symbol_size,tf_library_needs_pic,tf_smartlink_sections,
  451. tf_needs_symbol_type,tf_files_case_sensitive,
  452. tf_pic_uses_got,
  453. tf_requires_proper_alignment,tf_safecall_exceptions, tf_safecall_clearstack,
  454. tf_has_winlike_resources,tf_supports_hidden_symbols];
  455. cpu : cpu_SPARC;
  456. unit_env : 'LINUXUNITS';
  457. extradefines : 'UNIX;HASUNIX';
  458. exeext : '';
  459. defext : '.def';
  460. scriptext : '.sh';
  461. smartext : '.sl';
  462. unitext : '.ppu';
  463. unitlibext : '.ppl';
  464. asmext : '.s';
  465. objext : '.o';
  466. resext : '.res';
  467. resobjext : '.or';
  468. sharedlibext : '.so';
  469. staticlibext : '.a';
  470. staticlibprefix : 'libp';
  471. sharedlibprefix : 'lib';
  472. sharedClibext : '.so';
  473. staticClibext : '.a';
  474. staticClibprefix : 'lib';
  475. sharedClibprefix : 'lib';
  476. importlibprefix : 'libimp';
  477. importlibext : '.a';
  478. Cprefix : '';
  479. newline : #10;
  480. dirsep : '/';
  481. assem : as_gas;
  482. assemextern : as_gas;
  483. link : ld_none;
  484. linkextern : ld_linux;
  485. ar : ar_gnu_ar;
  486. res : res_elf;
  487. dbg : dbg_stabs;
  488. script : script_unix;
  489. endian : endian_big;
  490. alignment :
  491. (
  492. procalign : 4;
  493. loopalign : 4;
  494. jumpalign : 0;
  495. jumpalignskipmax : 0;
  496. coalescealign : 0;
  497. coalescealignskipmax: 0;
  498. constalignmin : 4;
  499. constalignmax : 16;
  500. varalignmin : 4;
  501. varalignmax : 16;
  502. localalignmin : 4;
  503. localalignmax : 8;
  504. recordalignmin : 0;
  505. recordalignmax : 16;
  506. maxCrecordalign : 8
  507. );
  508. first_parm_offset : 92;
  509. stacksize : 8*1024*1024;
  510. stackalign : 8;
  511. abi : abi_default;
  512. 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-n32-S64';
  513. );
  514. system_sparc64_linux_info : tsysteminfo =
  515. (
  516. system : system_SPARC64_Linux;
  517. name : 'Linux for SPARC64';
  518. shortname : 'Linux';
  519. flags : [tf_needs_symbol_size,tf_library_needs_pic,tf_smartlink_sections,
  520. tf_needs_symbol_type,tf_files_case_sensitive,
  521. tf_pic_uses_got,
  522. tf_requires_proper_alignment,tf_safecall_exceptions, tf_safecall_clearstack,
  523. tf_has_winlike_resources,tf_supports_hidden_symbols];
  524. cpu : cpu_SPARC64;
  525. unit_env : 'LINUXUNITS';
  526. extradefines : 'UNIX;HASUNIX';
  527. exeext : '';
  528. defext : '.def';
  529. scriptext : '.sh';
  530. smartext : '.sl';
  531. unitext : '.ppu';
  532. unitlibext : '.ppl';
  533. asmext : '.s';
  534. objext : '.o';
  535. resext : '.res';
  536. resobjext : '.or';
  537. sharedlibext : '.so';
  538. staticlibext : '.a';
  539. staticlibprefix : 'libp';
  540. sharedlibprefix : 'lib';
  541. sharedClibext : '.so';
  542. staticClibext : '.a';
  543. staticClibprefix : 'lib';
  544. sharedClibprefix : 'lib';
  545. importlibprefix : 'libimp';
  546. importlibext : '.a';
  547. Cprefix : '';
  548. newline : #10;
  549. dirsep : '/';
  550. assem : as_gas;
  551. assemextern : as_gas;
  552. link : ld_none;
  553. linkextern : ld_linux;
  554. ar : ar_gnu_ar;
  555. res : res_elf;
  556. dbg : dbg_dwarf2;
  557. script : script_unix;
  558. endian : endian_big;
  559. alignment :
  560. (
  561. procalign : 16;
  562. loopalign : 8;
  563. jumpalign : 0;
  564. jumpalignskipmax : 0;
  565. coalescealign : 0;
  566. coalescealignskipmax: 0;
  567. constalignmin : 4;
  568. constalignmax : 16;
  569. varalignmin : 4;
  570. varalignmax : 16;
  571. localalignmin : 4;
  572. localalignmax : 16;
  573. recordalignmin : 0;
  574. recordalignmax : 16;
  575. maxCrecordalign : 16
  576. );
  577. first_parm_offset : 176;
  578. stacksize : 16*1024*1024;
  579. stackalign : 16;
  580. abi : abi_default;
  581. 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-n32-S64';
  582. );
  583. {$ifdef FPC_ARMHF}
  584. system_arm_linux_info : tsysteminfo =
  585. (
  586. system : system_arm_Linux;
  587. name : 'Linux for ARMHF';
  588. shortname : 'Linux';
  589. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  590. tf_requires_proper_alignment,
  591. {$ifdef tls_threadvars}
  592. tf_section_threadvars,
  593. {$endif tls_threadvars}
  594. {$ifdef llvm}
  595. tf_use_psabieh,
  596. {$endif llvm}
  597. tf_smartlink_sections,tf_pic_uses_got,
  598. tf_has_winlike_resources,tf_supports_hidden_symbols];
  599. cpu : cpu_arm;
  600. unit_env : 'LINUXUNITS';
  601. extradefines : 'UNIX;HASUNIX;CPUARMHF';
  602. exeext : '';
  603. defext : '.def';
  604. scriptext : '.sh';
  605. smartext : '.sl';
  606. unitext : '.ppu';
  607. unitlibext : '.ppl';
  608. asmext : '.s';
  609. objext : '.o';
  610. resext : '.res';
  611. resobjext : '.or';
  612. sharedlibext : '.so';
  613. staticlibext : '.a';
  614. staticlibprefix : 'libp';
  615. sharedlibprefix : 'lib';
  616. sharedClibext : '.so';
  617. staticClibext : '.a';
  618. staticClibprefix : 'lib';
  619. sharedClibprefix : 'lib';
  620. importlibprefix : 'libimp';
  621. importlibext : '.a';
  622. Cprefix : '';
  623. newline : #10;
  624. dirsep : '/';
  625. assem : as_arm_elf32;
  626. assemextern : as_gas;
  627. link : ld_none;
  628. linkextern : ld_linux;
  629. ar : ar_gnu_ar;
  630. res : res_elf;
  631. dbg : dbg_dwarf2;
  632. script : script_unix;
  633. endian : endian_little;
  634. alignment :
  635. (
  636. procalign : 4;
  637. loopalign : 4;
  638. jumpalign : 0;
  639. jumpalignskipmax : 0;
  640. coalescealign : 0;
  641. coalescealignskipmax: 0;
  642. constalignmin : 0;
  643. constalignmax : 16;
  644. varalignmin : 0;
  645. varalignmax : 16;
  646. localalignmin : 4;
  647. localalignmax : 8;
  648. recordalignmin : 0;
  649. recordalignmax : 16;
  650. maxCrecordalign : 8
  651. );
  652. first_parm_offset : 8;
  653. stacksize : 8*1024*1024;
  654. stackalign : 8;
  655. abi : abi_eabihf;
  656. 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-S64';
  657. );
  658. {$else FPC_ARMHF}
  659. {$ifdef FPC_ARMEL}
  660. system_arm_linux_info : tsysteminfo =
  661. (
  662. system : system_arm_Linux;
  663. name : 'Linux for ARMEL';
  664. shortname : 'Linux';
  665. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  666. tf_requires_proper_alignment,
  667. {$ifdef tls_threadvars}
  668. tf_section_threadvars,
  669. {$endif tls_threadvars}
  670. tf_smartlink_sections,tf_pic_uses_got,
  671. tf_has_winlike_resources,tf_supports_hidden_symbols];
  672. cpu : cpu_arm;
  673. unit_env : 'LINUXUNITS';
  674. extradefines : 'UNIX;HASUNIX;CPUARMEL';
  675. exeext : '';
  676. defext : '.def';
  677. scriptext : '.sh';
  678. smartext : '.sl';
  679. unitext : '.ppu';
  680. unitlibext : '.ppl';
  681. asmext : '.s';
  682. objext : '.o';
  683. resext : '.res';
  684. resobjext : '.or';
  685. sharedlibext : '.so';
  686. staticlibext : '.a';
  687. staticlibprefix : 'libp';
  688. sharedlibprefix : 'lib';
  689. sharedClibext : '.so';
  690. staticClibext : '.a';
  691. staticClibprefix : 'lib';
  692. sharedClibprefix : 'lib';
  693. importlibprefix : 'libimp';
  694. importlibext : '.a';
  695. Cprefix : '';
  696. newline : #10;
  697. dirsep : '/';
  698. assem : as_arm_elf32;
  699. assemextern : as_gas;
  700. link : ld_none;
  701. linkextern : ld_linux;
  702. ar : ar_gnu_ar;
  703. res : res_elf;
  704. dbg : dbg_dwarf2;
  705. script : script_unix;
  706. endian : endian_little;
  707. alignment :
  708. (
  709. procalign : 4;
  710. loopalign : 4;
  711. jumpalign : 0;
  712. jumpalignskipmax : 0;
  713. coalescealign : 0;
  714. coalescealignskipmax: 0;
  715. constalignmin : 0;
  716. constalignmax : 16;
  717. varalignmin : 0;
  718. varalignmax : 16;
  719. localalignmin : 4;
  720. localalignmax : 8;
  721. recordalignmin : 0;
  722. recordalignmax : 16;
  723. maxCrecordalign : 8
  724. );
  725. first_parm_offset : 8;
  726. stacksize : 8*1024*1024;
  727. stackalign : 8;
  728. abi : abi_eabi;
  729. 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-S64';
  730. );
  731. {$else FPC_ARMEL}
  732. {$ifdef FPC_ARMEB}
  733. system_arm_linux_info : tsysteminfo =
  734. (
  735. system : system_arm_Linux;
  736. name : 'Linux for ARMEB';
  737. shortname : 'Linux';
  738. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  739. tf_requires_proper_alignment,
  740. tf_smartlink_sections,tf_pic_uses_got,
  741. tf_has_winlike_resources,tf_supports_hidden_symbols];
  742. cpu : cpu_arm;
  743. unit_env : 'LINUXUNITS';
  744. extradefines : 'UNIX;HASUNIX;CPUARMEB';
  745. exeext : '';
  746. defext : '.def';
  747. scriptext : '.sh';
  748. smartext : '.sl';
  749. unitext : '.ppu';
  750. unitlibext : '.ppl';
  751. asmext : '.s';
  752. objext : '.o';
  753. resext : '.res';
  754. resobjext : '.or';
  755. sharedlibext : '.so';
  756. staticlibext : '.a';
  757. staticlibprefix : 'libp';
  758. sharedlibprefix : 'lib';
  759. sharedClibext : '.so';
  760. staticClibext : '.a';
  761. staticClibprefix : 'lib';
  762. sharedClibprefix : 'lib';
  763. importlibprefix : 'libimp';
  764. importlibext : '.a';
  765. Cprefix : '';
  766. newline : #10;
  767. dirsep : '/';
  768. assem : as_gas;
  769. assemextern : as_gas;
  770. link : ld_none;
  771. linkextern : ld_linux;
  772. ar : ar_gnu_ar;
  773. res : res_elf;
  774. dbg : dbg_stabs;
  775. script : script_unix;
  776. endian : endian_big;
  777. alignment :
  778. (
  779. procalign : 4;
  780. loopalign : 4;
  781. jumpalign : 0;
  782. jumpalignskipmax : 0;
  783. coalescealign : 0;
  784. coalescealignskipmax: 0;
  785. constalignmin : 0;
  786. constalignmax : 16;
  787. varalignmin : 0;
  788. varalignmax : 16;
  789. localalignmin : 4;
  790. localalignmax : 8;
  791. recordalignmin : 0;
  792. recordalignmax : 16;
  793. maxCrecordalign : 4
  794. );
  795. first_parm_offset : 8;
  796. stacksize : 8*1024*1024;
  797. stackalign : 4;
  798. abi : abi_default;
  799. llvmdatalayout: 'todo';
  800. );
  801. {$else FPC_ARMEB}
  802. system_arm_linux_info : tsysteminfo =
  803. (
  804. system : system_arm_Linux;
  805. name : 'Linux for ARM';
  806. shortname : 'Linux';
  807. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  808. tf_requires_proper_alignment,
  809. tf_smartlink_sections,tf_has_winlike_resources,tf_supports_hidden_symbols];
  810. cpu : cpu_arm;
  811. unit_env : 'LINUXUNITS';
  812. extradefines : 'UNIX;HASUNIX';
  813. exeext : '';
  814. defext : '.def';
  815. scriptext : '.sh';
  816. smartext : '.sl';
  817. unitext : '.ppu';
  818. unitlibext : '.ppl';
  819. asmext : '.s';
  820. objext : '.o';
  821. resext : '.res';
  822. resobjext : '.or';
  823. sharedlibext : '.so';
  824. staticlibext : '.a';
  825. staticlibprefix : 'libp';
  826. sharedlibprefix : 'lib';
  827. sharedClibext : '.so';
  828. staticClibext : '.a';
  829. staticClibprefix : 'lib';
  830. sharedClibprefix : 'lib';
  831. importlibprefix : 'libimp';
  832. importlibext : '.a';
  833. Cprefix : '';
  834. newline : #10;
  835. dirsep : '/';
  836. assem : as_gas;
  837. assemextern : as_gas;
  838. link : ld_none;
  839. linkextern : ld_linux;
  840. ar : ar_gnu_ar;
  841. res : res_elf;
  842. dbg : dbg_stabs;
  843. script : script_unix;
  844. endian : endian_little;
  845. alignment :
  846. (
  847. procalign : 4;
  848. loopalign : 4;
  849. jumpalign : 0;
  850. jumpalignskipmax : 0;
  851. coalescealign : 0;
  852. coalescealignskipmax: 0;
  853. constalignmin : 0;
  854. constalignmax : 16;
  855. varalignmin : 0;
  856. varalignmax : 16;
  857. localalignmin : 4;
  858. localalignmax : 4;
  859. recordalignmin : 0;
  860. recordalignmax : 16;
  861. maxCrecordalign : 4
  862. );
  863. first_parm_offset : 8;
  864. stacksize : 8*1024*1024;
  865. stackalign : 4;
  866. abi : abi_default;
  867. 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:32:64-v128:32:128-a0:0:32-n32-S32';
  868. );
  869. {$endif FPC_ARMEB}
  870. {$endif FPC_ARMEL}
  871. {$endif FPC_ARMHF}
  872. system_aarch64_linux_info : tsysteminfo =
  873. (
  874. system : system_aarch64_linux;
  875. name : 'Linux for AArch64';
  876. shortname : 'Linux';
  877. flags : [tf_needs_symbol_size,
  878. tf_needs_symbol_type,
  879. tf_files_case_sensitive,
  880. tf_requires_proper_alignment,
  881. tf_smartlink_sections,tf_pic_uses_got,
  882. tf_has_winlike_resources
  883. {$ifdef llvm}
  884. ,tf_use_psabieh
  885. {$endif llvm}
  886. ,tf_supports_hidden_symbols
  887. ];
  888. cpu : cpu_aarch64;
  889. unit_env : 'LINUXUNITS';
  890. extradefines : 'UNIX;HASUNIX';
  891. exeext : '';
  892. defext : '.def';
  893. scriptext : '.sh';
  894. smartext : '.sl';
  895. unitext : '.ppu';
  896. unitlibext : '.ppl';
  897. asmext : '.s';
  898. objext : '.o';
  899. resext : '.res';
  900. resobjext : '.or';
  901. sharedlibext : '.so';
  902. staticlibext : '.a';
  903. staticlibprefix : 'libp';
  904. sharedlibprefix : 'lib';
  905. sharedClibext : '.so';
  906. staticClibext : '.a';
  907. staticClibprefix : 'lib';
  908. sharedClibprefix : 'lib';
  909. importlibprefix : 'libimp';
  910. importlibext : '.a';
  911. Cprefix : '';
  912. newline : #10;
  913. dirsep : '/';
  914. assem : as_gas;
  915. assemextern : as_gas;
  916. link : ld_none;
  917. linkextern : ld_linux;
  918. ar : ar_gnu_ar;
  919. res : res_elf;
  920. dbg : dbg_dwarf2;
  921. script : script_unix;
  922. endian : endian_little;
  923. alignment :
  924. (
  925. procalign : 8;
  926. loopalign : 4;
  927. jumpalign : 0;
  928. jumpalignskipmax : 0;
  929. coalescealign : 0;
  930. coalescealignskipmax: 0;
  931. constalignmin : 0;
  932. constalignmax : 16;
  933. varalignmin : 0;
  934. varalignmax : 16;
  935. localalignmin : 4;
  936. localalignmax : 16;
  937. recordalignmin : 0;
  938. recordalignmax : 16;
  939. maxCrecordalign : 16
  940. );
  941. first_parm_offset : 16;
  942. stacksize : 8*1024*1024;
  943. stackalign : 16;
  944. abi : abi_default;
  945. 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-n32:64-S128'
  946. );
  947. system_mipseb_linux_info : tsysteminfo =
  948. (
  949. system : system_mipseb_LINUX;
  950. name : 'Linux for MIPSEB';
  951. shortname : 'Linux';
  952. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  953. tf_requires_proper_alignment,tf_library_needs_pic,
  954. tf_pic_uses_got,tf_safecall_exceptions,
  955. tf_smartlink_sections,tf_has_winlike_resources,tf_supports_hidden_symbols];
  956. cpu : cpu_mipseb;
  957. unit_env : 'LINUXUNITS';
  958. extradefines : 'UNIX;HASUNIX';
  959. exeext : '';
  960. defext : '.def';
  961. scriptext : '.sh';
  962. smartext : '.sl';
  963. unitext : '.ppu';
  964. unitlibext : '.ppl';
  965. asmext : '.s';
  966. objext : '.o';
  967. resext : '.res';
  968. resobjext : '.or';
  969. sharedlibext : '.so';
  970. staticlibext : '.a';
  971. staticlibprefix : 'libp';
  972. sharedlibprefix : 'lib';
  973. sharedClibext : '.so';
  974. staticClibext : '.a';
  975. staticClibprefix : 'lib';
  976. sharedClibprefix : 'lib';
  977. importlibprefix : 'libimp';
  978. importlibext : '.a';
  979. // p_ext_support : false;
  980. Cprefix : '';
  981. newline : #10;
  982. dirsep : '/';
  983. assem : as_gas;
  984. assemextern : as_gas;
  985. link : ld_none;
  986. linkextern : ld_linux;
  987. ar : ar_gnu_ar;
  988. res : res_elf;
  989. dbg : dbg_stabs;
  990. script : script_unix;
  991. endian : endian_big;
  992. alignment :
  993. (
  994. procalign : 4;
  995. loopalign : 4;
  996. jumpalign : 0;
  997. jumpalignskipmax : 0;
  998. coalescealign : 0;
  999. coalescealignskipmax: 0;
  1000. constalignmin : 0;
  1001. constalignmax : 8;
  1002. varalignmin : 0;
  1003. varalignmax : 8;
  1004. localalignmin : 4;
  1005. localalignmax : 8;
  1006. recordalignmin : 0;
  1007. recordalignmax : 8;
  1008. maxCrecordalign : 8
  1009. );
  1010. first_parm_offset : 0;
  1011. stacksize : 32*1024*1024;
  1012. stackalign : 8;
  1013. abi : abi_default;
  1014. llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
  1015. );
  1016. system_mipsel_linux_info : tsysteminfo =
  1017. (
  1018. system : system_mipsel_LINUX;
  1019. name : 'Linux for MIPSEL';
  1020. shortname : 'Linux';
  1021. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  1022. tf_requires_proper_alignment,tf_library_needs_pic,
  1023. tf_pic_uses_got,tf_safecall_exceptions,
  1024. tf_smartlink_sections,tf_has_winlike_resources,tf_supports_hidden_symbols];
  1025. cpu : cpu_mipsel;
  1026. unit_env : 'LINUXUNITS';
  1027. extradefines : 'UNIX;HASUNIX';
  1028. exeext : '';
  1029. defext : '.def';
  1030. scriptext : '.sh';
  1031. smartext : '.sl';
  1032. unitext : '.ppu';
  1033. unitlibext : '.ppl';
  1034. asmext : '.s';
  1035. objext : '.o';
  1036. resext : '.res';
  1037. resobjext : '.or';
  1038. sharedlibext : '.so';
  1039. staticlibext : '.a';
  1040. staticlibprefix : 'libp';
  1041. sharedlibprefix : 'lib';
  1042. sharedClibext : '.so';
  1043. staticClibext : '.a';
  1044. staticClibprefix : 'lib';
  1045. sharedClibprefix : 'lib';
  1046. importlibprefix : 'libimp';
  1047. importlibext : '.a';
  1048. // p_ext_support : false;
  1049. Cprefix : '';
  1050. newline : #10;
  1051. dirsep : '/';
  1052. assem : as_gas;
  1053. assemextern : as_gas;
  1054. link : ld_none;
  1055. linkextern : ld_linux;
  1056. ar : ar_gnu_ar;
  1057. res : res_elf;
  1058. dbg : dbg_stabs;
  1059. script : script_unix;
  1060. endian : endian_little;
  1061. alignment :
  1062. (
  1063. procalign : 4;
  1064. loopalign : 4;
  1065. jumpalign : 0;
  1066. jumpalignskipmax : 0;
  1067. coalescealign : 0;
  1068. coalescealignskipmax: 0;
  1069. constalignmin : 0;
  1070. constalignmax : 8;
  1071. varalignmin : 0;
  1072. varalignmax : 8;
  1073. localalignmin : 4;
  1074. localalignmax : 8;
  1075. recordalignmin : 0;
  1076. recordalignmax : 8;
  1077. maxCrecordalign : 8
  1078. );
  1079. first_parm_offset : 0;
  1080. stacksize : 32*1024*1024;
  1081. stackalign : 8;
  1082. abi : abi_default;
  1083. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
  1084. );
  1085. system_riscv32_linux_info : tsysteminfo =
  1086. (
  1087. system : system_riscv32_linux;
  1088. name : 'Linux for RISC-V 32';
  1089. shortname : 'Linux';
  1090. flags : [tf_needs_symbol_size,tf_smartlink_sections,
  1091. tf_needs_symbol_type,tf_files_case_sensitive,
  1092. tf_requires_proper_alignment,tf_has_winlike_resources,
  1093. tf_supports_hidden_symbols];
  1094. cpu : cpu_riscv32;
  1095. unit_env : 'LINUXUNITS';
  1096. extradefines : 'UNIX;HASUNIX';
  1097. exeext : '';
  1098. defext : '.def';
  1099. scriptext : '.sh';
  1100. smartext : '.sl';
  1101. unitext : '.ppu';
  1102. unitlibext : '.ppl';
  1103. asmext : '.s';
  1104. objext : '.o';
  1105. resext : '.res';
  1106. resobjext : '.or';
  1107. sharedlibext : '.so';
  1108. staticlibext : '.a';
  1109. staticlibprefix : 'libp';
  1110. sharedlibprefix : 'lib';
  1111. sharedClibext : '.so';
  1112. staticClibext : '.a';
  1113. staticClibprefix : 'lib';
  1114. sharedClibprefix : 'lib';
  1115. importlibprefix : 'libimp';
  1116. importlibext : '.a';
  1117. // p_ext_support : false;
  1118. Cprefix : '';
  1119. newline : #10;
  1120. dirsep : '/';
  1121. assem : as_gas;
  1122. assemextern : as_gas;
  1123. link : ld_none;
  1124. linkextern : ld_linux;
  1125. ar : ar_gnu_ar;
  1126. res : res_elf;
  1127. dbg : dbg_dwarf2;
  1128. script : script_unix;
  1129. endian : endian_little;
  1130. alignment :
  1131. (
  1132. procalign : 4;
  1133. loopalign : 4;
  1134. jumpalign : 0;
  1135. jumpalignskipmax : 0;
  1136. coalescealign : 0;
  1137. coalescealignskipmax: 0;
  1138. constalignmin : 0;
  1139. constalignmax : 8;
  1140. varalignmin : 0;
  1141. varalignmax : 8;
  1142. localalignmin : 4;
  1143. localalignmax : 8;
  1144. recordalignmin : 0;
  1145. recordalignmax : 8;
  1146. maxCrecordalign : 8
  1147. );
  1148. first_parm_offset : 0;
  1149. stacksize : 32*1024*1024;
  1150. stackalign : 8;
  1151. abi : abi_riscv_hf;
  1152. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
  1153. );
  1154. system_riscv64_linux_info : tsysteminfo =
  1155. (
  1156. system : system_riscv64_linux;
  1157. name : 'Linux for RISC-V 64';
  1158. shortname : 'Linux';
  1159. flags : [tf_needs_symbol_size,tf_smartlink_sections,
  1160. tf_needs_symbol_type,tf_files_case_sensitive,
  1161. tf_requires_proper_alignment,tf_has_winlike_resources,
  1162. tf_supports_hidden_symbols
  1163. ];
  1164. cpu : cpu_riscv64;
  1165. unit_env : 'LINUXUNITS';
  1166. extradefines : 'UNIX;HASUNIX';
  1167. exeext : '';
  1168. defext : '.def';
  1169. scriptext : '.sh';
  1170. smartext : '.sl';
  1171. unitext : '.ppu';
  1172. unitlibext : '.ppl';
  1173. asmext : '.s';
  1174. objext : '.o';
  1175. resext : '.res';
  1176. resobjext : '.or';
  1177. sharedlibext : '.so';
  1178. staticlibext : '.a';
  1179. staticlibprefix : 'libp';
  1180. sharedlibprefix : 'lib';
  1181. sharedClibext : '.so';
  1182. staticClibext : '.a';
  1183. staticClibprefix : 'lib';
  1184. sharedClibprefix : 'lib';
  1185. importlibprefix : 'libimp';
  1186. importlibext : '.a';
  1187. // p_ext_support : false;
  1188. Cprefix : '';
  1189. newline : #10;
  1190. dirsep : '/';
  1191. assem : as_gas;
  1192. assemextern : as_gas;
  1193. link : ld_none;
  1194. linkextern : ld_linux;
  1195. ar : ar_gnu_ar;
  1196. res : res_elf;
  1197. dbg : dbg_dwarf2;
  1198. script : script_unix;
  1199. endian : endian_little;
  1200. alignment :
  1201. (
  1202. procalign : 8;
  1203. loopalign : 4;
  1204. jumpalign : 0;
  1205. jumpalignskipmax : 0;
  1206. coalescealign : 0;
  1207. coalescealignskipmax: 0;
  1208. constalignmin : 4;
  1209. constalignmax : 16;
  1210. varalignmin : 4;
  1211. varalignmax : 16;
  1212. localalignmin : 8;
  1213. localalignmax : 16;
  1214. recordalignmin : 0;
  1215. recordalignmax : 16;
  1216. maxCrecordalign : 16
  1217. );
  1218. first_parm_offset : 16;
  1219. stacksize : 10*1024*1024;
  1220. stackalign : 16;
  1221. abi : abi_riscv_hf;
  1222. 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-f128:64:64-v128:128:128-n32:64';
  1223. );
  1224. implementation
  1225. initialization
  1226. {$ifdef CPUI386}
  1227. {$ifdef linux}
  1228. { some FreeBSD versions define linux as well }
  1229. {$ifndef FreeBSD}
  1230. set_source_info(system_i386_linux_info);
  1231. {$endif FreeBSD}
  1232. {$endif}
  1233. {$endif CPUI386}
  1234. {$ifdef CPU68}
  1235. {$ifdef linux}
  1236. set_source_info(system_m68k_linux_info);
  1237. {$endif linux}
  1238. {$endif CPU68}
  1239. {$ifdef CPUX86_64}
  1240. {$ifdef linux}
  1241. set_source_info(system_x86_64_linux_info);
  1242. {$endif linux}
  1243. {$endif CPUX86_64}
  1244. {$ifdef CPUSPARC}
  1245. {$ifdef linux}
  1246. set_source_info(system_sparc_linux_info);
  1247. {$endif linux}
  1248. {$endif CPUSPARC}
  1249. {$ifdef CPUSPARC64}
  1250. {$ifdef linux}
  1251. set_source_info(system_sparc64_linux_info);
  1252. {$endif linux}
  1253. {$endif CPUSPARC64}
  1254. {$ifdef CPUPOWERPC32}
  1255. {$ifdef linux}
  1256. set_source_info(system_powerpc_linux_info);
  1257. {$endif linux}
  1258. {$endif CPUPOWERPC32}
  1259. {$ifdef CPUPOWERPC64}
  1260. {$ifdef linux}
  1261. set_source_info(system_powerpc64_linux_info);
  1262. { on a little endian PPC64 platform -> source is elfv2 }
  1263. {$ifdef FPC_LITTLE_ENDIAN}
  1264. source_info.endian:=endian_little;
  1265. source_info.abi:=abi_powerpc_elfv2;
  1266. {$endif}
  1267. {$endif linux}
  1268. {$endif CPUPOWERPC64}
  1269. {$ifdef CPUARM}
  1270. {$ifdef linux}
  1271. set_source_info(system_arm_linux_info);
  1272. {$endif linux}
  1273. {$endif CPUARM}
  1274. {$ifdef cpuaarch64}
  1275. {$ifdef linux}
  1276. set_source_info(system_aarch64_linux_info);
  1277. {$endif linux}
  1278. {$endif cpuaarch64}
  1279. {$ifdef CPUMIPSEB}
  1280. {$ifdef linux}
  1281. set_source_info(system_mipseb_linux_info);
  1282. {$endif linux}
  1283. {$endif CPUMIPSEB}
  1284. {$ifdef CPUMIPSEL}
  1285. {$ifdef linux}
  1286. set_source_info(system_mipsel_linux_info);
  1287. {$endif linux}
  1288. {$endif CPUMIPSEL}
  1289. {$ifdef CPURISCV32}
  1290. {$ifdef linux}
  1291. set_source_info(system_riscv32_linux_info);
  1292. {$endif linux}
  1293. {$endif CPURISCV32}
  1294. {$ifdef CPURISCV64}
  1295. {$ifdef linux}
  1296. set_source_info(system_riscv64_linux_info);
  1297. {$endif linux}
  1298. {$endif CPURISCV64}
  1299. end.