問題タブ [gcc-plugins]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
443 参照

c - arm64 クロス コンパイラを使用した gcc プラグイン: 共有オブジェクト ファイルを開けません

gcc プラグインを使用して、コンパイル時に各構造体のサイズを計算しようとしています。検索して、この記事に出くわしました。

ネイティブの x64 gcc コンパイラを使用して以下のテスト プログラムで試してみたところ、次の結果が得られました。

結果 :-

今度は、aarch64 クロス コンパイラで同じことを試します。私が持っているクロスコンパイラのバージョンは次のとおりです:-

私はgccプラグインを次のようにコンパイルします:-

今、私は test.c を次のようにコンパイルしようとします:-

なぜこのエラーが発生するのですか? ダウンロードしたlinaroバイナリツールチェーンでも試してみましたが、同じエラーが発生しました。私は何が欠けていますか?

0 投票する
0 に答える
115 参照

gcc - gcc プラグインを cmake プロジェクトに追加する

cmake プロジェクトに gcc プラグインを追加したいと考えています。ソリューションは以下を満たす必要があります。

  • gcc プラグインは git リポジトリから取得する必要があります (これには外部プロジェクトを使用できます)。
  • gcc プラグインではないものはすべて、gcc プラグインに自動的に依存する必要があります。これは、プラグインがビルドされていない場合、何よりも先にビルドされることを意味します。
  • オプション: すべて自動的に gcc プラグインに完全に依存する必要があります。これは、プラグインが更新された場合、それと他のすべてが再構築されることを意味します。

自動的にということは、すべてのターゲットにこの依存関係を手動で追加する必要がないことを意味することに注意してください。

これをcmakeで実装するにはどうすればよいですか?

0 投票する
1 に答える
91 参照

c++ - Windows 10 で gcc へのプラグインを実行する際の問題

Windows 10 OSで作業しています。単純な gcc プラグインを実行したいので、最初に Mingw をインストールしました。次に、単純な hellowrd.c をコンパイルすると、正常に動作します。しかし、「gcc-pugin.h」インクルードを使用するプラグインをシミュレートしようとすると、gcc-plugin.h「そのようなファイルまたはディレクトリがありません」という理由でエラーが発生します。

どうやらmingwのインストールでは、必要なものがすべてインストールされていないようです。

Windowsが動作しないのは問題ですか?

0 投票する
1 に答える
472 参照

gcc - 特定の機能を計測するためのカスタム gcc 属性の作成: ブラックリストではなくホワイトリスト

gccの-finstrument-functionsオプションを使用しています。オーバーヘッドを最小限に抑えるために、いくつかの関数のみを計測したいと考えています。ただし、gcc では関数をブラックリストに登録することしかできません (no_instrument_function属性を使用するか、パスのリストを提供することによって)。関数をホワイトリストに登録することはできません。

instrument_functionそこで、属性を追加する小さな gcc プラグインを作成しました。これにより、特定の関数のインストルメンテーション「フラグ」を設定できます (または、インストルメンテーションなしフラグをクリアします)。

しかし、私の理解では、これは機能しません。gcc のソースを見ると、このフラグが実際に何かを行うには、 も使用する必要があります-finstrument-functions。参照gcc/gimplify.c:14436:

まず、グローバル-finstrument-functionsフラグが有効になっていることを確認します。次に、特定の関数のフラグをチェックします。これは、私が理解していることから、デフォルトで有効になっています。したがって、my 属性を持たない他のすべての関数instrument_functionは引き続きインストルメント化されます。

最初にすべての関数のこのフラグをクリアしてから、instrument_function属性を処理してそれらの関数のみにフラグを設定する方法はありますか?