i_linux.pas 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  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. interface
  20. uses
  21. systems, rescmn;
  22. const
  23. system_i386_linux_info : tsysteminfo =
  24. (
  25. system : system_i386_LINUX;
  26. name : 'Linux for i386';
  27. shortname : 'Linux';
  28. flags : [tf_needs_symbol_size,tf_pic_uses_got{,tf_smartlink_sections}{,tf_winlikewidestring},
  29. {$ifdef segment_threadvars}
  30. tf_section_threadvars,
  31. {$endif segment_threadvars}
  32. tf_needs_symbol_type,tf_files_case_sensitive,tf_use_function_relative_addresses,
  33. tf_smartlink_library,tf_needs_dwarf_cfi,tf_has_winlike_resources];
  34. cpu : cpu_i386;
  35. unit_env : 'LINUXUNITS';
  36. extradefines : 'UNIX;HASUNIX';
  37. exeext : '';
  38. defext : '.def';
  39. scriptext : '.sh';
  40. smartext : '.sl';
  41. unitext : '.ppu';
  42. unitlibext : '.ppl';
  43. asmext : '.s';
  44. objext : '.o';
  45. resext : '.res';
  46. resobjext : '.or';
  47. sharedlibext : '.so';
  48. staticlibext : '.a';
  49. staticlibprefix : 'libp';
  50. sharedlibprefix : 'lib';
  51. sharedClibext : '.so';
  52. staticClibext : '.a';
  53. staticClibprefix : 'lib';
  54. sharedClibprefix : 'lib';
  55. Cprefix : '';
  56. newline : #10;
  57. dirsep : '/';
  58. assem : as_i386_elf32;
  59. assemextern : as_gas;
  60. link : nil;
  61. linkextern : nil;
  62. ar : ar_gnu_ar;
  63. res : res_elf;
  64. dbg : dbg_stabs;
  65. script : script_unix;
  66. endian : endian_little;
  67. alignment :
  68. (
  69. procalign : 16;
  70. loopalign : 4;
  71. jumpalign : 0;
  72. constalignmin : 0;
  73. constalignmax : 8;
  74. varalignmin : 0;
  75. varalignmax : 16;
  76. localalignmin : 4;
  77. localalignmax : 8;
  78. recordalignmin : 0;
  79. recordalignmax : 16;
  80. maxCrecordalign : 4
  81. );
  82. first_parm_offset : 8;
  83. stacksize : 262144;
  84. abi : abi_default
  85. );
  86. system_x86_6432_linux_info : tsysteminfo =
  87. (
  88. system : system_x86_6432_LINUX;
  89. name : 'Linux for x64_6432';
  90. shortname : 'Linux6432';
  91. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  92. tf_use_function_relative_addresses,tf_pic_uses_got{,tf_smartlink_sections},
  93. tf_smartlink_library,tf_has_winlike_resources];
  94. cpu : cpu_x86_64;
  95. unit_env : 'LINUXUNITS';
  96. extradefines : 'UNIX;HASUNIX';
  97. exeext : '';
  98. defext : '.def';
  99. scriptext : '.sh';
  100. smartext : '.sl';
  101. unitext : '.ppu';
  102. unitlibext : '.ppl';
  103. asmext : '.s';
  104. objext : '.o';
  105. resext : '.res';
  106. resobjext : '.or';
  107. sharedlibext : '.so';
  108. staticlibext : '.a';
  109. staticlibprefix : 'libp';
  110. sharedlibprefix : 'lib';
  111. sharedClibext : '.so';
  112. staticClibext : '.a';
  113. staticClibprefix : 'lib';
  114. sharedClibprefix : 'lib';
  115. Cprefix : '';
  116. newline : #10;
  117. dirsep : '/';
  118. assem : as_i386_elf32;
  119. assemextern : as_gas;
  120. link : nil;
  121. linkextern : nil;
  122. ar : ar_gnu_ar;
  123. res : res_elf;
  124. dbg : dbg_stabs;
  125. script : script_unix;
  126. endian : endian_little;
  127. alignment :
  128. (
  129. procalign : 16;
  130. loopalign : 4;
  131. jumpalign : 0;
  132. constalignmin : 0;
  133. constalignmax : 16;
  134. varalignmin : 0;
  135. varalignmax : 16;
  136. localalignmin : 4;
  137. localalignmax : 8;
  138. recordalignmin : 0;
  139. recordalignmax : 16;
  140. maxCrecordalign : 4
  141. );
  142. first_parm_offset : 8;
  143. stacksize : 262144;
  144. abi : abi_default
  145. );
  146. system_m68k_linux_info : tsysteminfo =
  147. (
  148. system : system_m68k_linux;
  149. name : 'Linux for m68k';
  150. shortname : 'Linux';
  151. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  152. tf_use_function_relative_addresses,
  153. tf_smartlink_library,tf_has_winlike_resources];
  154. cpu : cpu_m68k;
  155. unit_env : 'LINUXUNITS';
  156. extradefines : 'UNIX;HASUNIX';
  157. exeext : '';
  158. defext : '';
  159. scriptext : '.sh';
  160. smartext : '.sl';
  161. unitext : '.ppu';
  162. unitlibext : '.ppl';
  163. asmext : '.s';
  164. objext : '.o';
  165. resext : '.res';
  166. resobjext : '.or';
  167. sharedlibext : '.so';
  168. staticlibext : '.a';
  169. staticlibprefix : 'libp';
  170. sharedlibprefix : 'lib';
  171. sharedClibext : '.so';
  172. staticClibext : '.a';
  173. staticClibprefix : 'lib';
  174. sharedClibprefix : 'lib';
  175. Cprefix : '';
  176. newline : #10;
  177. dirsep : '/';
  178. assem : as_gas;
  179. assemextern : as_gas;
  180. link : nil;
  181. linkextern : nil;
  182. ar : ar_gnu_ar;
  183. res : res_elf;
  184. dbg : dbg_stabs;
  185. script : script_unix;
  186. endian : endian_big;
  187. alignment :
  188. (
  189. procalign : 4;
  190. loopalign : 4;
  191. jumpalign : 0;
  192. constalignmin : 0;
  193. constalignmax : 4;
  194. varalignmin : 0;
  195. varalignmax : 4;
  196. localalignmin : 4;
  197. localalignmax : 4;
  198. recordalignmin : 0;
  199. recordalignmax : 2;
  200. maxCrecordalign : 4
  201. );
  202. first_parm_offset : 8;
  203. stacksize : 32*1024*1024;
  204. abi : abi_default
  205. );
  206. system_powerpc_linux_info : tsysteminfo =
  207. (
  208. system : system_powerpc_LINUX;
  209. name : 'Linux for PowerPC';
  210. shortname : 'Linux';
  211. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  212. tf_use_function_relative_addresses,
  213. tf_smartlink_library,tf_has_winlike_resources];
  214. cpu : cpu_powerpc;
  215. unit_env : '';
  216. extradefines : 'UNIX;HASUNIX';
  217. exeext : '';
  218. defext : '.def';
  219. scriptext : '.sh';
  220. smartext : '.sl';
  221. unitext : '.ppu';
  222. unitlibext : '.ppl';
  223. asmext : '.s';
  224. objext : '.o';
  225. resext : '.res';
  226. resobjext : '.or';
  227. sharedlibext : '.so';
  228. staticlibext : '.a';
  229. staticlibprefix : 'libp';
  230. sharedlibprefix : 'lib';
  231. sharedClibext : '.so';
  232. staticClibext : '.a';
  233. staticClibprefix : 'lib';
  234. sharedClibprefix : 'lib';
  235. Cprefix : '';
  236. newline : #10;
  237. dirsep : '/';
  238. assem : as_gas;
  239. assemextern : as_gas;
  240. link : nil;
  241. linkextern : nil;
  242. ar : ar_gnu_ar;
  243. res : res_elf;
  244. dbg : dbg_stabs;
  245. script : script_unix;
  246. endian : endian_big;
  247. alignment :
  248. (
  249. procalign : 4;
  250. loopalign : 4;
  251. jumpalign : 0;
  252. constalignmin : 0;
  253. constalignmax : 4;
  254. varalignmin : 0;
  255. varalignmax : 4;
  256. localalignmin : 4;
  257. localalignmax : 4;
  258. recordalignmin : 0;
  259. recordalignmax : 4;
  260. maxCrecordalign : 8
  261. );
  262. first_parm_offset : 8;
  263. stacksize : 32*1024*1024;
  264. abi : abi_powerpc_sysv;
  265. );
  266. system_powerpc64_linux_info : tsysteminfo =
  267. (
  268. system : system_powerpc64_LINUX;
  269. name : 'Linux for PowerPC64';
  270. shortname : 'Linux';
  271. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  272. tf_use_function_relative_addresses,
  273. tf_requires_proper_alignment,tf_smartlink_library,tf_has_winlike_resources];
  274. cpu : cpu_powerpc64;
  275. unit_env : '';
  276. extradefines : 'UNIX;HASUNIX';
  277. exeext : '';
  278. defext : '.def';
  279. scriptext : '.sh';
  280. smartext : '.sl';
  281. unitext : '.ppu';
  282. unitlibext : '.ppl';
  283. asmext : '.s';
  284. objext : '.o';
  285. resext : '.res';
  286. resobjext : '.or';
  287. sharedlibext : '.so';
  288. staticlibext : '.a';
  289. staticlibprefix : 'libp';
  290. sharedlibprefix : 'lib';
  291. sharedClibext : '.so';
  292. staticClibext : '.a';
  293. staticClibprefix : 'lib';
  294. sharedClibprefix : 'lib';
  295. Cprefix : '';
  296. newline : #10;
  297. dirsep : '/';
  298. assem : as_gas;
  299. assemextern : as_gas;
  300. link : nil;
  301. linkextern : nil;
  302. ar : ar_gnu_ar;
  303. res : res_elf;
  304. dbg : dbg_dwarf2;
  305. script : script_unix;
  306. endian : endian_big;
  307. alignment :
  308. (
  309. procalign : 8;
  310. loopalign : 4;
  311. jumpalign : 0;
  312. constalignmin : 4;
  313. constalignmax : 16;
  314. varalignmin : 4;
  315. varalignmax : 16;
  316. localalignmin : 0;
  317. localalignmax : 16;
  318. recordalignmin : 0;
  319. recordalignmax : 16;
  320. maxCrecordalign : 16
  321. );
  322. first_parm_offset : 8;
  323. stacksize : 10*1024*1024;
  324. abi : abi_powerpc_sysv
  325. );
  326. system_alpha_linux_info : tsysteminfo =
  327. (
  328. system : system_alpha_LINUX;
  329. name : 'Linux for Alpha';
  330. shortname : 'Linux';
  331. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  332. tf_use_function_relative_addresses,tf_smartlink_library,tf_has_winlike_resources];
  333. cpu : cpu_alpha;
  334. unit_env : 'LINUXUNITS';
  335. extradefines : 'UNIX;HASUNIX';
  336. exeext : '';
  337. defext : '.def';
  338. scriptext : '.sh';
  339. smartext : '.sl';
  340. unitext : '.ppu';
  341. unitlibext : '.ppl';
  342. asmext : '.s';
  343. objext : '.o';
  344. resext : '.res';
  345. resobjext : '.or';
  346. sharedlibext : '.so';
  347. staticlibext : '.a';
  348. staticlibprefix : 'libp';
  349. sharedlibprefix : 'lib';
  350. sharedClibext : '.so';
  351. staticClibext : '.a';
  352. staticClibprefix : 'lib';
  353. sharedClibprefix : 'lib';
  354. Cprefix : '';
  355. newline : #10;
  356. dirsep : '/';
  357. assem : as_gas;
  358. assemextern : as_gas;
  359. link : nil;
  360. linkextern : nil;
  361. ar : ar_gnu_ar;
  362. res : res_elf;
  363. dbg : dbg_stabs;
  364. script : script_unix;
  365. endian : endian_little;
  366. alignment :
  367. (
  368. procalign : 4;
  369. loopalign : 4;
  370. jumpalign : 0;
  371. constalignmin : 0;
  372. constalignmax : 4;
  373. varalignmin : 0;
  374. varalignmax : 4;
  375. localalignmin : 4;
  376. localalignmax : 4;
  377. recordalignmin : 0;
  378. recordalignmax : 2;
  379. maxCrecordalign : 4
  380. );
  381. first_parm_offset : 8;
  382. stacksize : 32*1024*1024;
  383. abi : abi_default
  384. );
  385. system_x86_64_linux_info : tsysteminfo =
  386. (
  387. system : system_x86_64_LINUX;
  388. name : 'Linux for x86-64';
  389. shortname : 'Linux';
  390. flags : [tf_needs_symbol_size,tf_needs_dwarf_cfi,tf_smartlink_library,
  391. tf_library_needs_pic,tf_needs_symbol_type,tf_files_case_sensitive,
  392. tf_use_function_relative_addresses,tf_has_winlike_resources];
  393. cpu : cpu_x86_64;
  394. unit_env : 'LINUXUNITS';
  395. extradefines : 'UNIX;HASUNIX';
  396. exeext : '';
  397. defext : '.def';
  398. scriptext : '.sh';
  399. smartext : '.sl';
  400. unitext : '.ppu';
  401. unitlibext : '.ppl';
  402. asmext : '.s';
  403. objext : '.o';
  404. resext : '.res';
  405. resobjext : '.or';
  406. sharedlibext : '.so';
  407. staticlibext : '.a';
  408. staticlibprefix : 'libp';
  409. sharedlibprefix : 'lib';
  410. sharedClibext : '.so';
  411. staticClibext : '.a';
  412. staticClibprefix : 'lib';
  413. sharedClibprefix : 'lib';
  414. Cprefix : '';
  415. newline : #10;
  416. dirsep : '/';
  417. assem : as_x86_64_elf64;
  418. assemextern : as_gas;
  419. link : nil;
  420. linkextern : nil;
  421. ar : ar_gnu_ar;
  422. res : res_elf;
  423. dbg : dbg_dwarf2;
  424. script : script_unix;
  425. endian : endian_little;
  426. alignment :
  427. (
  428. procalign : 8;
  429. loopalign : 4;
  430. jumpalign : 0;
  431. constalignmin : 0;
  432. constalignmax : 8;
  433. varalignmin : 0;
  434. varalignmax : 16;
  435. localalignmin : 4;
  436. localalignmax : 16;
  437. recordalignmin : 0;
  438. recordalignmax : 16;
  439. maxCrecordalign : 8
  440. );
  441. first_parm_offset : 16;
  442. stacksize : 256*1024;
  443. abi : abi_default
  444. );
  445. system_sparc_linux_info : tsysteminfo =
  446. (
  447. system : system_SPARC_Linux;
  448. name : 'Linux for SPARC';
  449. shortname : 'Linux';
  450. flags : [tf_needs_symbol_size,tf_library_needs_pic,tf_smartlink_sections,
  451. tf_needs_symbol_type,tf_files_case_sensitive,tf_smartlink_library,
  452. tf_use_function_relative_addresses,tf_requires_proper_alignment,
  453. tf_has_winlike_resources];
  454. cpu : cpu_SPARC;
  455. unit_env : 'LINUXUNITS';
  456. extradefines : 'UNIX;HASUNIX';
  457. exeext : '';
  458. defext : '.def';
  459. scriptext : '.sh';
  460. smartext : '.sl';
  461. unitext : '.ppu';
  462. unitlibext : '.ppl';
  463. asmext : '.s';
  464. objext : '.o';
  465. resext : '.res';
  466. resobjext : '.or';
  467. sharedlibext : '.so';
  468. staticlibext : '.a';
  469. staticlibprefix : 'libp';
  470. sharedlibprefix : 'lib';
  471. sharedClibext : '.so';
  472. staticClibext : '.a';
  473. staticClibprefix : 'lib';
  474. sharedClibprefix : 'lib';
  475. Cprefix : '';
  476. newline : #10;
  477. dirsep : '/';
  478. assem : as_gas;
  479. assemextern : as_gas;
  480. link : nil;
  481. linkextern : nil;
  482. ar : ar_gnu_ar;
  483. res : res_elf;
  484. dbg : dbg_stabs;
  485. script : script_unix;
  486. endian : endian_big;
  487. alignment :
  488. (
  489. procalign : 4;
  490. loopalign : 4;
  491. jumpalign : 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 : 262144;
  504. abi : abi_default
  505. );
  506. {$ifdef FPC_ARMEL}
  507. system_arm_linux_info : tsysteminfo =
  508. (
  509. system : system_arm_Linux;
  510. name : 'Linux for ARMEL';
  511. shortname : 'Linux';
  512. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  513. tf_use_function_relative_addresses,tf_requires_proper_alignment,
  514. tf_smartlink_sections,tf_smartlink_library,tf_has_winlike_resources];
  515. cpu : cpu_arm;
  516. unit_env : 'LINUXUNITS';
  517. extradefines : 'UNIX;HASUNIX;CPUARMEL';
  518. exeext : '';
  519. defext : '.def';
  520. scriptext : '.sh';
  521. smartext : '.sl';
  522. unitext : '.ppu';
  523. unitlibext : '.ppl';
  524. asmext : '.s';
  525. objext : '.o';
  526. resext : '.res';
  527. resobjext : '.or';
  528. sharedlibext : '.so';
  529. staticlibext : '.a';
  530. staticlibprefix : 'libp';
  531. sharedlibprefix : 'lib';
  532. sharedClibext : '.so';
  533. staticClibext : '.a';
  534. staticClibprefix : 'lib';
  535. sharedClibprefix : 'lib';
  536. Cprefix : '';
  537. newline : #10;
  538. dirsep : '/';
  539. assem : as_gas;
  540. assemextern : as_gas;
  541. link : nil;
  542. linkextern : nil;
  543. ar : ar_gnu_ar;
  544. res : res_elf;
  545. dbg : dbg_stabs;
  546. script : script_unix;
  547. endian : endian_little;
  548. alignment :
  549. (
  550. procalign : 4;
  551. loopalign : 4;
  552. jumpalign : 0;
  553. constalignmin : 0;
  554. constalignmax : 8;
  555. varalignmin : 0;
  556. varalignmax : 8;
  557. localalignmin : 4;
  558. localalignmax : 8;
  559. recordalignmin : 0;
  560. recordalignmax : 8;
  561. maxCrecordalign : 8
  562. );
  563. first_parm_offset : 8;
  564. stacksize : 262144;
  565. abi : abi_eabi
  566. );
  567. {$else FPC_ARMEL}
  568. system_arm_linux_info : tsysteminfo =
  569. (
  570. system : system_arm_Linux;
  571. name : 'Linux for ARM';
  572. shortname : 'Linux';
  573. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  574. tf_use_function_relative_addresses,tf_requires_proper_alignment,
  575. tf_smartlink_sections,tf_smartlink_library,tf_has_winlike_resources];
  576. cpu : cpu_arm;
  577. unit_env : 'LINUXUNITS';
  578. extradefines : 'UNIX;HASUNIX';
  579. exeext : '';
  580. defext : '.def';
  581. scriptext : '.sh';
  582. smartext : '.sl';
  583. unitext : '.ppu';
  584. unitlibext : '.ppl';
  585. asmext : '.s';
  586. objext : '.o';
  587. resext : '.res';
  588. resobjext : '.or';
  589. sharedlibext : '.so';
  590. staticlibext : '.a';
  591. staticlibprefix : 'libp';
  592. sharedlibprefix : 'lib';
  593. sharedClibext : '.so';
  594. staticClibext : '.a';
  595. staticClibprefix : 'lib';
  596. sharedClibprefix : 'lib';
  597. Cprefix : '';
  598. newline : #10;
  599. dirsep : '/';
  600. assem : as_gas;
  601. assemextern : as_gas;
  602. link : nil;
  603. linkextern : nil;
  604. ar : ar_gnu_ar;
  605. res : res_elf;
  606. dbg : dbg_stabs;
  607. script : script_unix;
  608. endian : endian_little;
  609. alignment :
  610. (
  611. procalign : 4;
  612. loopalign : 4;
  613. jumpalign : 0;
  614. constalignmin : 0;
  615. constalignmax : 4;
  616. varalignmin : 0;
  617. varalignmax : 4;
  618. localalignmin : 4;
  619. localalignmax : 8;
  620. recordalignmin : 0;
  621. recordalignmax : 4;
  622. maxCrecordalign : 4
  623. );
  624. first_parm_offset : 8;
  625. stacksize : 262144;
  626. abi : abi_default
  627. );
  628. {$endif FPC_ARMEL}
  629. implementation
  630. initialization
  631. {$ifdef CPU86}
  632. {$ifdef linux}
  633. { some FreeBSD versions define linux as well }
  634. {$ifndef FreeBSD}
  635. set_source_info(system_i386_linux_info);
  636. {$endif FreeBSD}
  637. {$endif}
  638. {$endif CPU86}
  639. {$ifdef CPU68}
  640. {$ifdef linux}
  641. set_source_info(system_m68k_linux_info);
  642. {$endif linux}
  643. {$endif CPU68}
  644. {$ifdef CPUX86_64}
  645. {$ifdef linux}
  646. set_source_info(system_x86_64_linux_info);
  647. {$endif linux}
  648. {$endif CPUX86_64}
  649. {$ifdef CPUALPHA}
  650. {$ifdef linux}
  651. set_source_info(system_alpha_linux_info);
  652. {$endif linux}
  653. {$endif CPUALPHA}
  654. {$ifdef CPUSPARC}
  655. {$ifdef linux}
  656. set_source_info(system_sparc_linux_info);
  657. {$endif linux}
  658. {$endif CPUSPARC}
  659. {$ifdef CPUPOWERPC32}
  660. {$ifdef linux}
  661. set_source_info(system_powerpc_linux_info);
  662. {$endif linux}
  663. {$endif CPUPOWERPC32}
  664. {$ifdef CPUPOWERPC64}
  665. {$ifdef linux}
  666. set_source_info(system_powerpc64_linux_info);
  667. {$endif linux}
  668. {$endif CPUPOWERPC64}
  669. {$ifdef CPUARM}
  670. {$ifdef linux}
  671. set_source_info(system_arm_linux_info);
  672. {$endif linux}
  673. {$endif CPUARM}
  674. end.