Bug#223846: [mips/s390] FTBFS: linux/mod_devicetable.h errors - seems fixed

2004-02-15 Thread Riku Voipio
This bug seems gone, kdeadmin 3.1.5 has compiled fine on mips and
s/390:

http://buildd.debian.org/fetch.php?pkg=kdeadminver=4%3A3.1.5-1arch=mipsstamp=1074004757file=logas=raw

There is no s/390 buildd log, but the packages are on the mirrors, so
presumably  someone compiled them by hand. 

testing-wise, it seems only #231972 is left at the moment..

-- 
Riku Voipio|[EMAIL PROTECTED] |
kirkkonummentie 33 |+358 40 8476974  --+--
02140 Espoo|   |
dark A bad analogy is like leaky screwdriver  |


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#231972: lkh: /usr/include/linux/ptrace.h buggy

2004-02-15 Thread Petter Reinholdtsen

I had a look at this on raptor.debian.org (dchroot unstable).  The
triggering code seem to be in in /usr/include/asm/types.h:

  #ifndef __s390x__
  #if defined(__GNUC__)  !defined(__STRICT_ANSI__)
  typedef __signed__ long long __s64;
  typedef unsigned long long __u64;
  #endif
  #else /* __s390x__ */
  typedef __signed__ long __s64;
  typedef unsigned long __u64;
  #endif

It fail to provide the type __u64 when the --ansi compile option is
used.  Here is an example demonstrating the problem:

  % uname -a
  Linux raptor 2.4.21-debian02-1 #1 SMP Wed Jan 28 20:45:17 CET 2004
s390 GNU/Linux
  % cat  sys-user-test.c
  #include sys/user.h
  int main() { return 0; }
  % gcc sys-user-test.c
  % gcc -ansi sys-user-test.c
  In file included from /usr/include/linux/ptrace.h:49,
   from /usr/include/asm/user.h:13,
   from /usr/include/sys/user.h:22,
   from sys-user-test.c:1:
  /usr/include/asm/ptrace.h:193: error: syntax error before __u64
  /usr/include/asm/ptrace.h:199: error: syntax error before '}' token
  /usr/include/asm/ptrace.h:204: error: syntax error before freg_t
  /usr/include/asm/ptrace.h:448: error: syntax error before s390_fp_regs
  /usr/include/asm/ptrace.h:457: error: syntax error before '}' token
  In file included from /usr/include/sys/user.h:22,
   from sys-user-test.c:1:
  /usr/include/asm/user.h:55: error: field `regs' has incomplete type
  %

I'm not sure how to best solve the problem.  Changing the includes in
sys/user.h might be the best solution, but I am not sure if that is
safe to do.  Building kdebase without -ansi is an option too, but not
a good one. :/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#231972: lkh: /usr/include/linux/ptrace.h buggy

2004-02-15 Thread Petter Reinholdtsen

Here is more info on the problem.

The issue is that 'struct user' in sys/user.h on s390 need 'struct
user_regs_struct' from asm/ptrace.h, and this need type
's390_fp_regs' which need type 'freq_t' which need type '__u64' which
is unavailable when compiling with -ansi.  The reason the '__u64' type
is mising is that ANSI C do not define 'long long'. (Hm, is this fixed
in later versjons of ANSI C?).  So the result is that sys/user.h is
impossible to include in a program compiled with '-ansi' on
linux/s390.

The reason this work on other archs seem to be that 'struct user' do
not depend on a 64-bit integer type on these archs.

I assume that all glibc headers should be compilable when using 'gcc
-ansi'.

It seem hard to avoid the dependency on the 64-bit value for
sys/user.h on s390.  Could it be an idea to make sure there is a
64-bit type available using a packed struct?

  #if !defined(__s390x__)  !(defined(__GNUC__)  !defined(__STRICT_ANSI__))
  typedef struct {
long first_part;
long last_part;
  } __u64;
  #endif

This will of course break on all code _using_ variables with this
type, but might hide the problem in programs which only need a
includable sys/user.h to access the members available on all archs.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#232891: glibc: Include Danish debconf translation

2004-02-15 Thread Claus Hindsgaul
Package: glibc
Severity: wishlist
Tags: patch l10n


Please include the attached Danish debconf translation.
# translation of da.po to Danish
# translation of glibc Debian debconf template to Danish
# Claus Hindsgaul [EMAIL PROTECTED], 2004.
#
msgid 
msgstr 
Project-Id-Version: da\n
Report-Msgid-Bugs-To: \n
POT-Creation-Date: 2003-11-01 23:07-0500\n
PO-Revision-Date: 2004-02-15 17:39+0100\n
Last-Translator: Claus Hindsgaul [EMAIL PROTECTED]\n
Language-Team: Danish [EMAIL PROTECTED]\n
MIME-Version: 1.0\n
Content-Type: text/plain; charset=UTF-8\n
Content-Transfer-Encoding: 8bit\n
X-Generator: KBabel 1.0.2\n

#. Type: multiselect
#. Description
#: ../debhelper.in/locales.templates:4
msgid Select locales to be generated.
msgstr Vlg sprogunderstttelser at generere.

#. Type: multiselect
#. Description
#: ../debhelper.in/locales.templates:4
msgid 
Locale is a framework to switch between multiple languages for users who can 
select to use their language, country, characters, collation order, etc.
msgstr 
Sprogunderstttelsen giver brugere mulighed for at skifte mellem forskellige 
sprog, landeindstillinger, tegnst, sorteringsrkkeflger o.s.v.

#. Type: multiselect
#. Description
#: ../debhelper.in/locales.templates:4
msgid 
Choose which locales to generate.  The selection will be saved to `/etc/
locale.gen', which you can also edit manually (you need to run `locale-gen' 
afterwards).
msgstr 
Vlg hvilke sprog, der skal genereres understttelse for. Valget vil blive 
gemt i '/etc/locale.gen', som du ogs selv kan rette i (du skal kre 
'locale-gen' bagefter).

