diff --git a/compiler/systems/i_sunos.pas b/compiler/systems/i_sunos.pas index a8e942cc41..9218a106dd 100644 --- a/compiler/systems/i_sunos.pas +++ b/compiler/systems/i_sunos.pas @@ -34,7 +34,10 @@ unit i_sunos; system : system_i386_solaris; name : 'Solaris for i386'; shortname : 'solaris'; - flags : [tf_under_development,tf_files_case_sensitive,tf_use_function_relative_addresses,tf_smartlink_library,tf_has_winlike_resources]; + flags : [tf_under_development,tf_needs_symbol_size, + tf_files_case_sensitive,tf_requires_proper_alignment, + tf_use_function_relative_addresses, + tf_smartlink_library,tf_has_winlike_resources]; cpu : cpu_i386; unit_env : 'SOLARISUNITS'; extradefines : 'UNIX;LIBC;SUNOS;HASUNIX'; @@ -90,13 +93,81 @@ unit i_sunos; abi : abi_default; ); + + system_x86_64_solaris_info : tsysteminfo = + ( + system : system_x86_64_solaris; + name : 'Solaris for x86-64'; + shortname : 'solaris'; + flags : [tf_needs_symbol_size,tf_under_development, + tf_files_case_sensitive,tf_use_function_relative_addresses, + tf_requires_proper_alignment,tf_smartlink_library, + tf_has_winlike_resources]; + cpu : cpu_x86_64; + unit_env : 'SOLARISUNITS'; + extradefines : 'UNIX;LIBC;SUNOS;HASUNIX'; + exeext : ''; + defext : '.def'; + scriptext : '.sh'; + smartext : '.sl'; + unitext : '.ppu'; + unitlibext : '.ppl'; + asmext : '.s'; + objext : '.o'; + resext : '.res'; + resobjext : '.or'; + sharedlibext : '.so'; + staticlibext : '.a'; + staticlibprefix : 'libp'; + sharedlibprefix : 'lib'; + sharedClibext : '.so'; + staticClibext : '.a'; + staticClibprefix : 'lib'; + sharedClibprefix : 'lib'; + importlibprefix : 'libimp'; + importlibext : '.a'; + Cprefix : ''; + newline : #10; + dirsep : '/'; + assem : as_gas{as_x86_64_elf64}; + assemextern : as_gas; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_elf; + dbg : dbg_dwarf2; + script : script_unix; + endian : endian_little; + alignment : + ( + procalign : 8; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 8; + varalignmin : 0; + varalignmax : 16; + localalignmin : 4; + localalignmax : 16; + recordalignmin : 0; + recordalignmax : 16; + maxCrecordalign : 8 + ); + first_parm_offset : 16; + stacksize : 8*1024*1024; + abi : abi_default + ); + + system_sparc_solaris_info : tsysteminfo = ( system : system_sparc_solaris; name : 'Solaris for SPARC'; shortname : 'solaris'; - flags : [tf_needs_symbol_size,tf_under_development,tf_files_case_sensitive,tf_use_function_relative_addresses, - tf_requires_proper_alignment,tf_smartlink_library,tf_has_winlike_resources]; + flags : [tf_needs_symbol_size,tf_under_development, + tf_files_case_sensitive,tf_use_function_relative_addresses, + tf_requires_proper_alignment,tf_smartlink_library, + tf_has_winlike_resources]; cpu : cpu_SPARC; unit_env : 'SOLARISUNITS'; extradefines : 'UNIX;LIBC;SUNOS;HASUNIX'; @@ -160,6 +231,11 @@ initialization set_source_info(system_i386_solaris_info); {$endif solaris} {$endif CPU86} +{$ifdef CPUX86_64} + {$ifdef solaris} + set_source_info(system_x86_64_solaris_info); + {$endif solaris} +{$endif CPUX86_64} {$ifdef CPUSparc} {$ifdef solaris} set_source_info(system_sparc_solaris_info); diff --git a/compiler/systems/t_sunos.pas b/compiler/systems/t_sunos.pas index bceb287027..7f71a19f71 100644 --- a/compiler/systems/t_sunos.pas +++ b/compiler/systems/t_sunos.pas @@ -466,6 +466,13 @@ initialization RegisterTarget(system_i386_solaris_info); {$endif i386} +{$ifdef x86_64} + RegisterExternalLinker(system_x86_64_solaris_info,TLinkersolaris); + RegisterImport(system_x86_64_solaris,TImportLibsolaris); + RegisterExport(system_x86_64_solaris,TExportLibsolaris); + RegisterTarget(system_x86_64_solaris_info); +{$endif x86_64} + {$ifdef sparc} RegisterExternalLinker(system_sparc_solaris_info,TLinkersolaris); RegisterImport(system_sparc_solaris,TImportLibsolaris);