IDA DEPLOYUDX コマンド

IDA DEPLOYUDX CLPPlus コマンドはライブラリーを作成し、そのライブラリーを使用する UDX を 1 つ登録します。

このコマンドは、以下のことを行います。
  • データベース・サーバーのユーザー・ホームの下にプロジェクト・ディレクトリーを作成し、UDX ソース・ファイルを含む圧縮ファイルをプロジェクト・ディレクトリーにアップロードします。
  • 圧縮ファイルをプロジェクト・ディレクトリーに解凍します。
  • C++ で作成された UDX の場合は、すべてのソース・ファイルをコンパイルしてオブジェクト・ファイルを作成します。
  • C++ で作成された UDX の場合は、オブジェクト・ファイルをリンクしてライブラリー・ファイルを作成します。
  • ライブラリー・ファイルと、ライブラリーで使用されるその他のファイルをリリース・ディレクトリーにプロモートします。
  • ライブラリー・ファイルを使用する UDX を 1 つ登録します。

デプロイメント・アクションを制御するパラメーターは、コマンド・ストリング、IDA パラメーター・ファイル、またはその両方で指定できます (IDA パラメーター・ファイルを参照してください)。

注: UDX 機能はすべて、fenced モードでのみ機能します。

呼び出し

このコマンドは CLPPlus インターフェースから実行する必要があります。

許可

なし。

必要な接続

CLPPlus がデータベースに接続されている必要があります。

コマンド構文

IDA DEPLOYUDX

構文図を読む構文図をスキップする IDA DEPLOYUDX PARAMFILEparameter_file SOURCEcompressed_file PROJECTname_of_compressed_file PROJECTproject REPLACEPROMPT REPLACEYES REPLACENO PROMOTEfile_name PROMOTE",file_name"LANGCPPC++ parametersLANGLUALua parameters
C++ パラメーター
構文図を読む構文図をスキップする CLASSclass SIGNATURE signature RETURN data_type ENVIRONMENTvariables BINDIRbin BINDIRdir DETERMINISTICYES DETERMINISTICNO CALLEDONNULLINPUTNO[for a UDSF or UDTF] CALLEDONNULLINPUTYES[for a UDAF] CALLEDONNULLINPUTNO CALLEDONNULLINPUTYES ALLOWPARALLELYES[for a UDSF or UDAF] ALLOWPARALLELNO[for a UDTF] ALLOWPARALLELYES ALLOWPARALLELNO LIBRARY lib name_of_project LIBRARYlibrary LIBRARY library(,file)USELIBRARY project_nameUSELIBRARYproject_name:library.so UDXLIBRARY name_specified_for_LIBRARY_parameter.so UDXLIBRARYname INCLUDEDIRECTORIESdirectory INCLUDEDIRECTORIES",directory"

コマンド・パラメーター

PARAMFILE
このコマンドに明示的に指定されていないパラメーターのデフォルト値を決定する IDA パラメーター・ファイルの名前 (IDA パラメーター・ファイルを参照)。 デフォルトがない必須パラメーターがコマンド・ストリングで明示的に指定されていない場合は、すべて IDA パラメーター・ファイルで指定する必要があります。
SOURCE | SRC
デプロイされる UDX で必要なすべてのソース・ファイルを含む圧縮ファイルの完全修飾名。
PROJECT | PROJ
指定されたソース・ファイルのセット用に作成されるプロジェクト・ディレクトリーの名前。 名前に使用できるのは、英数字 (A から Z、a から z、0 から 9)、および下線文字 (_) のみです。デフォルトは、 SOURCE パラメーターで指定されたファイルの名前から拡張子を除いたものです。
REPLACE
指定された名前のプロジェクトが既に存在する場合に、以下のいずれかを指定します。
YES
既存のプロジェクトを削除し、新規プロジェクトで置換します。
NO
コマンドをキャンセルして、アクションを実行しません。
PROMPT
ユーザーに対して、以下のいずれかの操作を指定するよう指示します。
  • コマンドを続行し、既存のプロジェクトを削除して置換します。
  • コマンドをキャンセルして、アクションを実行しません。
