Since the BTS is down a little lookahead of what is stuck:

--- Begin Message ---
Package: glibc
Followup-For: Bug #317946

Hi,

I reassigned this bug to glibc after testing an old patch for the TLS
problem for Kurt Roeckx. I had to fix a few other things along the
way:

    - debian/patches/amd64-TLS-problem.dpatch: try to fix TLS problem
    - debain/rules: undo dpkg-architecture output changes
    - debian/sysdeps/amd64.mk: use gcc-3.4
    - debian/control: 'Build-Depends: gcc-3.4 [amd64]' to be sure

After build I tried to compile

int main(){return 0;}

with 'gcc -O2 -W -Wall -static -o foo foo.c' both with the old and new
packages. The old ones report the TLS problem while the new ones work.

MfG
        Goswin

-- System Information:
Debian Release: 3.1
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.8-frosties-1
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

----------------------------------------------------------------------

diff -u glibc-2.3.2.ds1/debian/patches/00list 
glibc-2.3.2.ds1/debian/patches/00list
--- glibc-2.3.2.ds1/debian/patches/00list
+++ glibc-2.3.2.ds1/debian/patches/00list
@@ -127,0 +128 @@
+amd64-TLS-problem
diff -u glibc-2.3.2.ds1/debian/sysdeps/amd64.mk 
glibc-2.3.2.ds1/debian/sysdeps/amd64.mk
--- glibc-2.3.2.ds1/debian/sysdeps/amd64.mk
+++ glibc-2.3.2.ds1/debian/sysdeps/amd64.mk
@@ -1,5 +1,5 @@
-CC = gcc
-BUILD_CC = gcc
+CC = gcc-3.4
+BUILD_CC = gcc-3.4
 
 # build libc with nptl instead of linuxthreads
 libc_MIN_KERNEL_SUPPORTED = 2.6.0
diff -u glibc-2.3.2.ds1/debian/changelog glibc-2.3.2.ds1/debian/changelog
--- glibc-2.3.2.ds1/debian/changelog
+++ glibc-2.3.2.ds1/debian/changelog
@@ -1,3 +1,14 @@
+glibc (2.3.2.ds1-22.0.0.1.mrvn) unstable; urgency=low
+
+  * Goswin von Brederlow <[EMAIL PROTECTED]>
+
+    - debian/patches/amd64-TLS-problem.dpatch: try to fix TLS problem
+    - debain/rules: undo dpkg-architecture output changes
+    - debian/sysdeps/amd64.mk: use gcc-3.4
+    - debian/control: 'Build-Depends: gcc-3.4 [amd64]' to be sure
+
+ -- Goswin von Brederlow <[EMAIL PROTECTED]>  Sun, 17 Jul 2005 16:36:19 +0200
+
 glibc (2.3.2.ds1-22) unstable; urgency=medium
 
   * Daniel Jacobowitz <[EMAIL PROTECTED]>
diff -u glibc-2.3.2.ds1/debian/control glibc-2.3.2.ds1/debian/control
--- glibc-2.3.2.ds1/debian/control
+++ glibc-2.3.2.ds1/debian/control
@@ -1,7 +1,7 @@
 Source: glibc
 Section: libs
 Priority: required
-Build-Depends: gettext (>= 0.10.37-1), make (>= 3.80-1), dpkg-dev (>= 
1.4.1.5), debianutils (>= 1.13.1), tar (>= 1.13.11), bzip2, texinfo (>= 4.0), 
linux-kernel-headers (>= 2.5.999-test7-bk-9) [!hurd-i386], mig (>= 1.3-2) 
[hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], 
texi2html, file, gcc-3.3 [!ia64] | gcc-3.4 [!ia64], gcc-3.3 (>= 1:3.3.5-5) 
[ia64] | gcc-3.4 (>= 3.4.3-2) [ia64], autoconf, binutils (>= 2.14.90.0.7-5), 
sed (>= 4.0.5-4), gawk, debhelper (>= 4.1.76)
+Build-Depends: gettext (>= 0.10.37-1), make (>= 3.80-1), dpkg-dev (>= 
1.4.1.5), debianutils (>= 1.13.1), tar (>= 1.13.11), bzip2, texinfo (>= 4.0), 
linux-kernel-headers (>= 2.5.999-test7-bk-9) [!hurd-i386], mig (>= 1.3-2) 
[hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], 
texi2html, file, gcc-3.3 [!ia64] | gcc-3.4 [!ia64], gcc-3.3 (>= 1:3.3.5-5) 
[ia64] | gcc-3.4 (>= 3.4.3-2) [ia64], autoconf, binutils (>= 2.14.90.0.7-5), 
sed (>= 4.0.5-4), gawk, debhelper (>= 4.1.76), gcc-3.4 [amd64]
 Build-Depends-Indep: perl, po-debconf
 Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
 Uploaders: Ben Collins <[EMAIL PROTECTED]>, GOTO Masanori <[EMAIL PROTECTED]>, 
