mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 18:49:11 +02:00
+ generic implementation of ReplaceForbiddenAsmSymbolChars() instead
of the AVR-specific ifdef'ed variant o since the only special character we use in mangled names on all platforms is $, added a new field to tasminfo called "dollarsign" that holds the character $'s should be replaced with (if it doesn't have to be replaced, leave it at $) git-svn-id: trunk@20801 -
This commit is contained in:
parent
23df85e52a
commit
ac43eb9b70
@ -189,6 +189,8 @@ interface
|
|||||||
function EncodeUleb128(a: qword;out buf) : byte;
|
function EncodeUleb128(a: qword;out buf) : byte;
|
||||||
function EncodeSleb128(a: int64;out buf) : byte;
|
function EncodeSleb128(a: int64;out buf) : byte;
|
||||||
|
|
||||||
|
function ReplaceForbiddenAsmSymbolChars(const s: string): string;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -328,6 +330,19 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function ReplaceForbiddenAsmSymbolChars(const s: string): string;
|
||||||
|
var
|
||||||
|
i : longint;
|
||||||
|
rchar: char;
|
||||||
|
begin
|
||||||
|
Result:=s;
|
||||||
|
rchar:=target_asm.dollarsign;
|
||||||
|
for i:=1 to Length(Result) do
|
||||||
|
if Result[i]='$' then
|
||||||
|
Result[i]:=rchar;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
TAsmSymbol
|
TAsmSymbol
|
||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
@ -626,9 +626,11 @@ implementation
|
|||||||
do_line : boolean;
|
do_line : boolean;
|
||||||
|
|
||||||
sepChar : char;
|
sepChar : char;
|
||||||
|
replaceforbidden: boolean;
|
||||||
begin
|
begin
|
||||||
if not assigned(p) then
|
if not assigned(p) then
|
||||||
exit;
|
exit;
|
||||||
|
replaceforbidden:=target_asm.dollarsign<>'$';
|
||||||
|
|
||||||
last_align := 2;
|
last_align := 2;
|
||||||
InlineLevel:=0;
|
InlineLevel:=0;
|
||||||
@ -690,11 +692,10 @@ implementation
|
|||||||
ait_section :
|
ait_section :
|
||||||
begin
|
begin
|
||||||
if tai_section(hp).sectype<>sec_none then
|
if tai_section(hp).sectype<>sec_none then
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
WriteSection(tai_section(hp).sectype,ReplaceForbiddenChars(tai_section(hp).name^),tai_section(hp).secorder)
|
WriteSection(tai_section(hp).sectype,ReplaceForbiddenAsmSymbolChars(tai_section(hp).name^),tai_section(hp).secorder)
|
||||||
{$else avr}
|
else
|
||||||
WriteSection(tai_section(hp).sectype,tai_section(hp).name^,tai_section(hp).secorder)
|
WriteSection(tai_section(hp).sectype,tai_section(hp).name^,tai_section(hp).secorder)
|
||||||
{$endif avr}
|
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
{$ifdef EXTDEBUG}
|
{$ifdef EXTDEBUG}
|
||||||
@ -746,11 +747,10 @@ implementation
|
|||||||
if tai_datablock(hp).is_global then
|
if tai_datablock(hp).is_global then
|
||||||
begin
|
begin
|
||||||
asmwrite(#9'.comm'#9);
|
asmwrite(#9'.comm'#9);
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
asmwrite(ReplaceForbiddenChars(tai_datablock(hp).sym.name));
|
asmwrite(ReplaceForbiddenAsmSymbolChars(tai_datablock(hp).sym.name))
|
||||||
{$else avr}
|
else
|
||||||
asmwrite(tai_datablock(hp).sym.name);
|
asmwrite(tai_datablock(hp).sym.name);
|
||||||
{$endif avr}
|
|
||||||
asmwrite(','+tostr(tai_datablock(hp).size));
|
asmwrite(','+tostr(tai_datablock(hp).size));
|
||||||
asmwrite(','+tostr(last_align));
|
asmwrite(','+tostr(last_align));
|
||||||
asmln;
|
asmln;
|
||||||
@ -758,11 +758,10 @@ implementation
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
asmwrite(#9'.lcomm'#9);
|
asmwrite(#9'.lcomm'#9);
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
asmwrite(ReplaceForbiddenChars(tai_datablock(hp).sym.name));
|
asmwrite(ReplaceForbiddenAsmSymbolChars(tai_datablock(hp).sym.name));
|
||||||
{$else avr}
|
else
|
||||||
asmwrite(tai_datablock(hp).sym.name);
|
asmwrite(tai_datablock(hp).sym.name);
|
||||||
{$endif avr}
|
|
||||||
asmwrite(','+tostr(tai_datablock(hp).size));
|
asmwrite(','+tostr(tai_datablock(hp).size));
|
||||||
asmwrite(','+tostr(last_align));
|
asmwrite(','+tostr(last_align));
|
||||||
asmln;
|
asmln;
|
||||||
@ -774,29 +773,31 @@ implementation
|
|||||||
if Tai_datablock(hp).is_global then
|
if Tai_datablock(hp).is_global then
|
||||||
begin
|
begin
|
||||||
asmwrite(#9'.globl ');
|
asmwrite(#9'.globl ');
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
asmwriteln(ReplaceForbiddenChars(Tai_datablock(hp).sym.name));
|
asmwriteln(ReplaceForbiddenAsmSymbolChars(Tai_datablock(hp).sym.name))
|
||||||
{$else avr}
|
else
|
||||||
asmwriteln(Tai_datablock(hp).sym.name);
|
asmwriteln(Tai_datablock(hp).sym.name);
|
||||||
{$endif avr}
|
|
||||||
end;
|
end;
|
||||||
if (target_info.system <> system_arm_linux) then
|
if (target_info.system <> system_arm_linux) then
|
||||||
sepChar := '@'
|
sepChar := '@'
|
||||||
else
|
else
|
||||||
sepChar := '%';
|
sepChar := '%';
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
if (tf_needs_symbol_type in target_info.flags) then
|
begin
|
||||||
asmwriteln(#9'.type '+ReplaceForbiddenChars(Tai_datablock(hp).sym.name)+','+sepChar+'object');
|
if (tf_needs_symbol_type in target_info.flags) then
|
||||||
if (tf_needs_symbol_size in target_info.flags) and (tai_datablock(hp).size > 0) then
|
asmwriteln(#9'.type '+ReplaceForbiddenAsmSymbolChars(Tai_datablock(hp).sym.name)+','+sepChar+'object');
|
||||||
asmwriteln(#9'.size '+ReplaceForbiddenChars(Tai_datablock(hp).sym.name)+','+tostr(Tai_datablock(hp).size));
|
if (tf_needs_symbol_size in target_info.flags) and (tai_datablock(hp).size > 0) then
|
||||||
asmwrite(ReplaceForbiddenChars(Tai_datablock(hp).sym.name));
|
asmwriteln(#9'.size '+ReplaceForbiddenAsmSymbolChars(Tai_datablock(hp).sym.name)+','+tostr(Tai_datablock(hp).size));
|
||||||
{$else avr}
|
asmwrite(ReplaceForbiddenAsmSymbolChars(Tai_datablock(hp).sym.name))
|
||||||
if (tf_needs_symbol_type in target_info.flags) then
|
end
|
||||||
asmwriteln(#9'.type '+Tai_datablock(hp).sym.name+','+sepChar+'object');
|
else
|
||||||
if (tf_needs_symbol_size in target_info.flags) and (tai_datablock(hp).size > 0) then
|
begin
|
||||||
asmwriteln(#9'.size '+Tai_datablock(hp).sym.name+','+tostr(Tai_datablock(hp).size));
|
if (tf_needs_symbol_type in target_info.flags) then
|
||||||
asmwrite(Tai_datablock(hp).sym.name);
|
asmwriteln(#9'.type '+Tai_datablock(hp).sym.name+','+sepChar+'object');
|
||||||
{$endif avr}
|
if (tf_needs_symbol_size in target_info.flags) and (tai_datablock(hp).size > 0) then
|
||||||
|
asmwriteln(#9'.size '+Tai_datablock(hp).sym.name+','+tostr(Tai_datablock(hp).size));
|
||||||
|
asmwrite(Tai_datablock(hp).sym.name);
|
||||||
|
end;
|
||||||
asmwriteln(':');
|
asmwriteln(':');
|
||||||
asmwriteln(#9'.zero '+tostr(Tai_datablock(hp).size));
|
asmwriteln(#9'.zero '+tostr(Tai_datablock(hp).size));
|
||||||
end;
|
end;
|
||||||
@ -879,9 +880,8 @@ implementation
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
s:=tai_const(hp).sym.name;
|
s:=tai_const(hp).sym.name;
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
s:=ReplaceForbiddenChars(s);
|
s:=ReplaceForbiddenAsmSymbolChars(s);
|
||||||
{$endif avr}
|
|
||||||
if tai_const(hp).value<>0 then
|
if tai_const(hp).value<>0 then
|
||||||
s:=s+tostr_with_plus(tai_const(hp).value);
|
s:=s+tostr_with_plus(tai_const(hp).value);
|
||||||
end
|
end
|
||||||
@ -1062,17 +1062,15 @@ implementation
|
|||||||
if tai_label(hp).labsym.bind in [AB_GLOBAL,AB_PRIVATE_EXTERN] then
|
if tai_label(hp).labsym.bind in [AB_GLOBAL,AB_PRIVATE_EXTERN] then
|
||||||
begin
|
begin
|
||||||
AsmWrite('.globl'#9);
|
AsmWrite('.globl'#9);
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
AsmWriteLn(ReplaceForbiddenChars(tai_label(hp).labsym.name));
|
AsmWriteLn(ReplaceForbiddenAsmSymbolChars(tai_label(hp).labsym.name))
|
||||||
{$else avr}
|
else
|
||||||
AsmWriteLn(tai_label(hp).labsym.name);
|
AsmWriteLn(tai_label(hp).labsym.name);
|
||||||
{$endif avr}
|
|
||||||
end;
|
end;
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
AsmWrite(ReplaceForbiddenChars(tai_label(hp).labsym.name));
|
AsmWrite(ReplaceForbiddenAsmSymbolChars(tai_label(hp).labsym.name))
|
||||||
{$else avr}
|
else
|
||||||
AsmWrite(tai_label(hp).labsym.name);
|
AsmWrite(tai_label(hp).labsym.name);
|
||||||
{$endif avr}
|
|
||||||
AsmWriteLn(':');
|
AsmWriteLn(':');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1082,11 +1080,10 @@ implementation
|
|||||||
if (tai_symbol(hp).sym.bind=AB_PRIVATE_EXTERN) then
|
if (tai_symbol(hp).sym.bind=AB_PRIVATE_EXTERN) then
|
||||||
begin
|
begin
|
||||||
AsmWrite(#9'.private_extern ');
|
AsmWrite(#9'.private_extern ');
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
AsmWriteln(ReplaceForbiddenChars(tai_symbol(hp).sym.name));
|
AsmWriteln(ReplaceForbiddenAsmSymbolChars(tai_symbol(hp).sym.name))
|
||||||
{$else avr}
|
else
|
||||||
AsmWriteln(tai_symbol(hp).sym.name);
|
AsmWriteln(tai_symbol(hp).sym.name);
|
||||||
{$endif avr}
|
|
||||||
end;
|
end;
|
||||||
if (target_info.system = system_powerpc64_linux) and
|
if (target_info.system = system_powerpc64_linux) and
|
||||||
(tai_symbol(hp).sym.typ = AT_FUNCTION) and (cs_profile in current_settings.moduleswitches) then
|
(tai_symbol(hp).sym.typ = AT_FUNCTION) and (cs_profile in current_settings.moduleswitches) then
|
||||||
@ -1095,11 +1092,10 @@ implementation
|
|||||||
if tai_symbol(hp).is_global then
|
if tai_symbol(hp).is_global then
|
||||||
begin
|
begin
|
||||||
AsmWrite('.globl'#9);
|
AsmWrite('.globl'#9);
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
AsmWriteln(ReplaceForbiddenChars(tai_symbol(hp).sym.name));
|
AsmWriteln(ReplaceForbiddenAsmSymbolChars(tai_symbol(hp).sym.name))
|
||||||
{$else avr}
|
else
|
||||||
AsmWriteln(tai_symbol(hp).sym.name);
|
AsmWriteln(tai_symbol(hp).sym.name);
|
||||||
{$endif avr}
|
|
||||||
end;
|
end;
|
||||||
if (target_info.system = system_powerpc64_linux) and
|
if (target_info.system = system_powerpc64_linux) and
|
||||||
(tai_symbol(hp).sym.typ = AT_FUNCTION) then
|
(tai_symbol(hp).sym.typ = AT_FUNCTION) then
|
||||||
@ -1131,17 +1127,15 @@ implementation
|
|||||||
AsmWriteLn(',' + sepChar + 'function');
|
AsmWriteLn(',' + sepChar + 'function');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
if not(tai_symbol(hp).has_value) then
|
if not(tai_symbol(hp).has_value) then
|
||||||
AsmWriteLn(ReplaceForbiddenChars(tai_symbol(hp).sym.name + ':'))
|
AsmWriteLn(ReplaceForbiddenAsmSymbolChars(tai_symbol(hp).sym.name + ':'))
|
||||||
else
|
else
|
||||||
AsmWriteLn(ReplaceForbiddenChars(tai_symbol(hp).sym.name + '=' + tostr(tai_symbol(hp).value)));
|
AsmWriteLn(ReplaceForbiddenAsmSymbolChars(tai_symbol(hp).sym.name + '=' + tostr(tai_symbol(hp).value)))
|
||||||
{$else avr}
|
else if not(tai_symbol(hp).has_value) then
|
||||||
if not(tai_symbol(hp).has_value) then
|
|
||||||
AsmWriteLn(tai_symbol(hp).sym.name + ':')
|
AsmWriteLn(tai_symbol(hp).sym.name + ':')
|
||||||
else
|
else
|
||||||
AsmWriteLn(tai_symbol(hp).sym.name + '=' + tostr(tai_symbol(hp).value));
|
AsmWriteLn(tai_symbol(hp).sym.name + '=' + tostr(tai_symbol(hp).value));
|
||||||
{$endif avr}
|
|
||||||
end;
|
end;
|
||||||
{$ifdef arm}
|
{$ifdef arm}
|
||||||
ait_thumb_func:
|
ait_thumb_func:
|
||||||
@ -1160,19 +1154,17 @@ implementation
|
|||||||
AsmWrite(#9'.size'#9);
|
AsmWrite(#9'.size'#9);
|
||||||
if (target_info.system = system_powerpc64_linux) and (tai_symbol_end(hp).sym.typ = AT_FUNCTION) then
|
if (target_info.system = system_powerpc64_linux) and (tai_symbol_end(hp).sym.typ = AT_FUNCTION) then
|
||||||
AsmWrite('.');
|
AsmWrite('.');
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
AsmWrite(ReplaceForbiddenChars(tai_symbol_end(hp).sym.name));
|
AsmWrite(ReplaceForbiddenAsmSymbolChars(tai_symbol_end(hp).sym.name))
|
||||||
{$else avr}
|
else
|
||||||
AsmWrite(tai_symbol_end(hp).sym.name);
|
AsmWrite(tai_symbol_end(hp).sym.name);
|
||||||
{$endif avr}
|
|
||||||
AsmWrite(', '+s+' - ');
|
AsmWrite(', '+s+' - ');
|
||||||
if (target_info.system = system_powerpc64_linux) and (tai_symbol_end(hp).sym.typ = AT_FUNCTION) then
|
if (target_info.system = system_powerpc64_linux) and (tai_symbol_end(hp).sym.typ = AT_FUNCTION) then
|
||||||
AsmWrite('.');
|
AsmWrite('.');
|
||||||
{$ifdef avr}
|
if replaceforbidden then
|
||||||
AsmWriteLn(ReplaceForbiddenChars(tai_symbol_end(hp).sym.name));
|
AsmWriteLn(ReplaceForbiddenAsmSymbolChars(tai_symbol_end(hp).sym.name))
|
||||||
{$else avr}
|
else
|
||||||
AsmWriteLn(tai_symbol_end(hp).sym.name);
|
AsmWriteLn(tai_symbol_end(hp).sym.name);
|
||||||
{$endif avr}
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -313,6 +313,7 @@ unit agarmgas;
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_arm_gas_darwin_info : tasminfo =
|
as_arm_gas_darwin_info : tasminfo =
|
||||||
@ -325,6 +326,7 @@ unit agarmgas;
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf,af_stabs_use_function_absolute_addresses];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf,af_stabs_use_function_absolute_addresses];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -208,6 +208,7 @@ unit agavrgas;
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: 's';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -315,8 +315,6 @@ unit cpubase;
|
|||||||
|
|
||||||
function GetOffsetReg(const r : TRegister;ofs : shortint) : TRegister;
|
function GetOffsetReg(const r : TRegister;ofs : shortint) : TRegister;
|
||||||
|
|
||||||
function ReplaceForbiddenChars(const s: string): string;
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
@ -461,14 +459,4 @@ unit cpubase;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function ReplaceForbiddenChars(const s: string): string;
|
|
||||||
var
|
|
||||||
i : longint;
|
|
||||||
begin
|
|
||||||
Result:=s;
|
|
||||||
for i:=1 to Length(Result) do
|
|
||||||
if Result[i]='$' then
|
|
||||||
Result[i]:='s';
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -125,10 +125,8 @@ implementation
|
|||||||
result := Sym.Name
|
result := Sym.Name
|
||||||
else
|
else
|
||||||
result := Sym.RealName;
|
result := Sym.RealName;
|
||||||
{$ifdef avr}
|
if target_asm.dollarsign<>'$' then
|
||||||
if target_asm.id=as_gas then
|
result:=ReplaceForbiddenAsmSymbolChars(result);
|
||||||
result:=ReplaceForbiddenChars(result);
|
|
||||||
{$endif avr}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GetSymTableName(SymTable : TSymTable) : string;
|
function GetSymTableName(SymTable : TSymTable) : string;
|
||||||
@ -137,10 +135,8 @@ implementation
|
|||||||
result := SymTable.Name^
|
result := SymTable.Name^
|
||||||
else
|
else
|
||||||
result := SymTable.RealName^;
|
result := SymTable.RealName^;
|
||||||
{$ifdef avr}
|
if target_asm.dollarsign<>'$' then
|
||||||
if target_asm.id=as_gas then
|
result:=ReplaceForbiddenAsmSymbolChars(result);
|
||||||
result:=ReplaceForbiddenChars(result);
|
|
||||||
{$endif avr}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
|
@ -378,6 +378,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
@ -269,6 +269,7 @@ unit cpugas;
|
|||||||
flags: [af_allowdirect, af_needar, af_smartlink_sections];
|
flags: [af_allowdirect, af_needar, af_smartlink_sections];
|
||||||
labelprefix: '.L';
|
labelprefix: '.L';
|
||||||
comment: '# ';
|
comment: '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
@ -3053,6 +3053,7 @@ const pemagic : array[0..3] of byte = (
|
|||||||
flags : [af_outputbinary];
|
flags : [af_outputbinary];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_pecoff_info : tasminfo =
|
as_i386_pecoff_info : tasminfo =
|
||||||
@ -3065,6 +3066,7 @@ const pemagic : array[0..3] of byte = (
|
|||||||
flags : [af_outputbinary,af_smartlink_sections];
|
flags : [af_outputbinary,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_pecoffwdosx_info : tasminfo =
|
as_i386_pecoffwdosx_info : tasminfo =
|
||||||
@ -3077,6 +3079,7 @@ const pemagic : array[0..3] of byte = (
|
|||||||
flags : [af_outputbinary];
|
flags : [af_outputbinary];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_pecoffwince_info : tasminfo =
|
as_i386_pecoffwince_info : tasminfo =
|
||||||
@ -3089,6 +3092,7 @@ const pemagic : array[0..3] of byte = (
|
|||||||
flags : [af_outputbinary,af_smartlink_sections];
|
flags : [af_outputbinary,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif i386}
|
{$endif i386}
|
||||||
{$ifdef x86_64}
|
{$ifdef x86_64}
|
||||||
@ -3103,6 +3107,7 @@ const pemagic : array[0..3] of byte = (
|
|||||||
flags : [af_outputbinary,af_smartlink_sections];
|
flags : [af_outputbinary,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif x86_64}
|
{$endif x86_64}
|
||||||
{$ifdef arm}
|
{$ifdef arm}
|
||||||
@ -3117,6 +3122,7 @@ const pemagic : array[0..3] of byte = (
|
|||||||
flags : [af_outputbinary];
|
flags : [af_outputbinary];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif arm}
|
{$endif arm}
|
||||||
|
|
||||||
|
@ -1275,6 +1275,7 @@ implementation
|
|||||||
flags : [af_outputbinary,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_outputbinary,af_smartlink_sections,af_supports_dwarf];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif i386}
|
{$endif i386}
|
||||||
{$ifdef x86_64}
|
{$ifdef x86_64}
|
||||||
@ -1290,6 +1291,7 @@ implementation
|
|||||||
flags : [af_outputbinary,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_outputbinary,af_smartlink_sections,af_supports_dwarf];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif x86_64}
|
{$endif x86_64}
|
||||||
{$ifdef sparc}
|
{$ifdef sparc}
|
||||||
@ -1305,6 +1307,7 @@ implementation
|
|||||||
flags : [af_outputbinary,af_supports_dwarf];
|
flags : [af_outputbinary,af_supports_dwarf];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif sparc}
|
{$endif sparc}
|
||||||
|
|
||||||
|
@ -1214,6 +1214,7 @@ implementation
|
|||||||
flags : [af_outputbinary,af_smartlink_sections,af_supports_dwarf{, af_stabs_use_function_absolute_addresses}];
|
flags : [af_outputbinary,af_smartlink_sections,af_supports_dwarf{, af_stabs_use_function_absolute_addresses}];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '#';
|
comment : '#';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
@ -1510,6 +1510,7 @@ const
|
|||||||
flags : [af_outputbinary,af_smartlink_sections];
|
flags : [af_outputbinary,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '';
|
comment : '';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1241,6 +1241,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_labelprefix_only_inside_procedure];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_labelprefix_only_inside_procedure];
|
||||||
labelprefix : '@';
|
labelprefix : '@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: 's';
|
||||||
);
|
);
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
@ -399,6 +399,7 @@ unit agppcvasm;
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
@ -172,6 +172,8 @@ unit agppcgas;
|
|||||||
if o.ref^.refaddr<>addr_full then
|
if o.ref^.refaddr<>addr_full then
|
||||||
internalerror(200402262);
|
internalerror(200402262);
|
||||||
hs:=o.ref^.symbol.name;
|
hs:=o.ref^.symbol.name;
|
||||||
|
if target_asm.dollarsign<>'$' then
|
||||||
|
hs:=ReplaceForbiddenAsmSymbolChars(hs);
|
||||||
if o.ref^.offset>0 then
|
if o.ref^.offset>0 then
|
||||||
hs:=hs+'+'+tostr(o.ref^.offset)
|
hs:=hs+'+'+tostr(o.ref^.offset)
|
||||||
else
|
else
|
||||||
@ -200,6 +202,8 @@ unit agppcgas;
|
|||||||
if o.ref^.refaddr=addr_full then
|
if o.ref^.refaddr=addr_full then
|
||||||
begin
|
begin
|
||||||
hs:=o.ref^.symbol.name;
|
hs:=o.ref^.symbol.name;
|
||||||
|
if target_asm.dollarsign<>'$' then
|
||||||
|
hs:=ReplaceForbiddenAsmSymbolChars(hs);
|
||||||
if o.ref^.offset>0 then
|
if o.ref^.offset>0 then
|
||||||
hs:=hs+'+'+tostr(o.ref^.offset)
|
hs:=hs+'+'+tostr(o.ref^.offset)
|
||||||
else
|
else
|
||||||
@ -433,6 +437,7 @@ unit agppcgas;
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -447,6 +452,7 @@ unit agppcgas;
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf,af_stabs_use_function_absolute_addresses];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf,af_stabs_use_function_absolute_addresses];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign : '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -840,7 +840,7 @@ unit cgppc;
|
|||||||
current_asmdata.WeakRefAsmSymbol(symname)
|
current_asmdata.WeakRefAsmSymbol(symname)
|
||||||
else
|
else
|
||||||
current_asmdata.WeakRefAsmSymbol('.'+symname);
|
current_asmdata.WeakRefAsmSymbol('.'+symname);
|
||||||
newsymname:=ReplaceForbiddenChars(symname);
|
newsymname:=ReplaceForbiddenAsmSymbolChars(symname);
|
||||||
current_asmdata.asmlists[al_picdata].concat(tai_directive.Create(asd_toc_entry,newsymname+'[TC],'+newsymname));
|
current_asmdata.asmlists[al_picdata].concat(tai_directive.Create(asd_toc_entry,newsymname+'[TC],'+newsymname));
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -217,6 +217,7 @@ implementation
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_sparc_gas_info : tasminfo =
|
as_sparc_gas_info : tasminfo =
|
||||||
@ -229,6 +230,7 @@ implementation
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
@ -89,6 +89,9 @@ interface
|
|||||||
flags : set of tasmflags;
|
flags : set of tasmflags;
|
||||||
labelprefix : string[3];
|
labelprefix : string[3];
|
||||||
comment : string[3];
|
comment : string[3];
|
||||||
|
{ set to '$' if that character is allowed in symbol names, otherwise
|
||||||
|
to alternate character by which '$' should be replaced }
|
||||||
|
dollarsign : char;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
parinfo = ^tarinfo;
|
parinfo = ^tarinfo;
|
||||||
|
@ -340,6 +340,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_x86_64_gas_info : tasminfo =
|
as_x86_64_gas_info : tasminfo =
|
||||||
@ -352,6 +353,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -366,6 +368,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
{$else x86_64}
|
{$else x86_64}
|
||||||
@ -382,6 +385,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -395,6 +399,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_stabs_use_function_absolute_addresses];
|
flags : [af_allowdirect,af_needar,af_stabs_use_function_absolute_addresses];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -408,6 +413,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf,af_stabs_use_function_absolute_addresses];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf,af_stabs_use_function_absolute_addresses];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_gas_info : tasminfo =
|
as_i386_gas_info : tasminfo =
|
||||||
@ -422,6 +428,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_allowdirect,af_needar,af_smartlink_sections,af_supports_dwarf];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif x86_64}
|
{$endif x86_64}
|
||||||
|
|
||||||
|
@ -965,6 +965,7 @@ implementation
|
|||||||
flags : [af_allowdirect,af_needar,af_labelprefix_only_inside_procedure];
|
flags : [af_allowdirect,af_needar,af_labelprefix_only_inside_procedure];
|
||||||
labelprefix : '@@';
|
labelprefix : '@@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_masm_info : tasminfo =
|
as_i386_masm_info : tasminfo =
|
||||||
@ -977,6 +978,7 @@ implementation
|
|||||||
flags : [af_allowdirect,af_needar];
|
flags : [af_allowdirect,af_needar];
|
||||||
labelprefix : '@@';
|
labelprefix : '@@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_wasm_info : tasminfo =
|
as_i386_wasm_info : tasminfo =
|
||||||
@ -989,6 +991,7 @@ implementation
|
|||||||
flags : [af_allowdirect,af_needar];
|
flags : [af_allowdirect,af_needar];
|
||||||
labelprefix : '@@';
|
labelprefix : '@@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif i386}
|
{$endif i386}
|
||||||
{$ifdef x86_64}
|
{$ifdef x86_64}
|
||||||
@ -1002,6 +1005,7 @@ implementation
|
|||||||
flags : [af_allowdirect,af_needar];
|
flags : [af_allowdirect,af_needar];
|
||||||
labelprefix : '@@';
|
labelprefix : '@@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
{$endif x86_64}
|
{$endif x86_64}
|
||||||
|
|
||||||
|
@ -1058,6 +1058,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_no_debug];
|
flags : [af_allowdirect,af_needar,af_no_debug];
|
||||||
labelprefix : '..@';
|
labelprefix : '..@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_nasmwin32_info : tasminfo =
|
as_i386_nasmwin32_info : tasminfo =
|
||||||
@ -1070,6 +1071,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_no_debug];
|
flags : [af_allowdirect,af_needar,af_no_debug];
|
||||||
labelprefix : '..@';
|
labelprefix : '..@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_nasmobj_info : tasminfo =
|
as_i386_nasmobj_info : tasminfo =
|
||||||
@ -1082,6 +1084,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_no_debug];
|
flags : [af_allowdirect,af_needar,af_no_debug];
|
||||||
labelprefix : '..@';
|
labelprefix : '..@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_nasmwdosx_info : tasminfo =
|
as_i386_nasmwdosx_info : tasminfo =
|
||||||
@ -1094,6 +1097,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_no_debug];
|
flags : [af_allowdirect,af_needar,af_no_debug];
|
||||||
labelprefix : '..@';
|
labelprefix : '..@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -1107,6 +1111,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_no_debug];
|
flags : [af_allowdirect,af_needar,af_no_debug];
|
||||||
labelprefix : '..@';
|
labelprefix : '..@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_nasmbeos_info : tasminfo =
|
as_i386_nasmbeos_info : tasminfo =
|
||||||
@ -1119,6 +1124,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_no_debug];
|
flags : [af_allowdirect,af_needar,af_no_debug];
|
||||||
labelprefix : '..@';
|
labelprefix : '..@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
as_i386_nasmhaiku_info : tasminfo =
|
as_i386_nasmhaiku_info : tasminfo =
|
||||||
@ -1131,6 +1137,7 @@ interface
|
|||||||
flags : [af_allowdirect,af_needar,af_no_debug];
|
flags : [af_allowdirect,af_needar,af_no_debug];
|
||||||
labelprefix : '..@';
|
labelprefix : '..@';
|
||||||
comment : '; ';
|
comment : '; ';
|
||||||
|
dollarsign: '$';
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user