* use new_section() instead of tai_section.create() everywhere

- sort of reverted r14134, which is no longer required after the above
    change (new_section() inserts the alignment itself)
  * made the tai_section.create() constructor private so it cannot be
    called directly anymore

git-svn-id: trunk@15482 -
This commit is contained in:
Jonas Maebe 2010-06-26 10:50:14 +00:00
parent 9dfa4c55ce
commit 356026f849
14 changed files with 21 additions and 26 deletions

View File

@ -334,7 +334,7 @@ implementation
WideInits :=TLinkedList.create;
{ PIC data }
if (target_info.system in [system_powerpc_darwin,system_powerpc64_darwin,system_i386_darwin,system_arm_darwin]) then
AsmLists[al_picdata].concat(tai_section.create(sec_data_nonlazy,'',sizeof(pint)));
new_section(AsmLists[al_picdata],sec_data_nonlazy,'',sizeof(pint));
{ CFI }
FAsmCFI:=CAsmCFI.Create;
end;

View File

@ -385,10 +385,12 @@ interface
secalign : byte;
name : pshortstring;
sec : TObjSection; { used in binary writer }
constructor Create(Asectype:TAsmSectiontype;Aname:string;Aalign:byte;Asecorder:TasmSectionorder=secorder_default);
destructor Destroy;override;
constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
procedure ppuwrite(ppufile:tcompilerppufile);override;
private
{ sections should be created via new_section() }
constructor Create(Asectype:TAsmSectiontype;Aname:string;Aalign:byte;Asecorder:TasmSectionorder=secorder_default);
end;
@ -690,8 +692,7 @@ implementation
Aglobal:boolean;Asectype:TAsmSectiontype;Aalign:byte);
begin
maybe_new_object_file(list);
list.concat(tai_section.create(Asectype,Aname,Aalign));
list.concat(cai_align.create(Aalign));
new_section(list,Asectype,Aname,Aalign);
if Aglobal or
create_smartlink then
list.concat(tai_symbol.createname_global(Aname,Asymtyp,0))

View File

@ -705,7 +705,6 @@ implementation
AsmWriteln(' sec_none');
{$endif EXTDEBUG}
end;
doalign(tai_section(hp).secalign,false,0,last_align);
end;
ait_datablock :

View File

@ -2533,8 +2533,7 @@ unit cgcpu;
if current_asmdata.asmlists[al_imports]=nil then
current_asmdata.asmlists[al_imports]:=TAsmList.create;
current_asmdata.asmlists[al_imports].concat(Tai_section.create(sec_stub,'',0));
current_asmdata.asmlists[al_imports].concat(Tai_align.Create(4));
new_section(current_asmdata.asmlists[al_imports],sec_stub,'',4);
result := current_asmdata.RefAsmSymbol(stubname);
current_asmdata.asmlists[al_imports].concat(Tai_symbol.Create(result,0));
{ register as a weak symbol if necessary }
@ -2557,7 +2556,7 @@ unit cgcpu;
else
internalerror(2008100401);
current_asmdata.asmlists[al_imports].concat(tai_section.create(sec_data_lazy,'',sizeof(pint)));
new_section(current_asmdata.asmlists[al_imports],sec_data_lazy,'',sizeof(pint));
current_asmdata.asmlists[al_imports].concat(Tai_symbol.Create(l1,0));
current_asmdata.asmlists[al_imports].concat(tai_directive.create(asd_indirect_symbol,s));
current_asmdata.asmlists[al_imports].concat(tai_const.createname('dyld_stub_binding_helper',0));

View File

@ -2928,7 +2928,7 @@ implementation
vardatadef:=trecorddef(search_system_type('TVARDATA').typedef);
{ write start labels }
current_asmdata.asmlists[al_dwarf_info].concat(tai_section.create(sec_debug_info,'',0));
new_section(current_asmdata.asmlists[al_dwarf_info],sec_debug_info,'',0);
current_asmdata.asmlists[al_dwarf_info].concat(tai_symbol.createname(target_asm.labelprefix+'debug_info0',AT_DATA,0));
{ start abbrev section }
@ -3051,7 +3051,7 @@ implementation
{ to prevent eliminating them by smartlinking }
if (target_info.system in ([system_powerpc_macos]+systems_darwin)) then
exit;
list.concat(Tai_section.create(sec_fpc,'links',0));
new_section(list,sec_fpc,'links',0);
{ include reference to all debuginfo sections of used units }
hp:=tmodule(loaded_units.first);

View File

