* [devel] I: how does dlsym work @ 2005-02-14 12:43 Dmitry V. Levin 2005-03-18 21:31 ` [devel] " Alexey Tourbin 0 siblings, 1 reply; 8+ messages in thread From: Dmitry V. Levin @ 2005-02-14 12:43 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 209 bytes --] Hi, Познавательное чтение для тех, кто пишет разные обёртки: http://sources.redhat.com/ml/libc-alpha/2005-02/msg00054.html и далее по треду. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [devel] Re: I: how does dlsym work 2005-02-14 12:43 [devel] I: how does dlsym work Dmitry V. Levin @ 2005-03-18 21:31 ` Alexey Tourbin 2005-03-19 21:26 ` Dmitry V. Levin 0 siblings, 1 reply; 8+ messages in thread From: Alexey Tourbin @ 2005-03-18 21:31 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 2076 bytes --] On Mon, Feb 14, 2005 at 03:43:35PM +0300, Dmitry V. Levin wrote: > Познавательное чтение для тех, кто пишет разные обёртки: > http://sources.redhat.com/ml/libc-alpha/2005-02/msg00054.html > и далее по треду. Есть такая беда. :r ~/RPM/SOURCES/perl-5.8.6-alt-rh-threads-lpthread.patch https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=101767 At least following libraries: /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/threads/threads.so /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/threads/shared/shared.so were not linked against -lpthread, even though they are using pthread_* functions provided only by libpthread. This results in the symbols being non-versioned, and thus pthread_create@GLIBC_2.0 being called instead of the expected pthread_create@@GLIBC_2.1 --- perl-5.8.6/ext/threads/Makefile.PL~ 2003-04-03 06:08:54 +0000 +++ perl-5.8.6/ext/threads/Makefile.PL 2004-12-11 02:03:13 +0000 @@ -10,7 +10,7 @@ WriteMakefile( (ABSTRACT_FROM => 'threads.pm', # retrieve abstract from module AUTHOR => 'Artur Bergman <artur@contiller.se>') : ()), 'MAN3PODS' => {}, # Pods will be built by installman - 'LIBS' => [''], # e.g., '-lm' + 'LIBS' => [ '-lpthread' ], # e.g., '-lm' 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING' # Insert -I. if you add *.h files later: # 'INC' => '', # e.g., '-I/usr/include/other' --- perl-5.8.6/ext/threads/shared/Makefile.PL~ 2002-07-12 22:17:07 +0000 +++ perl-5.8.6/ext/threads/shared/Makefile.PL 2004-12-11 02:03:08 +0000 @@ -13,7 +13,7 @@ WriteMakefile( (ABSTRACT_FROM => 'shared.pm', # retrieve abstract from module AUTHOR => 'Arthur Bergman <arthur@contiller.se>') : ()), 'MAN3PODS' => {}, # Pods will be built by installman - 'LIBS' => [''], # e.g., '-lm' + 'LIBS' => [ '-lpthread' ], # e.g., '-lm' 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING' # Insert -I. if you add *.h files later: 'INC' => '', # e.g., '-I/usr/include/other' > -- > ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] Re: I: how does dlsym work 2005-03-18 21:31 ` [devel] " Alexey Tourbin @ 2005-03-19 21:26 ` Dmitry V. Levin 2005-03-20 11:56 ` Alexey Morozov 2005-03-24 22:48 ` Dmitry V. Levin 0 siblings, 2 replies; 8+ messages in thread From: Dmitry V. Levin @ 2005-03-19 21:26 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1253 bytes --] On Sat, Mar 19, 2005 at 12:31:42AM +0300, Alexey Tourbin wrote: > On Mon, Feb 14, 2005 at 03:43:35PM +0300, Dmitry V. Levin wrote: > > Познавательное чтение для тех, кто пишет разные обёртки: > > http://sources.redhat.com/ml/libc-alpha/2005-02/msg00054.html > > и далее по треду. > > Есть такая беда. > > :r ~/RPM/SOURCES/perl-5.8.6-alt-rh-threads-lpthread.patch > https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=101767 > > At least following libraries: > /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/threads/threads.so > /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/threads/shared/shared.so > were not linked against -lpthread, even though they are using pthread_* > functions provided only by libpthread. > This results in the symbols being non-versioned, and thus > pthread_create@GLIBC_2.0 being called instead of the expected > pthread_create@@GLIBC_2.1 Другими словами, если приложение использует напрямую библиотеку FOO, то необходимо линковать это приложение с FOO вне зависимости от того, слинкованы ли с FOO другие используемые этим приложением библиотеки. Очень важный вывод, между прочим. Как бы это обеспечить теперь автоматически? -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] Re: I: how does dlsym work 2005-03-19 21:26 ` Dmitry V. Levin @ 2005-03-20 11:56 ` Alexey Morozov 2005-03-20 12:26 ` Dmitry V. Levin 2005-03-24 22:48 ` Dmitry V. Levin 1 sibling, 1 reply; 8+ messages in thread From: Alexey Morozov @ 2005-03-20 11:56 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 708 bytes --] On Sun, Mar 20, 2005 at 12:26:29AM +0300, Dmitry V. Levin wrote: > Другими словами, если приложение использует напрямую библиотеку FOO, то > необходимо линковать это приложение с FOO вне зависимости от того, > слинкованы ли с FOO другие используемые этим приложением библиотеки. Ух. Это про _любые_ библиотеки? Или только около-либсишные? > > Очень важный вывод, между прочим. > Как бы это обеспечить теперь автоматически? Кажется, никак. Во всяком случае, в общем случае. В случае autoconf'овых приложений можно попытаться модифицировать стандартные проверки заголовочных файлов так, чтобы они автоматически цепляли такие вот "плохие" библиотеки. Но это все хаки, которые добром не кончатся. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] Re: I: how does dlsym work 2005-03-20 11:56 ` Alexey Morozov @ 2005-03-20 12:26 ` Dmitry V. Levin 0 siblings, 0 replies; 8+ messages in thread From: Dmitry V. Levin @ 2005-03-20 12:26 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 968 bytes --] On Sun, Mar 20, 2005 at 05:56:02PM +0600, Alexey Morozov wrote: > On Sun, Mar 20, 2005 at 12:26:29AM +0300, Dmitry V. Levin wrote: > > Другими словами, если приложение использует напрямую библиотеку FOO, то > > необходимо линковать это приложение с FOO вне зависимости от того, > > слинкованы ли с FOO другие используемые этим приложением библиотеки. > Ух. Это про _любые_ библиотеки? Или только около-либсишные? Про любые FOO, у которых есть versioning с несколькими версиями одного символа. Таких библиотек у нас немного. > > Очень важный вывод, между прочим. > > Как бы это обеспечить теперь автоматически? > Кажется, никак. Во всяком случае, в общем случае. В случае autoconf'овых > приложений можно попытаться модифицировать стандартные проверки > заголовочных файлов так, чтобы они автоматически цепляли такие вот > "плохие" библиотеки. Но это все хаки, которые добром не кончатся. На -lpthread такие хаки уже много где есть. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] Re: I: how does dlsym work 2005-03-19 21:26 ` Dmitry V. Levin 2005-03-20 11:56 ` Alexey Morozov @ 2005-03-24 22:48 ` Dmitry V. Levin 2005-03-25 15:41 ` Alexey Tourbin 1 sibling, 1 reply; 8+ messages in thread From: Dmitry V. Levin @ 2005-03-24 22:48 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1708 bytes --] On Sun, Mar 20, 2005 at 12:26:29AM +0300, Dmitry V. Levin wrote: > On Sat, Mar 19, 2005 at 12:31:42AM +0300, Alexey Tourbin wrote: > > On Mon, Feb 14, 2005 at 03:43:35PM +0300, Dmitry V. Levin wrote: > > > Познавательное чтение для тех, кто пишет разные обёртки: > > > http://sources.redhat.com/ml/libc-alpha/2005-02/msg00054.html > > > и далее по треду. > > > > Есть такая беда. > > > > :r ~/RPM/SOURCES/perl-5.8.6-alt-rh-threads-lpthread.patch > > https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=101767 > > > > At least following libraries: > > /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/threads/threads.so > > /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/threads/shared/shared.so > > were not linked against -lpthread, even though they are using pthread_* > > functions provided only by libpthread. > > This results in the symbols being non-versioned, and thus > > pthread_create@GLIBC_2.0 being called instead of the expected > > pthread_create@@GLIBC_2.1 > > Другими словами, если приложение использует напрямую библиотеку FOO, то > необходимо линковать это приложение с FOO вне зависимости от того, > слинкованы ли с FOO другие используемые этим приложением библиотеки. Пожалуй, я поспешил с этим выводом. Проблема может возникнуть не со всеми приложениями, а только с разделяемыми библиотеками, которые используют напрямую библиотеку FOO, но не линкуются с ней. Такие библиотеки легко распознаются с помощью "ldd -r". К сожалению, некотрые создают такие незамкнутые библиотеки сознательно (например, в KDE и в тех же перловых модулях), и как ловить ошибки в них, я пока что не знаю. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [devel] Re: I: how does dlsym work 2005-03-24 22:48 ` Dmitry V. Levin @ 2005-03-25 15:41 ` Alexey Tourbin 2005-03-29 17:29 ` Dmitry V. Levin 0 siblings, 1 reply; 8+ messages in thread From: Alexey Tourbin @ 2005-03-25 15:41 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 893 bytes --] On Fri, Mar 25, 2005 at 01:48:34AM +0300, Dmitry V. Levin wrote: > Пожалуй, я поспешил с этим выводом. Проблема может возникнуть не со всеми > приложениями, а только с разделяемыми библиотеками, которые используют > напрямую библиотеку FOO, но не линкуются с ней. Такие библиотеки легко > распознаются с помощью "ldd -r". К сожалению, некотрые создают такие > незамкнутые библиотеки сознательно (например, в KDE и в тех же перловых > модулях), и как ловить ошибки в них, я пока что не знаю. С перловыми модулями есть один интересный пример: пакеты perl-Gtk2 и perl-Glib. auto/Gtk2/Gtk2.so использует некоторые функции из auto/Glib/Glib.so (gperl_*). При этом подгрузка Glib.so происходит в перловом коде, а слинковаться с Glib.so не так-то просто, т.к. Glib.so не лежит в стандартном для библиотек месте. Кстати, библиотека может иметь собственный RPATH? > -- > ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] Re: I: how does dlsym work 2005-03-25 15:41 ` Alexey Tourbin @ 2005-03-29 17:29 ` Dmitry V. Levin 0 siblings, 0 replies; 8+ messages in thread From: Dmitry V. Levin @ 2005-03-29 17:29 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1012 bytes --] Hi, On Fri, Mar 25, 2005 at 06:41:19PM +0300, Alexey Tourbin wrote: > On Fri, Mar 25, 2005 at 01:48:34AM +0300, Dmitry V. Levin wrote: > > Пожалуй, я поспешил с этим выводом. Проблема может возникнуть не со всеми > > приложениями, а только с разделяемыми библиотеками, которые используют > > напрямую библиотеку FOO, но не линкуются с ней. Такие библиотеки легко > > распознаются с помощью "ldd -r". К сожалению, некотрые создают такие > > незамкнутые библиотеки сознательно (например, в KDE и в тех же перловых > > модулях), и как ловить ошибки в них, я пока что не знаю. > > С перловыми модулями есть один интересный пример: пакеты perl-Gtk2 и > perl-Glib. auto/Gtk2/Gtk2.so использует некоторые функции из > auto/Glib/Glib.so (gperl_*). При этом подгрузка Glib.so происходит > в перловом коде, а слинковаться с Glib.so не так-то просто, т.к. Glib.so > не лежит в стандартном для библиотек месте. > > Кстати, библиотека может иметь собственный RPATH? Все ELFы могут. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2005-03-29 17:29 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2005-02-14 12:43 [devel] I: how does dlsym work Dmitry V. Levin 2005-03-18 21:31 ` [devel] " Alexey Tourbin 2005-03-19 21:26 ` Dmitry V. Levin 2005-03-20 11:56 ` Alexey Morozov 2005-03-20 12:26 ` Dmitry V. Levin 2005-03-24 22:48 ` Dmitry V. Levin 2005-03-25 15:41 ` Alexey Tourbin 2005-03-29 17:29 ` Dmitry V. Levin
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