mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-02-04 04:34:49 +01:00
* treat "[var + rip]" in intel assembler mode as addr_pic_no_got on x86-64
(mantis #22665) + support "[var wrt ..gotpcrel]" nasm/yasm syntax in intel assembler mode for GOT-relative accesses on x86-64, + give an error when trying to do this on win64 (it doesn't have a GOT) * moved code that give a warning when using GOT-relative accesses to static data on x86-64 from the AT&T reader to rax86 so it's also active for the Intel assembler reader + added warning when not using GOT-relative accesses (but plain RIP-relative instead) to global data on non-Win64 x86-64 git-svn-id: trunk@22243 -
This commit is contained in:
parent
2c43e084f0
commit
4d0e4e1b56
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -11792,6 +11792,8 @@ tests/webtbf/tw22343c.pp svneol=native#text/plain
|
||||
tests/webtbf/tw22395.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2242.pp svneol=native#text/plain
|
||||
tests/webtbf/tw22490a.pp svneol=native#text/plain
|
||||
tests/webtbf/tw22665a.pp svneol=native#text/plain
|
||||
tests/webtbf/tw22665b.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2273.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2281.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2285.pp svneol=native#text/plain
|
||||
@ -12803,6 +12805,7 @@ tests/webtbs/tw22593.pp svneol=native#text/plain
|
||||
tests/webtbs/tw2260.pp svneol=native#text/plain
|
||||
tests/webtbs/tw22613.pp svneol=native#text/plain
|
||||
tests/webtbs/tw2266.pp svneol=native#text/plain
|
||||
tests/webtbs/tw22665.pp svneol=native#text/plain
|
||||
tests/webtbs/tw22669.pp svneol=native#text/plain
|
||||
tests/webtbs/tw2267.pp svneol=native#text/plain
|
||||
tests/webtbs/tw2268.pp svneol=native#text/plain
|
||||
|
||||
@ -2292,7 +2292,7 @@ cg_d_autoinlining=06055_DL_Auto inlining: $1
|
||||
#
|
||||
# Assembler reader
|
||||
#
|
||||
# 07116 is the last used one
|
||||
# 07120 is the last used one
|
||||
#
|
||||
asmr_d_start_reading=07000_DL_Starting $1 styled assembler parsing
|
||||
% This informs you that an assembler block is being parsed
|
||||
@ -2567,6 +2567,15 @@ asmr_e_complex_function_result_location=07116_E_This function's result location
|
||||
% to return their result to the caller. In some cases this result may be spread over multiple
|
||||
% registers, in which case it is not possible to access the location via its symbolic name.
|
||||
% You have to directly use the appropriate register names in this case.
|
||||
asmr_e_wrong_gotpcrel_intel_syntax=07117_E_GOTPCREL references in Intel assembler syntax cannot contain a base or index register, and their offset must 0.
|
||||
% The syntax for a gotpcrel PIC memory expression in Intel assembler syntax is
|
||||
% \verb*[global_symbol wrt ..gotpcrel]*
|
||||
asmr_e_no_gotpcrel_support=07118_E_The current target does not support GOTPCREL relocations
|
||||
% Not all targets support position-independent code using a global offset table.
|
||||
% Use a different way to access symbols in a position-indepent way in these cases.
|
||||
asmr_w_global_access_without_got=07119_W_Exported/global symbols should accessed via the GOT
|
||||
% Global symbols (symbols from the unit interface, or defined in a program
|
||||
% or library) should be accessed via the GOT when generating position-indepent code.
|
||||
|
||||
#
|
||||
# Assembler/binary writers
|
||||
|
||||
@ -745,6 +745,9 @@ const
|
||||
asmr_e_seh_in_pure_asm_only=07114;
|
||||
asmr_e_unsupported_directive=07115;
|
||||
asmr_e_complex_function_result_location=07116;
|
||||
asmr_e_wrong_gotpcrel_intel_syntax=07117;
|
||||
asmr_e_no_gotpcrel_support=07118;
|
||||
asmr_w_global_access_without_got=07119;
|
||||
asmw_f_too_many_asm_files=08000;
|
||||
asmw_f_assembler_output_not_supported=08001;
|
||||
asmw_f_comp_not_supported=08002;
|
||||
@ -947,9 +950,9 @@ const
|
||||
option_info=11024;
|
||||
option_help_pages=11025;
|
||||
|
||||
MsgTxtSize = 66296;
|
||||
MsgTxtSize = 66541;
|
||||
|
||||
MsgIdxMax : array[1..20] of longint=(
|
||||
26,92,323,120,87,56,117,26,202,63,
|
||||
26,92,323,120,87,56,120,26,202,63,
|
||||
53,20,1,1,1,1,1,1,1,1
|
||||
);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{$ifdef Delphi}
|
||||
const msgtxt : array[0..000276] of string[240]=(
|
||||
const msgtxt : array[0..000277] of string[240]=(
|
||||
{$else Delphi}
|
||||
const msgtxt : array[0..000276,1..240] of char=(
|
||||
const msgtxt : array[0..000277,1..240] of char=(
|
||||
{$endif Delphi}
|
||||
'01000_T_Compiler: $1'#000+
|
||||
'01001_D_Compiler OS: $1'#000+
|
||||
@ -902,83 +902,87 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'071','15_E_Directive "$1" is not supported for the current target'#000+
|
||||
'07116_E_This function'#039's result location cannot be encoded directly'+
|
||||
' in a single operand when "nostackframe" is used'#000+
|
||||
'07117_E_GOTPCREL references in Intel assembler syntax cannot cont','ain'+
|
||||
' a base or index register, and their offset must 0.'#000+
|
||||
'07118_E_The current target does not support GOTPCREL relocations'#000+
|
||||
'07119_W_Exported/global symbols should accessed via the GOT'#000+
|
||||
'08000_F_Too many assembler files'#000+
|
||||
'08001_F_Selected assembler outpu','t not supported'#000+
|
||||
'08001_F_Selected assembler ','output not supported'#000+
|
||||
'08002_F_Comp not supported'#000+
|
||||
'08003_F_Direct not support for binary writers'#000+
|
||||
'08004_E_Allocating of data is only allowed in bss section'#000+
|
||||
'08005_F_No binary writer selected'#000+
|
||||
'08006_E_Asm: Opcode $1 not in table'#000+
|
||||
'08007_E_Asm: $1 invalid',' combination of opcode and operands'#000+
|
||||
'08007_E_Asm: $1 in','valid combination of opcode and operands'#000+
|
||||
'08008_E_Asm: 16 Bit references not supported'#000+
|
||||
'08009_E_Asm: Invalid effective address'#000+
|
||||
'08010_E_Asm: Immediate or reference expected'#000+
|
||||
'08011_E_Asm: $1 value exceeds bounds $2'#000+
|
||||
'08012_E_Asm: Short jump is out of r','ange $1'#000+
|
||||
'08012_E_Asm: Short jump is out',' of range $1'#000+
|
||||
'08013_E_Asm: Undefined label $1'#000+
|
||||
'08014_E_Asm: Comp type not supported for this target'#000+
|
||||
'08015_E_Asm: Extended type not supported for this target'#000+
|
||||
'08016_E_Asm: Duplicate label $1'#000+
|
||||
'08017_E_Asm: Redefined label $1'#000+
|
||||
'08018_E_Asm: First defined',' here'#000+
|
||||
'08018_E_Asm: First de','fined here'#000+
|
||||
'08019_E_Asm: Invalid register $1'#000+
|
||||
'08020_E_Asm: 16 or 32 Bit references not supported'#000+
|
||||
'08021_E_Asm: 64 Bit operands not supported'#000+
|
||||
'08022_E_Asm: AH,BH,CH or DH cannot be used in an instruction requiring'+
|
||||
' REX prefix'#000+
|
||||
'08023_E_Missing .seh_endp','rologue directive'#000+
|
||||
'08023_E_Missing .seh','_endprologue directive'#000+
|
||||
'08024_E_Function prologue exceeds 255 bytes'#000+
|
||||
'08025_E_.seh_handlerdata directive without preceding .seh_handler'#000+
|
||||
'09000_W_Source operating system redefined'#000+
|
||||
'09001_I_Assembling (pipe) $1'#000+
|
||||
'09002_E_Can'#039't create assembler file: $1'#000+
|
||||
'0','9003_E_Can'#039't create object file: $1 (error code: $2)'#000+
|
||||
'09002_E_Can'#039't create assembler file:',' $1'#000+
|
||||
'09003_E_Can'#039't create object file: $1 (error code: $2)'#000+
|
||||
'09004_E_Can'#039't create archive file: $1'#000+
|
||||
'09005_E_Assembler $1 not found, switching to external assembling'#000+
|
||||
'09006_T_Using assembler: $1'#000+
|
||||
'09007_E_Error while assembling exitcode $1'#000+
|
||||
'09008_E_Can'#039't',' call the assembler, error $1 switching to external'+
|
||||
'09008_E_','Can'#039't call the assembler, error $1 switching to external'+
|
||||
' assembling'#000+
|
||||
'09009_I_Assembling $1'#000+
|
||||
'09010_I_Assembling with smartlinking $1'#000+
|
||||
'09011_W_Object $1 not found, Linking may fail !'#000+
|
||||
'09012_W_Library $1 not found, Linking may fail !'#000+
|
||||
'09013_E_Error whil','e linking'#000+
|
||||
'09013_E_Error',' while linking'#000+
|
||||
'09014_E_Can'#039't call the linker, switching to external linking'#000+
|
||||
'09015_I_Linking $1'#000+
|
||||
'09016_E_Util $1 not found, switching to external linking'#000+
|
||||
'09017_T_Using util $1'#000+
|
||||
'09018_E_Creation of Executables not supported'#000+
|
||||
'09019_E_Creation of Dynam','ic/Shared Libraries not supported'#000+
|
||||
'09019_E_Creation of ','Dynamic/Shared Libraries not supported'#000+
|
||||
'09020_I_Closing script $1'#000+
|
||||
'09021_E_resource compiler "$1" not found, switching to external mode'#000+
|
||||
'09022_I_Compiling resource $1'#000+
|
||||
'09023_T_unit $1 can'#039't be statically linked, switching to smart lin'+
|
||||
'king'#000+
|
||||
'09024_T_un','it $1 can'#039't be smart linked, switching to static linki'+
|
||||
'09024','_T_unit $1 can'#039't be smart linked, switching to static linki'+
|
||||
'ng'#000+
|
||||
'09025_T_unit $1 can'#039't be shared linked, switching to static linkin'+
|
||||
'g'#000+
|
||||
'09026_E_unit $1 can'#039't be smart or static linked'#000+
|
||||
'09027_E_unit $1 can'#039't be shared or static linked'#000+
|
||||
'09028_D_Calling re','source compiler "$1" with "$2" as command line'#000+
|
||||
'09028_D_Calli','ng resource compiler "$1" with "$2" as command line'#000+
|
||||
'09029_E_Error while compiling resources'#000+
|
||||
'09030_E_Can'#039't call the resource compiler "$1", switching to extern'+
|
||||
'al mode'#000+
|
||||
'09031_E_Can'#039't open resource file "$1"'#000+
|
||||
'09032_E_Can'#039't write resource file "$1"'#000+
|
||||
'09','033_N_File "$1" not found for backquoted cat command'#000+
|
||||
'09032_E_Can'#039't write resource file "$','1"'#000+
|
||||
'09033_N_File "$1" not found for backquoted cat command'#000+
|
||||
'09128_F_Can'#039't post process executable $1'#000+
|
||||
'09129_F_Can'#039't open executable $1'#000+
|
||||
'09130_X_Size of Code: $1 bytes'#000+
|
||||
'09131_X_Size of initialized data: $1 bytes'#000+
|
||||
'09132_X_Size of uninitialized data: $1 ','bytes'#000+
|
||||
'09132_X_Size of uninitialized data',': $1 bytes'#000+
|
||||
'09133_X_Stack space reserved: $1 bytes'#000+
|
||||
'09134_X_Stack space committed: $1 bytes'#000+
|
||||
'09200_F_Executable image size is too big for $1 target.'#000+
|
||||
'09201_W_Object file "$1" contains 32-bit absolute relocation to symbol'+
|
||||
' "$2".'#000+
|
||||
'10000_T_Unitsearch: $1',#000+
|
||||
'10000_T_Unitsearc','h: $1'#000+
|
||||
'10001_T_PPU Loading $1'#000+
|
||||
'10002_U_PPU Name: $1'#000+
|
||||
'10003_U_PPU Flags: $1'#000+
|
||||
@ -987,48 +991,48 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'10006_U_PPU File too short'#000+
|
||||
'10007_U_PPU Invalid Header (no PPU at the begin)'#000+
|
||||
'10008_U_PPU Invalid Version $1'#000+
|
||||
'10009_U_PPU is compiled f','or another processor'#000+
|
||||
'10009_U_PPU is compi','led for another processor'#000+
|
||||
'10010_U_PPU is compiled for another target'#000+
|
||||
'10011_U_PPU Source: $1'#000+
|
||||
'10012_U_Writing $1'#000+
|
||||
'10013_F_Can'#039't Write PPU-File'#000+
|
||||
'10014_F_Error reading PPU-File'#000+
|
||||
'10015_F_unexpected end of PPU-File'#000+
|
||||
'10016_F_Invalid PPU-File entry: $1'#000+
|
||||
'1001','7_F_PPU Dbx count problem'#000+
|
||||
'10016_F_Invalid PPU-File entry: $1',#000+
|
||||
'10017_F_PPU Dbx count problem'#000+
|
||||
'10018_E_Illegal unit name: $1'#000+
|
||||
'10019_F_Too much units'#000+
|
||||
'10020_F_Circular unit reference between $1 and $2'#000+
|
||||
'10021_F_Can'#039't compile unit $1, no sources available'#000+
|
||||
'10022_F_Can'#039't find unit $1 used by $2'#000+
|
||||
'10023_W_Unit $1 was n','ot found but $2 exists'#000+
|
||||
'10023_W_Unit $1 ','was not found but $2 exists'#000+
|
||||
'10024_F_Unit $1 searched but $2 found'#000+
|
||||
'10025_W_Compiling the system unit requires the -Us switch'#000+
|
||||
'10026_F_There were $1 errors compiling module, stopping'#000+
|
||||
'10027_U_Load from $1 ($2) unit $3'#000+
|
||||
'10028_U_Recompiling $1, checksu','m changed for $2'#000+
|
||||
'10028_U_Recompiling $1, ch','ecksum changed for $2'#000+
|
||||
'10029_U_Recompiling $1, source found only'#000+
|
||||
'10030_U_Recompiling unit, static lib is older than ppufile'#000+
|
||||
'10031_U_Recompiling unit, shared lib is older than ppufile'#000+
|
||||
'10032_U_Recompiling unit, obj and asm are older than ppufile'#000+
|
||||
'10','033_U_Recompiling unit, obj is older than asm'#000+
|
||||
'10032_U_Recompiling unit, obj and asm are older than ppufi','le'#000+
|
||||
'10033_U_Recompiling unit, obj is older than asm'#000+
|
||||
'10034_U_Parsing interface of $1'#000+
|
||||
'10035_U_Parsing implementation of $1'#000+
|
||||
'10036_U_Second load for unit $1'#000+
|
||||
'10037_U_PPU Check file $1 time $2'#000+
|
||||
'10040_W_Can'#039't recompile unit $1, but found modifed include ','files'+
|
||||
'10040_W_Can'#039't recompile unit $1, but found modifed inc','lude files'+
|
||||
#000+
|
||||
'10041_U_File $1 is newer than the one used for creating PPU file $2'#000+
|
||||
'10042_U_Trying to use a unit which was compiled with a different FPU m'+
|
||||
'ode'#000+
|
||||
'10043_U_Loading interface units from $1'#000+
|
||||
'10044_U_Loading implementation units from $1'#000+
|
||||
'10045_U','_Interface CRC changed for unit $1'#000+
|
||||
'10','045_U_Interface CRC changed for unit $1'#000+
|
||||
'10046_U_Implementation CRC changed for unit $1'#000+
|
||||
'10047_U_Finished compiling unit $1'#000+
|
||||
'10048_U_Adding dependency: $1 depends on $2'#000+
|
||||
'10049_U_No reload, is caller: $1'#000+
|
||||
'10050_U_No reload, already in second compile: ','$1'#000+
|
||||
'10050_U_No reload, already in second comp','ile: $1'#000+
|
||||
'10051_U_Flag for reload: $1'#000+
|
||||
'10052_U_Forced reloading'#000+
|
||||
'10053_U_Previous state of $1: $2'#000+
|
||||
@ -1036,116 +1040,116 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'10055_U_Loading unit $1'#000+
|
||||
'10056_U_Finished loading unit $1'#000+
|
||||
'10057_U_Registering new unit $1'#000+
|
||||
'10058_U_R','e-resolving unit $1'#000+
|
||||
'1005','8_U_Re-resolving unit $1'#000+
|
||||
'10059_U_Skipping re-resolving unit $1, still loading used units'#000+
|
||||
'10060_U_Unloading resource unit $1 (not needed)'#000+
|
||||
'10061_E_Unit $1 was compiled using a different whole program optimizat'+
|
||||
'ion feedback input ($2, $3); recompile',' it without wpo or use the sam'+
|
||||
'ion feedback input ($2, $3); reco','mpile it without wpo or use the sam'+
|
||||
'e wpo feedback input file for this compilation invocation'#000+
|
||||
'10062_U_Indirect interface (objects/classes) CRC changed for unit $1'#000+
|
||||
'11000_O_$1 [options] <inputfile> [options]'#000+
|
||||
'11001_W_Only one source file supported, ','changing source file to comp'+
|
||||
'11001_W_Only one source file suppor','ted, changing source file to comp'+
|
||||
'ile from "$1" into "$2"'#000+
|
||||
'11002_W_DEF file can be created only for OS/2'#000+
|
||||
'11003_E_nested response files are not supported'#000+
|
||||
'11004_F_No source file name in command line'#000+
|
||||
'11005_N_No option inside $1 config file'#000+
|
||||
'11006_E_Il','legal parameter: $1'#000+
|
||||
'11006','_E_Illegal parameter: $1'#000+
|
||||
'11007_H_-? writes help pages'#000+
|
||||
'11008_F_Too many config files nested'#000+
|
||||
'11009_F_Unable to open file $1'#000+
|
||||
'11010_D_Reading further options from $1'#000+
|
||||
'11011_W_Target is already set to: $1'#000+
|
||||
'11012_W_Shared libs not supported on DOS platf','orm, reverting to stat'+
|
||||
'11012_W_Shared libs not supported on DOS ','platform, reverting to stat'+
|
||||
'ic'#000+
|
||||
'11013_F_In options file $1 at line $2 too many \var{\#IF(N)DEFs} encou'+
|
||||
'ntered'#000+
|
||||
'11014_F_In options file $1 at line $2 unexpected \var{\#ENDIFs} encoun'+
|
||||
'tered'#000+
|
||||
'11015_F_Open conditional at the end of the options file'#000+
|
||||
'11016_','W_Debug information generation is not supported by this execut'+
|
||||
'1','1016_W_Debug information generation is not supported by this execut'+
|
||||
'able'#000+
|
||||
'11017_H_Try recompiling with -dGDB'#000+
|
||||
'11018_W_You are using the obsolete switch $1'#000+
|
||||
'11019_W_You are using the obsolete switch $1, please use $2'#000+
|
||||
'11020_N_Switching assembler to de','fault source writing assembler'#000+
|
||||
'11020_N_Switching assembler ','to default source writing assembler'#000+
|
||||
'11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
|
||||
'11022_W_"$1" assembler use forced'#000+
|
||||
'11026_T_Reading options from file $1'#000+
|
||||
'11027_T_Reading options from environment $1'#000+
|
||||
'11028_D_Handling option "$1','"'#000+
|
||||
'11028_D_Handling optio','n "$1"'#000+
|
||||
'11029_O_*** press enter ***'#000+
|
||||
'11030_H_Start of reading config file $1'#000+
|
||||
'11031_H_End of reading config file $1'#000+
|
||||
'11032_D_interpreting option "$1"'#000+
|
||||
'11036_D_interpreting firstpass option "$1"'#000+
|
||||
'11033_D_interpreting file option "$1"'#000+
|
||||
'11034_D_Reading co','nfig file "$1"'#000+
|
||||
'11034_D_Readi','ng config file "$1"'#000+
|
||||
'11035_D_found source file name "$1"'#000+
|
||||
'11039_E_Unknown codepage "$1"'#000+
|
||||
'11040_F_Config file $1 is a directory'#000+
|
||||
'11041_W_Assembler output selected "$1" cannot generate debug info, deb'+
|
||||
'ugging disabled'#000+
|
||||
'11042_W_Use of ppc386.cfg is deprec','ated, please use fpc.cfg instead'#000+
|
||||
'11042_W_Use of ppc386.cfg is d','eprecated, please use fpc.cfg instead'#000+
|
||||
'11043_F_In options file $1 at line $2 \var{\#ELSE} directive without \'+
|
||||
'var{\#IF(N)DEF} found'#000+
|
||||
'11044_F_Option "$1" is not, or not yet, supported on the current targe'+
|
||||
't platform'#000+
|
||||
'11045_F_The feature "$1" is not, o','r not yet, supported on the select'+
|
||||
'11045_F_The feature "$1" is n','ot, or not yet, supported on the select'+
|
||||
'ed target platform'#000+
|
||||
'11046_N_DWARF debug information cannot be used with smart linking on t'+
|
||||
'his target, switching to static linking'#000+
|
||||
'11047_W_Option "$1" is ignored for the current target platform.'#000+
|
||||
'11048_W_Disab','ling external debug information because it is unsupport'+
|
||||
'11048_W_','Disabling external debug information because it is unsupport'+
|
||||
'ed for the selected target/debug format combination.'#000+
|
||||
'11049_N_DWARF debug information cannot be used with smart linking with'+
|
||||
' external assembler, disabling static library creation.'#000+
|
||||
'11050_','E_Invalid value for MACOSX_DEPLOYMENT_TARGET environment varia'+
|
||||
'1','1050_E_Invalid value for MACOSX_DEPLOYMENT_TARGET environment varia'+
|
||||
'ble: $1'#000+
|
||||
'11051_E_Invalid value for IPHONEOS_DEPLOYMENT_TARGET environment varia'+
|
||||
'ble: $1'#000+
|
||||
'11052_E_You must use a FPU type of VFPV2, VFPV3 or VFPV3_D16 when usin'+
|
||||
'g the EABIHF ABI targe','t'#000+
|
||||
'g the EABIHF ABI ','target'#000+
|
||||
'12000_F_Cannot open whole program optimization feedback file "$1"'#000+
|
||||
'12001_D_Processing whole program optimization information in wpo feedb'+
|
||||
'ack file "$1"'#000+
|
||||
'12002_D_Finished processing the whole program optimization information'+
|
||||
' in wpo feedback f','ile "$1"'#000+
|
||||
' in wpo feedb','ack file "$1"'#000+
|
||||
'12003_E_Expected section header, but got "$2" at line $1 of wpo feedba'+
|
||||
'ck file'#000+
|
||||
'12004_W_No handler registered for whole program optimization section "'+
|
||||
'$2" at line $1 of wpo feedback file, ignoring'#000+
|
||||
'12005_D_Found whole program optimizat','ion section "$1" with informati'+
|
||||
'12005_D_Found whole program opti','mization section "$1" with informati'+
|
||||
'on about "$2"'#000+
|
||||
'12006_F_The selected whole program optimizations require a previously '+
|
||||
'generated feedback file (use -Fw to specify)'#000+
|
||||
'12007_E_No collected information necessary to perform "$1" whole progr'+
|
||||
'am optimiz','ation found'#000+
|
||||
'am op','timization found'#000+
|
||||
'12008_F_Specify a whole program optimization feedback file to store th'+
|
||||
'e generated info in (using -FW)'#000+
|
||||
'12009_E_Not generating any whole program optimization information, yet'+
|
||||
' a feedback file was specified (using -FW)'#000+
|
||||
'12010_E_Not p','erforming any whole program optimizations, yet an input'+
|
||||
'12010_E_','Not performing any whole program optimizations, yet an input'+
|
||||
' feedback file was specified (using -Fw)'#000+
|
||||
'12011_D_Skipping whole program optimization section "$1", because not '+
|
||||
'needed by the requested optimizations'#000+
|
||||
'12012_W_Overriding previously read i','nformation for "$1" from feedbac'+
|
||||
'12012_W_Overriding previously r','ead information for "$1" from feedbac'+
|
||||
'k input file using information in section "$2"'#000+
|
||||
'12013_E_Cannot extract symbol liveness information from program when s'+
|
||||
'tripping symbols, use -Xs-'#000+
|
||||
'12014_E_Cannot extract symbol liveness information from program ','when'+
|
||||
'12014_E_Cannot extract symbol liveness information from pro','gram when'+
|
||||
' when not linking'#000+
|
||||
'12015_F_Cannot find "$1" or "$2" to extract symbol liveness informatio'+
|
||||
'n from linked program'#000+
|
||||
'12016_E_Error during reading symbol liveness information produced by "'+
|
||||
'$1"'#000+
|
||||
'12017_F_Error executing "$1" (exitcode: $2) to extra','ct symbol inform'+
|
||||
'12017_F_Error executing "$1" (exitcode: $2) to ','extract symbol inform'+
|
||||
'ation from linked program'#000+
|
||||
'12018_E_Collection of symbol liveness information can only help when u'+
|
||||
'sing smart linking, use -CX -XX'#000+
|
||||
'12019_E_Cannot create specified whole program optimisation feedback fi'+
|
||||
'le "$1"'#000+
|
||||
'11023_Free Pascal ','Compiler version $FPCFULLVERSION [$FPCDATE] for $F'+
|
||||
'11023_Free Pa','scal Compiler version $FPCFULLVERSION [$FPCDATE] for $F'+
|
||||
'PCCPU'#010+
|
||||
'Copyright (c) 1993-2012 by Florian Klaempfl and others'#000+
|
||||
'11024_Free Pascal Compiler version $FPCVERSION'#010+
|
||||
@ -1153,8 +1157,8 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'Compiler Date : $FPCDATE'#010+
|
||||
'Compiler CPU Target: $FPCCPU'#010+
|
||||
#010+
|
||||
'Supported targets:'#010+
|
||||
' ','$OSTARGETS'#010+
|
||||
'Supported target','s:'#010+
|
||||
' $OSTARGETS'#010+
|
||||
#010+
|
||||
'Supported CPU instruction sets:'#010+
|
||||
' $INSTRUCTIONSETS'#010+
|
||||
@ -1168,8 +1172,8 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'Supported Optimizations:'#010+
|
||||
' $OPTIMIZATIONS'#010+
|
||||
#010+
|
||||
'Supported Whole Program Optimizations:'#010+
|
||||
' ',' All'#010+
|
||||
'Supported Whole Program Optimizatio','ns:'#010+
|
||||
' All'#010+
|
||||
' $WPOPTIMIZATIONS'#010+
|
||||
#010+
|
||||
'Supported Microcontroller types:'#010+
|
||||
@ -1179,93 +1183,93 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'For more information read COPYING.v2'#010+
|
||||
#010+
|
||||
'Please report bugs in our bug tracker on:'#010+
|
||||
' http://bu','gs.freepascal.org'#010+
|
||||
' http','://bugs.freepascal.org'#010+
|
||||
#010+
|
||||
'More information may be found on our WWW pages (including directions'#010+
|
||||
'for mailing lists useful for asking questions or discussing potential'#010+
|
||||
'new features, etc.):'#010+
|
||||
' http://www.freepascal.org'#000+
|
||||
'11025_**0*_Put + a','fter a boolean switch option to enable it, - to di'+
|
||||
'11025_**0*_Pu','t + after a boolean switch option to enable it, - to di'+
|
||||
'sable it'#010+
|
||||
'**1a_The compiler doesn'#039't delete the generated assembler file'#010+
|
||||
'**2al_List sourcecode lines in assembler file'#010+
|
||||
'**2an_List node info in assembler file (-dEXTDEBUG compiler)'#010+
|
||||
'*L2ap_Use pi','pes instead of creating temporary assembler files'#010+
|
||||
'*L2ap_U','se pipes instead of creating 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<x>_Output format:'#010+
|
||||
'**2Adefault_Use default assembler'#010+
|
||||
'3*2Aas_Assemb','le using GNU AS'#010+
|
||||
'3*2Aas_A','ssemble using GNU AS'#010+
|
||||
'3*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#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*2Anasmwdosx_Win32/WDOSX object f','ile using Nasm'#010+
|
||||
'3*2Anasmwdosx_Win32/WDOSX obj','ect file using Nasm'#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*2Atasm_Obj file using Tasm (Borland)'#010+
|
||||
'3*2Aelf_ELF (Linux) using internal writer'#010+
|
||||
'3*2Acoff_COFF (Go32v2) using inte','rnal writer'#010+
|
||||
'3*2Acoff_COFF (Go32v2) using',' internal writer'#010+
|
||||
'3*2Apecoff_PE-COFF (Win32) using internal writer'#010+
|
||||
'4*2Aas_Assemble using GNU AS'#010+
|
||||
'4*2Agas_Assemble 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-C','OFF (Win64) using internal writer'#010+
|
||||
'4*2Apecoff','_PE-COFF (Win64) using internal writer'#010+
|
||||
'4*2Aelf_ELF (Linux-64bit) using internal writer'#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+
|
||||
'P','*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_Generate local symbol info'#010+
|
||||
'**1B_Build all modules'#010+
|
||||
'**1C<x>_Code generation options:'#010+
|
||||
'**2C3<x>_Turn on ieee error checking for constants'#010+
|
||||
'**2Ca<x>_Select ','ABI, see fpc -i for possible values'#010+
|
||||
'**2Ca<x>_Se','lect ABI, see fpc -i for possible values'#010+
|
||||
'**2Cb_Generate big-endian code'#010+
|
||||
'**2Cc<x>_Set default calling convention to <x>'#010+
|
||||
'**2CD_Create also dynamic library (not supported)'#010+
|
||||
'**2Ce_Compilation with emulated floating point opcodes'#010+
|
||||
'**2Cf<x>_Select fpu i','nstruction set to use, see fpc -i for possible '+
|
||||
'**2Cf<x>_Select ','fpu instruction set to use, see fpc -i for possible '+
|
||||
'values'#010+
|
||||
'**2CF<x>_Minimal floating point constant precision (default, 32, 64)'#010+
|
||||
'**2Cg_Generate PIC code'#010+
|
||||
'**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
|
||||
'**2Ci_IO-checking'#010+
|
||||
'**2Cn_Omit linking stag','e'#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+
|
||||
'**2Cp<x>_Select instruction set, see fpc -i for possible values'#010+
|
||||
'**2CP<x>=<y>_ packing settings',#010+
|
||||
'**2CP<x>=<y>_ packing set','tings'#010+
|
||||
'**3CPPACKSET=<y>_ <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+
|
||||
'and 8'#010+
|
||||
'**2Cr_Range checking'#010+
|
||||
'**2CR_Verify object method call validity'#010+
|
||||
'**2Cs<n>_Set stack checking size to <n>'#010+
|
||||
'**2Ct_Stack checking (for testing only, see manual)'#010+
|
||||
'p*2CT<x>_','Target-specific code generation options'#010+
|
||||
'p*2C','T<x>_Target-specific code generation options'#010+
|
||||
'P*2CT<x>_Target-specific code generation options'#010+
|
||||
'J*2CT<x>_Target-specific code generation options'#010+
|
||||
'p*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+
|
||||
' (AIX)'#010+
|
||||
'P*3CTsmalltoc_ Generate s','maller TOCs at the expense of execution spe'+
|
||||
'P*3CTsmalltoc_ Gener','ate smaller TOCs at the expense of execution spe'+
|
||||
'ed (AIX)'#010+
|
||||
'J*3CTcompactintarrayinit_ Generate smaller (but potentially slower) co'+
|
||||
'de for initializing integer array constants'#010+
|
||||
'K*3CTenumfieldinit_ Initialize enumeration fields in constructors to e'+
|
||||
'numt','ype(0), after calling inherited constructors'#010+
|
||||
'K*3CTenumfieldinit_ Initialize enumeration fields in constructors to ',
|
||||
'enumtype(0), after calling inherited constructors'#010+
|
||||
'J*2Cv_Var/out parameter copy-out checking'#010+
|
||||
'**2CX_Create also smartlinked library'#010+
|
||||
'**1d<x>_Defines the symbol <x>'#010+
|
||||
'**1D_Generate a DEF file'#010+
|
||||
'**2Dd<x>_Set description to <x>'#010+
|
||||
'**2Dv<x>_Set DLL version to',' <x>'#010+
|
||||
'**2Dv<x>_Set DLL versi','on to <x>'#010+
|
||||
'*O2Dw_PM application'#010+
|
||||
'**1e<x>_Set path to executable'#010+
|
||||
'**1E_Same as -Cn'#010+
|
||||
@ -1273,46 +1277,46 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'**1F<x>_Set file names and paths:'#010+
|
||||
'**2Fa<x>[,y]_(for a program) load units <x> and [y] before uses is par'+
|
||||
'sed'#010+
|
||||
'**2Fc<x>_Set input codepage to <x>'#010+
|
||||
'**2','FC<x>_Set RC compiler binary name to <x>'#010+
|
||||
'**2Fc<x>_Set input codepage to <x','>'#010+
|
||||
'**2FC<x>_Set RC compiler binary name to <x>'#010+
|
||||
'**2Fd_Disable the compiler'#039's internal directory cache'#010+
|
||||
'**2FD<x>_Set the directory where to search for compiler utilities'#010+
|
||||
'**2Fe<x>_Redirect error output to <x>'#010+
|
||||
'**2Ff<x>_Add <x> to framework path (Darwi','n only)'#010+
|
||||
'**2Ff<x>_Add <x> to framework path (','Darwin only)'#010+
|
||||
'**2FE<x>_Set exe/unit output path to <x>'#010+
|
||||
'**2Fi<x>_Add <x> to include path'#010+
|
||||
'**2Fl<x>_Add <x> to library path'#010+
|
||||
'**2FL<x>_Use <x> as dynamic linker'#010+
|
||||
'**2Fm<x>_Load unicode conversion table from <x>.txt in the compiler di'+
|
||||
'r'#010+
|
||||
'**2Fo<x>_Add <x> t','o object path'#010+
|
||||
'**2Fo<x>_Add ','<x> to object path'#010+
|
||||
'**2Fr<x>_Load error message file <x>'#010+
|
||||
'**2FR<x>_Set resource (.res) linker to <x>'#010+
|
||||
'**2Fu<x>_Add <x> to unit path'#010+
|
||||
'**2FU<x>_Set unit output path to <x>, overrides -FE'#010+
|
||||
'**2FW<x>_Store generated whole-program optimization feedback in ','<x>'#010+
|
||||
'**2FW<x>_Store generated whole-program optimization feedbac','k in <x>'#010+
|
||||
'**2Fw<x>_Load previously stored whole-program optimization feedback fr'+
|
||||
'om <x>'#010+
|
||||
'*g1g_Generate debug information (default format for target)'#010+
|
||||
'*g2gc_Generate checks for pointers'#010+
|
||||
'*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010,
|
||||
'*g2gh_Use heaptrace unit (for memory leak/corruption debugg','ing)'#010+
|
||||
'*g2gl_Use line info unit (show more info with backtraces)'#010+
|
||||
'*g2go<x>_Set debug information options'#010+
|
||||
'*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+
|
||||
'aks gdb < 6.5)'#010+
|
||||
'*g3gostabsabsincludes_ Store absolute/full include file paths in S','ta'+
|
||||
'*g3gostabsabsincludes_ Store absolute/full include file paths',' in Sta'+
|
||||
'bs'#010+
|
||||
'*g3godwarfmethodclassprefix_ Prefix method names in DWARF with class n'+
|
||||
'ame'#010+
|
||||
'*g2gp_Preserve case in stabs symbol names'#010+
|
||||
'*g2gs_Generate Stabs debug information'#010+
|
||||
'*g2gt_Trash local variables (to detect uninitialized uses)'#010+
|
||||
'*g2gv_Generates progr','ams traceable with Valgrind'#010+
|
||||
'*g2gv_Generates ','programs traceable with Valgrind'#010+
|
||||
'*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+
|
||||
'*g2gw2_Generate DWARFv2 debug information'#010+
|
||||
'*g2gw3_Generate DWARFv3 debug information'#010+
|
||||
'*g2gw4_Generate DWARFv4 debug information (experimental)'#010+
|
||||
'**1i_Informatio','n'#010+
|
||||
'**1i_Infor','mation'#010+
|
||||
'**2iD_Return compiler date'#010+
|
||||
'**2iV_Return short compiler version'#010+
|
||||
'**2iW_Return full compiler version'#010+
|
||||
@ -1320,77 +1324,77 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'**2iSP_Return compiler host processor'#010+
|
||||
'**2iTO_Return target OS'#010+
|
||||
'**2iTP_Return target processor'#010+
|
||||
'**1I<x>_Add <x> to in','clude path'#010+
|
||||
'**1I<x>_Add <x> ','to include path'#010+
|
||||
'**1k<x>_Pass <x> to the linker'#010+
|
||||
'**1l_Write logo'#010+
|
||||
'**1M<x>_Set language mode to <x>'#010+
|
||||
'**2Mfpc_Free Pascal dialect (default)'#010+
|
||||
'**2Mobjfpc_FPC mode with Object Pascal support'#010+
|
||||
'**2Mdelphi_Delphi 7 compatibility mode'#010+
|
||||
'**2Mtp_TP/BP 7.0 compatib','ility mode'#010+
|
||||
'**2Mtp_TP/BP 7.0 com','patibility mode'#010+
|
||||
'**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+
|
||||
'**1n_Do not read the default config files'#010+
|
||||
'**1o<x>_Change the name of the executable produced to <x>'#010+
|
||||
'**1O<x>_Optimizations:'#010+
|
||||
'**2O-_Disable optimizations'#010+
|
||||
'**2O1_Level 1 optimiza','tions (quick and debugger friendly)'#010+
|
||||
'**2O1_Level 1 opt','imizations (quick and debugger friendly)'#010+
|
||||
'**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+
|
||||
'**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+
|
||||
'**2O3_Level 4 optimizations (-O3 + optimizations which might have unex'+
|
||||
'pected side effects)'#010+
|
||||
'**','2Oa<x>=<y>_Set alignment'#010+
|
||||
'pected side effect','s)'#010+
|
||||
'**2Oa<x>=<y>_Set alignment'#010+
|
||||
'**2Oo[NO]<x>_Enable or disable optimizations, see fpc -i for possible '+
|
||||
'values'#010+
|
||||
'**2Op<x>_Set target cpu for optimizing, see fpc -i for possible values'+
|
||||
#010+
|
||||
'**2OW<x>_Generate whole-program optimization feedback for optimizat','i'+
|
||||
'**2OW<x>_Generate whole-program optimization feedback for opti','mizati'+
|
||||
'on <x>, see fpc -i for possible values'#010+
|
||||
'**2Ow<x>_Perform whole-program optimization <x>, see fpc -i for possib'+
|
||||
'le values'#010+
|
||||
'**2Os_Optimize for size rather than speed'#010+
|
||||
'**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+
|
||||
'F*1P<x>_Target CPU',' / compiler related options:'#010+
|
||||
'F*1P<x>_Targe','t CPU / compiler related options:'#010+
|
||||
'F*2PB_Show default compiler binary'#010+
|
||||
'F*2PP_Show default target cpu'#010+
|
||||
'F*2P<x>_Set target CPU (arm,i386,m68k,mips,mipsel,powerpc,powerpc64,sp'+
|
||||
'arc,x86_64'#010+
|
||||
'**1R<x>_Assembler reading style:'#010+
|
||||
'**2Rdefault_Use default assemble','r for target'#010+
|
||||
'**2Rdefault_Use default ass','embler for target'#010+
|
||||
'3*2Ratt_Read AT&T style assembler'#010+
|
||||
'3*2Rintel_Read Intel style assembler'#010+
|
||||
'6*2RMOT_Read motorola style assembler'#010+
|
||||
'**1S<x>_Syntax options:'#010+
|
||||
'**2S2_Same as -Mobjfpc'#010+
|
||||
'**2Sc_Support operators like C (*=,+=,/= and -=)'#010+
|
||||
'**2Sa_Turn on assertio','ns'#010+
|
||||
'**2Sa_Turn on ass','ertions'#010+
|
||||
'**2Sd_Same as -Mdelphi'#010+
|
||||
'**2Se<x>_Error options. <x> is a combination of the following:'#010+
|
||||
'**3*_<n> : Compiler halts after the <n> 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+
|
||||
'**3*_n : Compiler also halts after notes',#010+
|
||||
'**3*_h : Compiler also halts after hints'#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+
|
||||
'**2Si_Turn on inlining of procedures/functions declared',' as "inline"'#010+
|
||||
'**2Sk_Load fpcylix unit'#010+
|
||||
'**2SI<x>_Set interface style to <x>'#010+
|
||||
'**3SIcom_COM compatible interface (default)'#010+
|
||||
'**3SIcorba_CORBA compatible interface'#010+
|
||||
'**2Sm_Support macros like C (global)'#010+
|
||||
'**2So_Same as -Mtp'#010+
|
||||
'**2Ss_Constructor name must be ini','t (destructor must be done)'#010+
|
||||
'**2Ss_Constructor name must b','e init (destructor must be done)'#010+
|
||||
'**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+
|
||||
'**2Sy_@<pointer> 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 sc','ript to link on target'#010+
|
||||
'**2st_Genera','te script to link on target'#010+
|
||||
'**2sr_Skip register allocation phase (use with -alr)'#010+
|
||||
'**1T<x>_Target operating system:'#010+
|
||||
'3*2Tdarwin_Darwin/Mac OS X'#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*2Tgo32v2_Version 2 of DJ De','lorie DOS extender'#010+
|
||||
'3*2Tiphonesim_ iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tda'+
|
||||
'rwin)'#010+
|
||||
'3*2Tlinux_Linux'#010+
|
||||
@ -1398,7 +1402,7 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'3*2Tnetware_Novell Netware Module (clib)'#010+
|
||||
'3*2Tnetwlibc_Novell Netware Module (libc)'#010+
|
||||
'3*2Topenbsd_OpenBSD'#010+
|
||||
'3*2Tos2_OS/2 ','/ eComStation'#010+
|
||||
'3*2Tos2_','OS/2 / eComStation'#010+
|
||||
'3*2Tsunos_SunOS/Solaris'#010+
|
||||
'3*2Tsymbian_Symbian OS'#010+
|
||||
'3*2Tsolaris_Solaris'#010+
|
||||
@ -1407,7 +1411,7 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'3*2Twin32_Windows 32 Bit'#010+
|
||||
'3*2Twince_Windows CE'#010+
|
||||
'4*2Tdarwin_Darwin/Mac OS X'#010+
|
||||
'4*2Tlinux_Linux',#010+
|
||||
'4*2Tlinux_','Linux'#010+
|
||||
'4*2Twin64_Win64 (64 bit Windows systems)'#010+
|
||||
'6*2Tamiga_Commodore Amiga'#010+
|
||||
'6*2Tatari_Atari ST/STe/TT'#010+
|
||||
@ -1417,7 +1421,7 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'A*2Tlinux_Linux'#010+
|
||||
'A*2Twince_Windows CE'#010+
|
||||
'P*2Tamiga_AmigaOS'#010+
|
||||
'P*2Tdarwin_Darwin/Mac OS X',#010+
|
||||
'P*2Tdarwin_Darwin/Mac',' OS X'#010+
|
||||
'P*2Tlinux_Linux'#010+
|
||||
'P*2Tmacos_Mac OS (classic)'#010+
|
||||
'P*2Tmorphos_MorphOS'#010+
|
||||
@ -1426,111 +1430,111 @@ const msgtxt : array[0..000276,1..240] of char=(
|
||||
'**1u<x>_Undefines the symbol <x>'#010+
|
||||
'**1U_Unit options:'#010+
|
||||
'**2Un_Do not check where the unit name matches the file name'#010+
|
||||
'**2Ur_Generate release unit',' files (never automatically recompiled)'#010+
|
||||
'**2Ur_Generate release',' unit files (never automatically recompiled)'#010+
|
||||
'**2Us_Compile a system unit'#010+
|
||||
'**1v<x>_Be verbose. <x> is a combination of 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*_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*_i : Show general info d : Show debug info'#010+
|
||||
'**2*_l : Show linenumbers r :',' Rhide/GCC compatibility mod'+
|
||||
'**2*_l : Show linenumbers ',' r : Rhide/GCC compatibility mod'+
|
||||
'e'#010+
|
||||
'**2*_s : Show time stamps q : Show message numbers'#010+
|
||||
'**2*_a : Show everything x : Executable info (Win32 only)'#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*_ with full path v : Write fpcdebug.txt with'#010+
|
||||
'**2*_ lots of debugging info'#010+
|
||||
'**2*_m<x>,<y> : Don'#039't show messages numbered <x> and <y>'#010+
|
||||
'F*1V<x>_Append '#039'-<x>'#039' to the used compiler binary name (e.g.',' '+
|
||||
'for version)'#010+
|
||||
'F*1V<x>_Append '#039'-<x>'#039' to the used compiler binary name ','(e.g.'+
|
||||
' for version)'#010+
|
||||
'**1W<x>_Target-specific options (targets)'#010+
|
||||
'3*2WA_Specify native type application (Windows)'#010+
|
||||
'4*2WA_Specify native type application (Windows)'#010+
|
||||
'A*2WA_Specify native type application (Windows)'#010+
|
||||
'3*2Wb_Create a bundle instead of a libra','ry (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+
|
||||
'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 reloc','atable image (Windows, Symbian)'#010+
|
||||
'3*2WB_Create a ','relocatable image (Windows, Symbian)'#010+
|
||||
'3*2WBxxxx_Set image base to xxxx (Windows, Symbian)'#010+
|
||||
'4*2WB_Create a relocatable image (Windows)'#010+
|
||||
'4*2WBxxxx_Set image base to xxxx (Windows)'#010+
|
||||
'A*2WB_Create a relocatable image (Windows, Symbian)'#010+
|
||||
'A*2WBxxxx_Set imag','e base to xxxx (Windows, Symbian)'#010+
|
||||
'A*2WBxxxx_Set',' image base to xxxx (Windows, Symbian)'#010+
|
||||
'3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+
|
||||
'4*2WC_Specify console type application (EMX, OS/2, Windows)'#010+
|
||||
'A*2WC_Specify console type application (Windows)'#010+
|
||||
'P*2WC_Specify console type applicatio','n (Classic Mac OS)'#010+
|
||||
'P*2WC_Specify console type appli','cation (Classic Mac OS)'#010+
|
||||
'3*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
|
||||
'4*2WD_Use DEFFILE to export 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 (Darwi','n)'#010+
|
||||
'3*2We_Use external resources (','Darwin)'#010+
|
||||
'4*2We_Use external resources (Darwin)'#010+
|
||||
'A*2We_Use external resources (Darwin)'#010+
|
||||
'P*2We_Use external 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 app','lication (EMX, OS/2, Windows)'#010+
|
||||
'3*2WG_Specify graphic typ','e application (EMX, OS/2, Windows)'#010+
|
||||
'4*2WG_Specify graphic type application (EMX, OS/2, 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_U','se internal resources (Darwin)'#010+
|
||||
'4*','2Wi_Use internal resources (Darwin)'#010+
|
||||
'A*2Wi_Use internal resources (Darwin)'#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 im','port sections (Windows)'#010+
|
||||
'A*2WI_Turn on/off the usage of import sections (Windows)'#010+
|
||||
'3*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
|
||||
'n)'#010+
|
||||
'4*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
|
||||
'n)'#010+
|
||||
'p*2WM<x>_Minimum M','ac OS X deployment version: 10.4, 10.5.1, ... (Dar'+
|
||||
'p*2WM<x>_Mini','mum Mac OS X deployment version: 10.4, 10.5.1, ... (Dar'+
|
||||
'win)'#010+
|
||||
'P*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
|
||||
'n)'#010+
|
||||
'3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
|
||||
'4*2WN_Do not generate relocation code, nee','ded for debugging (Windows'+
|
||||
'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*2Wpxxxx_Specify the controller type, see fpc -i for possible values'#010+
|
||||
'V*2Wpxxxx_Specify the controller type, see fpc -i for possible values'#010+
|
||||
'3*','2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'+
|
||||
#010+
|
||||
'V*2Wpxxxx_Specify the controller type, see fpc -i for possible valu','e'+
|
||||
's'#010+
|
||||
'3*2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+
|
||||
'A*2WP<x>_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+
|
||||
'A*2WR_Generate reloc','ation code (Windows)'#010+
|
||||
'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+
|
||||
'**2WX_Enable executable stack (Linux)'#010+
|
||||
'**1X_Executable options:'#010+
|
||||
'**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+
|
||||
'ux)'#010+
|
||||
'**2Xd_Do not search default li','brary path (sometimes required for cro'+
|
||||
'**2Xd_Do not search defau','lt library path (sometimes required for cro'+
|
||||
'ss-compiling when not using -XR)'#010+
|
||||
'**2Xe_Use external linker'#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 FPC_','LINK_DYNAMIC)'#010+
|
||||
'**2Xi_Use internal linker'#010+
|
||||
'**2Xm_Generate link map'#010+
|
||||
'**2XM<x>_Set the name of the '#039'main'#039' program routine (default i'+
|
||||
's '#039'main'#039')'#010+
|
||||
'F*2Xp<x>_First search for the compiler binary in the directory <x>'#010+
|
||||
'**2XP<x>_Prepend the binutils names with t','he prefix <x>'#010+
|
||||
'**2XP<x>_Prepend the binutils names w','ith the prefix <x>'#010+
|
||||
'**2Xr<x>_Set the linker'#039's rlink-path to <x> (needed for cross comp'+
|
||||
'ile, see the ld manual for more information) (BeOS, Linux)'#010+
|
||||
'**2XR<x>_Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD'+
|
||||
', Linux, Mac OS, Solaris)'#010+
|
||||
'**2Xs','_Strip all symbols from executable'#010+
|
||||
', Linux, Mac OS, Solaris)'#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+
|
||||
'**2XX_Try to smartlink units (defines FPC_LINK_SMART)'#010+
|
||||
'**1*_'#010,
|
||||
'*','*1*_'#010+
|
||||
'**1?_Show this help'#010+
|
||||
'**1h_Shows this help without waiting'
|
||||
);
|
||||
|
||||
@ -236,16 +236,32 @@ begin
|
||||
end;
|
||||
if (cs_create_pic in current_settings.moduleswitches) and
|
||||
assigned(opr.ref.symbol) and
|
||||
not assigned(opr.ref.relsymbol) and
|
||||
not(opr.ref.refaddr in [addr_pic,addr_pic_no_got]) then
|
||||
not assigned(opr.ref.relsymbol) then
|
||||
begin
|
||||
if (opr.ref.symbol.name <> '_GLOBAL_OFFSET_TABLE_') then
|
||||
if not(opr.ref.refaddr in [addr_pic,addr_pic_no_got]) then
|
||||
begin
|
||||
message(asmr_e_need_pic_ref);
|
||||
result:=false;
|
||||
if (opr.ref.symbol.name <> '_GLOBAL_OFFSET_TABLE_') then
|
||||
begin
|
||||
message(asmr_e_need_pic_ref);
|
||||
result:=false;
|
||||
end
|
||||
else
|
||||
opr.ref.refaddr:=addr_pic;
|
||||
end
|
||||
else
|
||||
opr.ref.refaddr:=addr_pic;
|
||||
begin
|
||||
{$ifdef x86_64}
|
||||
{ should probably be extended to i386, but there the situation
|
||||
is more complex and ELF-style PIC still need to be
|
||||
tested/debugged }
|
||||
if (opr.ref.symbol.bind in [AB_LOCAL,AB_PRIVATE_EXTERN]) and
|
||||
(opr.ref.refaddr=addr_pic) then
|
||||
message(asmr_w_useless_got_for_local)
|
||||
else if (opr.ref.symbol.bind in [AB_GLOBAL,AB_EXTERNAL,AB_COMMON,AB_WEAK_EXTERNAL]) and
|
||||
(opr.ref.refaddr=addr_pic_no_got) then
|
||||
message(asmr_w_global_access_without_got);
|
||||
{$endif x86_64}
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -326,15 +326,6 @@ Implementation
|
||||
{$endif i386}
|
||||
begin
|
||||
oper.opr.ref.refaddr:=addr_pic;
|
||||
{$ifdef x86_64}
|
||||
{ local symbols don't have to
|
||||
be accessed via the GOT
|
||||
}
|
||||
if (actasmpattern='GOTPCREL') and
|
||||
assigned(oper.opr.ref.symbol) and
|
||||
(oper.opr.ref.symbol.bind=AB_LOCAL) then
|
||||
Message(asmr_w_useless_got_for_local);
|
||||
{$endif x86_64}
|
||||
consume(AS_ID);
|
||||
end
|
||||
else
|
||||
|
||||
@ -44,7 +44,7 @@ Unit Rax86int;
|
||||
{------------------ Assembler Operators --------------------}
|
||||
AS_BYTE,AS_WORD,AS_DWORD,AS_QWORD,AS_TBYTE,AS_DQWORD,AS_NEAR,AS_FAR,
|
||||
AS_HIGH,AS_LOW,AS_OFFSET,AS_SIZEOF,AS_VMTOFFSET,AS_SEG,AS_TYPE,AS_PTR,AS_MOD,AS_SHL,AS_SHR,AS_NOT,
|
||||
AS_AND,AS_OR,AS_XOR);
|
||||
AS_AND,AS_OR,AS_XOR,AS_WRT,AS___GOTPCREL);
|
||||
|
||||
type
|
||||
tx86intreader = class(tasmreader)
|
||||
@ -103,7 +103,7 @@ Unit Rax86int;
|
||||
firstdirective = AS_ALIGN;
|
||||
lastdirective = AS_END;
|
||||
firstoperator = AS_BYTE;
|
||||
lastoperator = AS_XOR;
|
||||
lastoperator = AS___GOTPCREL;
|
||||
|
||||
_count_asmdirectives = longint(lastdirective)-longint(firstdirective);
|
||||
_count_asmoperators = longint(lastoperator)-longint(firstoperator);
|
||||
@ -116,7 +116,7 @@ Unit Rax86int;
|
||||
_asmoperators : array[0.._count_asmoperators] of tasmkeyword = (
|
||||
'BYTE','WORD','DWORD','QWORD','TBYTE','DQWORD','NEAR','FAR','HIGH',
|
||||
'LOW','OFFSET','SIZEOF','VMTOFFSET','SEG','TYPE','PTR','MOD','SHL','SHR','NOT','AND',
|
||||
'OR','XOR');
|
||||
'OR','XOR','WRT','GOTPCREL');
|
||||
|
||||
token2str : array[tasmtoken] of string[10] = (
|
||||
'','Label','LLabel','String','Integer',
|
||||
@ -126,7 +126,7 @@ Unit Rax86int;
|
||||
'','','','','','END',
|
||||
'','','','','','','','','',
|
||||
'','','sizeof','vmtoffset','','type','ptr','mod','shl','shr','not',
|
||||
'and','or','xor'
|
||||
'and','or','xor','wrt','..gotpcrel'
|
||||
);
|
||||
|
||||
var
|
||||
@ -591,8 +591,26 @@ Unit Rax86int;
|
||||
|
||||
'.' :
|
||||
begin
|
||||
actasmtoken:=AS_DOT;
|
||||
c:=current_scanner.asmgetchar;
|
||||
{$ifdef x86_64}
|
||||
if c='.' then
|
||||
begin
|
||||
actasmpattern:='..';
|
||||
c:=current_scanner.asmgetchar;
|
||||
repeat
|
||||
actasmpattern:=actasmpattern+c;
|
||||
c:=current_scanner.asmgetchar;
|
||||
until not(c in ['A'..'Z','a'..'z','0'..'9','_']);
|
||||
if upper(actasmpattern)<>'..GOTPCREL' then
|
||||
begin
|
||||
actasmtoken:=AS_ID;
|
||||
consume(AS___GOTPCREL);
|
||||
end;
|
||||
actasmtoken:=AS___GOTPCREL
|
||||
end
|
||||
else
|
||||
{$endif x86_64}
|
||||
actasmtoken:=AS_DOT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
@ -1239,7 +1257,30 @@ Unit Rax86int;
|
||||
begin
|
||||
{ force OPR_LOCAL to be a reference }
|
||||
if oper.opr.typ=OPR_LOCAL then
|
||||
oper.opr.localforceref:=true;
|
||||
oper.opr.localforceref:=true
|
||||
else
|
||||
begin
|
||||
{$ifdef x86_64}
|
||||
if actasmtoken=AS_WRT then
|
||||
begin
|
||||
if (oper.opr.typ=OPR_REFERENCE) then
|
||||
begin
|
||||
Consume(AS_WRT);
|
||||
Consume(AS___GOTPCREL);
|
||||
if (oper.opr.ref.base<>NR_NO) or
|
||||
(oper.opr.ref.index<>NR_NO) or
|
||||
(oper.opr.ref.offset<>0) then
|
||||
Message(asmr_e_wrong_gotpcrel_intel_syntax);
|
||||
if tf_no_pic_supported in target_info.flags then
|
||||
Message(asmr_e_no_gotpcrel_support);
|
||||
oper.opr.ref.refaddr:=addr_pic;
|
||||
oper.opr.ref.base:=NR_RIP;
|
||||
end
|
||||
else
|
||||
message(asmr_e_invalid_reference_syntax);
|
||||
end;
|
||||
{$endif x86_64}
|
||||
end;
|
||||
end
|
||||
else
|
||||
Message1(sym_e_unknown_id,tempstr);
|
||||
@ -1410,7 +1451,15 @@ Unit Rax86int;
|
||||
end;
|
||||
end
|
||||
else
|
||||
oper.opr.ref.base:=hreg;
|
||||
begin
|
||||
oper.opr.ref.base:=hreg;
|
||||
{$ifdef x86_64}
|
||||
{ non-GOT based RIP-relative accesses are also position-independent }
|
||||
if (oper.opr.ref.base=NR_RIP) and
|
||||
(oper.opr.ref.refaddr<>addr_pic) then
|
||||
oper.opr.ref.refaddr:=addr_pic_no_got;
|
||||
{$endif x86_64}
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
GotPlus:=false;
|
||||
|
||||
22
tests/webtbf/tw22665a.pp
Normal file
22
tests/webtbf/tw22665a.pp
Normal file
@ -0,0 +1,22 @@
|
||||
{ %target=win64 }
|
||||
{ %cpu=x86_64 }
|
||||
{ %fail }
|
||||
|
||||
{$asmmode intel}
|
||||
|
||||
var
|
||||
val: qword;
|
||||
|
||||
Function Test: QWord; Assembler; NoStackFrame;
|
||||
Asm
|
||||
{ win64 doesn't support a GOT }
|
||||
mov RAX, [val wrt ..gotpcrel]
|
||||
mov RAX, [RAX]
|
||||
End;
|
||||
|
||||
BEGIN
|
||||
Val := $12345678901;
|
||||
if test<>$12345678901 then
|
||||
halt(1);
|
||||
END.
|
||||
|
||||
22
tests/webtbf/tw22665b.pp
Normal file
22
tests/webtbf/tw22665b.pp
Normal file
@ -0,0 +1,22 @@
|
||||
{ %skiptarget=win64 }
|
||||
{ %cpu=x86_64 }
|
||||
{ %opt=-vw -Sew }
|
||||
{ %fail }
|
||||
|
||||
{$asmmode intel}
|
||||
|
||||
var
|
||||
val: qword;
|
||||
|
||||
Function Test: QWord; Assembler; NoStackFrame;
|
||||
Asm
|
||||
{ global symbols must be accessed via the GOT on non-win64 }
|
||||
mov RAX, [RIP+val]
|
||||
End;
|
||||
|
||||
BEGIN
|
||||
Val := $12345678901;
|
||||
if test<>$12345678901 then
|
||||
halt(1);
|
||||
END.
|
||||
|
||||
24
tests/webtbs/tw22665.pp
Normal file
24
tests/webtbs/tw22665.pp
Normal file
@ -0,0 +1,24 @@
|
||||
{ %cpu=x86_64 }
|
||||
{ %opt=-Cg }
|
||||
|
||||
{$asmmode intel}
|
||||
|
||||
var
|
||||
val: qword; public;
|
||||
|
||||
Function Test: QWord; Assembler; NoStackFrame;
|
||||
Asm
|
||||
{$ifdef win64}
|
||||
MOV RAX, [RIP+Val]
|
||||
{$else}
|
||||
mov RAX, [val wrt ..gotpcrel]
|
||||
mov RAX, [RAX]
|
||||
{$endif}
|
||||
End;
|
||||
|
||||
BEGIN
|
||||
Val := $12345678901;
|
||||
if test<>$12345678901 then
|
||||
halt(1);
|
||||
END.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user