linux-2.6.33/RELOC_HIDE()(gcc)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#zf6b8a4e]
#backlinks
*説明 [#k0808e19]
-パス: [[linux-2.6.33/include/linux/compiler-gcc.h]]
-FIXME: これは何?
--説明
**引数 [#g6808a3a]
-
--
**返り値 [#n642e2c1]
-
--
**参考 [#vd136d02]
*実装 [#abdcc068]
/*
* This macro obfuscates arithmetic on a variable addres...
* shouldn't recognize the original var, and make assump...
*
* This is needed because the C standard makes it undefi...
* pointer arithmetic on "objects" outside their boundar...
* gcc optimizers assume this is the case. In particular...
* assume such arithmetic does not wrap.
*
* A miscompilation has been observed because of this on...
* To work around it we hide the relationship of the poi...
* using this macro.
*
* Versions of the ppc64 compiler before 4.1 had a bug w...
* RELOC_HIDE could trash r30. The bug can be worked aro...
* the inline assembly constraint from =g to =r, in this...
* case either is valid.
*/
#define RELOC_HIDE(ptr, off) ...
({ unsigned long __ptr; ...
__asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
(typeof(ptr)) (__ptr + (off)); })
-
--
*コメント [#fc9494fd]
終了行:
*参照元 [#zf6b8a4e]
#backlinks
*説明 [#k0808e19]
-パス: [[linux-2.6.33/include/linux/compiler-gcc.h]]
-FIXME: これは何?
--説明
**引数 [#g6808a3a]
-
--
**返り値 [#n642e2c1]
-
--
**参考 [#vd136d02]
*実装 [#abdcc068]
/*
* This macro obfuscates arithmetic on a variable addres...
* shouldn't recognize the original var, and make assump...
*
* This is needed because the C standard makes it undefi...
* pointer arithmetic on "objects" outside their boundar...
* gcc optimizers assume this is the case. In particular...
* assume such arithmetic does not wrap.
*
* A miscompilation has been observed because of this on...
* To work around it we hide the relationship of the poi...
* using this macro.
*
* Versions of the ppc64 compiler before 4.1 had a bug w...
* RELOC_HIDE could trash r30. The bug can be worked aro...
* the inline assembly constraint from =g to =r, in this...
* case either is valid.
*/
#define RELOC_HIDE(ptr, off) ...
({ unsigned long __ptr; ...
__asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
(typeof(ptr)) (__ptr + (off)); })
-
--
*コメント [#fc9494fd]
ページ名: