|
@@ -209,36 +209,36 @@ unit win_targ;
|
|
getdatalabel(lname);
|
|
getdatalabel(lname);
|
|
getlabel(lidata4);
|
|
getlabel(lidata4);
|
|
getlabel(lidata5);
|
|
getlabel(lidata5);
|
|
- importssection^.concat(new(pai_section,init_idata(2)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata2)));
|
|
importssection^.concat(new(pai_label,init(lhead)));
|
|
importssection^.concat(new(pai_label,init(lhead)));
|
|
{ pointer to procedure names }
|
|
{ pointer to procedure names }
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(lidata4)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(lidata4))));
|
|
{ two empty entries follow }
|
|
{ two empty entries follow }
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
{ pointer to dll name }
|
|
{ pointer to dll name }
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(lname)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(lname))));
|
|
{ pointer to fixups }
|
|
{ pointer to fixups }
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(lidata5)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(lidata5))));
|
|
{ first write the name references }
|
|
{ first write the name references }
|
|
- importssection^.concat(new(pai_section,init_idata(4)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata4)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_label,init(lidata4)));
|
|
importssection^.concat(new(pai_label,init(lidata4)));
|
|
{ then the addresses and create also the indirect jump }
|
|
{ then the addresses and create also the indirect jump }
|
|
- importssection^.concat(new(pai_section,init_idata(5)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata5)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_label,init(lidata5)));
|
|
importssection^.concat(new(pai_label,init(lidata5)));
|
|
|
|
|
|
{ write final section }
|
|
{ write final section }
|
|
importssection^.concat(new(pai_cut,init_end));
|
|
importssection^.concat(new(pai_cut,init_end));
|
|
{ end of name references }
|
|
{ end of name references }
|
|
- importssection^.concat(new(pai_section,init_idata(4)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata4)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
{ end if addresses }
|
|
{ end if addresses }
|
|
- importssection^.concat(new(pai_section,init_idata(5)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata5)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
{ dllname }
|
|
{ dllname }
|
|
- importssection^.concat(new(pai_section,init_idata(7)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata7)));
|
|
importssection^.concat(new(pai_label,init(lname)));
|
|
importssection^.concat(new(pai_label,init(lname)));
|
|
importssection^.concat(new(pai_string,init(hp1^.dllname^+target_os.sharedlibext+#0)));
|
|
importssection^.concat(new(pai_string,init(hp1^.dllname^+target_os.sharedlibext+#0)));
|
|
|
|
|
|
@@ -254,7 +254,7 @@ unit win_targ;
|
|
getlabel(lcode);
|
|
getlabel(lcode);
|
|
new(r);
|
|
new(r);
|
|
reset_reference(r^);
|
|
reset_reference(r^);
|
|
- r^.symbol:=stringdup(lab2str(lcode));
|
|
|
|
|
|
+ r^.symbol:=newasmsymbol(lab2str(lcode));
|
|
{ place jump in codesegment, insert a code section in the
|
|
{ place jump in codesegment, insert a code section in the
|
|
importsection to reduce the amount of .s files (PFV) }
|
|
importsection to reduce the amount of .s files (PFV) }
|
|
importssection^.concat(new(pai_section,init(sec_code)));
|
|
importssection^.concat(new(pai_section,init(sec_code)));
|
|
@@ -267,24 +267,24 @@ unit win_targ;
|
|
importssection^.concat(new(pai386,op_ref(A_JMP,S_NO,r)));
|
|
importssection^.concat(new(pai386,op_ref(A_JMP,S_NO,r)));
|
|
end;
|
|
end;
|
|
{ create head link }
|
|
{ create head link }
|
|
- importssection^.concat(new(pai_section,init_idata(7)));
|
|
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(lhead)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata7)));
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(lhead))));
|
|
{ fixup }
|
|
{ fixup }
|
|
getlabel(plabel(hp2^.lab));
|
|
getlabel(plabel(hp2^.lab));
|
|
- importssection^.concat(new(pai_section,init_idata(4)));
|
|
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(hp2^.lab)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata4)));
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(hp2^.lab))));
|
|
{ add jump field to importsection }
|
|
{ add jump field to importsection }
|
|
- importssection^.concat(new(pai_section,init_idata(5)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata5)));
|
|
if hp2^.is_var then
|
|
if hp2^.is_var then
|
|
importssection^.concat(new(pai_symbol,init_global(hp2^.func^)))
|
|
importssection^.concat(new(pai_symbol,init_global(hp2^.func^)))
|
|
else
|
|
else
|
|
importssection^.concat(new(pai_label,init(lcode)));
|
|
importssection^.concat(new(pai_label,init(lcode)));
|
|
if hp2^.name^<>'' then
|
|
if hp2^.name^<>'' then
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(hp2^.lab)))))
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(hp2^.lab))))
|
|
else
|
|
else
|
|
importssection^.concat(new(pai_const,init_32bit($80000000 or hp2^.ordnr)));
|
|
importssection^.concat(new(pai_const,init_32bit($80000000 or hp2^.ordnr)));
|
|
{ finally the import information }
|
|
{ finally the import information }
|
|
- importssection^.concat(new(pai_section,init_idata(6)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata6)));
|
|
importssection^.concat(new(pai_label,init(hp2^.lab)));
|
|
importssection^.concat(new(pai_label,init(hp2^.lab)));
|
|
importssection^.concat(new(pai_const,init_16bit(hp2^.ordnr)));
|
|
importssection^.concat(new(pai_const,init_16bit(hp2^.ordnr)));
|
|
importssection^.concat(new(pai_string,init(hp2^.name^+#0)));
|
|
importssection^.concat(new(pai_string,init(hp2^.name^+#0)));
|
|
@@ -327,22 +327,22 @@ unit win_targ;
|
|
getlabel(l1);
|
|
getlabel(l1);
|
|
getlabel(l2);
|
|
getlabel(l2);
|
|
getlabel(l3);
|
|
getlabel(l3);
|
|
- importssection^.concat(new(pai_section,init_idata(2)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata2)));
|
|
{ pointer to procedure names }
|
|
{ pointer to procedure names }
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(l2)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(l2))));
|
|
{ two empty entries follow }
|
|
{ two empty entries follow }
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
{ pointer to dll name }
|
|
{ pointer to dll name }
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(l1)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(l1))));
|
|
{ pointer to fixups }
|
|
{ pointer to fixups }
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(l3)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(l3))));
|
|
|
|
|
|
{ only create one section for each else it will
|
|
{ only create one section for each else it will
|
|
create a lot of idata* }
|
|
create a lot of idata* }
|
|
|
|
|
|
{ first write the name references }
|
|
{ first write the name references }
|
|
- importssection^.concat(new(pai_section,init_idata(4)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata4)));
|
|
importssection^.concat(new(pai_label,init(l2)));
|
|
importssection^.concat(new(pai_label,init(l2)));
|
|
|
|
|
|
hp2:=pimported_item(hp1^.imported_items^.first);
|
|
hp2:=pimported_item(hp1^.imported_items^.first);
|
|
@@ -350,7 +350,7 @@ unit win_targ;
|
|
begin
|
|
begin
|
|
getlabel(plabel(hp2^.lab));
|
|
getlabel(plabel(hp2^.lab));
|
|
if hp2^.name^<>'' then
|
|
if hp2^.name^<>'' then
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(hp2^.lab)))))
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(hp2^.lab))))
|
|
else
|
|
else
|
|
importssection^.concat(new(pai_const,init_32bit($80000000 or hp2^.ordnr)));
|
|
importssection^.concat(new(pai_const,init_32bit($80000000 or hp2^.ordnr)));
|
|
hp2:=pimported_item(hp2^.next);
|
|
hp2:=pimported_item(hp2^.next);
|
|
@@ -359,7 +359,7 @@ unit win_targ;
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
|
|
|
|
{ then the addresses and create also the indirect jump }
|
|
{ then the addresses and create also the indirect jump }
|
|
- importssection^.concat(new(pai_section,init_idata(5)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata5)));
|
|
importssection^.concat(new(pai_label,init(l3)));
|
|
importssection^.concat(new(pai_label,init(l3)));
|
|
hp2:=pimported_item(hp1^.imported_items^.first);
|
|
hp2:=pimported_item(hp1^.imported_items^.first);
|
|
while assigned(hp2) do
|
|
while assigned(hp2) do
|
|
@@ -370,7 +370,7 @@ unit win_targ;
|
|
{ create indirect jump }
|
|
{ create indirect jump }
|
|
new(r);
|
|
new(r);
|
|
reset_reference(r^);
|
|
reset_reference(r^);
|
|
- r^.symbol:=stringdup(lab2str(l4));
|
|
|
|
|
|
+ r^.symbol:=newasmsymbol(lab2str(l4));
|
|
{ place jump in codesegment }
|
|
{ place jump in codesegment }
|
|
codesegment^.concat(new(pai_align,init_op(4,$90)));
|
|
codesegment^.concat(new(pai_align,init_op(4,$90)));
|
|
codesegment^.concat(new(pai_symbol,init_global(hp2^.func^)));
|
|
codesegment^.concat(new(pai_symbol,init_global(hp2^.func^)));
|
|
@@ -382,14 +382,14 @@ unit win_targ;
|
|
begin
|
|
begin
|
|
importssection^.concat(new(pai_symbol,init_global(hp2^.func^)));
|
|
importssection^.concat(new(pai_symbol,init_global(hp2^.func^)));
|
|
end;
|
|
end;
|
|
- importssection^.concat(new(pai_const,init_rva(strpnew(lab2str(hp2^.lab)))));
|
|
|
|
|
|
+ importssection^.concat(new(pai_const_symbol,init_rva(lab2str(hp2^.lab))));
|
|
hp2:=pimported_item(hp2^.next);
|
|
hp2:=pimported_item(hp2^.next);
|
|
end;
|
|
end;
|
|
{ finalize the addresses }
|
|
{ finalize the addresses }
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
importssection^.concat(new(pai_const,init_32bit(0)));
|
|
|
|
|
|
{ finally the import information }
|
|
{ finally the import information }
|
|
- importssection^.concat(new(pai_section,init_idata(6)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata6)));
|
|
hp2:=pimported_item(hp1^.imported_items^.first);
|
|
hp2:=pimported_item(hp1^.imported_items^.first);
|
|
while assigned(hp2) do
|
|
while assigned(hp2) do
|
|
begin
|
|
begin
|
|
@@ -401,7 +401,7 @@ unit win_targ;
|
|
hp2:=pimported_item(hp2^.next);
|
|
hp2:=pimported_item(hp2^.next);
|
|
end;
|
|
end;
|
|
{ create import dll name }
|
|
{ create import dll name }
|
|
- importssection^.concat(new(pai_section,init_idata(7)));
|
|
|
|
|
|
+ importssection^.concat(new(pai_section,init(sec_idata7)));
|
|
importssection^.concat(new(pai_label,init(l1)));
|
|
importssection^.concat(new(pai_label,init(l1)));
|
|
importssection^.concat(new(pai_string,init(hp1^.dllname^+target_os.sharedlibext+#0)));
|
|
importssection^.concat(new(pai_string,init(hp1^.dllname^+target_os.sharedlibext+#0)));
|
|
|
|
|
|
@@ -545,7 +545,7 @@ unit win_targ;
|
|
{ minor version }
|
|
{ minor version }
|
|
exportssection^.concat(new(pai_const,init_16bit(0)));
|
|
exportssection^.concat(new(pai_const,init_16bit(0)));
|
|
{ pointer to dll name }
|
|
{ pointer to dll name }
|
|
- exportssection^.concat(new(pai_const,init_rva(strpnew(lab2str(dll_name_label)))));
|
|
|
|
|
|
+ exportssection^.concat(new(pai_const_symbol,init_rva(lab2str(dll_name_label))));
|
|
{ ordinal base normally set to 1 }
|
|
{ ordinal base normally set to 1 }
|
|
exportssection^.concat(new(pai_const,init_32bit(ordinal_base)));
|
|
exportssection^.concat(new(pai_const,init_32bit(ordinal_base)));
|
|
{ number of entries }
|
|
{ number of entries }
|
|
@@ -553,11 +553,11 @@ unit win_targ;
|
|
{ number of named entries }
|
|
{ number of named entries }
|
|
exportssection^.concat(new(pai_const,init_32bit(named_entries)));
|
|
exportssection^.concat(new(pai_const,init_32bit(named_entries)));
|
|
{ address of export address table }
|
|
{ address of export address table }
|
|
- exportssection^.concat(new(pai_const,init_rva(strpnew(lab2str(export_address_table)))));
|
|
|
|
|
|
+ exportssection^.concat(new(pai_const_symbol,init_rva(lab2str(export_address_table))));
|
|
{ address of name pointer pointers }
|
|
{ address of name pointer pointers }
|
|
- exportssection^.concat(new(pai_const,init_rva(strpnew(lab2str(export_name_table_pointers)))));
|
|
|
|
|
|
+ exportssection^.concat(new(pai_const_symbol,init_rva(lab2str(export_name_table_pointers))));
|
|
{ address of ordinal number pointers }
|
|
{ address of ordinal number pointers }
|
|
- exportssection^.concat(new(pai_const,init_rva(strpnew(lab2str(export_ordinal_table)))));
|
|
|
|
|
|
+ exportssection^.concat(new(pai_const_symbol,init_rva(lab2str(export_ordinal_table))));
|
|
{ the name }
|
|
{ the name }
|
|
exportssection^.concat(new(pai_label,init(dll_name_label)));
|
|
exportssection^.concat(new(pai_label,init(dll_name_label)));
|
|
if st='' then
|
|
if st='' then
|
|
@@ -584,7 +584,7 @@ unit win_targ;
|
|
if (hp^.options and eo_name)<>0 then
|
|
if (hp^.options and eo_name)<>0 then
|
|
begin
|
|
begin
|
|
getlabel(name_label);
|
|
getlabel(name_label);
|
|
- name_table_pointers^.concat(new(pai_const,init_rva(strpnew(lab2str(name_label)))));
|
|
|
|
|
|
+ name_table_pointers^.concat(new(pai_const_symbol,init_rva(lab2str(name_label))));
|
|
ordinal_table^.concat(new(pai_const,init_16bit(hp^.index-ordinal_base)));
|
|
ordinal_table^.concat(new(pai_const,init_16bit(hp^.index-ordinal_base)));
|
|
name_table^.concat(new(pai_align,init_op(2,0)));
|
|
name_table^.concat(new(pai_align,init_op(2,0)));
|
|
name_table^.concat(new(pai_label,init(name_label)));
|
|
name_table^.concat(new(pai_label,init(name_label)));
|
|
@@ -635,8 +635,7 @@ unit win_targ;
|
|
address_table^.concat(new(pai_const,init_32bit(0)));
|
|
address_table^.concat(new(pai_const,init_32bit(0)));
|
|
inc(current_index);
|
|
inc(current_index);
|
|
end;
|
|
end;
|
|
- address_table^.concat(new(pai_const,init_rva(
|
|
|
|
- strpnew(hp^.sym^.mangledname))));
|
|
|
|
|
|
+ address_table^.concat(new(pai_const_symbol,init_rva(hp^.sym^.mangledname)));
|
|
inc(current_index);
|
|
inc(current_index);
|
|
hp:=pexported_item(hp^.next);
|
|
hp:=pexported_item(hp^.next);
|
|
end;
|
|
end;
|
|
@@ -700,7 +699,11 @@ unit win_targ;
|
|
end.
|
|
end.
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.20 1999-02-22 02:44:14 peter
|
|
|
|
|
|
+ Revision 1.21 1999-02-25 21:02:59 peter
|
|
|
|
+ * ag386bin updates
|
|
|
|
+ + coff writer
|
|
|
|
+
|
|
|
|
+ Revision 1.20 1999/02/22 02:44:14 peter
|
|
* ag386bin doesn't use i386.pas anymore
|
|
* ag386bin doesn't use i386.pas anymore
|
|
|
|
|
|
Revision 1.19 1998/12/11 00:04:06 peter
|
|
Revision 1.19 1998/12/11 00:04:06 peter
|