Philip Blundell <[EMAIL PROTECTED]>, Jeff Bailey <[EMAIL PROTECTED]>, Daniel 
Jacobowitz <[EMAIL PROTECTED]>
diff -u glibc-2.3.2.ds1/debian/rules glibc-2.3.2.ds1/debian/rules
--- glibc-2.3.2.ds1/debian/rules
+++ glibc-2.3.2.ds1/debian/rules
@@ -48,6 +48,12 @@
 DEB_BUILD_GNU_TYPE    ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
 DEB_BUILD_GNU_SYSTEM  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)
 
+# Strip newly added -gnu
+DEB_HOST_GNU_TYPE     := $(subst -gnu,,$(DEB_HOST_GNU_TYPE))
+DEB_HOST_GNU_SYSTEM   := $(subst -gnu,,$(DEB_HOST_GNU_SYSTEM))
+DEB_BUILD_GNU_TYPE    := $(subst -gnu,,$(DEB_BUILD_GNU_TYPE))
+DEB_BUILD_GNU_SYSTEM  := $(subst -gnu,,$(DEB_BUILD_GNU_SYSTEM))
+
 DEB_HOST_GNU_CPU_ALT  ?=
 DEB_HOST_GNU_TYPE_ALT ?=
 
only in patch2:
unchanged:
--- glibc-2.3.2.ds1.orig/debian/patches/amd64-TLS-problem.dpatch
+++ glibc-2.3.2.ds1/debian/patches/amd64-TLS-problem.dpatch
@@ -0,0 +1,91 @@
+#! /bin/sh -e
+ 
+# All lines beginning with `# DP:' are a description of the patch.
+# DP: Description: * elf/Makefile (rtld-routines): Add dl-errno.
+# DP:  ($(objpfx)librtld.map): Copy libc_pic.a to libc_pic.a, remove
+# DP:  errno.os from libc_pic.a and use libc_rtld.a instead of
+# DP:  libc_pic.a.
+# DP:  ($(objpfx)librtld.mk): Match libc_rtld.a instead of libc_pic.a.
+# DP: Dpatch author: Goswin von Brederlow <[EMAIL PROTECTED]>
+# DP: Patch author: H.J. Lu  <[EMAIL PROTECTED]>
+# DP: Upstream status: 
+# DP: Status Details: 
+# DP: Date: 2005-06-17
+
+if [ $# -ne 2 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
+    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+ 
+# append the patch here and adjust the -p? flag in the patch calls.
+--- glibc-2.3.2/elf/Makefile~  2005-07-17 14:11:18.695803164 +0000
++++ glibc-2.3.2/elf/Makefile   2005-07-17 14:15:11.317292281 +0000
+@@ -37,7 +37,8 @@
+ 
+ # ld.so uses those routines, plus some special stuff for being the program
+ # interpreter and operating independent of libc.
+-rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ dl-minimal
++rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ \
++                   dl-minimal dl-errno
+ all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines)
+ 
+ # We only need to re-run initializers if ld.so and libc.so might be built
+@@ -220,11 +221,17 @@
+ # those modules come from and builds special rtld-foo.os versions that
+ # are compiled with special flags, and puts these modules into rtld-libc.a
+ # for us.  Then we do the real link using rtld-libc.a instead of libc_pic.a.
++# `errno' is a special case. We don't want the one in libc_pic.a since
++# `errno' in libc_pic.a may be a TLS, but the dynamic linker doesn't
++# use TLS. The linker doesn't allow mixing TLS and non-TLS symbols.
+ 
+ $(objpfx)librtld.map: $(objpfx)dl-allobjs.os $(common-objpfx)libc_pic.a
+       @-rm -f [EMAIL PROTECTED]
+-      $(reloc-link) -o [EMAIL PROTECTED] '-Wl,-(' $^ -lgcc '-Wl,-)' 
-Wl,-Map,[EMAIL PROTECTED]
+-      rm -f [EMAIL PROTECTED]
++      @rm -f libc_rtld.a
++      cp $(common-objpfx)libc_pic.a $(common-objpfx)libc_rtld.a
++      $(AR) d$(verbose) $(common-objpfx)libc_rtld.a errno.os
++      $(reloc-link) -o [EMAIL PROTECTED] '-Wl,-(' $(objpfx)dl-allobjs.os 
$(common-objpfx)libc_rtld.a -lgcc '-Wl,-)' -Wl,-Map,[EMAIL PROTECTED]
++      rm -f [EMAIL PROTECTED] $(common-objpfx)libc_rtld.a
+       mv -f [EMAIL PROTECTED] $@
+ 
+ $(objpfx)librtld.mk: $(objpfx)librtld.map Makefile
+@@ -233,7 +240,7 @@
+           $< | \
+       while read lib file; do \
+         case $$lib in \
+-        libc_pic.a) \
++        libc_rtld.a) \
+           LC_ALL=C fgrep -l /$$file \
+                 $(common-objpfx)stamp.os $(common-objpfx)*/stamp.os | \
+           LC_ALL=C \
+--- glibc-2.3.2/elf/dl-errno.c.tls             2004-10-01 14:57:23.000000000 
-0700
++++ glibc-2.3.2/elf/dl-errno.c         2004-10-01 15:34:30.000000000 -0700
+@@ -0,0 +1,19 @@
++/* Copyright (C) 2004 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++#include <errno.c>

--- End Message ---

Reply via email to