ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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