問題タブ [itanium-abi]
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.
c++ - API の後方バイナリ互換性を維持するための GCC 対 MS C++ コンパイラ
私は Linux の世界から来て、C++ 言語で記述された動的ライブラリ API の後方バイナリ互換性 (BC) の維持に関する記事をたくさん知っています。そのうちの 1 つは、GCC コンパイラで使用されるItanium C++ ABIに基づく「Policies/Binary Compatibility Issues With C++」です。しかし、Microsoft C++ コンパイラ (MSVC から) に似たものは見つかりません。
ほとんどの手法が MS C++ コンパイラに適用できることを理解しており、ABI の違い (v テーブル レイアウト、マングリングなど) に関連するコンパイラ固有の問題を発見したいと考えています。
だから、私の質問は次のとおりです。
- BC を保守する際の MS C++ コンパイラと GCC コンパイラの違いを知っていますか?
- MS C++ ABI に関する情報、または Windows で API の BC を維持するための情報はどこにありますか?
関連する情報は高く評価されます。
助けてくれてどうもありがとう!
c++ - 特性を入力してプライマリ基本クラスを識別します
少なくとも1つの仮想関数を持つクラスBaseがあり、これから単独で継承するクラスDerivedが(uintptr_t)derived - (uintptr_t)static_cast<Base*>(derived)
ある場合、Derivedは標準レイアウトではありませんが、(Itanium ABIによって)ゼロであることが保証されます。ただし、一般的なケースでは、これは必ずしも正しいとは限りません(例:多重継承)。
あるクラスが別のクラスのプライマリ基本クラスであるかどうかを検出するために使用できるトレイトを作成することは可能ですか?
Itanium ABIの便利なセクション:
http://refspecs.linux-foundation.org/cxxabi-1.83.html
一次基本クラス
動的クラスの場合、オフセット0で仮想ポインターを共有する一意の基本クラス(存在する場合)。これは、存在する場合、最初の(直接基本クラスの順序で)非仮想動的基本クラスです。
動的クラス
仮想テーブルポインタを必要とするクラス(それまたはそのベースに1つ以上の仮想メンバー関数または仮想ベースクラスがあるため)。
c++ - Linux カーネル モジュールでの C++ 例外のサポート
2005 年、Dr Dobb's 誌に Linux カーネルのパッチに関する記事が掲載されました。このパッチは、カーネル空間で Itanium C++ ABI を許可するふりをしていました。パッチは受け入れられませんでした。コードはネットから消えました (見つけられません:))。
リンクからパッチのソースに移動したようです。ページのアドレスが存在しないページにつながってい ます。死んだアドレスにリンクしているページがたくさんあります。
では、パッチのコピーやそれに関するその他の情報を持っている人はいますか?
ありがとう。
c++ - Itanium C++ ABI で、テンプレート関数のマングルされた名前が依存する typedef を解決しないのはなぜですか?
例えば:
baz<int>
マングルされた形式の言及foo
がまったくないのはなぜですか? なぜそうではないの_Z3bazIiEvi
ですか?
これが明らかに、C++17 のstd::default_order<T>
提案が水の中で死んでいる理由です。