Ignore:
Timestamp:
Jun 11, 2008, 10:10:26 PM (16 years ago)
Author:
dai_9181
Message:

リンカの依存関係解決モジュールを製作中

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/ab_common/src/Lexical/ObjectModule.cpp

    r636 r637  
    5656
    5757
    58 void ObjectModule::StaticLink( ObjectModule &objectModule )
     58void ObjectModule::StaticLink( ObjectModule &objectModule, bool isSll )
    5959{
    6060    const std::vector<int> relationTable = this->GetRelationTable( objectModule.relationalObjectModuleNames );
     
    6565    meta.StaticLink( objectModule.meta, dataSectionBaseOffset, relationTable );
    6666
    67     // グローバル ネイティブコードを結合
    68     objectModule.globalNativeCode.ResetDataSectionBaseOffset( dataSectionBaseOffset );
    69     objectModule.globalNativeCode.ResetSourceIndexes( relationTable );
    70     globalNativeCode.PutEx( objectModule.globalNativeCode );
    71 
    72     // データテーブルを結合
    73     objectModule.dataTable.ResetDataSectionBaseOffset( dataSectionBaseOffset );
    74     dataTable.Add( objectModule.dataTable );
     67    if( !isSll )
     68    {
     69        // グローバル ネイティブコードを結合
     70        objectModule.globalNativeCode.ResetDataSectionBaseOffset( dataSectionBaseOffset );
     71        objectModule.globalNativeCode.ResetRelationalObjectModuleIndex( relationTable );
     72        globalNativeCode.PutEx( objectModule.globalNativeCode );
     73
     74        // データテーブルを結合
     75        objectModule.dataTable.ResetDataSectionBaseOffset( dataSectionBaseOffset );
     76        dataTable.Add( objectModule.dataTable );
     77    }
     78
     79    // 依存関係を解決
     80    this->Resolve();
    7581
    7682    // TODO: basbufがいらなくなったら消す
    7783    extern char *basbuf;
    7884    basbuf = this->source.GetBuffer();
     85}
     86
     87void ObjectModule::Resolve()
     88{
     89    this->meta.Resolve();
     90
     91    // グローバルネイティブコードを解決(スケジュールを解決する)
     92    this->globalNativeCode.Resolve();
     93
     94    // データテーブルを解決(スケジュールを解決する)
     95    this->dataTable.Resolve();
    7996}
    8097
Note: See TracChangeset for help on using the changeset viewer.