Aller au contenu
Wikipédia l'encyclopédie libre

nm (Unix)

Un article de Wikipédia, l'encyclopédie libre.

Pour les articles homonymes, voir NM.

Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment? ) selon les recommandations des projets correspondants.

nm est un utilitaire Unix servant à examiner les fichiers binaires.

Il fait partie des outils GNU Binutils.

Code source :

/*
 * File name: test.c
 * For C code compile with: 
 * gcc -c test.c
 *
 * For C++ code compile with:
 * g++ -c test.cpp
 */
intglobal_var;
intglobal_var_init=26;
staticintstatic_var;
staticintstatic_var_init=25;
staticintstatic_function()
{
return0;
}
intglobal_function(intp)
{
staticintlocal_static_var;
staticintlocal_static_var_init=5;
local_static_var=p;
returnlocal_static_var_init+local_static_var;
}
intglobal_function2()
{
intx;
inty;
returnx+y;
}
#ifdef __cplusplus
extern"C"
#endif
voidnon_mangled_function()
{
// I do nothing
}
intmain(void)
{
global_var=1;
static_var=2;
return0;
}

Si le code est compilé avec le compilateur C gcc, la sortie de la commande nm est :

# nm test.o
0000000aTglobal_function
00000025Tglobal_function2
00000004Cglobal_var
00000000Dglobal_var_init
00000004blocal_static_var.1255
00000008dlocal_static_var_init.1256
0000003bTmain
00000036Tnon_mangled_function
00000000tstatic_function
00000000bstatic_var
00000004dstatic_var_init

Si le compilateur C++ est utilisé, la sortie change :

# nm test.o
0000000aT_Z15global_functioni
00000025T_Z16global_function2v
00000004b_ZL10static_var
00000000t_ZL15static_functionv
00000004d_ZL15static_var_init
00000008b_ZZ15global_functioniE16local_static_var
00000008d_ZZ15global_functioniE21local_static_var_init
U__gxx_personality_v0
00000000Bglobal_var
00000000Dglobal_var_init
0000003bTmain
00000036Tnon_mangled_function

La première colonne représente les valeurs des symboles, la seconde leurs types, et la troisième leurs noms[1] .

On peut également voir les fonctions que contient un fichier binaire.

Notes et références

[modifier | modifier le code ]
  1. ↑ Library, linux

AltStyle によって変換されたページ (->オリジナル) /