#. Type: select
#. Choices
#: ../debhelper.in/locales.templates:14
msgid None, ${locales}
msgstr Ingen, ${locales}

#. Type: select
#. Description
#: ../debhelper.in/locales.templates:16
msgid Which locale should be the default in the system environment?
msgstr Hvilket sprogvalg skal bruges som standard?

#. Type: select
#. Description
#: ../debhelper.in/locales.templates:16
msgid 
Many packages in Debian use locales to display text in the correct language 
for users. You can change the default locale if you're not a native English 
speaker. These choices are based on which locales you have chosen to 
generate.
msgstr 
Mange pakker i Debian benytter sprogvalget til at vise tekst i brugerens
eget sprog. Du kan vlge standardsproget, hvis du ikke har engelsk som 
modersml. Udvalget af sprog i denne liste er baseret p dem, du har 
valgt at generere.

#. Type: select
#. Description
#: ../debhelper.in/locales.templates:16
msgid 
Note: This will select the language for your whole system. If you're running 
a multi-user system where not all of your users speak the language of your 
choice, then they will run into difficulties and you might want not to set a 
default locale.
msgstr 
Bemrk: Dette vil vlge sproget i hele dit system. Hvis det er et 
flerbrugersystem, hvor ikke alle dine brugere taler dit sprog, kan de 
lbe ind i problemer. I s tilflde br du nok ikke angive et 
standardsprogvalg.



Bug#231972: lkh: /usr/include/linux/ptrace.h buggy

2004-02-15 Thread Christoph Hellwig
On Sun, Feb 15, 2004 at 01:48:10PM +0100, Petter Reinholdtsen wrote:
 I assume that all glibc headers should be compilable when using 'gcc
 -ansi'.

sys/user.h is not part of ANSI C/C++ so this is a broken assumption.

Really guys, there's seldomly a reason to use -ansi as you're most
probably _not_ trying to write code using a plain ANSI enviroment but
rather Posix, SUSv3 or some large enough subset of common unix variants.



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#232920: ld.so: unversioned symbols allowed to satisfy unresolved references to versioned symbols

2004-02-15 Thread Steve Langasek
Package: libc6
Version: 2.3.2.ds1-11

It appears that, given:

library libbar, providing version BAR1 of symbol bar_sym1;
library libquux, linked against libbar and using (version BAR1 of) bar_sym1;
and program foo, linked with -rdynamic, providing unversioned symbol
  bar_sym1, and dlopen()ing libquux,