@ -1678,7 +1678,7 @@ implementation
{ Reference all DEBUGINFO sections from the main .fpc section }
if (target_info.system in ([system_powerpc_macos]+systems_darwin)) then
exit;
list.concat(Tai_section.create(sec_fpc,'links',0));
new_section(list,sec_fpc,'links',0);
{ make sure the debuginfo doesn't get stripped out }
if (target_info.system in systems_darwin) then
begin

View File

@ -2288,7 +2288,7 @@ implementation
if (target_info.system in (systems_darwin+[system_powerpc_macos])) and
not(current_module.islibrary) then
begin
list.concat(tai_section.create(sec_code,'',4));
new_section(list,sec_code,'',4);
list.concat(tai_symbol.createname_global(
target_info.cprefix+mainaliasname,AT_FUNCTION,0));
{ keep argc, argv and envp properly on the stack }

View File

@ -480,8 +480,7 @@ implementation
begin
maybe_new_object_file(current_asmdata.asmlists[al_globals]);
{ Insert Ident of the compiler in the .fpc.version section }
current_asmdata.asmlists[al_globals].concat(Tai_section.create(sec_fpc,'version',0));
current_asmdata.asmlists[al_globals].concat(Tai_align.Create(const_align(32)));
new_section(current_asmdata.asmlists[al_globals],sec_fpc,'version',const_align(32));
current_asmdata.asmlists[al_globals].concat(Tai_string.Create('FPC '+full_version_string+
' ['+date_string+'] for '+target_cpu_string+' - '+target_info.shortname));
if not(tf_no_generic_stackcheck in target_info.flags) then

View File

@ -2147,7 +2147,7 @@ begin
l:=current_asmdata.getasmsymbol(symname);
if not(assigned(l)) then begin
l:=current_asmdata.DefineAsmSymbol(symname,AB_GLOBAL, AT_DATA);
current_asmdata.asmlists[al_picdata].concat(tai_section.create(sec_toc, '.toc', 8));
new_section(current_asmdata.asmlists[al_picdata],sec_toc, '.toc', 8);
current_asmdata.asmlists[al_picdata].concat(tai_symbol.create_global(l,0));
current_asmdata.asmlists[al_picdata].concat(tai_directive.create(asd_toc_entry, symname + '[TC], ' + inttostr(a)));
end;

View File

@ -267,12 +267,11 @@ unit cgppc;
if current_asmdata.asmlists[al_imports]=nil then
current_asmdata.asmlists[al_imports]:=TAsmList.create;
current_asmdata.asmlists[al_imports].concat(Tai_section.create(sec_stub,'',0));
if (cs_create_pic in current_settings.moduleswitches) then
stubalign:=32
else
stubalign:=16;
current_asmdata.asmlists[al_imports].concat(Tai_align.Create(stubalign));
new_section(current_asmdata.asmlists[al_imports],sec_stub,'',stubalign);
result := current_asmdata.RefAsmSymbol(stubname);
current_asmdata.asmlists[al_imports].concat(Tai_symbol.Create(result,0));
{ register as a weak symbol if necessary }
@ -311,7 +310,7 @@ unit cgppc;
{$endif cpu64bitaddr}
current_asmdata.asmlists[al_imports].concat(taicpu.op_reg(A_MTCTR,NR_R12));
current_asmdata.asmlists[al_imports].concat(taicpu.op_none(A_BCTR));
current_asmdata.asmlists[al_imports].concat(tai_section.create(sec_data_lazy,'',sizeof(pint)));
new_section(current_asmdata.asmlists[al_imports],sec_data_lazy,'',sizeof(pint));
current_asmdata.asmlists[al_imports].concat(Tai_symbol.Create(l1,0));
current_asmdata.asmlists[al_imports].concat(tai_directive.create(asd_indirect_symbol,s));
current_asmdata.asmlists[al_imports].concat(tai_const.createname('dyld_stub_binding_helper',0));

View File

@ -87,16 +87,14 @@ implementation
procedure texportlibdarwin.setinitname(list: TAsmList; const s: string);
begin
list.concat(tai_section.Create(sec_init_func,'',0));
list.concat(tai_align.create(sizeof(pint)));
new_section(list,sec_init_func,'',sizeof(pint));
list.concat(Tai_const.Createname(s,0));
end;
procedure texportlibdarwin.setfininame(list: TAsmList; const s: string);
begin
list.concat(tai_section.Create(sec_term_func,'',0));
list.concat(tai_align.create(sizeof(pint)));
new_section(list,sec_term_func,'',sizeof(pint));
list.concat(Tai_const.Createname(s,0));
end;

View File

@ -99,7 +99,7 @@ implementation
{ the problem with not having a .fini section is that a finalization
routine in regular code can get "smart" linked away -> reference it
just like the debug info }
list.concat(Tai_section.create(sec_fpc,'links',0));
new_section(list,sec_fpc,'links',0);
list.concat(Tai_const.Createname(s,0));
inherited setfininame(list,s);
end;

View File

@ -94,7 +94,7 @@ implementation
begin
inherited setinitname(list,s);
{$ifdef sparc}
list.concat(tai_section.create(sec_init,'',4));
new_section(list,sec_init,'',4);
list.concat(tai_symbol.createname_global('_init',AT_FUNCTION,0));
list.concat(taicpu.op_reg_const_reg(A_SAVE,NR_STACK_POINTER_REG,-96,NR_STACK_POINTER_REG));
{$endif sparc}
@ -105,7 +105,7 @@ implementation
begin
inherited setfininame(list,s);
{$ifdef sparc}
list.concat(tai_section.create(sec_fini,'',4));
new_section(list,sec_fini,'',4);
list.concat(tai_symbol.createname_global('_fini',AT_FUNCTION,0));
list.concat(taicpu.op_reg_const_reg(A_SAVE,NR_STACK_POINTER_REG,-96,NR_STACK_POINTER_REG));
{$endif sparc}

View File

@ -691,7 +691,7 @@ unit cgx86;
if current_asmdata.asmlists[al_imports]=nil then
current_asmdata.asmlists[al_imports]:=TAsmList.create;
current_asmdata.asmlists[al_imports].concat(Tai_section.create(sec_stub,'',0));
new_section(current_asmdata.asmlists[al_imports],sec_stub,'',0);
result := current_asmdata.RefAsmSymbol(stubname);
current_asmdata.asmlists[al_imports].concat(Tai_symbol.Create(result,0));
{ register as a weak symbol if necessary }