[devel] NEW bad_elf_symbols detected

Vitaly Lipatov lav на altlinux.ru
Сб Ноя 6 22:19:29 MSK 2021


Dmitry V. Levin писал 4.11.21 11:43:
> On Wed, Nov 03, 2021 at 10:12:49PM +0300, Vitaly Lipatov wrote:
>> Dmitry V. Levin писал 18.5.12 2:21:
>> > On Fri, May 18, 2012 at 12:05:02AM +0300, Michael Shigorin wrote:
>> >> On Thu, May 17, 2012 at 10:18:18PM +0400, Girar Builder robot wrote:
>> >> > http://git.altlinux.org/tasks/71711/logs/events.1.1.log
>> >> >
>> >> > 2012-May-17 22:06:25 :: task #71711 for sisyphus started by mike:
>> >> > #100 build 0.4.1-alt3 from /people/mike/packages/razor-qt.git
>> >> > 	i586: NEW bad_elf_symbols detected:
>> >> > razor-qt-panel-0.4.1-alt3.i586.rpm	/usr/lib/razor-panel/libclock.so	U	_ZN10RazorClock19confWindowDestroyedEv
>> >> [...]
>> >> >       x86_64: NEW bad_elf_symbols detected:
>> >> > razor-qt-panel-0.4.1-alt3.x86_64.rpm  /usr/lib64/razor-panel/libclock.so      U       _ZN10RazorClock19confWindowDestroyedEv
>> >>
>> >> Гм, а с каких пор %_libdir/*/*.so вообще интересуют проверку?
>> >
>> > Это одна из т.н. глобальных проверок репозитория, наравне проверок на
>> > анметы.  Она выявляет символы, которые используются, но при этом
>> > не экспортируются ни одним из пакетов.  Это ошибки, которые надо
>> > исправлять.
>> >
>> ...
>> > В файле /usr/lib/razor-panel/libclock.so используется нигде не
>> > определенный метод RazorClock::confWindowDestroyed().
>> 
>> Подскажите, пожалуйста, как можно обойти проверку. Тут не совсем
>> библиотека и символ WinMain никем предоставляться не будет.
>>      i586: NEW bad_elf_symbols detected:
>>   wine-6.17.1-alt4.i586.rpm
>> /usr/lib/wine/i386-unix/winevdm.exe.so  U  WinMain
> 
> Уточните, пожалуйста, чем на самом деле является эта "не совсем
> библиотека", зачем ей символ WinMain в такой форме, почему он "никем
> предоставляться не будет", и как это вообще работает.
Это вообще не библиотека, это исполняемый файл Windows-программы, просто 
он в формате ELF, поскольку обычный gcc другие не умеет. Символ WinMain 
должен был быть в нём самом, поскольку программа собиралась как 
графическая, и для них принята функция WinMain() вместо main(). Но это и 
было ошибкой, потому что программа не графическая. Всю магию по загрузке 
таких модулей делает wine.

Из писем ранее я понял, что простые смертные обойти проверку не могут. 
Параллельно выяснил, что требование этого символа это ошибка, которая 
(будет) исправлена.

Спасибо за проверку, которая помогла найти багу сборки!

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


Подробная информация о списке рассылки Devel