the versioned reference to bar_sym1 from libquux will be resolved using
the unversioned symbol in foo, instead of the versioned symbol in
libbar.

This problem also manifests if the unversioned bar_sym1 symbol is
provided by a library that was dlopen()ed prior to dlopen()ing libquux;
if foo is linked against libquux rather than dlopen()ing it; and,
presumably, if foo is linked against both a lib (libbar0) providing the
unversioned symbol and against libquux, but libbar0 is opened first.

I had somehow reached the conclusion that this was documented and
deliberate behavior, but Andrew Suffield [EMAIL PROTECTED]
indicates otherwise and asked that I file a bug.  The attached tarball
contains a small test case that can be used to reproduce the problem,
showing that unversioned symbols are allowed to satisfy unresolved
references to versioned symbols.

-- 
Steve Langasek
postmodern programmer


dlopentest.tgz
Description: GNU Unix tar archive


signature.asc
Description: Digital signature


Bug#232920: ld.so: unversioned symbols allowed to satisfy unresolved references to versioned symbols

2004-02-15 Thread Daniel Jacobowitz
On Sun, Feb 15, 2004 at 01:55:46PM -0600, Steve Langasek wrote:
 Package: libc6
 Version: 2.3.2.ds1-11
 
 It appears that, given:
 
 library libbar, providing version BAR1 of symbol bar_sym1;
 library libquux, linked against libbar and using (version BAR1 of) bar_sym1;
 and program foo, linked with -rdynamic, providing unversioned symbol
   bar_sym1, and dlopen()ing libquux,
 
 the versioned reference to bar_sym1 from libquux will be resolved using
 the unversioned symbol in foo, instead of the versioned symbol in
 libbar.
 
 This problem also manifests if the unversioned bar_sym1 symbol is
 provided by a library that was dlopen()ed prior to dlopen()ing libquux;
 if foo is linked against libquux rather than dlopen()ing it; and,
 presumably, if foo is linked against both a lib (libbar0) providing the
 unversioned symbol and against libquux, but libbar0 is opened first.
 
 I had somehow reached the conclusion that this was documented and
 deliberate behavior, but Andrew Suffield [EMAIL PROTECTED]
 indicates otherwise and asked that I file a bug.  The attached tarball
 contains a small test case that can be used to reproduce the problem,
 showing that unversioned symbols are allowed to satisfy unresolved
 references to versioned symbols.

I am fairly positive that Andrew is wrong.  This behavior is, for
instance, one which allows LD_PRELOAD libraries to continue to work.
However, there is a definite shortage of conclusive documentation.  The
ELF gABI does not specify.  The Solaris documentation is distinctly
vague on this point.

Glibc says only:
  /* We can match the version information or use the
 default one if it is not hidden.  */


-- 
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#232920: ld.so: unversioned symbols allowed to satisfy unresolved references to versioned symbols

2004-02-15 Thread Andrew Suffield
On Sun, Feb 15, 2004 at 03:27:40PM -0500, Daniel Jacobowitz wrote:
 On Sun, Feb 15, 2004 at 01:55:46PM -0600, Steve Langasek wrote:
  Package: libc6
  Version: 2.3.2.ds1-11
  
  It appears that, given:
  
  library libbar, providing version BAR1 of symbol bar_sym1;
  library libquux, linked against libbar and using (version BAR1 of) bar_sym1;
  and program foo, linked with -rdynamic, providing unversioned symbol
bar_sym1, and dlopen()ing libquux,
  
  the versioned reference to bar_sym1 from libquux will be resolved using
  the unversioned symbol in foo, instead of the versioned symbol in
  libbar.
  
  This problem also manifests if the unversioned bar_sym1 symbol is
  provided by a library that was dlopen()ed prior to dlopen()ing libquux;
  if foo is linked against libquux rather than dlopen()ing it; and,
  presumably, if foo is linked against both a lib (libbar0) providing the
  unversioned symbol and against libquux, but libbar0 is opened first.
  
  I had somehow reached the conclusion that this was documented and
  deliberate behavior, but Andrew Suffield [EMAIL PROTECTED]
  indicates otherwise and asked that I file a bug.  The attached tarball
  contains a small test case that can be used to reproduce the problem,
  showing that unversioned symbols are allowed to satisfy unresolved
  references to versioned symbols.
 
 I am fairly positive that Andrew is wrong.  This behavior is, for
 instance, one which allows LD_PRELOAD libraries to continue to work.
 However, there is a definite shortage of conclusive documentation.  The
 ELF gABI does not specify.  The Solaris documentation is distinctly
 vague on this point.
 
 Glibc says only:
   /* We can match the version information or use the
  default one if it is not hidden.  */

