+ 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_aint(_value : aint);
constructor Create_pint(_value : pint);
constructor Create_pint_unaligned(_value : pint);
constructor Create_sym(_sym:tasmsymbol);
constructor Create_type_sym(_typ:taiconst_type;_sym:tasmsymbol);
constructor Create_sym_offset(_sym:tasmsymbol;ofs:aint);
constructor Create_rel_sym(_typ:taiconst_type;_sym,_endsym:tasmsymbol);
constructor Create_rva_sym(_sym:tasmsymbol);
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_dataptr;
constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
@ -1608,6 +1610,17 @@ implementation
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);
begin
inherited Create;
@ -1685,6 +1698,13 @@ implementation
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;
begin
inherited Create;

View File

@ -2383,7 +2383,7 @@ implementation
else
begin
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);
end;
end;
@ -2666,7 +2666,7 @@ implementation
begin
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_pint(sym.value.len));
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_pint_unaligned(sym.value.len));
end;
i:=0;
size:=sym.value.len;
@ -2838,13 +2838,13 @@ implementation
end;
*)
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);
end;
toasm :
begin
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);
end;
tovar: