Table of Contents

설명

오브젝트 파일들의 심볼 목록을 보여줌

옵션

옵션 설명
-r 출력 순서를 역순으로 정렬
-v 심볼의 이름이 아니라 주소로 심볼을 정렬
-a 보통 출력하지 않는 디버거용 심볼을 포함하여 모든 심볼들을 출력
-D 동적 심볼들을 출력

심볼 클래스

심볼 클래스 설명
A 심볼 값이 절대값으로 링크해도 변하지 않음
B 초기화되지 않은 데이터 영역(BSS)에 존재함
C 공유(common) 심볼. 초기화 되지 않은 데이터
D 초기화된 데이터 섹션에 존재
G 작은 오브젝트에 사용되며 초기화된 데이터 섹션에 존재 (부근의 심볼이 보다 효율적으로 접근할 수 잇는 경우가 있으므로)
I 다른 심볼의 간접참조. a.out의 GNU 확장
N 디버그용 심볼
R 읽기전용 데이터 섹션에 존재
S 작은 오브젝트에 사용되며 초기화되지 않은 데이터 섹션에 존재
T 텍스트 섹션에 존재
U 정의되지 않은 심볼. 다른 오브젝트 파일 또는 공유 라이브러리에 실제
V 심볼이 존재
W weak 오브젝트
a.out 오브젝트 파일 내의 stabs 심볼(디버그 정보 등)
? 알 수 없는 클래스

사용

hello.c
#include <stdio.h>
 
int hello(void)
{
    printf("Hello, World!\n");
 
    return 0;
}
 
int main(void)
{
    hello();
 
    return 0;
}  
$ gcc -o hello hello.c
$ nm hello
0000000000600e40 d _DYNAMIC
0000000000600fe8 d _GLOBAL_OFFSET_TABLE_
0000000000400640 R _IO_stdin_used
                 w _Jv_RegisterClasses
0000000000600e20 d __CTOR_END__
0000000000600e18 d __CTOR_LIST__
0000000000600e30 D __DTOR_END__
0000000000600e28 d __DTOR_LIST__
0000000000400740 r __FRAME_END__
0000000000600e38 d __JCR_END__
0000000000600e38 d __JCR_LIST__
0000000000601020 A __bss_start
0000000000601010 D __data_start
00000000004005f0 t __do_global_ctors_aux
0000000000400490 t __do_global_dtors_aux
0000000000601018 D __dso_handle
                 w __gmon_start__
0000000000600e14 d __init_array_end
0000000000600e14 d __init_array_start
00000000004005e0 T __libc_csu_fini
0000000000400550 T __libc_csu_init
                 U __libc_start_main@@GLIBC_2.2.5
0000000000601020 A _edata
0000000000601030 A _end
0000000000400628 T _fini
00000000004003f0 T _init
0000000000400638 t _real_fini
0000000000400440 T _start
000000000040046c t call_gmon_start
0000000000601020 b completed.5890
0000000000601010 W data_start
0000000000601028 b dtor_idx.5892
0000000000400500 t frame_dummy
0000000000400524 T hello
0000000000400539 T main
                 U puts@@GLIBC_2.2.5