Hmm, how about only doing this for things picked up via LD_PRELOAD?
It's really *nasty* for regular libraries.

-- 
  .''`.  ** Debian GNU/Linux ** | Andrew Suffield
 : :' :  http://www.debian.org/ |
 `. `'  |
   `- --  |


signature.asc
Description: Digital signature


Bug#229461: libc6 - fails to install - uses awk in preinst

2004-02-15 Thread Anthony Towns
 On Sat, Jan 24, 2004 at 09:31:37PM -0500, Jeff Bailey wrote:
  Can you give me the steps to reproduce?
 Unpack libc6 before mawk is configured. mawk depends against libc6.

mawk is essential, you cannot unpack libc6 until mawk is working effectively.
That's what bootstrapping is all about.

Once you've got mawk working, you cannot unpack a new version of mawk
(or gawk) until the new version of libc6 is working -- the pre-dependency
from both packages on libc6 will stop you from doing that.

This appears to be a bug in cdebootstrap, not in libc6. You cannot rely
on dpkg while Essential packages are not configured.

Cheers,
aj

-- 
Anthony Towns [EMAIL PROTECTED] http://azure.humbug.org.au/~aj/
I don't speak for anyone save myself. GPG signed mail preferred.

 Linux.conf.au 2004 -- Because we could.
   http://conf.linux.org.au/ -- Jan 12-17, 2004


signature.asc
Description: Digital signature


Bug#223846: [mips/s390] FTBFS: linux/mod_devicetable.h errors - seems fixed

2004-02-15 Thread Riku Voipio
This bug seems gone, kdeadmin 3.1.5 has compiled fine on mips and
s/390:

http://buildd.debian.org/fetch.php?pkg=kdeadminver=4%3A3.1.5-1arch=mipsstamp=1074004757file=logas=raw

There is no s/390 buildd log, but the packages are on the mirrors, so
presumably  someone compiled them by hand. 

testing-wise, it seems only #231972 is left at the moment..

-- 
Riku Voipio|[EMAIL PROTECTED] |
kirkkonummentie 33 |+358 40 8476974  --+--
02140 Espoo|   |
dark A bad analogy is like leaky screwdriver  |




Bug#231972: lkh: /usr/include/linux/ptrace.h buggy

2004-02-15 Thread Petter Reinholdtsen

I had a look at this on raptor.debian.org (dchroot unstable).  The
triggering code seem to be in in /usr/include/asm/types.h:

  #ifndef __s390x__
  #if defined(__GNUC__)  !defined(__STRICT_ANSI__)
  typedef __signed__ long long __s64;
  typedef unsigned long long __u64;
  #endif
  #else /* __s390x__ */
  typedef __signed__ long __s64;
  typedef unsigned long __u64;
  #endif

It fail to provide the type __u64 when the --ansi compile option is
used.  Here is an example demonstrating the problem:

  % uname -a
  Linux raptor 2.4.21-debian02-1 #1 SMP Wed Jan 28 20:45:17 CET 2004
