From: Alexey Tourbin <alexey.tourbin@gmail.com> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: Re: [devel] versioned set-versions; was: Re: Qt5 и поломанные плагины Date: Sat, 21 Apr 2018 00:45:04 +0300 Message-ID: <CA+qzenkH3faOjFQL2SbK4zXrJ=rQSnz2mgdTDLiTY0xHmWzpnA@mail.gmail.com> (raw) In-Reply-To: <20180416182100.GA16649@portlab> 2018-04-16 21:21 GMT+03:00 Vladimir D. Seleznev <vseleznv@altlinux.org>: > On Sat, Dec 30, 2017 at 06:51:42AM +0300, Alexey Tourbin wrote: >> В данном случае разработчик как раз порезался своей опасной бритвой: >> перенес символ из одного @ABI в другой, в результате чего ABI >> изменился несовместимым образом. Разработчику надо повесить плакат над >> рабочим местом: символ - это не бутерброд с колбасой, чтобы передавать >> его из одного интерфейса в другой. Надо также отметить, что если бы >> разработчик не делал вообще ничего, то проблемы бы не возникло. (В >> связи с этим возникают разные смешные вопросы: например, какова >> производительность труда у этого разработчика? Или же, выражаясь >> словами Дреппера, можно ли подпускать его к клавиатуре?) >> >> Два механизма были сделаны ортогональными вовсе не по недомыслию, а и >> из-за сложной и компромиссной семантики разрешения версионированных >> символов. Ясно, что неверсионированный символ может разрешаться в >> версионированный: sym -> sym@ABI, при условии, что символ sym@ABI >> дефолтный (так что когда в библиотеке впервые появляется >> версионирование, старые программы остаются работать без пересборки). >> Менее очевидно, что и версионированный символ можно разрешиться в >> неверсионированный: sym@ABI -> sym, при условии, что @ABI существует >> кое-где как самостоятельная единица, а символ sym неверсионированный >> (такой компромисс требуется в частности для того, чтобы работало >> переопределение функций через LD_PRELOAD). Получается, что если мы >> хотим требовать символ sym@ABI, то не понятно, что нам требовать: >> требование sym@ABI оказывается достаточным, но не необходимым. То есть >> мы суперимпозируем на ld.so какую-то более приятную нам логику >> разрешения символов, чем она есть на самом деле. > > Поднимаю вопрос: согласны ли мы использовать более строгую логику > разрешения символов, чем есть на самом деле? Не согласны. :) Критической массы выгоды мало, чтобы все переделывать и пересобирать, а выгода будет - только обнаружение ситуаций sym@ABI1 != sym@ABI2, каких только была одна за всю историю. Такие ситуации можно обнаруживать и на уровне bad_elf_symbols. >> Единственное разрешение, которое ld.so точно не допускает, это >> sym@ABI1 -> sym@ABI2. >> >> Если все же накладывать на set-версии более приятную нам логику >> разрешения символов, то можно было бы сделать следующее: >> >> 1) Требовать sym@ABI (требовать = хешировать как единый символ). >> 2) Предоставлять два символа: sym@ABI и sym (кроме недефолтных >> симолов, для которых предоставлять только sym@ABI).
next prev parent reply other threads:[~2018-04-20 21:45 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-10-23 11:49 [devel] " Vladimir D. Seleznev 2017-10-23 15:08 ` Mikhail Efremov 2017-10-23 16:28 ` Vladimir D. Seleznev 2017-10-23 16:31 ` [devel] Qt5 и поломанные приложения Vladimir D. Seleznev 2017-10-23 16:59 ` [devel] Qt5 и поломанные плагины Vitaly Lipatov 2017-10-23 17:07 ` Vladimir D. Seleznev 2017-10-24 9:08 ` Vladimir D. Seleznev 2017-10-27 5:54 ` Vladimir D. Seleznev 2017-10-24 0:51 ` [devel] универсальный механизм проверки плагинов Dmitry V. Levin 2017-10-24 6:07 ` Михаил Радюк 2017-10-27 5:46 ` Vladimir D. Seleznev 2017-12-29 13:38 ` [devel] versioned set-versions; was: Re: Qt5 и поломанные плагины Ivan Zakharyaschev 2017-12-30 3:51 ` Alexey Tourbin 2017-12-30 12:17 ` [devel] versioned set-versions Dmitry V. Levin 2018-04-16 18:21 ` [devel] versioned set-versions; was: Re: Qt5 и поломанные плагины Vladimir D. Seleznev 2018-04-20 21:45 ` Alexey Tourbin [this message] 2017-12-30 12:26 ` Vladimir D. Seleznev
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CA+qzenkH3faOjFQL2SbK4zXrJ=rQSnz2mgdTDLiTY0xHmWzpnA@mail.gmail.com' \ --to=alexey.tourbin@gmail.com \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git