- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#k6bdfa80]
#backlinks
*説明 [#wcdecbe9]
-パス: [[linux-2.6.33/]]
-パス:
--ダイナミックリンク有効: [[alsa-lib-1.0.27.2/include/global.h]]
--ダイナミックリンク無効: [[alsa-lib-1.0.27.2/include/global.h]]
-FIXME: これは何?
--説明
例: ダイナミックリンク有効の場合
libasound.so を nm で見るとたくさん出てくる。
in src/pcm/pcm_hw.c
-------------------
SND_DLSYM_BUILD_VERSION(_snd_pcm_hw_open, SND_PCM_DLSYM_VERSION);
-> __snd_pcm_hw_open_dlsym_pcm_001
^(1)
^^^^^^^^^^^^^^^^(2)
^^^^^^^^^^^^^^(3)
(1): プレフィクス、常に "_" である
(2): name に指定したシンボル名
(3): version に指定したシンボル名
**引数 [#pe0ab3ac]
-name
--
--名前(シンボル、文字列ではない)
-version
--
--バージョン(シンボル、文字列ではない)
**返り値 [#oeb50a03]
-なし
--関数ではない。
**参考 [#zfcefcdf]
-version に指定されるマクロの一覧
--[[alsa-lib-1.0.27.2/SND_CONFIG_DLSYM_VERSION_EVALUATE]]
--[[alsa-lib-1.0.27.2/SND_CONFIG_DLSYM_VERSION_HOOK]]
--[[alsa-lib-1.0.27.2/SND_CONTROL_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_HWDEP_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_PCM_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_RAWMIDI_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_SEQ_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_TIMER_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_TIMER_QUERY_DLSYM_VERSION]]
*実装 [#mcba42c4]
#ifdef PIC /* dynamic build */
-ダイナミックリンク有効の場合
(...略...)
/**
* \hideinitializer
* \brief Appends the build version to the name of a versioned dynamic symbol.
*/
#define SND_DLSYM_BUILD_VERSION(name, version) char __SND_DLSYM_VERSION(name, version);
-char 型の変数を宣言する。変数名は __SND_DLSYM_VERSION() で決める。
--[[alsa-lib-1.0.27.2/__SND_DLSYM_VERSION()]]
#else /* static build */
(...略...)
/**
* \hideinitializer
* \brief Appends the build version to the name of a versioned dynamic symbol.
*/
#define SND_DLSYM_BUILD_VERSION(name, version) \
static struct snd_dlsym_link __SND_DLSYM_VERSION(snd_dlsym_, name, version); \
void __SND_DLSYM_VERSION(snd_dlsym_constructor_, name, version) (void) __attribute__ ((constructor)); \
void __SND_DLSYM_VERSION(snd_dlsym_constructor_, name, version) (void) { \
__SND_DLSYM_VERSION(snd_dlsym_, name, version).next = snd_dlsym_start; \
__SND_DLSYM_VERSION(snd_dlsym_, name, version).dlsym_name = # name; \
__SND_DLSYM_VERSION(snd_dlsym_, name, version).dlsym_ptr = (void *)&name; \
snd_dlsym_start = &__SND_DLSYM_VERSION(snd_dlsym_, name, version); \
}
-
--[[alsa-lib-1.0.27.2/snd_dlsym_link]]
-
--[[alsa-lib-1.0.27.2/__SND_DLSYM_VERSION()]]
#endif
*コメント [#s4450ba5]