s390 GNU/Linux
  % cat  sys-user-test.c
  #include sys/user.h
  int main() { return 0; }
  % gcc sys-user-test.c
  % gcc -ansi sys-user-test.c
  In file included from /usr/include/linux/ptrace.h:49,
   from /usr/include/asm/user.h:13,
   from /usr/include/sys/user.h:22,
   from sys-user-test.c:1:
  /usr/include/asm/ptrace.h:193: error: syntax error before __u64
  /usr/include/asm/ptrace.h:199: error: syntax error before '}' token
  /usr/include/asm/ptrace.h:204: error: syntax error before freg_t
  /usr/include/asm/ptrace.h:448: error: syntax error before s390_fp_regs
  /usr/include/asm/ptrace.h:457: error: syntax error before '}' token
  In file included from /usr/include/sys/user.h:22,
   from sys-user-test.c:1:
  /usr/include/asm/user.h:55: error: field `regs' has incomplete type
  %

I'm not sure how to best solve the problem.  Changing the includes in
sys/user.h might be the best solution, but I am not sure if that is
safe to do.  Building kdebase without -ansi is an option too, but not
a good one. :/




Bug#231972: lkh: /usr/include/linux/ptrace.h buggy

2004-02-15 Thread Petter Reinholdtsen

Here is more info on the problem.

The issue is that 'struct user' in sys/user.h on s390 need 'struct
user_regs_struct' from asm/ptrace.h, and this need type
's390_fp_regs' which need type 'freq_t' which need type '__u64' which
is unavailable when compiling with -ansi.  The reason the '__u64' type
is mising is that ANSI C do not define 'long long'. (Hm, is this fixed
in later versjons of ANSI C?).  So the result is that sys/user.h is
impossible to include in a program compiled with '-ansi' on
linux/s390.

The reason this work on other archs seem to be that 'struct user' do
not depend on a 64-bit integer type on these archs.

I assume that all glibc headers should be compilable when using 'gcc
-ansi'.

It seem hard to avoid the dependency on the 64-bit value for
sys/user.h on s390.  Could it be an idea to make sure there is a
64-bit type available using a packed struct?

  #if !defined(__s390x__)  !(defined(__GNUC__)  !defined(__STRICT_ANSI__))
  typedef struct {
long first_part;
long last_part;
  } __u64;
  #endif

This will of course break on all code _using_ variables with this
type, but might hide the problem in programs which only need a
includable sys/user.h to access the members available on all archs.




Bug#231972: lkh: /usr/include/linux/ptrace.h buggy

2004-02-15 Thread Riku Voipio
Noticed that ksysguardd includes sys/user.h only to
get PAGE_SIZE.

other apps seem to use asm/page.h for that? Is using that
ansi safe on all platforms?

-- 
Riku Voipio|[EMAIL PROTECTED] |
kirkkonummentie 33 |+358 40 8476974  --+--
02140 Espoo|   |
dark A bad analogy is like leaky screwdriver  |




Bug#231972: lkh: /usr/include/linux/ptrace.h buggy

2004-02-15 Thread Christoph Hellwig
On Sun, Feb 15, 2004 at 05:02:10PM +0200, Riku Voipio wrote:
 Noticed that ksysguardd includes sys/user.h only to
 get PAGE_SIZE.
 
 other apps seem to use asm/page.h for that? Is using that
 ansi safe on all platforms?

Both are wrong.  Use sysconf(_SC_PAGESIZE) instead.





Bug#232891: glibc: Include Danish debconf translation

2004-02-15 Thread Claus Hindsgaul
Package: glibc
Severity: wishlist
Tags: patch l10n


Please include the attached Danish debconf translation.
# translation of da.po to Danish
# translation of glibc Debian debconf template to Danish
# Claus Hindsgaul [EMAIL PROTECTED], 2004.
#
msgid 
msgstr 
Project-Id-Version: da\n
Report-Msgid-Bugs-To: \n
POT-Creation-Date: 2003-11-01 23:07-0500\n
PO-Revision-Date: 2004-02-15 17:39+0100\n
Last-Translator: Claus Hindsgaul [EMAIL PROTECTED]\n
Language-Team: Danish [EMAIL PROTECTED]\n
MIME-Version: 1.0\n
Content-Type: text/plain; charset=UTF-8\n
Content-Transfer-Encoding: 8bit\n
X-Generator: KBabel 1.0.2\n

#. Type: multiselect
#. Description
#: ../debhelper.in/locales.templates:4
msgid Select locales to be generated.
msgstr Vlg sprogunderstttelser at generere.

#. Type: multiselect
#. Description
#: ../debhelper.in/locales.templates:4
msgid 
Locale is a framework to switch between multiple languages for users who can 
select to use their language, country, characters, collation order, etc.
msgstr 
Sprogunderstttelsen giver brugere mulighed for at skifte mellem forskellige 
sprog, landeindstillinger, tegnst, sorteringsrkkeflger o.s.v.

#. Type: multiselect
#. Description
#: ../debhelper.in/locales.templates:4
msgid 
Choose which locales to generate.  The selection will be saved to `/etc/
locale.gen', which you can also edit manually (you need to run `locale-gen' 
afterwards).
msgstr 
Vlg hvilke sprog, der skal genereres understttelse for. Valget vil blive 
gemt i '/etc/locale.gen', som du ogs selv kan rette i (du skal kre 
'locale-gen' bagefter).

