[devel] binutils

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Пн Июл 21 18:34:09 MSD 2003


On Mon, Jul 21, 2003 at 03:31:08PM +0400, Vitaly Lugovsky wrote:
> On Sun, 20 Jul 2003, Dmitry V. Levin wrote:
> 
> > То изменение, которое непосредственно затрагивает ocaml-shared,
> > судя по binutils-2.14.90.0.4/bfd/ChangeLog, было сделано в
> > здравом уме:
> 
>  Может быть. Но обоснований то не было... :(
> 
> >         (elf_link_output_extsym): Warn if a forced local symbol is
> >         referenced from dynamic objects. Make non-weak undefined symbol
> >         with non-default visibility a fatal error.
> 
>  Только это изменение и существенно. По некоторым, до сих пор мне
> не совсем понятным причинам, Malc-у потребовалось определять
> глобальные символы из OCaml runtime как .protected и .hidden в
> каждой динамически подгружаемой библиотеке (то есть примерно
> понятно - чтоб они реально ссылались на соответствующие
> определения в статическом бинарнике, обращающемся к той самой
> библиотеке). Зачем это запрещать - ни хрена не ясно.
> 
>  Попробую спросить автора изменений.
> 
>  Но вообще - мой patch только то и делает, что отменяет это
> дурное ужесточение policy...

Ok, аналогичный временный патч пойдёт в Сизиф (attached).

> > Так что лучше всего пообщаться с автором изменений.
> 
>  Попробую... Такой крутой народ, однако, обычно вообще не
> реагирует на сообщения...

Ничего страшного, hjl вполне вменяемый.


--
ldv
----------- следующая часть -----------
--- binutils-2.14.90.0.4/bfd/elflink.h.orig	2003-07-20 22:03:16 +0400
+++ binutils-2.14.90.0.4/bfd/elflink.h	2003-07-21 18:08:43 +0400
@@ -4483,20 +4483,22 @@ elf_link_output_extsym (h, data)
       (*_bfd_error_handler)
 	(_("%s: %s symbol `%s' in %s is referenced by DSO"),
 	 bfd_get_filename (finfo->output_bfd),
 	 ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
 	 ? "internal"
 	 : ELF_ST_VISIBILITY (h->other) == STV_HIDDEN
 	   ? "hidden" : "local",
 	 h->root.root.string,
 	 bfd_archive_filename (h->root.u.def.section->owner));
+#ifdef ENABLE_STRICT_SYMBOL_CHECKING
       eoinfo->failed = TRUE;
       return FALSE;
+#endif /* ENABLE_STRICT_SYMBOL_CHECKING */
     }
 
   /* We don't want to output symbols that have never been mentioned by
      a regular file, or that we have been told to strip.  However, if
      h->indx is set to -2, the symbol is used by a reloc and we must
      output it.  */
   if (h->indx == -2)
     strip = FALSE;
   else if (((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
@@ -4665,20 +4667,22 @@ elf_link_output_extsym (h, data)
     {
       (*_bfd_error_handler)
 	(_("%s: %s symbol `%s' isn't defined"),
 	  bfd_get_filename (finfo->output_bfd),
 	  ELF_ST_VISIBILITY (sym.st_other) == STV_PROTECTED
 	  ? "protected"
 	  : ELF_ST_VISIBILITY (sym.st_other) == STV_INTERNAL
 	    ? "internal" : "hidden",
 	  h->root.root.string);
+#ifdef ENABLE_STRICT_SYMBOL_CHECKING
       eoinfo->failed = TRUE;
       return FALSE;
+#endif /* ENABLE_STRICT_SYMBOL_CHECKING */
     }
 
   /* If this symbol should be put in the .dynsym section, then put it
      there now.  We already know the symbol index.  We also fill in
      the entry in the .hash section.  */
   if (h->dynindx != -1
       && elf_hash_table (finfo->info)->dynamic_sections_created)
     {
       size_t bucketcount;
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20030721/b5808d77/attachment-0001.bin>


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