i_linux.pas 47 KB

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