#. Type: select
#. Choices
#: ../debhelper.in/locales.templates:14
msgid None, ${locales}
msgstr Ingen, ${locales}

#. Type: select
#. Description
#: ../debhelper.in/locales.templates:16
msgid Which locale should be the default in the system environment?
msgstr Hvilket sprogvalg skal bruges som standard?

#. Type: select
#. Description
#: ../debhelper.in/locales.templates:16
msgid 
Many packages in Debian use locales to display text in the correct language 
for users. You can change the default locale if you're not a native English 
speaker. These choices are based on which locales you have chosen to 
generate.
msgstr 
Mange pakker i Debian benytter sprogvalget til at vise tekst i brugerens
eget sprog. Du kan vlge standardsproget, hvis du ikke har engelsk som 
modersml. Udvalget af sprog i denne liste er baseret p dem, du har 
valgt at generere.

#. Type: select
#. Description
#: ../debhelper.in/locales.templates:16
msgid 
Note: This will select the language for your whole system. If you're running 
a multi-user system where not all of your users speak the language of your 
choice, then they will run into difficulties and you might want not to set a 
default locale.
msgstr 
Bemrk: Dette vil vlge sproget i hele dit system. Hvis det er et 
flerbrugersystem, hvor ikke alle dine brugere taler dit sprog, kan de 
lbe ind i problemer. I s tilflde br du nok ikke angive et 
standardsprogvalg.



Bug#231972: lkh: /usr/include/linux/ptrace.h buggy

2004-02-15 Thread Christoph Hellwig
On Sun, Feb 15, 2004 at 01:48:10PM +0100, Petter Reinholdtsen wrote:
 I assume that all glibc headers should be compilable when using 'gcc
 -ansi'.

sys/user.h is not part of ANSI C/C++ so this is a broken assumption.

Really guys, there's seldomly a reason to use -ansi as you're most
probably _not_ trying to write code using a plain ANSI enviroment but
rather Posix, SUSv3 or some large enough subset of common unix variants.





Bug#232920: ld.so: unversioned symbols allowed to satisfy unresolved references to versioned symbols

2004-02-15 Thread Steve Langasek
Package: libc6
Version: 2.3.2.ds1-11

It appears that, given:

library libbar, providing version BAR1 of symbol bar_sym1;
library libquux, linked against libbar and using (version BAR1 of) bar_sym1;
and program foo, linked with -rdynamic, providing unversioned symbol
  bar_sym1, and dlopen()ing libquux,

the versioned reference to bar_sym1 from libquux will be resolved using
the unversioned symbol in foo, instead of the versioned symbol in
libbar.

This problem also manifests if the unversioned bar_sym1 symbol is
provided by a library that was dlopen()ed prior to dlopen()ing libquux;
if foo is linked against libquux rather than dlopen()ing it; and,
presumably, if foo is linked against both a lib (libbar0) providing the
unversioned symbol and against libquux, but libbar0 is opened first.

I had somehow reached the conclusion that this was documented and
deliberate behavior, but Andrew Suffield [EMAIL PROTECTED]
indicates otherwise and asked that I file a bug.  The attached tarball
contains a small test case that can be used to reproduce the problem,
showing that unversioned symbols are allowed to satisfy unresolved
references to versioned symbols.

-- 
Steve Langasek
postmodern programmer


dlopentest.tgz
Description: GNU Unix tar archive


signature.asc
Description: Digital signature


Bug#232920: ld.so: unversioned symbols allowed to satisfy unresolved references to versioned symbols

