On Tue, May 11, 2010 at 02:42:48PM +0400, Ivan A. Melnikov wrote: > Пытаюсь собрать boost 1.43.0, пока при помощи gear-rpm -ba в локальной > системе (Сизиф x86_64). В конце сборки получаю кучу ошибок от > eu-elflint (кусок лога ниже). Google и search.altlinux.org не помогли. > Подскажите, пожалуйста, как с этим бороться. elfutils плохо понимает новые символы STB_GNU_UNIQUE. elfutils/libebl/eblsymbolbindingname.c: 83 if (binding >= STB_LOPROC && binding <= STB_HIPROC) 84 snprintf (buf, len, "LOPROC+%d", binding - STB_LOPROC); 85 else if (binding == STB_GNU_UNIQUE 86 && (ident = elf_getident (ebl->elf, NULL)) != NULL 87 && ident[EI_OSABI] == ELFOSABI_LINUX) 88 return "GNU_UNIQUE"; Кажется binutils всегда выставляет ident[EI_OSABI] в 0, то есть generic System V ABI. ident[EI_OSABI] это восьмой байт в файле, легко проверить. Например /usr/bin/perl: 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| В binutils код другой. binutils/binutils/readelf.c: 7883 if (binding >= STB_LOPROC && binding <= STB_HIPROC) 7884 snprintf (buff, sizeof (buff), _(": %d"), 7885 binding); 7886 else if (binding >= STB_LOOS && binding <= STB_HIOS) 7887 { 7888 if (binding == STB_GNU_UNIQUE 7889 && (elf_header.e_ident[EI_OSABI] == ELFOSABI_LINUX 7890 /* GNU/Linux is still using the default value 0. */ 7891 || elf_header.e_ident[EI_OSABI] == ELFOSABI_NONE)) 7892 return "UNIQUE"; 7893 snprintf (buff, sizeof (buff), _(": %d"), binding); 7894 } > section [ 3] '.dynsym': symbol 632: unknown symbol binding > section [ 3] '.dynsym': symbol 633: unknown symbol binding > section [ 3] '.dynsym': symbol 638: unknown symbol binding > verify-elf: WARNING: ./usr/lib64/libboost_math_tr1-st.so.1.43.0: eu-elflint failed > > [... skip ...] > > section [ 3] '.dynsym': symbol 1561: unknown symbol binding > section [ 3] '.dynsym': symbol 1577: unknown symbol binding > verify-elf: WARNING: ./usr/lib64/libboost_wave.so.1.43.0: eu-elflint failed > ошибка: Неверный код возврата из /tmp/rpm-tmp.5122 (%install) Тем не мене, это только warning. Там ещё где-то должен быть error.