Как узнать видимость символа в объектном файле - PullRequest
0 голосов
/ 02 марта 2020

Видимость (из атрибута __ (видимость ("...")) и -fvisibility) символа может быть известна из файла so.

nm -C lib.so

t скрыто, T экспортируется (т.е. по умолчанию). Но как получить эту информацию напрямую из объектного файла?

nm -C lib.o

Всегда будет печатать T для не C -стати c символов, какой бы видимость ни была.

1 Ответ

1 голос
/ 02 марта 2020

Видимость отличается от того, является ли символ локальным или глобальным (это то, что описывают строчные / прописные буквы). Скрытый символ все еще может иметь внешнюю связь, то есть он не ограничен единицей перевода.

Я не думаю, что nm имеет возможность показать видимость, но вы можете использовать либо

objdump -Ct lib.o

, который будет показывать атрибут .hidden, если символ скрыт, или

readelf -s lib.o

, в котором есть столбец для видимости (DEFAULT / HIDDEN).

...