i_linux.pas 48 KB

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