diff options
Diffstat (limited to 'compiler/systems/i_bsd.pas')
-rw-r--r-- | compiler/systems/i_bsd.pas | 572 |
1 files changed, 572 insertions, 0 deletions
diff --git a/compiler/systems/i_bsd.pas b/compiler/systems/i_bsd.pas new file mode 100644 index 0000000000..4ed3c183df --- /dev/null +++ b/compiler/systems/i_bsd.pas @@ -0,0 +1,572 @@ +{ + Copyright (c) 1998-2002 by Peter Vreman + + This unit implements support information structures for FreeBSD/NetBSD + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + **************************************************************************** +} +{ This unit implements support information structures for FreeBSD/NetBSD. + OpenBSD is only added for i386 for now, though it exists for most + other common CPU's too} + +unit i_bsd; + + interface + + uses + systems; + + const + system_i386_freebsd_info : tsysteminfo = + ( + system : system_i386_FreeBSD; + name : 'FreeBSD/ELF for i386'; + shortname : 'FreeBSD'; + flags : [tf_pic_uses_got]; + cpu : cpu_i386; + unit_env : 'BSDUNITS'; + extradefines : 'UNIX;BSD;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'; + p_ext_support : false; + Cprefix : ''; + newline : #10; + dirsep : '/'; + files_case_relevent : true; + assem : as_i386_elf32; + assemextern : as_gas; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_none; + dbg : dbg_stabs; + script : script_unix; + endian : endian_little; + alignment : + ( + procalign : 4; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 4; + varalignmin : 0; + varalignmax : 4; + localalignmin : 0; + localalignmax : 4; + recordalignmin : 0; + recordalignmax : 2; + maxCrecordalign : 4 + ); + first_parm_offset : 8; + stacksize : 262144; + DllScanSupported:false; + use_function_relative_addresses : true + ); + + + system_x86_64_freebsd_info : tsysteminfo = + ( + system : system_x86_64_freebsd; + name : 'FreeBSD for x86-64'; + shortname : 'FreeBSD'; + flags : [tf_needs_symbol_size,tf_pic_uses_got{,tf_smartlink_sections}]; + cpu : cpu_x86_64; + unit_env : 'BSDUNITS'; + extradefines : 'UNIX;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'; + p_ext_support : false; + Cprefix : ''; + newline : #10; + dirsep : '/'; + files_case_relevent : true; + assem : as_gas; + assemextern : as_gas; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_none; + dbg : dbg_stabs; + script : script_unix; + endian : endian_little; + alignment : + ( + procalign : 8; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 8; + varalignmin : 0; + varalignmax : 8; + localalignmin : 4; + localalignmax : 8; + recordalignmin : 0; + recordalignmax : 8; + maxCrecordalign : 8 + ); + first_parm_offset : 16; + stacksize : 256*1024; + DllScanSupported:false; + use_function_relative_addresses : true + ); + + + system_i386_netbsd_info : tsysteminfo = + ( + system : system_i386_NetBSD; + name : 'NetBSD for i386'; + shortname : 'NetBSD'; + flags : [tf_under_development]; + cpu : cpu_i386; + unit_env : 'BSDUNITS'; + extradefines : 'UNIX;BSD;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'; + p_ext_support : false; + Cprefix : '_'; + newline : #10; + dirsep : '/'; + files_case_relevent : true; + assem : as_gas; + assemextern : as_gas; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_none; + dbg : dbg_stabs; + script : script_unix; + endian : endian_little; + alignment : + ( + procalign : 4; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 1; + varalignmin : 0; + varalignmax : 1; + localalignmin : 0; + localalignmax : 1; + recordalignmin : 0; + recordalignmax : 2; + maxCrecordalign : 4 + ); + first_parm_offset : 8; + stacksize : 262144; + DllScanSupported:false; + use_function_relative_addresses : true + ); + + system_i386_openbsd_info : tsysteminfo = + ( + system : system_i386_OpenBSD; + name : 'OpenBSD for i386'; + shortname : 'OpenBSD'; + flags : [tf_under_development]; + cpu : cpu_i386; + unit_env : 'BSDUNITS'; + extradefines : 'UNIX;BSD;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'; + p_ext_support : false; + Cprefix : '_'; + newline : #10; + dirsep : '/'; + files_case_relevent : true; + assem : as_gas; + assemextern : as_gas; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_none; + dbg : dbg_stabs; + script : script_unix; + endian : endian_little; + alignment : + ( + procalign : 4; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 1; + varalignmin : 0; + varalignmax : 1; + localalignmin : 0; + localalignmax : 1; + recordalignmin : 0; + recordalignmax : 2; + maxCrecordalign : 4 + ); + first_parm_offset : 8; + stacksize : 262144; + DllScanSupported:false; + use_function_relative_addresses : true + ); + + system_m68k_netbsd_info : tsysteminfo = + ( + system : system_m68k_NetBSD; + name : 'NetBSD for m68k'; + shortname : 'NetBSD'; + flags : [tf_under_development]; + cpu : cpu_m68k; + unit_env : 'BSDUNITS'; + extradefines : 'UNIX;BSD;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'; + p_ext_support : false; + Cprefix : ''; + newline : #10; + dirsep : '/'; + files_case_relevent : true; + assem : as_gas; + assemextern : as_gas; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_none; + dbg : dbg_stabs; + script : script_unix; + endian : endian_big; + alignment : + ( + procalign : 4; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 1; + varalignmin : 0; + varalignmax : 1; + localalignmin : 0; + localalignmax : 1; + recordalignmin : 0; + recordalignmax : 2; + maxCrecordalign : 4 + ); + first_parm_offset : 8; + stacksize : 262144; + DllScanSupported:false; + use_function_relative_addresses : true + ); + + system_powerpc_netbsd_info : tsysteminfo = + ( + system : system_powerpc_netbsd; + name : 'NetBSD for PowerPC'; + shortname : 'NetBSD'; + flags : [tf_under_development]; + cpu : cpu_powerpc; + unit_env : ''; + extradefines : 'UNIX;BSD;HASUNIX'; + exeext : ''; + defext : '.def'; + scriptext : '.sh'; + smartext : '.sl'; + unitext : '.ppu'; + unitlibext : '.ppl'; + asmext : '.s'; + objext : '.o'; + resext : '.res'; + resobjext : '.or'; + sharedlibext : '.so'; + staticlibext : '.s'; + staticlibprefix : 'libp'; + sharedlibprefix : 'lib'; + sharedClibext : '.so'; + staticClibext : '.a'; + staticClibprefix : 'lib'; + sharedClibprefix : 'lib'; + p_ext_support : false; + Cprefix : ''; + newline : #10; + dirsep : '/'; + files_case_relevent : true; + assem : as_gas; + assemextern : as_gas; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_none; + dbg : dbg_stabs; + script : script_unix; + endian : endian_big; + alignment : + ( + procalign : 4; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 4; + varalignmin : 0; + varalignmax : 4; + localalignmin : 0; + localalignmax : 4; + recordalignmin : 0; + recordalignmax : 2; + maxCrecordalign : 4 // should be 8 probably + ); + first_parm_offset : 8; + stacksize : 32*1024*1024; + DllScanSupported:false; + use_function_relative_addresses : true; + { abi_powerpc_sysv doesn't work yet } + abi : abi_powerpc_aix; + ); + + + system_powerpc_darwin_info : tsysteminfo = + ( + system : system_powerpc_darwin; + name : 'Darwin for PowerPC'; + shortname : 'Darwin'; + flags : []; + cpu : cpu_powerpc; + unit_env : 'BSDUNITS'; + extradefines : 'UNIX;BSD;HASUNIX'; + exeext : ''; + defext : '.def'; + scriptext : '.sh'; + smartext : '.sl'; + unitext : '.ppu'; + unitlibext : '.ppl'; + asmext : '.s'; + objext : '.o'; + resext : '.res'; + resobjext : '.or'; + sharedlibext : '.dylib'; + staticlibext : '.a'; + staticlibprefix : 'libp'; + sharedlibprefix : 'lib'; + sharedClibext : '.dylib'; + staticClibext : '.a'; + staticClibprefix : 'lib'; + sharedClibprefix : 'lib'; + p_ext_support : true; + Cprefix : '_'; + newline : #10; + dirsep : '/'; + files_case_relevent : true; + assem : as_darwin; + assemextern : as_darwin; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_none; + dbg : dbg_stabs; + script : script_unix; + endian : endian_big; + alignment : + ( + procalign : 16; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 4; + varalignmin : 0; + varalignmax : 4; + localalignmin : 0; + localalignmax : 4; + recordalignmin : 0; + recordalignmax : 2; + maxCrecordalign : 4 + ); + first_parm_offset : 24; + stacksize : 262144; + DllScanSupported:false; + use_function_relative_addresses : false; + abi : abi_powerpc_aix; + ); + + + + system_i386_darwin_info : tsysteminfo = + ( + system : system_i386_darwin; + name : 'Darwin for i386'; + shortname : 'Darwin'; + flags : []; + cpu : cpu_i386; + unit_env : 'BSDUNITS'; + extradefines : 'UNIX;BSD;HASUNIX'; + exeext : ''; + defext : '.def'; + scriptext : '.sh'; + smartext : '.sl'; + unitext : '.ppu'; + unitlibext : '.ppl'; + asmext : '.s'; + objext : '.o'; + resext : '.res'; + resobjext : '.or'; + sharedlibext : '.dylib'; + staticlibext : '.a'; + staticlibprefix : 'libp'; + sharedlibprefix : 'lib'; + sharedClibext : '.dylib'; + staticClibext : '.a'; + staticClibprefix : 'lib'; + sharedClibprefix : 'lib'; + p_ext_support : true; + Cprefix : '_'; + newline : #10; + dirsep : '/'; + files_case_relevent : true; + assem : as_darwin; + assemextern : as_darwin; + link : nil; + linkextern : nil; + ar : ar_gnu_ar; + res : res_none; + dbg : dbg_stabs; + script : script_unix; + endian : endian_big; + alignment : + ( + procalign : 16; + loopalign : 4; + jumpalign : 0; + constalignmin : 0; + constalignmax : 4; + varalignmin : 0; + varalignmax : 4; + localalignmin : 0; + localalignmax : 4; + recordalignmin : 0; + recordalignmax : 16; + maxCrecordalign : 16 + ); + first_parm_offset : 8; + stacksize : 262144; + DllScanSupported:false; + use_function_relative_addresses : true; + ); + + implementation + +initialization +{$ifdef cpu86} + {$ifdef FreeBSD} + set_source_info(system_i386_FreeBSD_info); + {$endif} + {$ifdef NetBSD} + set_source_info(system_i386_NetBSD_info); + {$endif} + {$ifdef OpenBSD} + set_source_info(system_i386_NetBSD_info); + {$endif} + {$ifdef Darwin} + set_source_info(system_i386_Darwin_info); + {$endif Darwin} +{$endif cpu86} +{$ifdef cpux86_64} + {$ifdef FreeBSD} + set_source_info(system_x86_64_FreeBSD_info); + {$endif} +{$endif} +{$ifdef cpu68} + {$ifdef NetBSD} + set_source_info(system_m68k_NetBSD_info); + {$endif NetBSD} +{$endif cpu68} +{$ifdef cpupowerpc} + {$ifdef Darwin} + set_source_info(system_powerpc_darwin_info); + {$endif Darwin} + {$ifdef NetBSD} + set_source_info(system_powerpc_netbsd_info); + {$endif} +{$endif cpu68} +end. |