2004-02-15 Thread Daniel Jacobowitz
On Sun, Feb 15, 2004 at 01:55:46PM -0600, Steve Langasek wrote:
 Package: libc6
 Version: 2.3.2.ds1-11
 
 It appears that, given:
 
 library libbar, providing version BAR1 of symbol bar_sym1;
 library libquux, linked against libbar and using (version BAR1 of) bar_sym1;
 and program foo, linked with -rdynamic, providing unversioned symbol
   bar_sym1, and dlopen()ing libquux,
 
 the versioned reference to bar_sym1 from libquux will be resolved using
 the unversioned symbol in foo, instead of the versioned symbol in
 libbar.
 
 This problem also manifests if the unversioned bar_sym1 symbol is
 provided by a library that was dlopen()ed prior to dlopen()ing libquux;
 if foo is linked against libquux rather than dlopen()ing it; and,
 presumably, if foo is linked against both a lib (libbar0) providing the
 unversioned symbol and against libquux, but libbar0 is opened first.
 
 I had somehow reached the conclusion that this was documented and
 deliberate behavior, but Andrew Suffield [EMAIL PROTECTED]
 indicates otherwise and asked that I file a bug.  The attached tarball
 contains a small test case that can be used to reproduce the problem,
 showing that unversioned symbols are allowed to satisfy unresolved
 references to versioned symbols.

I am fairly positive that Andrew is wrong.  This behavior is, for
instance, one which allows LD_PRELOAD libraries to continue to work.
However, there is a definite shortage of conclusive documentation.  The
ELF gABI does not specify.  The Solaris documentation is distinctly
vague on this point.

Glibc says only:
  /* We can match the version information or use the
 default one if it is not hidden.  */


-- 
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer




Bug#232920: ld.so: unversioned symbols allowed to satisfy unresolved references to versioned symbols

2004-02-15 Thread Daniel Jacobowitz
On Sun, Feb 15, 2004 at 09:15:05PM +, Andrew Suffield wrote:
 Hmm, how about only doing this for things picked up via LD_PRELOAD?
 It's really *nasty* for regular libraries.

All I know is that I'm not touching lookup behavior with a thousand
yard stick for Debian specifically.

If you don't like the current behavior I recommend discussing it on
libc-alpha.

-- 
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer




Bug#232920: ld.so: unversioned symbols allowed to satisfy unresolved references to versioned symbols

2004-02-15 Thread Andrew Suffield
On Sun, Feb 15, 2004 at 03:27:40PM -0500, Daniel Jacobowitz wrote:
 On Sun, Feb 15, 2004 at 01:55:46PM -0600, Steve Langasek wrote:
  Package: libc6
  Version: 2.3.2.ds1-11
  
  It appears that, given:
  
  library libbar, providing version BAR1 of symbol bar_sym1;
  library libquux, linked against libbar and using (version BAR1 of) bar_sym1;
  and program foo, linked with -rdynamic, providing unversioned symbol
bar_sym1, and dlopen()ing libquux,
  
  the versioned reference to bar_sym1 from libquux will be resolved using
  the unversioned symbol in foo, instead of the versioned symbol in
  libbar.
  
  This problem also manifests if the unversioned bar_sym1 symbol is
  provided by a library that was dlopen()ed prior to dlopen()ing libquux;
  if foo is linked against libquux rather than dlopen()ing it; and,
  presumably, if foo is linked against both a lib (libbar0) providing the
  unversioned symbol and against libquux, but libbar0 is opened first.
  
  I had somehow reached the conclusion that this was documented and
  deliberate behavior, but Andrew Suffield [EMAIL PROTECTED]
  indicates otherwise and asked that I file a bug.  The attached tarball
  contains a small test case that can be used to reproduce the problem,
  showing that unversioned symbols are allowed to satisfy unresolved
  references to versioned symbols.
 
 I am fairly positive that Andrew is wrong.  This behavior is, for
 instance, one which allows LD_PRELOAD libraries to continue to work.
 However, there is a definite shortage of conclusive documentation.  The
 ELF gABI does not specify.  The Solaris documentation is distinctly
 vague on this point.
 
 Glibc says only:
   /* We can match the version information or use the
  default one if it is not hidden.  */

Hmm, how about only doing this for things picked up via LD_PRELOAD?
It's really *nasty* for regular libraries.

-- 
  .''`.  ** Debian GNU/Linux ** | Andrew Suffield
 : :' :  http://www.debian.org/ |
 `. `'  |
   `- --  |


signature.asc
Description: Digital signature