Recent

Author Topic: Warning: Source OS Redefined!  (Read 430 times)

Key-Real

  • Full Member
  • ***
  • Posts: 242
Warning: Source OS Redefined!
« on: April 18, 2024, 10:20:29 am »
what does this Warning means:

Warning: Source OS Redefined!

Laksen

  • Hero Member
  • *****
  • Posts: 758
    • J-Software
Re: Warning: Source OS Redefined!
« Reply #1 on: April 18, 2024, 10:28:26 am »
It would indicate that you have a compiler bug, or some messed up compiler defines while rebuilding the compiler. How did you build the compiler?

Key-Real

  • Full Member
  • ***
  • Posts: 242
Re: Warning: Source OS Redefined!
« Reply #2 on: April 18, 2024, 10:34:21 am »
can you provide more info? pls


I'm porting it to a new target

Laksen

  • Hero Member
  • *****
  • Posts: 758
    • J-Software
Re: Warning: Source OS Redefined!
« Reply #3 on: April 18, 2024, 10:41:10 am »
The warning is generated in set_source_info

set_source_info is called from systems/i*.pas to indicate what the cpu+os compiler was built FROM. It should only be called once
For example in i_linux.pas

Code: Pascal  [Select][+][-]
  1. {$ifdef CPUI386}
  2.   {$ifdef linux}
  3.     { some FreeBSD versions define linux as well }
  4.     {$ifndef FreeBSD}
  5.       set_source_info(system_i386_linux_info);
  6.     {$endif FreeBSD}
  7.   {$endif}
  8. {$endif CPUI386}
  9. ...
  10. {$ifdef CPUX86_64}
  11.   {$ifdef linux}
  12.     set_source_info(system_x86_64_linux_info);
  13.   {$endif linux}
  14. {$endif CPUX86_64}
  15. ...
  16.  

linux might be defined, but only one of CPUI386 and CPUX86_64 should be defined. Since you can't build a compiler that runs on both (well it can but it will be built for one ISA or the other)

Key-Real

  • Full Member
  • ***
  • Posts: 242
Re: Warning: Source OS Redefined!
« Reply #4 on: April 18, 2024, 11:07:49 am »
Code: Pascal  [Select][+][-]
  1. unit i_ps1;
  2.  
  3. {$i fpcdefs.inc}
  4.  
  5.   interface
  6.  
  7.     uses
  8.        systems;
  9.  
  10.     const
  11.  
  12.        system_mipsel_ps1_info : tsysteminfo =
  13.           (
  14.             system       : system_mipsel_ps1;
  15.             name         : 'PlayStation 1 for MIPSEL';
  16.             shortname    : 'ps1';
  17.             flags        : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  18.                             tf_requires_proper_alignment,tf_library_needs_pic,
  19.                             tf_pic_uses_got,tf_safecall_exceptions,
  20.                             tf_smartlink_sections,tf_has_winlike_resources,tf_supports_hidden_symbols];
  21.             cpu          : cpu_mipsel;
  22.             unit_env     : 'LINUXUNITS';
  23.             extradefines : 'UNIX;HASUNIX';
  24.             exeext       : '';
  25.             defext       : '.def';
  26.             scriptext    : '.sh';
  27.             smartext     : '.sl';
  28.             unitext      : '.ppu';
  29.             unitlibext   : '.ppl';
  30.             asmext       : '.s';
  31.             objext       : '.o';
  32.             resext       : '.res';
  33.             resobjext    : '.or';
  34.             sharedlibext : '.so';
  35.             staticlibext : '.a';
  36.             staticlibprefix : 'libp';
  37.             sharedlibprefix : 'lib';
  38.             sharedClibext : '.so';
  39.             staticClibext : '.a';
  40.             staticClibprefix : 'lib';
  41.             sharedClibprefix : 'lib';
  42.             importlibprefix : 'libimp';
  43.             importlibext : '.a';
  44. //            p_ext_support : false;
  45.             Cprefix      : '';
  46.             newline      : #10;
  47.             dirsep       : '/';
  48.             assem        : as_none;
  49.             assemextern  : as_gas;
  50.             link         : ld_none;
  51.             linkextern   : ld_ps1;
  52.             ar           : ar_gnu_ar;
  53.             res          : res_elf;
  54.             dbg          : dbg_dwarf3;
  55.             script       : script_unix;
  56.             endian       : endian_little;
  57.             alignment    :
  58.               (
  59.                 procalign       : 4;
  60.                 loopalign       : 4;
  61.                 jumpalign       : 0;
  62.                 jumpalignskipmax    : 0;
  63.                 coalescealign   : 0;
  64.                 coalescealignskipmax: 0;
  65.                 constalignmin   : 0;
  66.                 constalignmax   : 8;
  67.                 varalignmin     : 0;
  68.                 varalignmax     : 8;
  69.                 localalignmin   : 4;
  70.                 localalignmax   : 8;
  71.                 recordalignmin  : 0;
  72.                 recordalignmax  : 8;
  73.                 maxCrecordalign : 8
  74.               );
  75.             first_parm_offset : 0;
  76.             stacksize    : 32*1024*1024;
  77.             stackalign   : 8;
  78.             abi : abi_default;
  79.             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';
  80.           );
  81.  
  82.   implementation
  83.  
  84. initialization
  85.  
  86.     set_source_info(system_mipsel_ps1_info);
  87.  
  88. end.
  89.  


it's not finished jet, but could You pls take a look?

Laksen

  • Hero Member
  • *****
  • Posts: 758
    • J-Software
Re: Warning: Source OS Redefined!
« Reply #5 on: April 18, 2024, 11:32:46 am »
Just do something like this. "ps1" would have to match the OS define that you create. But if you follow the same conventions otherwise it should be fine as below

Code: Pascal  [Select][+][-]
  1. initialization
  2. {$ifdef CPUMIPSEL}
  3.   {$ifdef ps1}
  4.     set_source_info(system_mipsel_ps1_info);
  5.   {$endif ps1}
  6. {$endif CPUMIPSEL}
  7.  

 

TinyPortal © 2005-2018