mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-06 03:32:32 +02:00

* support for case aware filesystems (Windows), they do now only one lookup if a file exists * add -WI option to generate import section for DLL imports or let the linker handle it. Default is still import section until the Makefiles are fixed, then the generation can be left to the linker git-svn-id: trunk@2274 -
547 lines
18 KiB
ObjectPascal
547 lines
18 KiB
ObjectPascal
{
|
|
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,tf_files_case_sensitive,tf_use_function_relative_addresses];
|
|
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';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
dirsep : '/';
|
|
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;
|
|
abi : abi_default;
|
|
);
|
|
|
|
|
|
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_files_case_sensitive,tf_use_function_relative_addresses{,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';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
dirsep : '/';
|
|
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;
|
|
abi : abi_default;
|
|
);
|
|
|
|
|
|
system_i386_netbsd_info : tsysteminfo =
|
|
(
|
|
system : system_i386_NetBSD;
|
|
name : 'NetBSD for i386';
|
|
shortname : 'NetBSD';
|
|
flags : [tf_under_development,tf_files_case_sensitive,tf_use_function_relative_addresses];
|
|
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';
|
|
Cprefix : '_';
|
|
newline : #10;
|
|
dirsep : '/';
|
|
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;
|
|
abi : abi_default;
|
|
);
|
|
|
|
system_i386_openbsd_info : tsysteminfo =
|
|
(
|
|
system : system_i386_OpenBSD;
|
|
name : 'OpenBSD for i386';
|
|
shortname : 'OpenBSD';
|
|
flags : [tf_under_development,tf_files_case_sensitive,tf_use_function_relative_addresses];
|
|
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';
|
|
Cprefix : '_';
|
|
newline : #10;
|
|
dirsep : '/';
|
|
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;
|
|
abi : abi_default;
|
|
);
|
|
|
|
system_m68k_netbsd_info : tsysteminfo =
|
|
(
|
|
system : system_m68k_NetBSD;
|
|
name : 'NetBSD for m68k';
|
|
shortname : 'NetBSD';
|
|
flags : [tf_under_development,tf_files_case_sensitive,tf_use_function_relative_addresses];
|
|
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';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
dirsep : '/';
|
|
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;
|
|
abi : abi_default;
|
|
);
|
|
|
|
system_powerpc_netbsd_info : tsysteminfo =
|
|
(
|
|
system : system_powerpc_netbsd;
|
|
name : 'NetBSD for PowerPC';
|
|
shortname : 'NetBSD';
|
|
flags : [tf_under_development,tf_files_case_sensitive,tf_use_function_relative_addresses];
|
|
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';
|
|
Cprefix : '';
|
|
newline : #10;
|
|
dirsep : '/';
|
|
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;
|
|
{ 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 : [tf_p_ext_support,tf_files_case_sensitive];
|
|
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';
|
|
Cprefix : '_';
|
|
newline : #10;
|
|
dirsep : '/';
|
|
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;
|
|
abi : abi_powerpc_aix;
|
|
);
|
|
|
|
|
|
|
|
system_i386_darwin_info : tsysteminfo =
|
|
(
|
|
system : system_i386_darwin;
|
|
name : 'Darwin for i386';
|
|
shortname : 'Darwin';
|
|
flags : [tf_p_ext_support,tf_files_case_sensitive,tf_use_function_relative_addresses];
|
|
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';
|
|
Cprefix : '_';
|
|
newline : #10;
|
|
dirsep : '/';
|
|
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;
|
|
abi : abi_default;
|
|
);
|
|
|
|
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.
|