i_linux.pas 47 KB

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