PROMOTE
リリース・ディレクトリーにプロモートされる、生成されたライブラリー (C++ で作成された UDX の場合は library パラメーターに指定されたファイル) などのファイルのコンマ区切りリスト。
LANGUAGE | LANG
UDX の作成に使用した言語
CPP
C++ の場合。
LUA
Lua の場合。
このパラメーターを指定しない場合、コマンドは、圧縮された入力ファイルに含まれているファイルの拡張子に基づいて、自動的に言語を決定します。 このパラメーターは、入力ファイルに複数のタイプの UDX ソース・ファイル (例えば、.cpp ファイルと .nzl ファイルの両方) が含まれている場合にのみ指定します。
UDX の言語に応じて、次のいずれかのグループに属するパラメーターが指定できます (あるいは指定する必要があります)。
  • C++ パラメーター
  • Lua パラメーター
UDXLIBRARY | UDXLIB
このパラメーターは、UDX の作成に使用した言語によって異なります。
C++
登録されるライブラリー・ファイルが、リンク・ステップによって作成されたライブラリー・ファイルと異なる場合は、このパラメーターを使用して、プロジェクト・ディレクトリーからのパスとそのファイルの拡張子を含む完全な名前を指定します。 拡張子は .so でなければなりません。デフォルトは、リリース・ディレクトリー内にある、LIBRARY パラメーターに指定された名前 (何も指定されていない場合は、そのパラメーターのデフォルト値) の後に .so を付けたファイルです (例: release/libudx77.so)。
Lua
ソース・ファイルを含む圧縮ファイルに .nzl という拡張子のファイルが複数含まれている場合は、このパラメーターを使用して、UDX に使用するファイルを指定します。 拡張子は .nzl でなければなりません。
CLASS
UDX のクラス (つまり、共有ライブラリー内のエントリー・ポイントのラベル)。
SIGNATURE | SIG
UDX のシグニチャー。以下に例を示します。
UDX タイプ シグニチャー 説明
UDSF udx42(VARCHAR,CHAR) 2 つの入力引数 (1 つの VARCHAR と 1 つの CHAR) を受け入れる udx42 という名前の UDSF。
UDTF "sig=UDTFONEINT(integer)" 1 つの入力引数 (整数) を受け入れる UDTFONEINT という名前の UDTF。
UDAF "sandd(int,int) aggregate with (int,int)" 2 つの入力引数 (両方とも整数) を受け入れる sandd という名前の UDAF。
RETURN
UDX から返されるデータのデータ・タイプ。
  • UDSF または UDAF の場合、これは int または char などの単純なデータ・タイプです。
  • UDTF の場合、これは "TABLE(<name> <data_type>)" という形式のストリングです。例えば、"TABLE(t1 integer)" は、返されたデータが、1 列の整数データを含む t1 という名前の表にあることを示します。
ENVIRONMENT | ENV
UDX の登録中に使用される環境変数のコンマ区切りリストが含まれるストリング。 以下に例を示します。
ENV "'USD_TO_INR'='60','EUR_TO_INR'='80'"
DETERMINISTIC | DET
UDX が決定論的かどうか。
CALLEDONNULLINPUT | NULLCALL
1 つ以上の入力値が NULL のときに、UDX を呼び出すかどうか。
ALLOWPARALLEL | PARALLEL
UDX が並列処理を許可するかどうか。値 YES は、UDSF または UDAF の場合にのみ指定できます。UDTF の場合は指定できません。
LIBRARY | LIB
生成されるライブラリー・ファイルに割り当てられる名前 (拡張子を含む)。デフォルトは lib<project>.so という形式の名前です。 例えば、プロジェクト名が udx77 の場合、生成されるライブラリーのデフォルト名は libudx77.so になります。

