i_linux.pas 24 KB

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