i_linux.pas 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316
  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. ];
  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_stabs;
  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 : 4;
  96. abi : abi_default;
  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];
  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];
  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];
  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. cpu : cpu_powerpc64;
  310. unit_env : '';
  311. extradefines : 'UNIX;HASUNIX';
  312. exeext : '';
  313. defext : '.def';
  314. scriptext : '.sh';
  315. smartext : '.sl';
  316. unitext : '.ppu';
  317. unitlibext : '.ppl';
  318. asmext : '.s';
  319. objext : '.o';
  320. resext : '.res';
  321. resobjext : '.or';
  322. sharedlibext : '.so';
  323. staticlibext : '.a';
  324. staticlibprefix : 'libp';
  325. sharedlibprefix : 'lib';
  326. sharedClibext : '.so';
  327. staticClibext : '.a';
  328. staticClibprefix : 'lib';
  329. sharedClibprefix : 'lib';
  330. importlibprefix : 'libimp';
  331. importlibext : '.a';
  332. Cprefix : '';
  333. newline : #10;
  334. dirsep : '/';
  335. assem : as_gas;
  336. assemextern : as_gas;
  337. link : ld_none;
  338. linkextern : ld_linux;
  339. ar : ar_gnu_ar;
  340. res : res_elf;
  341. dbg : dbg_dwarf2;
  342. script : script_unix;
  343. endian : endian_big;
  344. alignment :
  345. (
  346. procalign : 8;
  347. loopalign : 4;
  348. jumpalign : 0;
  349. jumpalignskipmax : 0;
  350. coalescealign : 0;
  351. coalescealignskipmax: 0;
  352. constalignmin : 4;
  353. constalignmax : 16;
  354. varalignmin : 4;
  355. varalignmax : 16;
  356. localalignmin : 0;
  357. localalignmax : 16;
  358. recordalignmin : 0;
  359. recordalignmax : 16;
  360. maxCrecordalign : 16
  361. );
  362. first_parm_offset : 8;
  363. stacksize : 10*1024*1024;
  364. stackalign : 16;
  365. abi : abi_powerpc_sysv;
  366. 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';
  367. );
  368. system_x86_64_linux_info : tsysteminfo =
  369. (
  370. system : system_x86_64_LINUX;
  371. name : 'Linux for x86-64';
  372. shortname : 'Linux';
  373. flags : [tf_smartlink_sections,tf_needs_symbol_size,tf_needs_dwarf_cfi,
  374. {$ifdef tls_threadvars}
  375. tf_section_threadvars,
  376. {$endif tls_threadvars}
  377. tf_library_needs_pic,tf_needs_symbol_type,tf_files_case_sensitive,
  378. tf_has_winlike_resources,tf_safecall_exceptions,tf_safecall_clearstack
  379. {$ifdef llvm},tf_use_psabieh{$endif}
  380. {$ifdef psabieh}
  381. ,tf_use_psabieh
  382. {$endif psabieh}
  383. ];
  384. cpu : cpu_x86_64;
  385. unit_env : 'LINUXUNITS';
  386. extradefines : 'UNIX;HASUNIX';
  387. exeext : '';
  388. defext : '.def';
  389. scriptext : '.sh';
  390. smartext : '.sl';
  391. unitext : '.ppu';
  392. unitlibext : '.ppl';
  393. asmext : '.s';
  394. objext : '.o';
  395. resext : '.res';
  396. resobjext : '.or';
  397. sharedlibext : '.so';
  398. staticlibext : '.a';
  399. staticlibprefix : 'libp';
  400. sharedlibprefix : 'lib';
  401. sharedClibext : '.so';
  402. staticClibext : '.a';
  403. staticClibprefix : 'lib';
  404. sharedClibprefix : 'lib';
  405. importlibprefix : 'libimp';
  406. importlibext : '.a';
  407. Cprefix : '';
  408. newline : #10;
  409. dirsep : '/';
  410. assem : as_x86_64_elf64;
  411. assemextern : as_gas;
  412. link : ld_none;
  413. linkextern : ld_linux;
  414. ar : ar_gnu_ar;
  415. res : res_elf;
  416. dbg : dbg_dwarf2;
  417. script : script_unix;
  418. endian : endian_little;
  419. alignment :
  420. (
  421. procalign : 16;
  422. loopalign : 8;
  423. jumpalign : 16;
  424. jumpalignskipmax : 10;
  425. coalescealign : 0;
  426. coalescealignskipmax: 0;
  427. constalignmin : 0;
  428. constalignmax : 16;
  429. varalignmin : 0;
  430. varalignmax : 16;
  431. localalignmin : 4;
  432. localalignmax : 16;
  433. recordalignmin : 0;
  434. recordalignmax : 16;
  435. maxCrecordalign : 16
  436. );
  437. first_parm_offset : 16;
  438. stacksize : 8*1024*1024;
  439. stackalign : 16;
  440. abi : abi_default;
  441. 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';
  442. );
  443. system_sparc_linux_info : tsysteminfo =
  444. (
  445. system : system_SPARC_Linux;
  446. name : 'Linux for SPARC';
  447. shortname : 'Linux';
  448. flags : [tf_needs_symbol_size,tf_library_needs_pic,tf_smartlink_sections,
  449. tf_needs_symbol_type,tf_files_case_sensitive,
  450. tf_pic_uses_got,
  451. tf_requires_proper_alignment,tf_safecall_exceptions, tf_safecall_clearstack,
  452. tf_has_winlike_resources];
  453. cpu : cpu_SPARC;
  454. unit_env : 'LINUXUNITS';
  455. extradefines : 'UNIX;HASUNIX';
  456. exeext : '';
  457. defext : '.def';
  458. scriptext : '.sh';
  459. smartext : '.sl';
  460. unitext : '.ppu';
  461. unitlibext : '.ppl';
  462. asmext : '.s';
  463. objext : '.o';
  464. resext : '.res';
  465. resobjext : '.or';
  466. sharedlibext : '.so';
  467. staticlibext : '.a';
  468. staticlibprefix : 'libp';
  469. sharedlibprefix : 'lib';
  470. sharedClibext : '.so';
  471. staticClibext : '.a';
  472. staticClibprefix : 'lib';
  473. sharedClibprefix : 'lib';
  474. importlibprefix : 'libimp';
  475. importlibext : '.a';
  476. Cprefix : '';
  477. newline : #10;
  478. dirsep : '/';
  479. assem : as_gas;
  480. assemextern : as_gas;
  481. link : ld_none;
  482. linkextern : ld_linux;
  483. ar : ar_gnu_ar;
  484. res : res_elf;
  485. dbg : dbg_stabs;
  486. script : script_unix;
  487. endian : endian_big;
  488. alignment :
  489. (
  490. procalign : 4;
  491. loopalign : 4;
  492. jumpalign : 0;
  493. jumpalignskipmax : 0;
  494. coalescealign : 0;
  495. coalescealignskipmax: 0;
  496. constalignmin : 4;
  497. constalignmax : 16;
  498. varalignmin : 4;
  499. varalignmax : 16;
  500. localalignmin : 4;
  501. localalignmax : 8;
  502. recordalignmin : 0;
  503. recordalignmax : 16;
  504. maxCrecordalign : 8
  505. );
  506. first_parm_offset : 92;
  507. stacksize : 8*1024*1024;
  508. stackalign : 8;
  509. abi : abi_default;
  510. 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';
  511. );
  512. system_sparc64_linux_info : tsysteminfo =
  513. (
  514. system : system_SPARC64_Linux;
  515. name : 'Linux for SPARC64';
  516. shortname : 'Linux';
  517. flags : [tf_needs_symbol_size,tf_library_needs_pic,tf_smartlink_sections,
  518. tf_needs_symbol_type,tf_files_case_sensitive,
  519. tf_pic_uses_got,
  520. tf_requires_proper_alignment,tf_safecall_exceptions, tf_safecall_clearstack,
  521. tf_has_winlike_resources];
  522. cpu : cpu_SPARC64;
  523. unit_env : 'LINUXUNITS';
  524. extradefines : 'UNIX;HASUNIX';
  525. exeext : '';
  526. defext : '.def';
  527. scriptext : '.sh';
  528. smartext : '.sl';
  529. unitext : '.ppu';
  530. unitlibext : '.ppl';
  531. asmext : '.s';
  532. objext : '.o';
  533. resext : '.res';
  534. resobjext : '.or';
  535. sharedlibext : '.so';
  536. staticlibext : '.a';
  537. staticlibprefix : 'libp';
  538. sharedlibprefix : 'lib';
  539. sharedClibext : '.so';
  540. staticClibext : '.a';
  541. staticClibprefix : 'lib';
  542. sharedClibprefix : 'lib';
  543. importlibprefix : 'libimp';
  544. importlibext : '.a';
  545. Cprefix : '';
  546. newline : #10;
  547. dirsep : '/';
  548. assem : as_gas;
  549. assemextern : as_gas;
  550. link : ld_none;
  551. linkextern : ld_linux;
  552. ar : ar_gnu_ar;
  553. res : res_elf;
  554. dbg : dbg_dwarf2;
  555. script : script_unix;
  556. endian : endian_big;
  557. alignment :
  558. (
  559. procalign : 16;
  560. loopalign : 8;
  561. jumpalign : 0;
  562. jumpalignskipmax : 0;
  563. coalescealign : 0;
  564. coalescealignskipmax: 0;
  565. constalignmin : 4;
  566. constalignmax : 16;
  567. varalignmin : 4;
  568. varalignmax : 16;
  569. localalignmin : 4;
  570. localalignmax : 16;
  571. recordalignmin : 0;
  572. recordalignmax : 16;
  573. maxCrecordalign : 16
  574. );
  575. first_parm_offset : 176;
  576. stacksize : 16*1024*1024;
  577. stackalign : 16;
  578. abi : abi_default;
  579. 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';
  580. );
  581. {$ifdef FPC_ARMHF}
  582. system_arm_linux_info : tsysteminfo =
  583. (
  584. system : system_arm_Linux;
  585. name : 'Linux for ARMHF';
  586. shortname : 'Linux';
  587. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  588. tf_requires_proper_alignment,
  589. {$ifdef tls_threadvars}
  590. tf_section_threadvars,
  591. {$endif tls_threadvars}
  592. {$ifdef llvm}
  593. tf_use_psabieh,
  594. {$endif llvm}
  595. tf_smartlink_sections,tf_pic_uses_got,
  596. tf_has_winlike_resources];
  597. cpu : cpu_arm;
  598. unit_env : 'LINUXUNITS';
  599. extradefines : 'UNIX;HASUNIX;CPUARMHF';
  600. exeext : '';
  601. defext : '.def';
  602. scriptext : '.sh';
  603. smartext : '.sl';
  604. unitext : '.ppu';
  605. unitlibext : '.ppl';
  606. asmext : '.s';
  607. objext : '.o';
  608. resext : '.res';
  609. resobjext : '.or';
  610. sharedlibext : '.so';
  611. staticlibext : '.a';
  612. staticlibprefix : 'libp';
  613. sharedlibprefix : 'lib';
  614. sharedClibext : '.so';
  615. staticClibext : '.a';
  616. staticClibprefix : 'lib';
  617. sharedClibprefix : 'lib';
  618. importlibprefix : 'libimp';
  619. importlibext : '.a';
  620. Cprefix : '';
  621. newline : #10;
  622. dirsep : '/';
  623. assem : as_arm_elf32;
  624. assemextern : as_gas;
  625. link : ld_none;
  626. linkextern : ld_linux;
  627. ar : ar_gnu_ar;
  628. res : res_elf;
  629. dbg : dbg_stabs;
  630. script : script_unix;
  631. endian : endian_little;
  632. alignment :
  633. (
  634. procalign : 4;
  635. loopalign : 4;
  636. jumpalign : 0;
  637. jumpalignskipmax : 0;
  638. coalescealign : 0;
  639. coalescealignskipmax: 0;
  640. constalignmin : 0;
  641. constalignmax : 16;
  642. varalignmin : 0;
  643. varalignmax : 16;
  644. localalignmin : 4;
  645. localalignmax : 8;
  646. recordalignmin : 0;
  647. recordalignmax : 16;
  648. maxCrecordalign : 8
  649. );
  650. first_parm_offset : 8;
  651. stacksize : 8*1024*1024;
  652. stackalign : 8;
  653. abi : abi_eabihf;
  654. 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';
  655. );
  656. {$else FPC_ARMHF}
  657. {$ifdef FPC_ARMEL}
  658. system_arm_linux_info : tsysteminfo =
  659. (
  660. system : system_arm_Linux;
  661. name : 'Linux for ARMEL';
  662. shortname : 'Linux';
  663. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  664. tf_requires_proper_alignment,
  665. {$ifdef tls_threadvars}
  666. tf_section_threadvars,
  667. {$endif tls_threadvars}
  668. tf_smartlink_sections,tf_pic_uses_got,
  669. tf_has_winlike_resources];
  670. cpu : cpu_arm;
  671. unit_env : 'LINUXUNITS';
  672. extradefines : 'UNIX;HASUNIX;CPUARMEL';
  673. exeext : '';
  674. defext : '.def';
  675. scriptext : '.sh';
  676. smartext : '.sl';
  677. unitext : '.ppu';
  678. unitlibext : '.ppl';
  679. asmext : '.s';
  680. objext : '.o';
  681. resext : '.res';
  682. resobjext : '.or';
  683. sharedlibext : '.so';
  684. staticlibext : '.a';
  685. staticlibprefix : 'libp';
  686. sharedlibprefix : 'lib';
  687. sharedClibext : '.so';
  688. staticClibext : '.a';
  689. staticClibprefix : 'lib';
  690. sharedClibprefix : 'lib';
  691. importlibprefix : 'libimp';
  692. importlibext : '.a';
  693. Cprefix : '';
  694. newline : #10;
  695. dirsep : '/';
  696. assem : as_arm_elf32;
  697. assemextern : as_gas;
  698. link : ld_none;
  699. linkextern : ld_linux;
  700. ar : ar_gnu_ar;
  701. res : res_elf;
  702. dbg : dbg_stabs;
  703. script : script_unix;
  704. endian : endian_little;
  705. alignment :
  706. (
  707. procalign : 4;
  708. loopalign : 4;
  709. jumpalign : 0;
  710. jumpalignskipmax : 0;
  711. coalescealign : 0;
  712. coalescealignskipmax: 0;
  713. constalignmin : 0;
  714. constalignmax : 16;
  715. varalignmin : 0;
  716. varalignmax : 16;
  717. localalignmin : 4;
  718. localalignmax : 8;
  719. recordalignmin : 0;
  720. recordalignmax : 16;
  721. maxCrecordalign : 8
  722. );
  723. first_parm_offset : 8;
  724. stacksize : 8*1024*1024;
  725. stackalign : 8;
  726. abi : abi_eabi;
  727. 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';
  728. );
  729. {$else FPC_ARMEL}
  730. {$ifdef FPC_ARMEB}
  731. system_arm_linux_info : tsysteminfo =
  732. (
  733. system : system_arm_Linux;
  734. name : 'Linux for ARMEB';
  735. shortname : 'Linux';
  736. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  737. tf_requires_proper_alignment,
  738. tf_smartlink_sections,tf_pic_uses_got,
  739. tf_has_winlike_resources];
  740. cpu : cpu_arm;
  741. unit_env : 'LINUXUNITS';
  742. extradefines : 'UNIX;HASUNIX;CPUARMEB';
  743. exeext : '';
  744. defext : '.def';
  745. scriptext : '.sh';
  746. smartext : '.sl';
  747. unitext : '.ppu';
  748. unitlibext : '.ppl';
  749. asmext : '.s';
  750. objext : '.o';
  751. resext : '.res';
  752. resobjext : '.or';
  753. sharedlibext : '.so';
  754. staticlibext : '.a';
  755. staticlibprefix : 'libp';
  756. sharedlibprefix : 'lib';
  757. sharedClibext : '.so';
  758. staticClibext : '.a';
  759. staticClibprefix : 'lib';
  760. sharedClibprefix : 'lib';
  761. importlibprefix : 'libimp';
  762. importlibext : '.a';
  763. Cprefix : '';
  764. newline : #10;
  765. dirsep : '/';
  766. assem : as_gas;
  767. assemextern : as_gas;
  768. link : ld_none;
  769. linkextern : ld_linux;
  770. ar : ar_gnu_ar;
  771. res : res_elf;
  772. dbg : dbg_stabs;
  773. script : script_unix;
  774. endian : endian_big;
  775. alignment :
  776. (
  777. procalign : 4;
  778. loopalign : 4;
  779. jumpalign : 0;
  780. jumpalignskipmax : 0;
  781. coalescealign : 0;
  782. coalescealignskipmax: 0;
  783. constalignmin : 0;
  784. constalignmax : 16;
  785. varalignmin : 0;
  786. varalignmax : 16;
  787. localalignmin : 4;
  788. localalignmax : 8;
  789. recordalignmin : 0;
  790. recordalignmax : 16;
  791. maxCrecordalign : 4
  792. );
  793. first_parm_offset : 8;
  794. stacksize : 8*1024*1024;
  795. stackalign : 4;
  796. abi : abi_default;
  797. llvmdatalayout: 'todo';
  798. );
  799. {$else FPC_ARMEB}
  800. system_arm_linux_info : tsysteminfo =
  801. (
  802. system : system_arm_Linux;
  803. name : 'Linux for ARM';
  804. shortname : 'Linux';
  805. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  806. tf_requires_proper_alignment,
  807. tf_smartlink_sections,tf_has_winlike_resources];
  808. cpu : cpu_arm;
  809. unit_env : 'LINUXUNITS';
  810. extradefines : 'UNIX;HASUNIX';
  811. exeext : '';
  812. defext : '.def';
  813. scriptext : '.sh';
  814. smartext : '.sl';
  815. unitext : '.ppu';
  816. unitlibext : '.ppl';
  817. asmext : '.s';
  818. objext : '.o';
  819. resext : '.res';
  820. resobjext : '.or';
  821. sharedlibext : '.so';
  822. staticlibext : '.a';
  823. staticlibprefix : 'libp';
  824. sharedlibprefix : 'lib';
  825. sharedClibext : '.so';
  826. staticClibext : '.a';
  827. staticClibprefix : 'lib';
  828. sharedClibprefix : 'lib';
  829. importlibprefix : 'libimp';
  830. importlibext : '.a';
  831. Cprefix : '';
  832. newline : #10;
  833. dirsep : '/';
  834. assem : as_gas;
  835. assemextern : as_gas;
  836. link : ld_none;
  837. linkextern : ld_linux;
  838. ar : ar_gnu_ar;
  839. res : res_elf;
  840. dbg : dbg_stabs;
  841. script : script_unix;
  842. endian : endian_little;
  843. alignment :
  844. (
  845. procalign : 4;
  846. loopalign : 4;
  847. jumpalign : 0;
  848. jumpalignskipmax : 0;
  849. coalescealign : 0;
  850. coalescealignskipmax: 0;
  851. constalignmin : 0;
  852. constalignmax : 16;
  853. varalignmin : 0;
  854. varalignmax : 16;
  855. localalignmin : 4;
  856. localalignmax : 4;
  857. recordalignmin : 0;
  858. recordalignmax : 16;
  859. maxCrecordalign : 4
  860. );
  861. first_parm_offset : 8;
  862. stacksize : 8*1024*1024;
  863. stackalign : 4;
  864. abi : abi_default;
  865. 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';
  866. );
  867. {$endif FPC_ARMEB}
  868. {$endif FPC_ARMEL}
  869. {$endif FPC_ARMHF}
  870. system_aarch64_linux_info : tsysteminfo =
  871. (
  872. system : system_aarch64_linux;
  873. name : 'Linux for AArch64';
  874. shortname : 'Linux';
  875. flags : [tf_needs_symbol_size,
  876. tf_needs_symbol_type,
  877. tf_files_case_sensitive,
  878. tf_requires_proper_alignment,
  879. tf_smartlink_sections,tf_pic_uses_got,
  880. tf_has_winlike_resources
  881. {$ifdef llvm}
  882. ,tf_use_psabieh
  883. {$endif llvm}
  884. ];
  885. cpu : cpu_aarch64;
  886. unit_env : 'LINUXUNITS';
  887. extradefines : 'UNIX;HASUNIX';
  888. exeext : '';
  889. defext : '.def';
  890. scriptext : '.sh';
  891. smartext : '.sl';
  892. unitext : '.ppu';
  893. unitlibext : '.ppl';
  894. asmext : '.s';
  895. objext : '.o';
  896. resext : '.res';
  897. resobjext : '.or';
  898. sharedlibext : '.so';
  899. staticlibext : '.a';
  900. staticlibprefix : 'libp';
  901. sharedlibprefix : 'lib';
  902. sharedClibext : '.so';
  903. staticClibext : '.a';
  904. staticClibprefix : 'lib';
  905. sharedClibprefix : 'lib';
  906. importlibprefix : 'libimp';
  907. importlibext : '.a';
  908. Cprefix : '';
  909. newline : #10;
  910. dirsep : '/';
  911. assem : as_gas;
  912. assemextern : as_gas;
  913. link : ld_none;
  914. linkextern : ld_linux;
  915. ar : ar_gnu_ar;
  916. res : res_elf;
  917. dbg : dbg_dwarf2;
  918. script : script_unix;
  919. endian : endian_little;
  920. alignment :
  921. (
  922. procalign : 8;
  923. loopalign : 4;
  924. jumpalign : 0;
  925. jumpalignskipmax : 0;
  926. coalescealign : 0;
  927. coalescealignskipmax: 0;
  928. constalignmin : 0;
  929. constalignmax : 16;
  930. varalignmin : 0;
  931. varalignmax : 16;
  932. localalignmin : 4;
  933. localalignmax : 16;
  934. recordalignmin : 0;
  935. recordalignmax : 16;
  936. maxCrecordalign : 16
  937. );
  938. first_parm_offset : 16;
  939. stacksize : 8*1024*1024;
  940. stackalign : 16;
  941. abi : abi_default;
  942. 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'
  943. );
  944. system_mipseb_linux_info : tsysteminfo =
  945. (
  946. system : system_mipseb_LINUX;
  947. name : 'Linux for MIPSEB';
  948. shortname : 'Linux';
  949. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  950. tf_requires_proper_alignment,tf_library_needs_pic,
  951. tf_pic_uses_got,tf_safecall_exceptions,
  952. tf_smartlink_sections,tf_has_winlike_resources];
  953. cpu : cpu_mipseb;
  954. unit_env : 'LINUXUNITS';
  955. extradefines : 'UNIX;HASUNIX';
  956. exeext : '';
  957. defext : '.def';
  958. scriptext : '.sh';
  959. smartext : '.sl';
  960. unitext : '.ppu';
  961. unitlibext : '.ppl';
  962. asmext : '.s';
  963. objext : '.o';
  964. resext : '.res';
  965. resobjext : '.or';
  966. sharedlibext : '.so';
  967. staticlibext : '.a';
  968. staticlibprefix : 'libp';
  969. sharedlibprefix : 'lib';
  970. sharedClibext : '.so';
  971. staticClibext : '.a';
  972. staticClibprefix : 'lib';
  973. sharedClibprefix : 'lib';
  974. importlibprefix : 'libimp';
  975. importlibext : '.a';
  976. // p_ext_support : false;
  977. Cprefix : '';
  978. newline : #10;
  979. dirsep : '/';
  980. assem : as_gas;
  981. assemextern : as_gas;
  982. link : ld_none;
  983. linkextern : ld_linux;
  984. ar : ar_gnu_ar;
  985. res : res_elf;
  986. dbg : dbg_stabs;
  987. script : script_unix;
  988. endian : endian_big;
  989. alignment :
  990. (
  991. procalign : 4;
  992. loopalign : 4;
  993. jumpalign : 0;
  994. jumpalignskipmax : 0;
  995. coalescealign : 0;
  996. coalescealignskipmax: 0;
  997. constalignmin : 0;
  998. constalignmax : 8;
  999. varalignmin : 0;
  1000. varalignmax : 8;
  1001. localalignmin : 4;
  1002. localalignmax : 8;
  1003. recordalignmin : 0;
  1004. recordalignmax : 8;
  1005. maxCrecordalign : 8
  1006. );
  1007. first_parm_offset : 0;
  1008. stacksize : 32*1024*1024;
  1009. stackalign : 8;
  1010. abi : abi_default;
  1011. 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';
  1012. );
  1013. system_mipsel_linux_info : tsysteminfo =
  1014. (
  1015. system : system_mipsel_LINUX;
  1016. name : 'Linux for MIPSEL';
  1017. shortname : 'Linux';
  1018. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  1019. tf_requires_proper_alignment,tf_library_needs_pic,
  1020. tf_pic_uses_got,tf_safecall_exceptions,
  1021. tf_smartlink_sections,tf_has_winlike_resources];
  1022. cpu : cpu_mipsel;
  1023. unit_env : 'LINUXUNITS';
  1024. extradefines : 'UNIX;HASUNIX';
  1025. exeext : '';
  1026. defext : '.def';
  1027. scriptext : '.sh';
  1028. smartext : '.sl';
  1029. unitext : '.ppu';
  1030. unitlibext : '.ppl';
  1031. asmext : '.s';
  1032. objext : '.o';
  1033. resext : '.res';
  1034. resobjext : '.or';
  1035. sharedlibext : '.so';
  1036. staticlibext : '.a';
  1037. staticlibprefix : 'libp';
  1038. sharedlibprefix : 'lib';
  1039. sharedClibext : '.so';
  1040. staticClibext : '.a';
  1041. staticClibprefix : 'lib';
  1042. sharedClibprefix : 'lib';
  1043. importlibprefix : 'libimp';
  1044. importlibext : '.a';
  1045. // p_ext_support : false;
  1046. Cprefix : '';
  1047. newline : #10;
  1048. dirsep : '/';
  1049. assem : as_gas;
  1050. assemextern : as_gas;
  1051. link : ld_none;
  1052. linkextern : ld_linux;
  1053. ar : ar_gnu_ar;
  1054. res : res_elf;
  1055. dbg : dbg_stabs;
  1056. script : script_unix;
  1057. endian : endian_little;
  1058. alignment :
  1059. (
  1060. procalign : 4;
  1061. loopalign : 4;
  1062. jumpalign : 0;
  1063. jumpalignskipmax : 0;
  1064. coalescealign : 0;
  1065. coalescealignskipmax: 0;
  1066. constalignmin : 0;
  1067. constalignmax : 8;
  1068. varalignmin : 0;
  1069. varalignmax : 8;
  1070. localalignmin : 4;
  1071. localalignmax : 8;
  1072. recordalignmin : 0;
  1073. recordalignmax : 8;
  1074. maxCrecordalign : 8
  1075. );
  1076. first_parm_offset : 0;
  1077. stacksize : 32*1024*1024;
  1078. stackalign : 8;
  1079. abi : abi_default;
  1080. 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';
  1081. );
  1082. system_riscv32_linux_info : tsysteminfo =
  1083. (
  1084. system : system_riscv32_linux;
  1085. name : 'Linux for RISC-V 32';
  1086. shortname : 'Linux';
  1087. flags : [tf_needs_symbol_size,tf_smartlink_sections,
  1088. tf_needs_symbol_type,tf_files_case_sensitive,
  1089. tf_requires_proper_alignment,tf_has_winlike_resources];
  1090. cpu : cpu_riscv32;
  1091. unit_env : 'LINUXUNITS';
  1092. extradefines : 'UNIX;HASUNIX';
  1093. exeext : '';
  1094. defext : '.def';
  1095. scriptext : '.sh';
  1096. smartext : '.sl';
  1097. unitext : '.ppu';
  1098. unitlibext : '.ppl';
  1099. asmext : '.s';
  1100. objext : '.o';
  1101. resext : '.res';
  1102. resobjext : '.or';
  1103. sharedlibext : '.so';
  1104. staticlibext : '.a';
  1105. staticlibprefix : 'libp';
  1106. sharedlibprefix : 'lib';
  1107. sharedClibext : '.so';
  1108. staticClibext : '.a';
  1109. staticClibprefix : 'lib';
  1110. sharedClibprefix : 'lib';
  1111. importlibprefix : 'libimp';
  1112. importlibext : '.a';
  1113. // p_ext_support : false;
  1114. Cprefix : '';
  1115. newline : #10;
  1116. dirsep : '/';
  1117. assem : as_gas;
  1118. assemextern : as_gas;
  1119. link : ld_none;
  1120. linkextern : ld_linux;
  1121. ar : ar_gnu_ar;
  1122. res : res_elf;
  1123. dbg : dbg_stabs;
  1124. script : script_unix;
  1125. endian : endian_little;
  1126. alignment :
  1127. (
  1128. procalign : 4;
  1129. loopalign : 4;
  1130. jumpalign : 0;
  1131. jumpalignskipmax : 0;
  1132. coalescealign : 0;
  1133. coalescealignskipmax: 0;
  1134. constalignmin : 0;
  1135. constalignmax : 8;
  1136. varalignmin : 0;
  1137. varalignmax : 8;
  1138. localalignmin : 4;
  1139. localalignmax : 8;
  1140. recordalignmin : 0;
  1141. recordalignmax : 8;
  1142. maxCrecordalign : 8
  1143. );
  1144. first_parm_offset : 0;
  1145. stacksize : 32*1024*1024;
  1146. stackalign : 8;
  1147. abi : abi_riscv_hf;
  1148. 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';
  1149. );
  1150. system_riscv64_linux_info : tsysteminfo =
  1151. (
  1152. system : system_riscv64_linux;
  1153. name : 'Linux for RISC-V 64';
  1154. shortname : 'Linux';
  1155. flags : [tf_needs_symbol_size,tf_smartlink_sections,
  1156. tf_needs_symbol_type,tf_files_case_sensitive,
  1157. tf_requires_proper_alignment,tf_has_winlike_resources];
  1158. cpu : cpu_riscv64;
  1159. unit_env : 'LINUXUNITS';
  1160. extradefines : 'UNIX;HASUNIX';
  1161. exeext : '';
  1162. defext : '.def';
  1163. scriptext : '.sh';
  1164. smartext : '.sl';
  1165. unitext : '.ppu';
  1166. unitlibext : '.ppl';
  1167. asmext : '.s';
  1168. objext : '.o';
  1169. resext : '.res';
  1170. resobjext : '.or';
  1171. sharedlibext : '.so';
  1172. staticlibext : '.a';
  1173. staticlibprefix : 'libp';
  1174. sharedlibprefix : 'lib';
  1175. sharedClibext : '.so';
  1176. staticClibext : '.a';
  1177. staticClibprefix : 'lib';
  1178. sharedClibprefix : 'lib';
  1179. importlibprefix : 'libimp';
  1180. importlibext : '.a';
  1181. // p_ext_support : false;
  1182. Cprefix : '';
  1183. newline : #10;
  1184. dirsep : '/';
  1185. assem : as_gas;
  1186. assemextern : as_gas;
  1187. link : ld_none;
  1188. linkextern : ld_linux;
  1189. ar : ar_gnu_ar;
  1190. res : res_elf;
  1191. dbg : dbg_dwarf2;
  1192. script : script_unix;
  1193. endian : endian_little;
  1194. alignment :
  1195. (
  1196. procalign : 8;
  1197. loopalign : 4;
  1198. jumpalign : 0;
  1199. jumpalignskipmax : 0;
  1200. coalescealign : 0;
  1201. coalescealignskipmax: 0;
  1202. constalignmin : 4;
  1203. constalignmax : 16;
  1204. varalignmin : 4;
  1205. varalignmax : 16;
  1206. localalignmin : 8;
  1207. localalignmax : 16;
  1208. recordalignmin : 0;
  1209. recordalignmax : 16;
  1210. maxCrecordalign : 16
  1211. );
  1212. first_parm_offset : 16;
  1213. stacksize : 10*1024*1024;
  1214. stackalign : 16;
  1215. abi : abi_riscv_hf;
  1216. 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';
  1217. );
  1218. implementation
  1219. initialization
  1220. {$ifdef CPUI386}
  1221. {$ifdef linux}
  1222. { some FreeBSD versions define linux as well }
  1223. {$ifndef FreeBSD}
  1224. set_source_info(system_i386_linux_info);
  1225. {$endif FreeBSD}
  1226. {$endif}
  1227. {$endif CPUI386}
  1228. {$ifdef CPU68}
  1229. {$ifdef linux}
  1230. set_source_info(system_m68k_linux_info);
  1231. {$endif linux}
  1232. {$endif CPU68}
  1233. {$ifdef CPUX86_64}
  1234. {$ifdef linux}
  1235. set_source_info(system_x86_64_linux_info);
  1236. {$endif linux}
  1237. {$endif CPUX86_64}
  1238. {$ifdef CPUSPARC}
  1239. {$ifdef linux}
  1240. set_source_info(system_sparc_linux_info);
  1241. {$endif linux}
  1242. {$endif CPUSPARC}
  1243. {$ifdef CPUSPARC64}
  1244. {$ifdef linux}
  1245. set_source_info(system_sparc64_linux_info);
  1246. {$endif linux}
  1247. {$endif CPUSPARC64}
  1248. {$ifdef CPUPOWERPC32}
  1249. {$ifdef linux}
  1250. set_source_info(system_powerpc_linux_info);
  1251. {$endif linux}
  1252. {$endif CPUPOWERPC32}
  1253. {$ifdef CPUPOWERPC64}
  1254. {$ifdef linux}
  1255. set_source_info(system_powerpc64_linux_info);
  1256. { on a little endian PPC64 platform -> source is elfv2 }
  1257. {$ifdef FPC_LITTLE_ENDIAN}
  1258. source_info.endian:=endian_little;
  1259. source_info.abi:=abi_powerpc_elfv2;
  1260. {$endif}
  1261. {$endif linux}
  1262. {$endif CPUPOWERPC64}
  1263. {$ifdef CPUARM}
  1264. {$ifdef linux}
  1265. set_source_info(system_arm_linux_info);
  1266. {$endif linux}
  1267. {$endif CPUARM}
  1268. {$ifdef cpuaarch64}
  1269. {$ifdef linux}
  1270. set_source_info(system_aarch64_linux_info);
  1271. {$endif linux}
  1272. {$endif cpuaarch64}
  1273. {$ifdef CPUMIPSEB}
  1274. {$ifdef linux}
  1275. set_source_info(system_mipseb_linux_info);
  1276. {$endif linux}
  1277. {$endif CPUMIPSEB}
  1278. {$ifdef CPUMIPSEL}
  1279. {$ifdef linux}
  1280. set_source_info(system_mipsel_linux_info);
  1281. {$endif linux}
  1282. {$endif CPUMIPSEL}
  1283. {$ifdef CPURISCV32}
  1284. {$ifdef linux}
  1285. set_source_info(system_riscv32_linux_info);
  1286. {$endif linux}
  1287. {$endif CPURISCV32}
  1288. {$ifdef CPURISCV64}
  1289. {$ifdef linux}
  1290. set_source_info(system_riscv64_linux_info);
  1291. {$endif linux}
  1292. {$endif CPURISCV64}
  1293. end.