LINUX.ORG.RU

История изменений

Исправление dimgel, (текущая версия) :

Вероятно фокус в том, что versym == 0 (VER_NDX_LOCAL). Т.е. фильтрация не только на уровне SHT_DYNSYM выполняется, но бывает ещё и так, что в SHT_DYNSYM написано STB_GLOBAL, а глубже в SHT_GNU_versym - LOCAL. Сраный бардак.

Возможно, комбинация STB_GLOBAL + VER_NDX_LOCAL может использоваться в плагинной архитектуре: если либа A, экспортирующая такой символ S, подгружает либу B, то B видит S. А если какая-то третья либа C сама подгружает A, то C не видит S. Но это фантазия. Спросить что ли на SO?…

Но это в случае экспорта. А что может означать такая комбинация на стороне импорта, вообще никаких догадок.

Исправление dimgel, :

Вероятно фокус в том, что versym == 0 (VER_NDX_LOCAL). Т.е. фильтрация не только на уровне SHT_DYNSYM выполняется, но бывает ещё и так, что в SHT_DYNSYM написано STB_GLOBAL, а глубже в SHT_GNU_versym - LOCAL. Сраный бардак.

Возможно, комбинация STB_GLOBAL + VER_NDX_LOCAL может использоваться в плагинной архитектуре: если либа A, экспортирующая такой символ S, подгружает либу B, то B видит S. А если какая-то третья либа C сама подгружает A, то C не видит S. Но это фантазия. Спросить что ли на SO?…

Исправление dimgel, :

Вероятно фокус в том, что versym == 0 (VER_NDX_LOCAL). Т.е. фильтрация не только на уровне SHT_DYNSYM выполняется, но бывает ещё и так, что в SHT_DYNSYM написано STB_GLOBAL, а глубже в SHT_GNU_versym - LOCAL. Сраный бардак.

Исходная версия dimgel, :

Вероятно фокус в том, что versym == 0 (VER_NDX_LOCAL). Т.е. фильтрация не только на уровне SHT_DYNSYM выполняется, но бывает ещё и так, что в SHT_DYNSYM написано GLOBAL, а глубже в SHT_GNU_versym - LOCAL. Сраный бардак.