+ tai_const.Create_type_name and tai_const.Create_pint_unaligned

* some locations fixed, where dwarf generated assembler for aligned data accidently

git-svn-id: trunk@25054 -
This commit is contained in:
florian 2013-07-07 15:09:36 +00:00
parent 609f6255d4
commit 2cdb4adf39
2 changed files with 24 additions and 4 deletions

View File

@ -568,12 +568,14 @@ interface
constructor Create_uleb128bit(_value : qword); constructor Create_uleb128bit(_value : qword);
constructor Create_aint(_value : aint); constructor Create_aint(_value : aint);
constructor Create_pint(_value : pint); constructor Create_pint(_value : pint);
constructor Create_pint_unaligned(_value : pint);
constructor Create_sym(_sym:tasmsymbol); constructor Create_sym(_sym:tasmsymbol);
constructor Create_type_sym(_typ:taiconst_type;_sym:tasmsymbol); constructor Create_type_sym(_typ:taiconst_type;_sym:tasmsymbol);
constructor Create_sym_offset(_sym:tasmsymbol;ofs:aint); constructor Create_sym_offset(_sym:tasmsymbol;ofs:aint);
constructor Create_rel_sym(_typ:taiconst_type;_sym,_endsym:tasmsymbol); constructor Create_rel_sym(_typ:taiconst_type;_sym,_endsym:tasmsymbol);
constructor Create_rva_sym(_sym:tasmsymbol); constructor Create_rva_sym(_sym:tasmsymbol);
constructor Createname(const name:string;ofs:aint); constructor Createname(const name:string;ofs:aint);
constructor Create_type_name(_typ:taiconst_type;const name:string;ofs:aint);
constructor Create_nil_codeptr; constructor Create_nil_codeptr;
constructor Create_nil_dataptr; constructor Create_nil_dataptr;
constructor ppuload(t:taitype;ppufile:tcompilerppufile);override; constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
@ -1608,6 +1610,17 @@ implementation
end; end;
constructor tai_const.Create_pint_unaligned(_value: pint);
begin
inherited Create;
typ:=ait_const;
consttype:=aitconst_ptr_unaligned;
value:=_value;
sym:=nil;
endsym:=nil;
end;
constructor tai_const.Create_type_sym(_typ:taiconst_type;_sym:tasmsymbol); constructor tai_const.Create_type_sym(_typ:taiconst_type;_sym:tasmsymbol);
begin begin
inherited Create; inherited Create;
@ -1685,6 +1698,13 @@ implementation
end; end;
constructor tai_const.Create_type_name(_typ:taiconst_type;const name:string;ofs:aint);
begin
self.create_sym_offset(current_asmdata.RefAsmSymbol(name),ofs);
consttype:=_typ;
end;
constructor tai_const.Create_nil_codeptr; constructor tai_const.Create_nil_codeptr;
begin begin
inherited Create; inherited Create;

View File

@ -2383,7 +2383,7 @@ implementation
else else
begin begin
templist.concat(tai_const.create_8bit(ord(DW_OP_addr))); templist.concat(tai_const.create_8bit(ord(DW_OP_addr)));
templist.concat(tai_const.createname(sym.mangledname,offset)); templist.concat(tai_const.Create_type_name(offsetabstype,sym.mangledname,offset));
blocksize:=1+sizeof(puint); blocksize:=1+sizeof(puint);
end; end;
end; end;
@ -2666,7 +2666,7 @@ implementation
begin begin
AddConstToAbbrev(ord(DW_FORM_block)); AddConstToAbbrev(ord(DW_FORM_block));
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_uleb128bit(sym.value.len+sizeof(pint))); current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_uleb128bit(sym.value.len+sizeof(pint)));
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_pint(sym.value.len)); current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_pint_unaligned(sym.value.len));
end; end;
i:=0; i:=0;
size:=sym.value.len; size:=sym.value.len;
@ -2838,13 +2838,13 @@ implementation
end; end;
*) *)
templist.concat(tai_const.create_8bit(3)); templist.concat(tai_const.create_8bit(3));
templist.concat(tai_const.create_pint(sym.addroffset)); templist.concat(tai_const.create_pint_unaligned(sym.addroffset));
blocksize:=1+sizeof(puint); blocksize:=1+sizeof(puint);
end; end;
toasm : toasm :
begin begin
templist.concat(tai_const.create_8bit(3)); templist.concat(tai_const.create_8bit(3));
templist.concat(tai_const.createname(sym.mangledname,0)); templist.concat(tai_const.create_type_name(offsetabstype,sym.mangledname,0));
blocksize:=1+sizeof(puint); blocksize:=1+sizeof(puint);
end; end;
tovar: tovar: