MAP ファイル内の追加の命名

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは

私はタスクコンパイラバージョンを使用しています:TASKING_TriCore-VX_v6.3r1、私は #pragma セクションall"section_name"を使用して、そのセクションの下にローカル静的変数を配置しています、この構文を使用することで、マップファイル内の1つのファイルのすべての変数に適切な命名を提供し、一部のファイルの変数には_999001_のような数値を含む追加情報を提供しています。これを克服するために、私は__attribute((section("section_name"));を使用しています。このプラグマがいくつかのファイルで正常に動作し、同じパッケージ内の他のファイルでは機能しない理由を助けてください。私もコンパイラのドキュメントを調べましたが、手がかりは得られませんでした。よろしくお願いします

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/td-p/654130

0 件の賞賛
1 解決策
Translation_Bot
Community Manager
Community Manager
Community Manager

なんとかユースケースを再現できました。 C コンパイラー・オプションのいずれかを使用します。

--section-name-with-symbol

又は:

#pragma section_name_with_symbol

モジュールのローカル静的変数の場合、これはセクション名につながります。

.<記号name>.<プラグマ セクション名>

 

関数ローカルシンボルの場合、前述の理由(1つのファイル内で同じ名前の複数の関数ローカルシンボルが可能であり、番号が区別に使用される)により、シンボル名に番号が追加されるため、この番号はセクション名にも表示されます。

この動作は変更できません。 番号を削除したい場合は、--section-name-with-symbolオプション(またはプラグマ)を削除し、代わりにプラグマセクションエントリに必要な名前を追加する必要があります。

#pragma セクションはすべて「ダニ。safe.tick_fail」
static uint8 tick;
#pragma セクションはすべてデフォルトです

よろしくお願いいたします

ウルリッヒ・クロイド
タスキングツールのサポート

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/657220

元の投稿で解決策を見る

0 件の賞賛
9 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @User13836


ここで手伝ってもらえますか?


よろしくお願いいたします
アヌパマ。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/654470

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

pramaセクションを使用して、たとえば名前を変更します。 ローカル静的変数は、そのプラグマに従って定義/宣言されたすべてのローカル静的変数に対して機能します。 たとえば、ローカル静的変数がファイル名file_1.cで使用されている場合 という感じで:

void func_1(void)
{
    static int var_1;
    static int var_2;
    ...
}

C コンパイラは、次のようなセクション名を生成します。

.bss.file_1._999001_var_1
.bss.file_1._999002_var_1

関数静的変数の場合、同じ C ソース・モジュールで複数の関数が定義されている場合、同じ名前のローカル変数が複数回表示される可能性があるため、追加の数が必要です。

変数の宣言の前にプラグマセクションを適用すると、次のようになります。

void func_1(void)
{
#pragma section all "MY_DATA"
    static int var_1;
    static int var_2;
#pragma section all restore
    ...
}

セクション名が次のように変更されます。

.bss です。MY_DATA

静的変数 var_1 と var_2 を含む両方のセクション。 そのため、番号はセクション名から削除されます。 しかし、ローカルシンボルの番号は、そうしないと、同じ名前の複数のローカル静的変数が同じCソースモジュールで定義されていることをコンパイラが区別できないため、引き続き存在します。

	.sdecl	'.bss.MY_DATA',data
	.sect	'.bss.MY_DATA'
	.align	2
_999001_var_1:	.type	object
	.size	_999001_var_1,4
	.space	4
	.sdecl	'.bss.MY_DATA',data
	.sect	'.bss.MY_DATA'
	.align	2
_999002_var_2:	.type	object
	.size	_999002_var_2,4
	.space	4

 

よろしくお願いいたします

ウルリッヒ・クロイド
タスキングツールのサポート

 

 

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/654812

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@User13836

返信ありがとうございます、プラグマを使用している間、一部のファイルでは、余分な名前(数字など)はありませんが、一部のファイルでは発生していますが、プラグマのこの変動動作の理由を教えてください。 また、なぜ_999001しか発生していないのか、これらの数字に意味はありますか? __attribute(())を使わずにそれを回避する方法。可能であれば、この状況をデバッグする方法をいくつか提案してもらえますか(例:適切な動作ファイルから不適切な動作のファイルへのヘッダーの比較など)。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/655809

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

番号は、名前のマングリングの理由により、関数のローカル静的変数の名前に追加されます。 そうしないと、コンパイラは、同じファイル内で同じ名前が複数回使用されている場合、次のように区別できません。

void func_1(void)
{
    static int var_1;
    static int var_2;
    ...
}

void func_2(void)
{
    static int var_1;
    static int var_2;
    ...
}

 

ここでは、関数ローカル静的変数名 var_1 と var_2 が同じファイルに複数回表示されます。 コンパイラは、2 つの変数を区別できるように数値を加算します。

モジュールローカル静的変数を使用する場合、モジュール(ファイル)ローカル静的変数に同じ名前の複数の変数を定義することは許可されていないため、Cコンパイラは変数の名前に番号を追加しません。

static int var_1;
static int var_2;

void func_1(void)
{
    ...
}

 

よろしくお願いいたします

ウルリッヒ・クロイド
タスキングツールのサポート

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/655829

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@User13836

上記の返信 #pragma セクションに従って、すべてがパッケージ全体で均一に動作する必要がありますが、私の場合、#pragma 動作はパッケージ内の異なるファイル間で一貫性がなく、一部のファイルでは、追加情報を追加せずにマップファイルに適切な名前が付けられますが、一部のファイルでは同じことが起こっていません。 スレッドをもう一度調べて、この状況をデバッグする方法を提案していただけませんか。

前もって感謝します。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/656359

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

もっと詳しく知りたいです。 問題のデータセクションの名前変更を示すコードスニペットと、名前の変更が失敗したことを示すマップファイルの抜粋を共有できますか?

 

よろしくお願いいたします

ウルリッヒ・クロイド
タスキングツールのサポート

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/656973

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@User13836

参考までに以下の情報を見つけてください。

ファイル 'A'
----------------
ソースファイル内:

#pragma セクションすべて「safe.tick_fail」
static uint8 tick;
#pragma セクションはすべてデフォルトです

マップファイル内:

.bss._999005_tick.safe.tick_fail(セーフ・ティック・フェイル) (45753) |0x00000001 |0x0 | .bss._999005_tick.safe.tick_fail (45753) |0x00000001 |

--------------------------------------------------------------------
ファイル 'B'

ソースファイル内:

#pragma セクションはすべて「comm.is_added」
static boolean is_added1 = FALSE;
#pragma セクションはすべてデフォルトです

マップファイル内:

.data.comm.is_added (47072) |0x00000001 |0x0 | .data.comm.is_added (47072)|0x00000001

 

ファイルBでは希望のネーミングを生成していますが、ファイルAでは "_999005_tick"が余分な接頭辞ですので、これを回避する方法を提案してください。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/657194

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

なんとかユースケースを再現できました。 C コンパイラー・オプションのいずれかを使用します。

--section-name-with-symbol

又は:

#pragma section_name_with_symbol

モジュールのローカル静的変数の場合、これはセクション名につながります。

.<記号name>.<プラグマ セクション名>

 

関数ローカルシンボルの場合、前述の理由(1つのファイル内で同じ名前の複数の関数ローカルシンボルが可能であり、番号が区別に使用される)により、シンボル名に番号が追加されるため、この番号はセクション名にも表示されます。

この動作は変更できません。 番号を削除したい場合は、--section-name-with-symbolオプション(またはプラグマ)を削除し、代わりにプラグマセクションエントリに必要な名前を追加する必要があります。

#pragma セクションはすべて「ダニ。safe.tick_fail」
static uint8 tick;
#pragma セクションはすべてデフォルトです

よろしくお願いいたします

ウルリッヒ・クロイド
タスキングツールのサポート

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/657220

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@User13836、ありがとう

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Additional-naming-in-MAP-file/m-p/657661

0 件の賞賛