* debuginfo fixes

This commit is contained in:
peter 2004-10-04 18:26:51 +00:00
parent ddb502540a
commit ef7ae0eab1
2 changed files with 25 additions and 18 deletions

View File

@ -783,8 +783,8 @@ Implementation
end;
end;
end;
{ External .bss (AB_COMMON) need a symbol relocation }
if assigned(ps) and (ps.currbind=AB_COMMON) then
{ External references (AB_EXTERNAL and AB_COMMON) need a symbol relocation }
if assigned(ps) and (ps.currbind in [AB_EXTERNAL,AB_COMMON]) then
begin
if currpass=2 then
begin
@ -1629,7 +1629,10 @@ Implementation
end.
{
$Log$
Revision 1.75 2004-10-04 15:48:11 peter
Revision 1.76 2004-10-04 18:26:51 peter
* debuginfo fixes
Revision 1.75 2004/10/04 15:48:11 peter
* AB_COMMON symbols need special relocation in stabs
Revision 1.74 2004/08/27 20:53:52 peter

View File

@ -668,6 +668,7 @@ implementation
{ first write all global/local symbols to a temp list. This will flag
all required tdefs. Afterwards this list will be added }
vardebuglist:=taasmoutput.create;
new_section(vardebuglist,sec_data,'',0);
if assigned(current_module.globalsymtable) then
tglobalsymtable(current_module.globalsymtable).concatstabto(vardebuglist);
if assigned(current_module.localsymtable) then
@ -753,17 +754,17 @@ implementation
(pd.localst.symtabletype<>staticsymtable) and
not((pd.proccalloption=pocall_inline) or
((current_module.flags and uf_local_browser)<>0)) then
begin
begin
free_localsymtables(pd.localst);
pd.localst.free;
pd.localst:=nil;
end;
end;
end;
def:=tstoreddef(def.indexnext);
end;
end;
procedure parse_implementation_uses;
begin
if token=_USES then
@ -1253,7 +1254,7 @@ implementation
{ release all local symtables that are not needed anymore }
free_localsymtables(current_module.globalsymtable);
free_localsymtables(current_module.localsymtable);
{ remove static symtable (=refsymtable) here to save some mem }
if not (cs_local_browser in aktmoduleswitches) then
begin
@ -1402,15 +1403,15 @@ implementation
end
else
begin
if (target_info.system = system_i386_netware) or
(target_info.system = system_i386_netwlibc) then
begin
if (target_info.system = system_i386_netware) or
(target_info.system = system_i386_netwlibc) then
begin
pd:=create_main_proc('PASCALMAIN',potype_proginit,st); { main is need by the netware rtl }
end else
begin
pd:=create_main_proc('main',potype_proginit,st);
end else
begin
pd:=create_main_proc('main',potype_proginit,st);
pd.aliasnames.insert('PASCALMAIN');
end;
end;
end;
tcgprocinfo(current_procinfo).parse_body;
tcgprocinfo(current_procinfo).generate_code;
@ -1513,10 +1514,10 @@ implementation
{ assemble and link }
create_objectfile;
{ release all local symtables that are not needed anymore }
free_localsymtables(current_module.localsymtable);
{ leave when we got an error }
if (Errorcount>0) and not status.skip_error then
begin
@ -1563,7 +1564,10 @@ implementation
end.
{
$Log$
Revision 1.164 2004-09-14 16:33:46 peter
Revision 1.165 2004-10-04 18:26:51 peter
* debuginfo fixes
Revision 1.164 2004/09/14 16:33:46 peter
* release localsymtables when module is compiled
Revision 1.163 2004/09/04 21:18:47 armin