From a9888eba7021da8b9dc77fd1e361327ccf2fd13b Mon Sep 17 00:00:00 2001 From: svenbarth Date: Fri, 3 Feb 2017 22:45:32 +0000 Subject: [PATCH] * also generate Big Obj COFF files with the GNU utilities (needs 2.25 or newer), at least as long as the new option -a5 isn't given, which disables this Note 1: using an older AS might fail anyway if the amount of sections is too high (like in packages\odata\src\sharepoint.pp) Note 2: it might be an idea to keep track of the created sections in the asmlists and only enable the option if *really* necessary (like with the internal COFF output generator), though this might lead to false positives due to multiple sections with the same name (since I'd prefer to use the KISS principle only a counter would be used) git-svn-id: trunk@35381 - --- compiler/assemble.pas | 8 + compiler/globtype.pas | 2 +- compiler/msg/errore.msg | 1 + compiler/msgidx.inc | 2 +- compiler/msgtxt.inc | 392 +++++++++++++++++++------------------- compiler/options.pas | 10 + compiler/x86/agx86att.pas | 4 +- 7 files changed, 220 insertions(+), 199 deletions(-) diff --git a/compiler/assemble.pas b/compiler/assemble.pas index 3033866647..35b072a3fb 100644 --- a/compiler/assemble.pas +++ b/compiler/assemble.pas @@ -941,6 +941,14 @@ Implementation else Replace(result,'$ENDIAN','-mbig'); + { as we don't keep track of the amount of sections we created we simply + enable Big Obj COFF files always for targets that need them } + if (cs_asm_pre_binutils_2_25 in current_settings.globalswitches) or + not (target_info.system in systems_all_windows+systems_nativent-[system_i8086_win16]) then + Replace(result,'$BIGOBJ','') + else + Replace(result,'$BIGOBJ','-mbig-obj'); + Replace(result,'$EXTRAOPT',asmextraopt); end; diff --git a/compiler/globtype.pas b/compiler/globtype.pas index 4b39e17bcd..37b74e5d68 100644 --- a/compiler/globtype.pas +++ b/compiler/globtype.pas @@ -201,7 +201,7 @@ interface cs_gdb_valgrind,cs_no_regalloc,cs_stabs_preservecase, { assembling } cs_asm_leave,cs_asm_extern,cs_asm_pipe,cs_asm_source, - cs_asm_regalloc,cs_asm_tempalloc,cs_asm_nodes, + cs_asm_regalloc,cs_asm_tempalloc,cs_asm_nodes,cs_asm_pre_binutils_2_25, { linking } cs_link_nolink,cs_link_static,cs_link_smart,cs_link_shared,cs_link_deffile, cs_link_strip,cs_link_staticflag,cs_link_on_target,cs_link_extern,cs_link_opt_vtable, diff --git a/compiler/msg/errore.msg b/compiler/msg/errore.msg index a4ba2b18f6..2cf6a9a2c9 100644 --- a/compiler/msg/errore.msg +++ b/compiler/msg/errore.msg @@ -3651,6 +3651,7 @@ F*0*_Only options valid for the default or selected platform are listed. **0*_Put + after a boolean switch option to enable it, - to disable it. **1@_Read compiler options from in addition to the default fpc.cfg **1a_The compiler does not delete the generated assembler file +**2a5_Don't generate Big Obj COFF files for GNU Binutils older than 2.25 (Windows, NativeNT) **2al_List sourcecode lines in assembler file **2an_List node info in assembler file (-dEXTDEBUG compiler) **2ao_Add an extra option to external assembler call (ignored for internal) diff --git a/compiler/msgidx.inc b/compiler/msgidx.inc index ef824d363b..fb9d74747b 100644 --- a/compiler/msgidx.inc +++ b/compiler/msgidx.inc @@ -1066,7 +1066,7 @@ const option_info=11024; option_help_pages=11025; - MsgTxtSize = 79014; + MsgTxtSize = 79107; MsgIdxMax : array[1..20] of longint=( 27,102,347,124,96,58,130,33,209,67, diff --git a/compiler/msgtxt.inc b/compiler/msgtxt.inc index c73add56ed..4566b58165 100644 --- a/compiler/msgtxt.inc +++ b/compiler/msgtxt.inc @@ -1348,321 +1348,324 @@ const msgtxt : array[0..000329,1..240] of char=( '**1@_Read compiler options from in addition to the default fpc.'+ 'cfg'#010+ '**1a_The compiler does not delete the generated assembler file'#010+ + '**2a5_Don'#039't generate Big Obj COFF files for GNU Binutils older th', + 'an 2.25 (Windows, NativeNT)'#010+ '**2al_List sourcecode lines in assembler file'#010+ - '**2an_List node inf','o in assembler file (-dEXTDEBUG compiler)'#010+ + '**2an_List node info in assembler file (-dEXTDEBUG compiler)'#010+ '**2ao_Add an extra option to external assembler call (ignored for inte'+ 'rnal)'#010+ - '*L2ap_Use pipes instead of creating temporary assembler files'#010+ - '**2ar_List register allocation/release info in assembler fil','e'#010+ + '*L2ap_Use pipes instead of cr','eating temporary assembler files'#010+ + '**2ar_List register allocation/release info in assembler file'#010+ '**2at_List temp allocation/release info in assembler file'#010+ '**1A_Output format:'#010+ '**2Adefault_Use default assembler'#010+ '3*2Aas_Assemble using GNU AS'#010+ - '3*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#010+ + '3','*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#010+ '8*2Anasm_Assemble using Nasm'#010+ - '8*2','Anasmobj_Assemble using Nasm'#010+ + '8*2Anasmobj_Assemble using Nasm'#010+ '3*2Anasm_Assemble using Nasm'#010+ '3*2Anasmcoff_COFF (Go32v2) file using Nasm'#010+ '3*2Anasmelf_ELF32 (Linux) file using Nasm'#010+ - '3*2Anasmwin32_Win32 object file using Nasm'#010+ + '3*2A','nasmwin32_Win32 object file using Nasm'#010+ '3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+ - '3*2An','asmdarwin_macho32 object file using Nasm (experimental)'#010+ + '3*2Anasmdarwin_macho32 object file using Nasm (experimental)'#010+ '3*2Awasm_Obj file using Wasm (Watcom)'#010+ '3*2Anasmobj_Obj file using Nasm'#010+ - '3*2Amasm_Obj file using Masm (Microsoft)'#010+ + '3*2Amasm_Obj file usi','ng Masm (Microsoft)'#010+ '3*2Atasm_Obj file using Tasm (Borland)'#010+ - '3*2Aelf_ELF (Linux) using internal',' writer'#010+ + '3*2Aelf_ELF (Linux) using internal writer'#010+ '3*2Acoff_COFF (Go32v2) using internal writer'#010+ '3*2Apecoff_PE-COFF (Win32) using internal writer'#010+ '3*2Ayasm_Assemble using Yasm (experimental)'#010+ - '4*2Aas_Assemble using GNU AS'#010+ + '4','*2Aas_Assemble using GNU AS'#010+ '4*2Agas_Assemble using GNU GAS'#010+ - '4*2Agas-darwin_Assemble darwin Mac','h-O64 using GNU GAS'#010+ + '4*2Agas-darwin_Assemble darwin Mach-O64 using GNU GAS'#010+ '4*2Amasm_Win64 object file using ml64 (Microsoft)'#010+ '4*2Apecoff_PE-COFF (Win64) using internal writer'#010+ - '4*2Aelf_ELF (Linux-64bit) using internal writer'#010+ + '4*2Aelf_ELF (Linux-64bit) us','ing internal writer'#010+ '4*2Ayasm_Assemble using Yasm (experimental)'#010+ - '4*2Anasm_Assemble using Nasm',' (experimental)'#010+ + '4*2Anasm_Assemble using Nasm (experimental)'#010+ '4*2Anasmwin64_Assemble Win64 object file using Nasm (experimental)'#010+ - '4*2Anasmelf_Assemble Linux-64bit object file using Nasm (experimental)'+ - #010+ + '4*2Anasmelf_Assemble Linux-64bit object file using Nasm (experim','enta'+ + 'l)'#010+ '4*2Anasmdarwin_Assemble darwin macho64 object file using Nasm (experim'+ 'ental)'#010+ - '6*2Aas_Un','ix o-file using GNU AS'#010+ + '6*2Aas_Unix o-file using GNU AS'#010+ '6*2Agas_GNU Motorola assembler'#010+ '6*2Amit_MIT Syntax (old GAS)'#010+ '6*2Amot_Standard Motorola assembler'#010+ - 'A*2Aas_Assemble using GNU AS'#010+ + 'A*2Aas_Assemble using GNU AS',#010+ 'P*2Aas_Assemble using GNU AS'#010+ 'S*2Aas_Assemble using GNU AS'#010+ '**1b_Generate browser info'#010+ - '**2bl_G','enerate local symbol info'#010+ + '**2bl_Generate local symbol info'#010+ '**1B_Build all modules'#010+ '**1C_Code generation options:'#010+ '**2C3_Turn on ieee error checking for constants'#010+ - '**2Ca_Select ABI; see fpc -i or fpc -ia for possible values'#010+ - '**2Cb_Generate code for a big-endian variant of',' the target architect'+ - 'ure'#010+ + '**2Ca_Select A','BI; see fpc -i or fpc -ia for possible values'#010+ + '**2Cb_Generate code for a big-endian variant of the target architectur'+ + 'e'#010+ '**2Cc_Set default calling convention to '#010+ '**2CD_Create also dynamic library (not supported)'#010+ - '**2Ce_Compilation with emulated floating point opcodes'#010+ - '**2Cf_Select fpu instruction set to use; see fpc -i or fpc -','if fo'+ - 'r possible values'#010+ + '**2Ce_Compilation with em','ulated floating point opcodes'#010+ + '**2Cf_Select fpu instruction set to use; see fpc -i or fpc -if for '+ + 'possible values'#010+ '**2CF_Minimal floating point constant precision (default, 32, 64)'#010+ '**2Cg_Generate PIC code'#010+ - '**2Ch_ bytes heap (between 1023 and 67107840)'#010+ + '**2Ch_ bytes heap (betwee','n 1023 and 67107840)'#010+ '**2Ci_IO-checking'#010+ 'A*2CI_Select instruction set on ARM: ARM or THUMB'#010+ - '*','*2Cn_Omit linking stage'#010+ + '**2Cn_Omit linking stage'#010+ 'P*2CN_Generate nil-pointer checks (AIX-only)'#010+ '**2Co_Check overflow of integer operations'#010+ - '**2CO_Check for possible overflow of integer operations'#010+ + '**2CO_Check for possible overflow o','f integer operations'#010+ '**2Cp_Select instruction set; see fpc -i or fpc -ic for possible va'+ - 'lu','es'#010+ + 'lues'#010+ '**2CP=_ packing settings'#010+ '**3CPPACKSET=_ set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+ 'and 8'#010+ - '**3CPPACKENUM=_ enum packing: 0, 1, 2 and 4 or DEFAULT or NORMA'+ - 'L'#010+ - '**3CPPACKRECORD=_ record packing: 0 or DEFAULT or N','ORMAL, 1, '+ - '2, 4, 8, 16 and 32'#010+ + '**3CPPACKENUM=_ enum packing: ','0, 1, 2 and 4 or DEFAULT or NOR'+ + 'MAL'#010+ + '**3CPPACKRECORD=_ record packing: 0 or DEFAULT or NORMAL, 1, 2,'+ + ' 4, 8, 16 and 32'#010+ '**2Cr_Range checking'#010+ '**2CR_Verify object method call validity'#010+ '**2Cs_Set stack checking size to '#010+ - '**2Ct_Stack checking (for testing only, see manual)'#010+ + '**2Ct_Stack chec','king (for testing only, see manual)'#010+ '8*2CT_Target-specific code generation options'#010+ - '3*2CT','_Target-specific code generation options'#010+ + '3*2CT_Target-specific code generation options'#010+ '4*2CT_Target-specific code generation options'#010+ 'p*2CT_Target-specific code generation options'#010+ - 'P*2CT_Target-specific code generation options'#010+ + 'P*2CT','_Target-specific code generation options'#010+ 'J*2CT_Target-specific code generation options'#010+ - 'A*2','CT_Target-specific code generation options'#010+ + 'A*2CT_Target-specific code generation options'#010+ 'p*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+ ' (AIX)'#010+ - 'P*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+ - ' (AIX)'#010+ - 'J*3CTautogetterprefix=X_ Automatically ','create getters for propertie'+ - 's with prefix X (empty string disables)'#010+ - 'J*3CTautosetterprefix=X_ Automatically create setters for properties '+ + 'P*3CTsmalltoc_ Generate ','smaller TOCs at the expense of execution spe'+ + 'ed (AIX)'#010+ + 'J*3CTautogetterprefix=X_ Automatically create getters for properties '+ 'with prefix X (empty string disables)'#010+ - '8*3CTcld_ Emit a CLD instruction before using th','e x8'+ - '6 string instructions'#010+ + 'J*3CTautosetterprefix=X_ Automatically create setters for properties '+ + 'with pref','ix X (empty string disables)'#010+ + '8*3CTcld_ Emit a CLD instruction before using the x86 '+ + 'string instructions'#010+ '3*3CTcld_ Emit a CLD instruction before using the x86 '+ 'string instructions'#010+ - '4*3CTcld_ Emit a CLD instruction before using the x86 '+ - 'string instructions'#010+ - '8*3CTfarprocspushoddbp_ Incr','ement BP before pushing it in the '+ - 'prologue of far functions'#010+ + '4*3CTcld_ Emit ','a CLD instruction before using the x8'+ + '6 string instructions'#010+ + '8*3CTfarprocspushoddbp_ Increment BP before pushing it in the pr'+ + 'ologue of far functions'#010+ 'J*3CTcompactintarrayinit_ Generate smaller (but potentially slower) co'+ - 'de for initializing integer array constants'#010+ - 'J*3CTenumfieldinit_ Initialize enumeration fields in constru','ct'+ - 'ors to enumtype(0), after calling inherited constructors'#010+ + 'de for initializi','ng integer array constants'#010+ + 'J*3CTenumfieldinit_ Initialize enumeration fields in constructor'+ + 's to enumtype(0), after calling inherited constructors'#010+ 'J*3CTinitlocals_ Initialize local variables that trigger a JV'+ - 'M bytecode verification error if used uninitialized (slows down code)'#010+ - 'J*3CTlowercaseprocstart_ Lowercase the f','irst character of procedure'+ - '/function/method names'#010+ + 'M bytecode verific','ation error if used uninitialized (slows down code'+ + ')'#010+ + 'J*3CTlowercaseprocstart_ Lowercase the first character of procedure/f'+ + 'unction/method names'#010+ 'A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possi'+ 'ble'#010+ - 'J*2Cv_Var/out parameter copy-out checking'#010+ + 'J*2Cv_Var/out parameter',' copy-out checking'#010+ '**2CX_Create also smartlinked library'#010+ '**1d_Defines the symbol '#010+ - '**1D_','Generate a DEF file'#010+ + '**1D_Generate a DEF file'#010+ '**2Dd_Set description to '#010+ '**2Dv_Set DLL version to '#010+ '*O2Dw_PM application'#010+ '**1e_Set path to executable'#010+ - '**1E_Same as -Cn'#010+ + '**1E_Same a','s -Cn'#010+ '**1fPIC_Same as -Cg'#010+ '**1F_Set file names and paths:'#010+ - '**2Fa[,y]_(for a program) load',' units and [y] before uses is p'+ - 'arsed'#010+ + '**2Fa[,y]_(for a program) load units and [y] before uses is par'+ + 'sed'#010+ '**2Fc_Set input codepage to '#010+ '**2FC_Set RC compiler binary name to '#010+ - '**2Fd_Disable the compiler'#039's internal directory cache'#010+ - '**2FD_Set the directory where to search for compiler utilities'#010, + '**2Fd_Disable the compiler'#039,'s internal directory cache'#010+ + '**2FD_Set the directory where to search for compiler utilities'#010+ '**2Fe_Redirect error output to '#010+ '**2Ff_Add to framework path (Darwin only)'#010+ '**2FE_Set exe/unit output path to '#010+ - '**2Fi_Add to include path'#010+ + '**2Fi_Add to',' include path'#010+ '**2Fl_Add to library path'#010+ '**2FL_Use as dynamic linker'#010+ - '**2Fm_Lo','ad unicode conversion table from .txt in the compiler '+ - 'dir'#010+ + '**2Fm_Load unicode conversion table from .txt in the compiler di'+ + 'r'#010+ '**2FM_Set the directory where to search for unicode binary files'#010+ - '**2Fo_Add to object path'#010+ + '**2Fo_Add t','o object path'#010+ '**2Fr_Load error message file '#010+ - '**2FR_Set resource (.res) linker to ',#010+ + '**2FR_Set resource (.res) linker to '#010+ '**2Fu_Add to unit path'#010+ '**2FU_Set unit output path to , overrides -FE'#010+ - '**2FW_Store generated whole-program optimization feedback in '#010+ + '**2FW_Store generated whole-program optimization feedback in ',''#010+ '**2Fw_Load previously stored whole-program optimization feedback fr'+ 'om '#010+ - '*g1g_Generat','e debug information (default format for target)'#010+ + '*g1g_Generate debug information (default format for target)'#010+ '*g2gc_Generate checks for pointers (experimental, only available on so'+ - 'me targets, might generate false positive)'#010+ + 'me targets, might generate fa','lse positive)'#010+ '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+ - '*g2gl_Use line ','info unit (show more info with backtraces)'#010+ + '*g2gl_Use line info unit (show more info with backtraces)'#010+ '*g2go_Set debug information options'#010+ '*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+ - 'aks gdb < 6.5)'#010+ + 'aks',' gdb < 6.5)'#010+ '*g3gostabsabsincludes_ Store absolute/full include file paths in Stabs'+ #010+ - '*g3godwarf','methodclassprefix_ Prefix method names in DWARF with class'+ - ' name'#010+ + '*g3godwarfmethodclassprefix_ Prefix method names in DWARF with class n'+ + 'ame'#010+ '*g3godwarfcpp_ Simulate C++ debug information in DWARF'#010+ - '*g2gp_Preserve case in stabs symbol names'#010+ + '*g2gp_Preserve case in stabs',' symbol names'#010+ '*g2gs_Generate Stabs debug information'#010+ - '*g2gt_Trash local variables (to detect u','ninitialized uses; multiple '+ - #039't'#039' changes the trashing value)'#010+ + '*g2gt_Trash local variables (to detect uninitialized uses; multiple '#039+ + 't'#039' changes the trashing value)'#010+ '*g2gv_Generates programs traceable with Valgrind'#010+ - '*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+ + '*g2gw_Generate DWARFv2 debug informati','on (same as -gw2)'#010+ '*g2gw2_Generate DWARFv2 debug information'#010+ - '*g2gw3_Generate DWARFv3 debug inf','ormation'#010+ + '*g2gw3_Generate DWARFv3 debug information'#010+ '*g2gw4_Generate DWARFv4 debug information (experimental)'#010+ '**1i_Information'#010+ '**2iD_Return compiler date'#010+ '**2iSO_Return compiler OS'#010+ - '**2iSP_Return compiler host processor'#010+ + '**2iSP_Retu','rn compiler host processor'#010+ '**2iTO_Return target OS'#010+ '**2iTP_Return target processor'#010+ - '**2iV_Retur','n short compiler version'#010+ + '**2iV_Return short compiler version'#010+ '**2iW_Return full compiler version'#010+ '**2ia_Return list of supported ABI targets'#010+ - '**2ic_Return list of supported CPU instruction sets'#010+ + '**2ic_Return list of supported CPU instructi','on sets'#010+ '**2if_Return list of supported FPU instruction sets'#010+ - '**2ii_Return list of supported in','line assembler modes'#010+ + '**2ii_Return list of supported inline assembler modes'#010+ '**2io_Return list of supported optimizations'#010+ '**2ir_Return list of recognized compiler and RTL features'#010+ - '**2it_Return list of supported targets'#010+ + '**2it_Return list of su','pported targets'#010+ '**2iu_Return list of supported microcontroller types'#010+ - '**2iw_Return list of sup','ported whole program optimizations'#010+ + '**2iw_Return list of supported whole program optimizations'#010+ '**1I_Add to include path'#010+ '**1k_Pass to the linker'#010+ '**1l_Write logo'#010+ - '**1M_Set language mode to '#010+ + '**1M_Set language mode to '#010, '**2Mfpc_Free Pascal dialect (default)'#010+ '**2Mobjfpc_FPC mode with Object Pascal support'#010+ - '**2Mdelp','hi_Delphi 7 compatibility mode'#010+ + '**2Mdelphi_Delphi 7 compatibility mode'#010+ '**2Mtp_TP/BP 7.0 compatibility mode'#010+ '**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+ '**2Miso_ISO 7185 mode'#010+ - '**2Mextendedpascal_ISO 10206 mode'#010+ + '**','2Mextendedpascal_ISO 10206 mode'#010+ '**2Mdelphiunicode_Delphi 2009 and later compatibility mode'#010+ - '**','1n_Do not read the default config files'#010+ + '**1n_Do not read the default config files'#010+ '**1o_Change the name of the executable produced to '#010+ '**1O_Optimizations:'#010+ - '**2O-_Disable optimizations'#010+ + '**2O-_Disable optimization','s'#010+ '**2O1_Level 1 optimizations (quick and debugger friendly)'#010+ - '**2O2_Level 2 optimizations (-O1 ','+ quick optimizations)'#010+ + '**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+ '**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+ - '**2O4_Level 4 optimizations (-O3 + optimizations which might have unex'+ - 'pected side effects)'#010+ + '**2O4_Level 4 optimizations (-O3 + optimizations which might have une', + 'xpected side effects)'#010+ '**2Oa=_Set alignment'#010+ - '**2Oo[NO]_Enable or disable optimizations','; see fpc -i or fpc -io '+ - 'for possible values'#010+ + '**2Oo[NO]_Enable or disable optimizations; see fpc -i or fpc -io fo'+ + 'r possible values'#010+ '**2Op_Set target cpu for optimizing; see fpc -i or fpc -ic for poss'+ 'ible values'#010+ - '**2OW_Generate whole-program optimization feedback for optimization'+ - ' ; see fpc -i or fpc -iw for possible val','ues'#010+ + '**2OW_Generate who','le-program optimization feedback for optimizati'+ + 'on ; see fpc -i or fpc -iw for possible values'#010+ '**2Ow_Perform whole-program optimization ; see fpc -i or fpc -iw'+ ' for possible values'#010+ '**2Os_Optimize for size rather than speed'#010+ - '**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+ - 'F*1P_Target CPU / compiler related optio','ns:'#010+ + '**1pg_Gene','rate profile code for gprof (defines FPC_PROFILE)'#010+ + 'F*1P_Target CPU / compiler related options:'#010+ 'F*2PB_Show default compiler binary'#010+ 'F*2PP_Show default target cpu'#010+ 'F*2P_Set target CPU (aarch64,arm,avr,i386,i8086,jvm,m68k,mips,mipse'+ - 'l,powerpc,powerpc64,sparc,x86_64)'#010+ + 'l,powerp','c,powerpc64,sparc,x86_64)'#010+ '**1R_Assembler reading style:'#010+ - '**2Rdefault_Use default assembler ','for target'#010+ + '**2Rdefault_Use default assembler for target'#010+ '3*2Ratt_Read AT&T style assembler'#010+ '3*2Rintel_Read Intel style assembler'#010+ '4*2Ratt_Read AT&T style assembler'#010+ - '4*2Rintel_Read Intel style assembler'#010+ + '4*2Rintel_Read Intel style asse','mbler'#010+ '8*2Ratt_Read AT&T style assembler'#010+ '8*2Rintel_Read Intel style assembler'#010+ - '6*2RMOT_Read Mot','orola style assembler'#010+ + '6*2RMOT_Read Motorola style assembler'#010+ '**1S_Syntax options:'#010+ '**2S2_Same as -Mobjfpc'#010+ '**2Sc_Support operators like C (*=,+=,/= and -=)'#010+ '**2Sa_Turn on assertions'#010+ - '**2Sd_Same as -Mdelphi'#010+ + '**2S','d_Same as -Mdelphi'#010+ '**2Se_Error options. is a combination of the following:'#010+ - '**3*_ : ','Compiler halts after the errors (default is 1)'#010+ + '**3*_ : Compiler halts after the errors (default is 1)'#010+ '**3*_w : Compiler also halts after warnings'#010+ '**3*_n : Compiler also halts after notes'#010+ - '**3*_h : Compiler also halts after hints'#010+ - '**2Sf_Enable certain features in compiler and RTL; see fpc -i o','r fpc'+ - ' -ir for possible values)'#010+ + '**3*_h : Co','mpiler also halts after hints'#010+ + '**2Sf_Enable certain features in compiler and RTL; see fpc -i or fpc -'+ + 'ir for possible values)'#010+ '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010+ - '**2Sh_Use reference counted strings (ansistring by default) instead of'+ - ' shortstrings'#010+ - '**2Si_Turn on inlining of procedures/functions declared as "inline','"'#010+ + '**2Sh_Use reference counted strings (ansistring by defaul','t) instead '+ + 'of shortstrings'#010+ + '**2Si_Turn on inlining of procedures/functions declared as "inline"'#010+ '**2Sk_Load fpcylix unit'#010+ '**2SI_Set interface style to '#010+ '**3SIcom_COM compatible interface (default)'#010+ '**3SIcorba_CORBA compatible interface'#010+ - '**2Sm_Support macros like C (global)'#010+ + '**2','Sm_Support macros like C (global)'#010+ '**2So_Same as -Mtp'#010+ - '**2Sr_Transparent file names in ISO mode',#010+ + '**2Sr_Transparent file names in ISO mode'#010+ '**2Ss_Constructor name must be init (destructor must be done)'#010+ '**2Sv_Support vector processing (use CPU vector extensions if availabl'+ 'e)'#010+ - '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+ - '**2Sy_@ returns a typed pointe','r, same as $T+'#010+ + '**2Sx_Enabl','e exception keywords (default in Delphi/ObjFPC modes)'#010+ + '**2Sy_@ returns a typed pointer, same as $T+'#010+ '**1s_Do not call assembler and linker'#010+ '**2sh_Generate script to link on host'#010+ '**2st_Generate script to link on target'#010+ - '**2sr_Skip register allocation phase (use with -alr)'#010+ + '**2sr_Skip regis','ter allocation phase (use with -alr)'#010+ '**1T_Target operating system:'#010+ '3*2Tandroid_Android'#010+ - '3*2','Taros_AROS'#010+ + '3*2Taros_AROS'#010+ '3*2Tbeos_BeOS'#010+ '3*2Tdarwin_Darwin/Mac OS X'#010+ '3*2Tembedded_Embedded'#010+ '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+ '3*2Tfreebsd_FreeBSD'#010+ - '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+ + '3*2','Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+ '3*2Thaiku_Haiku'#010+ - '3*2Tiphonesim_ iPhoneSimulator f','rom iOS SDK 3.2+ (older versions: -T'+ - 'darwin)'#010+ + '3*2Tiphonesim_ iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tda'+ + 'rwin)'#010+ '3*2Tlinux_Linux'#010+ '3*2Tnativent_Native NT API (experimental)'#010+ '3*2Tnetbsd_NetBSD'#010+ - '3*2Tnetware_Novell Netware Module (clib)'#010+ + '3*2Tnetware_Novell Netware ','Module (clib)'#010+ '3*2Tnetwlibc_Novell Netware Module (libc)'#010+ '3*2Topenbsd_OpenBSD'#010+ - '3*2Tos2_OS/2 / eC','omStation'#010+ + '3*2Tos2_OS/2 / eComStation'#010+ '3*2Tsunos_SunOS/Solaris'#010+ '3*2Tsymbian_Symbian OS'#010+ '3*2Tsolaris_Solaris'#010+ '3*2Twatcom_Watcom compatible DOS extender'#010+ - '3*2Twdosx_WDOSX DOS extender'#010+ + '3*2Twdosx_WDOSX DOS extender',#010+ '3*2Twin32_Windows 32 Bit'#010+ '3*2Twince_Windows CE'#010+ '4*2Tdarwin_Darwin/Mac OS X'#010+ - '4*2Tfreebsd_FreeBSD',#010+ + '4*2Tfreebsd_FreeBSD'#010+ '4*2Tiphonesim_ iPhoneSimulator'#010+ '4*2Tlinux_Linux'#010+ '4*2Tnetbsd_NetBSD'#010+ '4*2Topenbsd_OpenBSD'#010+ '4*2Tsolaris_Solaris'#010+ - '4*2Twin64_Win64 (64 bit Windows systems)'#010+ + '4*2Twin64_Win64 (64 bit Windows systems)'#010, '6*2Tamiga_Commodore Amiga'#010+ '6*2Tatari_Atari ST/STe/TT'#010+ '6*2Tlinux_Linux'#010+ '6*2Tpalmos_PalmOS'#010+ - '8*2Tmsd','os_MS-DOS (and compatible)'#010+ + '8*2Tmsdos_MS-DOS (and compatible)'#010+ 'a*2Tdarwin_Darwin/iOS'#010+ 'A*2Tandroid_Android'#010+ 'A*2Tdarwin_Darwin/iPhoneOS/iOS'#010+ 'A*2Tembedded_Embedded'#010+ - 'A*2Tgba_Game Boy Advance'#010+ + 'A*2Tgba_Game Boy Advance'#010, 'A*2Tlinux_Linux'#010+ 'A*2Tnds_Nintendo DS'#010+ 'A*2Tsymbian_Symbian'#010+ 'A*2Twince_Windows CE'#010+ - 'J*2Tandroid_Andr','oid'#010+ + 'J*2Tandroid_Android'#010+ 'J*2Tjava_Java'#010+ 'm*2Tembedded_Embedded'#010+ 'm*2Tlinux_Linux'#010+ @@ -1671,11 +1674,11 @@ const msgtxt : array[0..000329,1..240] of char=( 'M*2Tlinux_Linux'#010+ 'P*2Taix_AIX'#010+ 'P*2Tamiga_AmigaOS'#010+ - 'P*2Tdarwin_Darwin/Mac OS X'#010+ + 'P*2','Tdarwin_Darwin/Mac OS X'#010+ 'P*2Tlinux_Linux'#010+ 'P*2Tmacos_Mac OS (classic)'#010+ 'P*2Tmorphos_MorphOS'#010+ - 'P*2Tne','tbsd_NetBSD'#010+ + 'P*2Tnetbsd_NetBSD'#010+ 'P*2Twii_Wii'#010+ 'p*2Taix_AIX'#010+ 'p*2Tdarwin_Darwin/Mac OS X'#010+ @@ -1683,144 +1686,143 @@ const msgtxt : array[0..000329,1..240] of char=( 'S*2Tsolaris_Solaris'#010+ 'S*2Tlinux_Linux'#010+ 'V*2Tembedded_Embedded'#010+ - '**1u_Undefines the symbol '#010+ + '**1u_Un','defines the symbol '#010+ '**1U_Unit options:'#010+ - '**2Un_Do not check where the unit name matches the ','file name'#010+ + '**2Un_Do not check where the unit name matches the file name'#010+ '**2Ur_Generate release unit files (never automatically recompiled)'#010+ '**2Us_Compile a system unit'#010+ - '**1v_Be verbose. is a combination of the following letters:'#010+ - '**2*_e : Show errors (default) 0 : Show nothing (except errors',')'+ - #010+ + '**1v_Be verbose. is a combination o','f the following letters:'#010+ + '**2*_e : Show errors (default) 0 : Show nothing (except errors)'#010+ '**2*_w : Show warnings u : Show unit info'#010+ '**2*_n : Show notes t : Show tried/used files'#010+ - '**2*_h : Show hints c : Show conditionals'#010+ + '**2*_h : Show hints ',' c : Show conditionals'#010+ '**2*_i : Show general info d : Show debug info'#010+ - '**2','*_l : Show linenumbers r : Rhide/GCC compatibility mod'+ - 'e'#010+ + '**2*_l : Show linenumbers r : Rhide/GCC compatibility mode'#010+ '**2*_s : Show time stamps q : Show message numbers'#010+ - '**2*_a : Show everything x : Show info about invoked tools'+ - #010+ - '**2*_b : Write file names messages p :',' Write tree.log with parse t'+ - 'ree'#010+ + '**2*_a : Show ever','ything x : Show info about invoked too'+ + 'ls'#010+ + '**2*_b : Write file names messages p : Write tree.log with parse tre'+ + 'e'#010+ '**2*_ with full path v : Write fpcdebug.txt with'#010+ - '**2*_z : Write output to stderr lots of debugging info'#010+ + '**2*_z : Write output to stderr lots of d','ebugging info'#010+ '**2*_m, : Do not show messages numbered and '#010+ - 'F*1V_Append '#039'-'#039,' to the used compiler binary name (e.g. '+ - 'for version)'#010+ + 'F*1V_Append '#039'-'#039' to the used compiler binary name (e.g. f'+ + 'or version)'#010+ '**1W_Target-specific options (targets)'#010+ '3*2WA_Specify native type application (Windows)'#010+ - '4*2WA_Specify native type application (Windows)'#010+ + '4*2W','A_Specify native type application (Windows)'#010+ 'A*2WA_Specify native type application (Windows)'#010+ - '3','*2Wb_Create a bundle instead of a library (Darwin)'#010+ + '3*2Wb_Create a bundle instead of a library (Darwin)'#010+ 'P*2Wb_Create a bundle instead of a library (Darwin)'#010+ - 'p*2Wb_Create a bundle instead of a library (Darwin)'#010+ + 'p*2Wb_Create a bundle instead of a library (','Darwin)'#010+ 'a*2Wb_Create a bundle instead of a library (Darwin)'#010+ - 'A*2Wb_Create a bundle instead of ','a library (Darwin)'#010+ + 'A*2Wb_Create a bundle instead of a library (Darwin)'#010+ '4*2Wb_Create a bundle instead of a library (Darwin)'#010+ '3*2WB_Create a relocatable image (Windows, Symbian)'#010+ - '3*2WB_Set image base to (Windows, Symbian)'#010+ + '3*2WB_Set image base ','to (Windows, Symbian)'#010+ '4*2WB_Create a relocatable image (Windows)'#010+ - '4*2WB_Set image base ','to (Windows)'#010+ + '4*2WB_Set image base to (Windows)'#010+ 'A*2WB_Create a relocatable image (Windows, Symbian)'#010+ 'A*2WB_Set image base to (Windows, Symbian)'#010+ - '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+ + '3*2WC_Specify console type a','pplication (EMX, OS/2, Windows)'#010+ '4*2WC_Specify console type application (Windows)'#010+ - 'A*2WC_Specif','y console type application (Windows)'#010+ + 'A*2WC_Specify console type application (Windows)'#010+ 'P*2WC_Specify console type application (Classic Mac OS)'#010+ - '3*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ + '3*2WD_Use DEFFILE to export functions of DLL or EXE (W','indows)'#010+ '4*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ - 'A*2WD_Use DEFFILE to ex','port functions of DLL or EXE (Windows)'#010+ + 'A*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ '3*2We_Use external resources (Darwin)'#010+ '4*2We_Use external resources (Darwin)'#010+ - 'a*2We_Use external resources (Darwin)'#010+ + 'a*2We_Use external resources (Da','rwin)'#010+ 'A*2We_Use external resources (Darwin)'#010+ 'P*2We_Use external resources (Darwin)'#010+ - 'p*2We_Use e','xternal resources (Darwin)'#010+ + 'p*2We_Use external resources (Darwin)'#010+ '3*2WF_Specify full-screen type application (EMX, OS/2)'#010+ '3*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+ - '4*2WG_Specify graphic type application (Windows)'#010+ - 'A*2WG_Specify graphic type application (Windows)'#010, + '4*2WG','_Specify graphic type application (Windows)'#010+ + 'A*2WG_Specify graphic type application (Windows)'#010+ 'P*2WG_Specify graphic type application (Classic Mac OS)'#010+ '3*2Wi_Use internal resources (Darwin)'#010+ '4*2Wi_Use internal resources (Darwin)'#010+ - 'a*2Wi_Use internal resources (Darwin)'#010+ + 'a*2Wi_Use inter','nal resources (Darwin)'#010+ 'A*2Wi_Use internal resources (Darwin)'#010+ - 'P*2Wi_Use internal resources (Da','rwin)'#010+ + 'P*2Wi_Use internal resources (Darwin)'#010+ 'p*2Wi_Use internal resources (Darwin)'#010+ '3*2WI_Turn on/off the usage of import sections (Windows)'#010+ - '4*2WI_Turn on/off the usage of import sections (Windows)'#010+ + '4*2WI_Turn on/off the usage of import sections',' (Windows)'#010+ 'A*2WI_Turn on/off the usage of import sections (Windows)'#010+ - '8*2Wm_Set memory model',#010+ + '8*2Wm_Set memory model'#010+ '8*3WmTiny_Tiny memory model'#010+ '8*3WmSmall_Small memory model (default)'#010+ '8*3WmMedium_Medium memory model'#010+ '8*3WmCompact_Compact memory model'#010+ - '8*3WmLarge_Large memory model'#010+ + '8*3WmLarge_L','arge memory model'#010+ '8*3WmHuge_Huge memory model'#010+ - '3*2WM_Minimum Mac OS X deployment version: 1','0.4, 10.5.1, ... (Dar'+ - 'win)'#010+ + '3*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ + 'n)'#010+ '4*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ - 'p*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ + 'p*2WM_Minimum Mac OS X deployment version: 10','.4, 10.5.1, ... (Dar'+ + 'win)'#010+ + 'P*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ - 'P*2WM_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Dar','w'+ - 'in)'#010+ '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ '4*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ - 'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ - 'A*2Wp_Specify the cont','roller type; see fpc -i or fpc -iu for poss'+ - 'ible values'#010+ + 'A*','2WN_Do not generate relocation code, needed for debugging (Windows'+ + ')'#010+ + 'A*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ + 'le values'#010+ 'm*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ 'le values'#010+ - 'V*2Wp_Specify the controller type; see fpc -i or fpc -iu for possib'+ - 'le values'#010+ - '3*2WP_Minimum iOS depl','oyment version: 3.0, 5.0.1, ... (iphonesim)'+ - #010+ + 'V*2Wp_Spe','cify the controller type; see fpc -i or fpc -iu for poss'+ + 'ible values'#010+ + '3*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+ '4*2WP_Minimum iOS deployment version: 8.0, 8.0.2, ... (iphonesim)'#010+ - 'a*2WP_Minimum iOS deployment version: 7.0, 7.1.2, ... (Darwin)'#010+ - 'A*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (Dar','win)'#010+ + 'a*2WP_Minimum iOS deployment ve','rsion: 7.0, 7.1.2, ... (Darwin)'#010+ + 'A*2WP_Minimum iOS deployment version: 3.0, 5.0.1, ... (Darwin)'#010+ '3*2WR_Generate relocation code (Windows)'#010+ '4*2WR_Generate relocation code (Windows)'#010+ 'A*2WR_Generate relocation code (Windows)'#010+ - '8*2Wt_Set the target executable format'#010+ + '8*2Wt_Set the ta','rget executable format'#010+ '8*3Wtexe_Create a DOS .EXE file (default)'#010+ - '8*3Wtcom_Create a DOS .COM f','ile (requires tiny memory model)'#010+ + '8*3Wtcom_Create a DOS .COM file (requires tiny memory model)'#010+ 'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+ '**2WX_Enable executable stack (Linux)'#010+ - '**1X_Executable options:'#010+ + '**1X_Executable opt','ions:'#010+ '**2X9_Generate linkerscript for GNU Binutils ld older than version 2.1'+ '9.1 (Linux)'#010+ - '**2Xc','_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, L'+ - 'inux)'#010+ + '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+ + 'ux)'#010+ '**2Xd_Do not search default library path (sometimes required for cross'+ - '-compiling when not using -XR)'#010+ + '-compili','ng when not using -XR)'#010+ '**2Xe_Use external linker'#010+ - '**2Xf_Substitute pthread library name for li','nking (BSD)'#010+ + '**2Xf_Substitute pthread library name for linking (BSD)'#010+ '**2Xg_Create debuginfo in a separate file and add a debuglink section '+ 'to executable'#010+ - '**2XD_Try to link units dynamically (defines FPC_LINK_DYNAMIC)'#010+ + '**2XD_Try to link units dynamically (defines F','PC_LINK_DYNAMIC)'#010+ '**2Xi_Use internal linker'#010+ '**2XLA_Define library substitutions for linking'#010+ - '**','2XLO_Define order of library linking'#010+ + '**2XLO_Define order of library linking'#010+ '**2XLD_Exclude default order of standard libraries'#010+ '**2Xm_Generate link map'#010+ - '**2XM_Set the name of the '#039'main'#039' program routine (default i'+ - 's '#039'main'#039')'#010+ - '**2Xn_Use target system native linker instead of GNU ld ','(Solaris, AI'+ - 'X)'#010+ + '**2XM_Set the name of the '#039'main'#039,' program routine (default '+ + 'is '#039'main'#039')'#010+ + '**2Xn_Use target system native linker instead of GNU ld (Solaris, AIX)'+ + #010+ 'F*2Xp_First search for the compiler binary in the directory '#010+ '**2XP_Prepend the binutils names with the prefix '#010+ - '**2Xr_Set the linker'#039's rlink-path to (needed for cross comp'+ - 'ile, see the ld manual for more info','rmation) (BeOS, Linux)'#010+ + '**2Xr_','Set the linker'#039's rlink-path to (needed for cross co'+ + 'mpile, see the ld manual for more information) (BeOS, Linux)'#010+ '**2XR_Prepend to all linker search paths (BeOS, Darwin, FreeBSD'+ ', Linux, Mac OS, Solaris)'#010+ - '**2Xs_Strip all symbols from executable'#010+ + '**2Xs_Strip all symbols from',' executable'#010+ '**2XS_Try to link units statically (default, defines FPC_LINK_STATIC)'#010+ - '**2Xt_Link ','with static libraries (-static is passed to linker)'#010+ + '**2Xt_Link with static libraries (-static is passed to linker)'#010+ '**2Xv_Generate table for Virtual Entry calls'#010+ - '**2XV_Use VLink as external linker (default on Amiga, MorphOS)'#010+ + '**2XV_Use VLink as external linker (default ','on Amiga, MorphOS)'+ + #010+ '**2XX_Try to smartlink units (defines FPC_LINK_SMART)'#010+ '**1*_'#010+ - '**','1?_Show this help'#010+ + '**1?_Show this help'#010+ '**1h_Shows this help without waiting' ); diff --git a/compiler/options.pas b/compiler/options.pas index 4a8a2d28ee..40c271a253 100644 --- a/compiler/options.pas +++ b/compiler/options.pas @@ -1055,6 +1055,16 @@ begin while j<=length(more) do begin case more[j] of + '5' : + if target_info.system in systems_all_windows+systems_nativent-[system_i8086_win16] then + begin + if UnsetBool(More, j, opt, false) then + exclude(init_settings.globalswitches,cs_asm_pre_binutils_2_25) + else + include(init_settings.globalswitches,cs_asm_pre_binutils_2_25); + end + else + IllegalPara(opt); 'l' : include(init_settings.globalswitches,cs_asm_source); 'r' : diff --git a/compiler/x86/agx86att.pas b/compiler/x86/agx86att.pas index 0c9fe507d2..0c8950be8d 100644 --- a/compiler/x86/agx86att.pas +++ b/compiler/x86/agx86att.pas @@ -385,7 +385,7 @@ interface id : as_gas; idtxt : 'AS'; asmbin : 'as'; - asmcmd : '--64 -o $OBJ $EXTRAOPT $ASM'; + asmcmd : '--64 -o $OBJ $BIGOBJ $EXTRAOPT $ASM'; supported_targets : [system_x86_64_linux,system_x86_64_freebsd, system_x86_64_win64,system_x86_64_embedded, system_x86_64_openbsd,system_x86_64_netbsd, @@ -470,7 +470,7 @@ interface id : as_gas; idtxt : 'AS'; asmbin : 'as'; - asmcmd : '--32 -o $OBJ $EXTRAOPT $ASM'; + asmcmd : '--32 -o $OBJ $BIGOBJ $EXTRAOPT $ASM'; supported_targets : [system_i386_GO32V2,system_i386_linux,system_i386_Win32,system_i386_freebsd,system_i386_solaris,system_i386_beos, system_i386_netbsd,system_i386_Netware,system_i386_qnx,system_i386_wdosx,system_i386_openbsd, system_i386_netwlibc,system_i386_wince,system_i386_embedded,system_i386_symbian,system_i386_haiku,system_x86_6432_linux,