Имея информацию в этих выходных данных, могу ли я найти местоположение в моих исходных файлах, где вызывается этот символ глобуса?
Нет.
Вы можете сделать:objdump -d bin/my_app
, найдите CALL
s для двух версий glob
и , которые сообщат вам, из каких функций поступают вызовы.
Я бы хотелнайдите место, чтобы понять, почему две разные версии GLIBC связаны для одного и того же символа.
Это не «две разные версии GLIBC», это «два разных glob
символа с разными ABI».
Я не думал, что можно ссылаться на разные версии glob
в одном и том же двоичном файле ELF, если только вы не создадите какое-нибудь творческое наложение символов с помощью директив asm(".symver ...")
.Как только вы узнаете, какая функция ссылается на (старый) символ glob@GLIBC_2.17
, запустите препроцессор для файла, в котором определена эта функция, и я очень удивлюсь, если в этом файле нет asm(".symversion...")
.