LinuxでpowerpcのCPUタイプをプログラムで見つける方法を探しています。mfpvr 命令を示唆する回答に関連付けられたいくつかの Google 検索を実行すると、これがELF AUX ヘッダーで利用可能であることがわかりました。次のようにして、実行しているマシンの POWER5 文字列を取得できます。
#include <stdio.h>
#include <elf.h>
int main( int argc, char **argv, char **envp )
{
/* walk past all env pointers */
while ( *envp++ != NULL )
;
/* and find ELF auxiliary vectors (if this was an ELF binary) */
#if 0
Elf32_auxv_t * auxv = (Elf32_auxv_t *) envp ;
#else
Elf64_auxv_t * auxv = (Elf64_auxv_t *) envp ;
#endif
char * platform = NULL ;
for ( ; auxv->a_type != AT_NULL ; auxv++ )
{
if ( auxv->a_type == AT_PLATFORM )
{
platform = (char *)auxv->a_un.a_val ;
break;
}
}
if ( platform )
{
printf( "%s\n", platform ) ;
}
return 0 ;
}
この情報を使用したい共有ライブラリのコンテキストでは、envp にアクセスできません。ELF AUX ヘッダーの先頭を見つけるための代替プログラム方法はありますか?