「JMN6415I-W リロケーション個数が上限に達しました。リンク時、LINKコマンドに/DYNAMICBASE:NOを指定してください。」が出力されたときの原因と対処方法を教えて下さい。

COBOLプログラムのコンパイル時に「JMN6415I-W リロケーション個数が上限に達しました。リンク時、LINKコマンドに/DYNAMICBASE:NOを指定してください。」という警告メッセージが出力されました。原因と対処方法を教えて下さい。
NetCOBOL V11.0.0より、使用するMicrosoft社製リンカのバージョンを変更しました(*1)。
V11.0.0以降で使用するリンカで/DYNAMICBASEまたは/INCREMENTALを有効にして巨大なCOBOLプログラムをリンクすると、実行時にCOBOLプログラムが異常終了する場合があります。
V11.0.0以降のコンパイラは、/DYNAMICBASEまたは/INCREMENTALを有効にしてリンクできない目的プログラムを生成する場合、本メッセージを出力します。NetCOBOLで提供する開発環境(NetCOBOL Studio, プロジェクトマネージャ, WINLINKコマンド,NetCOBOLコマンドプロンプト,PowerCOBOL) では既定で/DYNAMICBASE:NOと/INCREMENTAL:NOが有効になっています。
NetCOBOL以外の開発環境を使用している場合、NetCOBOLの開発環境を使用してください。また,本メッセージは,リンク方法に対するメッセージのため,翻訳時の開発環境において/DYNAMICBASE:NOと/INCREMENTAL:NOが有効である場合でも必ず出力されます。

*1:詳細については「NetCOBOLリリース情報」「2.1.4 リンカの変更について」を参照してください。

[補足1]
リロケーションはコンパイラが目的プログラム中に出力する情報の一つです。
NetCOBOLコンパイラが生成した目的プログラムは、リロケーションの個数が一定の値を超えている場合、/DYNAMICBASEまたは/INCREMENTALを有効にしてリンクすると実行時に異常終了します。

[補足2]
/DYNAMICBASEと/INCREMENTALの形式は以下です。

オプション形式 内容
/DYNAMICBASE アドレス空間ランダム化(ASLR)を有効にします。
/DYNAMICBASE:NO アドレス空間ランダム化(ASLR)を無効にします。
/INCREMENTAL インクリメンタル・リンクを有効にします。
/INCREMENTAL:NO インクリメンタル・リンクを無効にします。
製品・サービス情報
対象製品NetCOBOL
プラットフォームWindows x86
アンサー種別 設計/開発
このページの先頭へ