追加のオブジェクト・ファイル (.o ファイル)、静的ライブラリー (.a ファイル)、または共有ライブラリー (.so ファイル) がリンク・ステップに組み込まれ、リリース・ディレクトリーにプロモートされる場合、これらは指定されたライブラリー名の後のコンマ区切りリストで指定できます。 DEPLOYUDX 操作では、LIBRARYDIRECTORIES パラメーターで指定されたディレクトリー内のファイルが検索されます。したがって、名前にパス情報が含まれないようにします。 ファイル名には、ファイル拡張子を含める必要があります。 例えば、mylib.so(obj1.o,obj2.o,lib25.so,lib50.a) のようにします。

USELIBRARY | USELIB
<project>[:<library>] 項目 (ビルド・ライブラリーが依存する UDSL) のコンマ区切りリスト。 IDA REST API 呼び出しに渡されます。C++ でのみ使用可能です。library 部分のデフォルトは lib<project>.so です。 リストで参照されるライブラリーは、release/DEPS フォルダー内のライブラリーへのシンボリック・リンクとなります。
INCLUDEDIRECTORIES | INCLUDEDIRS
コンパイル時に組み込むファイルが含まれているプロジェクト・ディレクトリーに対して相対的に指定された、コンマで区切られたサブディレクトリーのリスト。 以下に例を示します。
INCLUDEDIRS "inc/sub2,myincludes"
BINARYDIRECTORY | BINDIR
コンパイル時に作成されたオブジェクト・ファイルが保管されるプロジェクト・ディレクトリーのサブディレクトリーの名前。

IDA パラメーター・ファイル

IDA パラメーター・ファイルには、1 つ以上のコマンド・パラメーターの設定が含まれています。 パラメーター・ファイルを使用すると、必須パラメーターの値を設定したり (コマンド・ストリングで指定する必要がないようにする)、オプション・パラメーターのデフォルト値を設定または変更したりすることができます。

パラメーター構文は、パラメーターがコマンド・ストリングまたはパラメーター・ファイルのどちらに指定されているかに関係なく、同じです。 コマンド・ストリングで明示的に指定されているパラメーターは、パラメーター・ファイル内の対応するパラメーター設定をオーバーライドします。 適用されないパラメーターがパラメーター・ファイルで指定されている場合 (例えば、C++ 以外の言語で作成された UDX の CLASS パラメーターを指定した場合)、そのパラメーターは無視されます。

以下に、すべてのパラメーターの値を指定するパラメーター・ファイルの例を示します。
LANG CPP
SRC udxin7.tar
PROJ proj7
SIG udx7(int,char,char)
RETURN int
PROMOTE "ab.xml,x77.txt"
ENV "'USD_TO_INR'='60','EUR_TO_INR'='80'"
DET YES  
NULLCALL YES
PARALLEL YES
REPLACE PROMPT
CLASS UDcf
LIB mylib.so(obj1.o,obj2.o,lib25.so,lib50.a)
LIBDIRS "libs/a22,temp"
UDXLIB udxseven
INCLUDEDIRS "inc/sub2,myincludes"
DEBUG YES
以下に、いくつかのパラメーターの値のみを指定するパラメーター・ファイルの例を示します。
INCLUDEDIRS "inc/sub2,myincludes"

PARALLEL YES

次のコマンドは、pf1.txt という名前のパラメーター・ファイルを使用して、そのすべてのパラメーターを指定します。
SQL> IDA DEPLOYUDX PARAMFILE pf1.txt
次のコマンドは、pf1.txt で指定された一部のパラメーターを上書きします。
SQL> IDA DEPLOYUDX PARAMFILE pf1.txt SRC udxin4.tar UDXLIB x11
次のコマンドは、パラメーター・ファイルを指定しません。パラメーターはすべてコマンド・ストリングで指定されます。 指定されていないすべてのパラメーターにデフォルトが使用されます。
SQL> IDA DEPLOYUDX SRC C:\udxdev\udx1.tar SIG udx1(int,int) CLASS ABin RETURN char