objdump -t
인 파일의 기호 표 을 검사하여 개체 파일에서 기호의 표시 여부를 확인할 수 있습니다. 기호가 hidden
인 경우 해당 objdump
레코드의 여섯 번째 필드에 .hidden
레이블이 붙고 이 그 이름으로 붙습니다. 가시성이 default
이면 해당 레이블이없고 여섯 번째 필드가 이름이됩니다 (일반적인 경우). 예를 들어 :
foo.c를 (기본 가시성)
#include <stdio.h>
void foo(void)
{
puts("foo");
}
컴파일 및 검사 :
$ gcc -c -fPIC foo.c
$ objdump -t foo.o | grep foo
foo.o: file format elf64-x86-64
0000000000000000 l df *ABS* 0000000000000000 foo.c
0000000000000000 g F .text 0000000000000013 foo
foo.c를 (숨겨진 가시성)
#include <stdio.h>
__attribute__ ((visibility ("hidden"))) void foo(void)
{
puts("foo");
}
을 다시 컴파일하고 다시 검사하십시오.
$ gcc -c -fPIC foo.c
$ objdump -t foo.o | grep foo
foo.o: file format elf64-x86-64
0000000000000000 l df *ABS* 0000000000000000 foo.c
0000000000000000 g F .text 0000000000000013 .hidden foo
nm 명령을 사용해 보셨나요? – codeforester