Thanks for your nice patch!

At Thu, 24 Apr 2003 00:03:53 +0200,
Arnd Bergmann wrote:
> Package: glibc
> Version: 2.3.1-17
> Tags: patch
> Severity: wishlist
> 
> In order to start the new amd64 (aka x86-64) port of Debian,
> a biarch i386/x86-64 glibc package will be needed. The required
> changes are rather small, as most of this has already been
> done for the sparc64 architecture and copied for s390x.
> As a separate issue, these three 64 bit libc6 packaged should 
> probably be merged in order to prevent duplicate bugs.

Well, that's right.  BTW, I still wonder how to support IA32 binaries.
You're planning to support x86-64 native package with this patch for
the present?  As we discussed a few week ago, is dpkg change needed?
If you have "roadmap" or "policy" to support x86-64, could you tell
us?

My concern is that if we use "/lib64", and all other binaries are also
use "/lib64", but debian libraries are usually put on "/lib".  Are there 
any problems of the difference between "/lib64" and "/lib"?

> This bug has a circular dependency on Bug#190066 (gcc-3.3) and
> another dependency on Bug#189350 (binutils). I have already
> provided patches for both and uploaded binary packages to 
> http://www.arndb.de/debian/ .
> 
> The attached patch contains further notes on the specific changes.
> [2 glibc_2.3.1-17.biarch1.debdiff <text/x-diff; iso-8859-1 (7bit)>]
> # The kernel headers for /usr/include/asm/ are normally (i.e. on s390x and
> # sparc64) generated from a script distributed as
> # /usr/src/kernel/generate-asm.sh.
> # That approach is somewhat flawed because it doesn't work with
> # the various kernel-headers packages that are distributed for
> # some purpose.
> # Here, I'm doing the same thing that generate-asm.sh does but
> # in a simpler and more portable way. It can be easily extended
> # for the other architectures and will also solve Bug#169358.
> #
> # The only backdraw is that in order to build lib64c itself,
> # a temporary symlink $(objdir_64)/asm ->
> #  $(LINUX_SOURCE)/include/asm-x86_64 has to be created (see
> # below).

This problem was modified on s390.  S390 does not have generate-asm.sh,
and Gerhard Tonn sent me the nice patch to fix it.  Please look at 
the current debian-glibc cvs, or sooner available 2.3.2-1.

> diff -u glibc-2.3.1/debian/packages.d/libc-dev.mk 
> glibc-2.3.1/debian/packages.d/libc-dev.mk
> --- glibc-2.3.1/debian/packages.d/libc-dev.mk
> +++ glibc-2.3.1/debian/packages.d/libc-dev.mk
> @@ -44,12 +44,11 @@
>         rm -f $$link; ln -sf $$linksrc $$link; done
>  endif
>       $(make_directory) $(tmpdir)/[EMAIL PROTECTED](includedir)
> -     cp -a $(install_root)$(includedir) $(tmpdir)/$@/usr/
>  ifeq ($(DEB_HOST_GNU_SYSTEM),linux)
>       $(make_directory) $(addprefix $(LINUX_SOURCE)/include/,asm linux)
>       cp -R $(LINUX_SOURCE)/include/linux/. $(tmpdir)/[EMAIL 
> PROTECTED](includedir)/linux/
> -     cp -R $(LINUX_SOURCE)/include/asm/. $(tmpdir)/[EMAIL 
> PROTECTED](includedir)/asm/
>  ifeq ($(DEB_HOST_GNU_CPU),sparc)
> +     cp -a $(install_root)$(includedir) $(tmpdir)/$@/usr/
>  # Sparc has a 32/64 build setup, make sure we support it
>       cp -R $(LINUX_SOURCE)/include/asm-sparc \
>               $(tmpdir)/[EMAIL PROTECTED](includedir)/.
> @@ -60,7 +59,28 @@
>       $(tmpdir)/[EMAIL PROTECTED](bindir)/generate-asm $(tmpdir)/[EMAIL 
> PROTECTED](includedir)/
>       rm -rf $(tmpdir)/[EMAIL PROTECTED](includedir)/asm-sparc64
>  else
> +ifeq ($(DEB_HOST_GNU_CPU),i386)

Umm, why is it "i386"?  Should be "x86-64"?

> +     # only the x86_64 are biarch capable, so we can't use the
> +     # ones in install_root here
> +     cp -a $(install_root_64)$(includedir) $(tmpdir)/$@/usr/
> +     # x86_64 has a 32/64 build setup, make sure we support it
> +     cp -R $(LINUX_SOURCE)/include/asm-{i386,x86_64} \
> +     $(tmpdir)/[EMAIL PROTECTED](includedir)/.
> +     pushd $(tmpdir)/[EMAIL PROTECTED](includedir) ; \
> +     mkdir asm ; \
> +     for i in `( ls asm-i386 ; ls asm-x86_64 ) | sort | uniq` ; do \
> +             printf > asm/$$i "%s\n%s\n%s\n%s\n%s\n" \
> +                     "#ifdef __x86_64__"             \
> +                     "#include <asm-x86_64/$$i>"     \
> +                     "#else"                         \
> +                     "#include <asm-i386/$$i>"       \
> +                     "#endif" ;                      \
> +     done ; \
> +     popd
> +     rm -rf $(tmpdir)/[EMAIL PROTECTED](includedir)/asm-x86_64
> +else
>  ifeq ($(DEB_HOST_GNU_CPU),s390)
> +     cp -a $(install_root)$(includedir) $(tmpdir)/$@/usr/
>       # IBM zSeries has a 32/64 build setup, make sure we support it
>       cp -R $(LINUX_SOURCE)/include/asm-{s390,s390x} \
>       $(tmpdir)/[EMAIL PROTECTED](includedir)/.
> @@ -69,11 +89,15 @@
>       $(tmpdir)/[EMAIL PROTECTED](bindir)/generate-asm $(tmpdir)/[EMAIL 
> PROTECTED](includedir)/
>       rm -rf $(tmpdir)/[EMAIL PROTECTED](includedir)/asm-s390x
>  else
> +     cp -a $(install_root)$(includedir) $(tmpdir)/$@/usr/
>       cp -R $(LINUX_SOURCE)/include/asm/. $(tmpdir)/[EMAIL 
> PROTECTED](includedir)/asm/
>  endif
>  endif
> +endif
>       rm -rf $(tmpdir)/[EMAIL PROTECTED](includedir)/linux/modules
>       rm -f $(tmpdir)/[EMAIL PROTECTED](includedir)/linux/modversions.h
> +else
> +     cp -a $(install_root)$(includedir) $(tmpdir)/$@/usr/
>  endif
>  # Remove cruft from CVS trees
>       find $(tmpdir)/[EMAIL PROTECTED](includedir)/ -name CVS -type d | xargs 
> -r rm -rf
> # The changes to debian/control, debian/rules, debian/packages.d/x86_64.mk,
> # debian/lib64c/postinst, debian/control.in/x86_64 and 
> # debian/sysdeps/linux.mk are simple duplications of the respective s390x 
> # versions. The name for the 64 bit package, however is not libc6-x64-64
                                                                     86

> # but lib64c6. I think it would be a good idea to rename the s390 and sparc
> # packages to lib64c6 as well, as that will remove some complexity from the
> # rules file and from dependend packages

This seems good idea.  But, hmm, do you think "libc64-6" or "libc6-64"?
Do you assume other 64 bit libraries also have "lib64xxx"?

> diff -u glibc-2.3.1/debian/control glibc-2.3.1/debian/control
> --- glibc-2.3.1/debian/control
> +++ glibc-2.3.1/debian/control
> @@ -317,6 +317,27 @@
>   which use the standard C library. This is the 64bit version of the
>   library, meant for zSeries systems.
>  
> +
> +Package: lib64c6
> +Architecture: i386

"i386"?  Is it for the current hack to work i386 binaries on x86-64?

> +Section: base
> +Priority: required
> +Depends: libc6 (= ${Source-Version})
> +Description: GNU C Library: 64bit Shared libraries for x86_64
> + This package includes shared versions of the standard C library and the
> + standard math library, as well as many others. This is the 64bit version
> + library, meant for AMD Hammer (x86_64) systems.
> +
> +Package: lib64c6-dev
> +Architecture: i386
> +Section: devel
> +Priority: standard
> +Depends: lib64c6 (= ${Source-Version}), libc6-dev (= ${Source-Version}), 
> gcc-3.2 (>= 3.2.1-0pre1)
> +Description: GNU C Library: 64bit Development Libraries for x86_64
> + Contains the symlinks and object files needed to compile and link programs
> + which use the standard C library. This is the 64bit version of the
> + library, meant for AMD Hammer (x86_64) systems.

I think it's not generic description.  If you think s390 and sparc64
are merged into 64 bit support libc6, then should be this description
x86_64 specific?

>  Package: libc-udeb
>  Architecture: any
>  Section: debian-installer

libc-udeb is needed for the next generation debian installer.  We plan
to modify the name from libc-udeb to libc6-udeb or libc6.1-udeb
(<packgename><versionname>-udeb).  x86_64's libc-udeb is lib64c6-udeb?
But currently you have no need to care about libc-udeb.

> diff -u glibc-2.3.1/debian/rules glibc-2.3.1/debian/rules
> --- glibc-2.3.1/debian/rules
> +++ glibc-2.3.1/debian/rules
> @@ -176,6 +176,9 @@
>  ifeq ($(DEB_HOST_GNU_CPU),sparc)
>  #include $(package_rules)/sparc64.mk
>  endif
> +ifeq ($(DEB_HOST_GNU_CPU),i386)
> +include $(package_rules)/x86_64.mk
> +endif
>  ifeq ($(DEB_HOST_GNU_CPU),s390)
>  include $(package_rules)/s390x.mk
>  endif
> diff -u glibc-2.3.1/debian/rules.d/control.mk 
> glibc-2.3.1/debian/rules.d/control.mk
> --- glibc-2.3.1/debian/rules.d/control.mk
> +++ glibc-2.3.1/debian/rules.d/control.mk
> @@ -1,5 +1,5 @@
>  # Add opt to this line to generate optimized packages
> -control_deps := $(addprefix debian/control.in/, libc6 libc6.1 libc0.3 libc1 
> sparc64 s390x) # 
> +control_deps := $(addprefix debian/control.in/, libc6 libc6.1 libc0.3 libc1 
> sparc64 s390x x86_64) # 
>  
>  threads_archs := alpha arm i386 m68k mips mipsel powerpc sparc ia64 hppa 
> s390 sh3 sh4 sh3eb sh4eb freebsd-i386
>  
> @@ -26,6 +26,7 @@
>       cat debian/control.in/libc1             >> [EMAIL PROTECTED]
>       cat debian/control.in/sparc64           >> [EMAIL PROTECTED]
>       cat debian/control.in/s390x             >> [EMAIL PROTECTED]
> +     cat debian/control.in/x86_64            >> [EMAIL PROTECTED]
>  #    Uncomment this line to enable optimized packages
>  #    cat debian/control.in/opt               >> [EMAIL PROTECTED]
>       cat debian/control.in/libc-udeb         >> [EMAIL PROTECTED]
> diff -u glibc-2.3.1/debian/sysdeps/linux.mk 
> glibc-2.3.1/debian/sysdeps/linux.mk
> --- glibc-2.3.1/debian/sysdeps/linux.mk
> +++ glibc-2.3.1/debian/sysdeps/linux.mk
> @@ -17,6 +17,10 @@
>  #  arch_packages += $(libc)-sparc64 $(libc)-dev-sparc64
>  #endif
>  
> +ifeq ($(DEB_HOST_GNU_CPU),i386)
> +  arch_packages += lib64c6 lib64c6-dev
> +endif
> +
>  ifeq ($(DEB_HOST_GNU_CPU),s390)
>    arch_packages += $(libc)-s390x $(libc)-dev-s390x
>  endif
> only in patch2:
> unchanged:

It means that if build architecture is "i386", libc-64 is also made.
However, I wonder it's really needed.

> --- glibc-2.3.1.orig/debian/control.in/x86_64
> +++ glibc-2.3.1/debian/control.in/x86_64
> @@ -0,0 +1,21 @@
> +
> +Package: lib64c6
> +Architecture: i386
> +Section: base
> +Priority: required
> +Depends: libc6 (= ${Source-Version})
> +Description: GNU C Library: 64bit Shared libraries for x86_64
> + This package includes shared versions of the standard C library and the
> + standard math library, as well as many others. This is the 64bit version
> + library, meant for AMD Hammer (x86_64) systems.
> +
> +Package: lib64c6-dev
> +Architecture: i386
> +Section: devel
> +Priority: standard
> +Depends: lib64c6 (= ${Source-Version}), libc6-dev (= ${Source-Version}), 
> gcc-3.2 (>= 3.2.1-0pre1)
> +Description: GNU C Library: 64bit Development Libraries for x86_64
> + Contains the symlinks and object files needed to compile and link programs
> + which use the standard C library. This is the 64bit version of the
> + library, meant for AMD Hammer (x86_64) systems.
> +
> only in patch2:
> unchanged:

I have the previous question for this part.

> --- glibc-2.3.1.orig/debian/lib64c/postinst
> +++ glibc-2.3.1/debian/lib64c/postinst
> @@ -0,0 +1,6 @@
> +#!/bin/sh -e
> +
> +if [ "$1" = "configure" ]
> +then
> +    ldconfig
> +fi
> only in patch2:
> unchanged:
> --- glibc-2.3.1.orig/debian/packages.d/x86_64.mk
> +++ glibc-2.3.1/debian/packages.d/x86_64.mk
> @@ -0,0 +1,162 @@
> +# Build 64bit libraries
> +
> +objdir_64            = $(objdir)_64
> +install_root_64              = $(install_root)_64
> +stamp_install_64     = $(stamp_install)_64
> +stamp_build_64               = $(stamp_build)_64
> +stamp_configure_64   = $(stamp_configure)_64
> +lib64c                       = lib64c6
> +
> +flags_64 = -g0 -O2 -Wall
> +
> +MYCC = gcc-3.3 -m64
> +
> +ifeq ($(log_build),/dev/tty)
> +  log_build_64 = /dev/tty
> +else
> +  log_build_64 = $(log_build)_64
> +endif
> +
> +$(stamp_install_64): $(stamp_build_64)
> +     $(checkroot)
> +     $(make_directory) $(install_root_64)
> +     $(MAKE) -C $(objdir_64) install_root=$(install_root_64) install
> +     touch $@
> +
> +$(stamp_build_64): $(stamp_configure_64)
> +ifeq ($(NO_LOG),)
> +     @if [ -s $(log_build_64) ]; then savelog $(log_build_64); fi
> +endif
> +     @echo 'Building GNU C Library for a $(DEB_BUILD_GNU_TYPE) host (64bit).'
> +     $(MAKE) -C $(objdir_64) PARALLELMFLAGS="$(PARALLELMFLAGS)" 2>&1 | tee 
> $(log_build_64)
> +     touch $@
> +
> +$(stamp_configure_64): $(stamp_unpack) $(stamp_patch)
> +     $(make_directory) $(objdir_64) $(stampdir)
> +     rm -f $(objdir_64)/configparms
> +     echo "CC = $(MYCC)"             >> $(objdir_64)/configparms
> +     echo "BUILD_CC = $(MYCC)"       >> $(objdir_64)/configparms
> +     echo "CFLAGS = $(flags_64)"     >> $(objdir_64)/configparms
> +     echo "BUILD_CFLAGS = $(flags_64)"       >> $(objdir_64)/configparms
> +     echo "BASH := /bin/bash"        >> $(objdir_64)/configparms
> +     echo "KSH := /bin/bash"         >> $(objdir_64)/configparms
> +     echo "mandir = $(mandir)"       >> $(objdir_64)/configparms
> +     echo "infodir = $(infodir)"     >> $(objdir_64)/configparms
> +     echo "libexecdir = $(libexecdir)"       >> $(objdir_64)/configparms
> +     echo "LIBGD = no"               >> $(objdir_64)/configparms
> +     echo "cross-compiling = yes"    >> $(objdir_64)/configparms
> +     echo 
> +     ln -s $(LINUX_SOURCE)/include/asm-x86_64 $(objdir_64)/asm # Hack
> +     cd $(objdir_64) && CC="$(MYCC)" CFLAGS="$(flags_64)" \
> +     $(srcdir)/configure --host=x86_64-linux \
> +             --build=i386-linux --prefix=/usr --without-cvs \
> +             --disable-profile --enable-static --enable-kernel=2.4.0 \

"2.4.0" should be "2.4.1".  I fixed it to sparc64/s390x.

> +             --enable-add-ons="$(add-ons)" $(with_headers)
> +
> +     touch $@
> +
> +$(lib64c): $(stamp_install_64) debian/control $(mkdir)/sysdeps.mk \
> +  debian/libc/DEBIAN/shlibs
> +     $(checkroot)
> +     $(debian-clean)
> +     -rm -rf $(tmpdir)/$@
> +
> +     $(make_directory) $(tmpdir)/$@/DEBIAN
> +     $(INSTALL_PROGRAM) debian/lib64c/p* $(tmpdir)/$@/DEBIAN
> +     cat debian/libc/DEBIAN/shlibs | sed -e 's_$(libc)[EMAIL PROTECTED]' -e \
> +             's_/lib/_/lib64/_' > \
> +             $(tmpdir)/$@/DEBIAN/shlibs
> +
> +     $(make_directory) $(tmpdir)/$@/lib64 $(tmpdir)/$@/usr/lib64
> +
> +     # Compatibility links
> +     $(make_directory) $(tmpdir)/$@/lib $(tmpdir)/$@/usr/lib
> +     ln -s ../lib64 $(tmpdir)/$@/lib/64
> +     ln -s ../lib64 $(tmpdir)/$@/usr/lib/64
> +     ln -s ../lib64/ld-$(VERSION).so $(tmpdir)/$@/lib/ld-linux-x86-64.so.2
> +
> +     $(INSTALL_DATA) $(install_root_64)/lib64/lib*-$(VERSION).so 
> $(tmpdir)/$@/lib64/.
> +     $(INSTALL_PROGRAM) $(install_root_64)/lib64/libc-$(VERSION).so 
> $(tmpdir)/$@/lib64/.
> +     $(INSTALL_DATA) $(install_root_64)/lib64/libSegFault.so 
> $(tmpdir)/$@/lib64/.
> +ifeq ($(threads),yes)
> +     $(INSTALL_DATA) $(install_root_64)/lib64/libpthread-0.10.so 
> $(tmpdir)/$@/lib64/.
> +     $(INSTALL_DATA) $(install_root_64)/lib64/libthread_db-1.0.so 
> $(tmpdir)/$@/lib64/.
> +endif
> +     @set -e; \
> +     cd $(install_root_64)/lib64/; \
> +     for l in `find . -type l -name 'lib*.so.*'`; \
> +             do cp -vdf $$l $(tmpdir)/$@/lib64/.; done
> +     cd $(tmpdir)/$@ && \
> +     $(STRIP) lib64/lib*-$(VERSION).so
> +ifeq ($(threads),yes)
> +     $(STRIP) $(tmpdir)/$@/lib64/libpthread-0.10.so
> +     $(STRIP) $(tmpdir)/$@/lib64/libthread_db-1.0.so
> +endif
> +     $(INSTALL_PROGRAM) $(install_root_64)/lib64/ld-$(VERSION).so \
> +             $(tmpdir)/$@/lib64/.
> +     #### XXX
> +     # test -e /lib64/ld-linux.so.2 && \
> +             # $(INSTALL_PROGRAM) /lib64/ld-*.so 
> $(tmpdir)/$@/lib64/ld-$(VERSION).so
> +     cp -vdf $(install_root_64)/lib64/ld*.so.* \
> +             $(tmpdir)/$@/lib64/.
> +     cp -vfa $(install_root_64)/usr/lib64/gconv \
> +             $(tmpdir)/$@/usr/lib64/.
> +     $(make_directory) $(tmpdir)/[EMAIL PROTECTED](docdir)
> +     ln -sf $(libc) $(tmpdir)/[EMAIL PROTECTED](docdir)/$@
> +     find $(tmpdir)/$@ -name CVS -print -prune | xargs --no-run-if-empty rm 
> -rf
> +     dpkg-gencontrol -isp -p$@ -P$(tmpdir)/$@
> +     chown -R root.root $(tmpdir)/$@
> +     chmod -R go=rX $(tmpdir)/$@
> +     dpkg --build $(tmpdir)/$@ ..
> +
> +$(lib64c)-dev: $(stamp_install_64) debian/control $(mkdir)/sysdeps.mk
> +     $(checkroot)
> +     $(debian-clean)
> +     -rm -rf $(tmpdir)/$@
> +
> +     $(make_directory) $(tmpdir)/$@/DEBIAN
> +
> +     $(make_directory) $(tmpdir)/[EMAIL PROTECTED](libdir)64
> +     $(INSTALL_DATA) $(install_root_64)$(libdir)64/*.o $(tmpdir)/[EMAIL 
> PROTECTED](libdir)64/.
> +     $(INSTALL_DATA) $(install_root_64)$(libdir)64/*.a $(tmpdir)/[EMAIL 
> PROTECTED](libdir)64/.
> +     rm -f $(tmpdir)/[EMAIL PROTECTED](libdir)64/*_?.a
> +ifeq ($(DEB_BUILD_OPTION_STRIP),yes)
> +# Don't strip linker scripts.
> +     @tostrip=; for file in $(tmpdir)/[EMAIL PROTECTED](libdir)64/*; do \
> +       case `file $$file` in \
> +       *text) ;; *) tostrip="$$tostrip $$file" ;; esac; \
> +     done; echo "$(STRIP) -g $$tostrip"; \
> +     $(STRIP) -g $$tostrip
> +endif
> +     for f in $(install_root_64)$(libdir)64/lib*.so; do \
> +       case "$$f" in \
> +       *-$(VERSION).so | *-0.[789].so ) ;; \
> +       */libSegFault.so|*/libthread_db.so|*/libdb.so) ;; \
> +       *) cp -df $$f $(tmpdir)/[EMAIL PROTECTED](libdir)64/. || exit 1 ;; \
> +       esac; \
> +     done
> +     cd $(tmpdir)/[EMAIL PROTECTED](libdir)64; \
> +     for link in `find . -name '*.so' -type l`; do \
> +       linksrc=$$(readlink $$link | sed 's%../..%%'); \
> +       rm -f $$link; ln -sf $$linksrc $$link; done
> +
> +     # IBM zSeries has a 32/64 build setup, make sure we support it
          ^^^^^^^^^^^ :)
> +     $(make_directory) $(tmpdir)/[EMAIL PROTECTED](includedir)
> +     cp -R $(LINUX_SOURCE)/include/asm-x86_64 \
> +             $(tmpdir)/[EMAIL PROTECTED](includedir)/.
> +     # Remove cruft from CVS trees
> +     find $(tmpdir)/[EMAIL PROTECTED](includedir)/ -name CVS -type d | xargs 
> -r rm -rf
> +     find $(tmpdir)/[EMAIL PROTECTED](includedir)/ -name '.#*' -type f | 
> xargs rm -f
> +
> +     $(make_directory) $(tmpdir)/[EMAIL PROTECTED](docdir)/$@
> +     $(INSTALL_DATA) debian/changelog $(tmpdir)/[EMAIL 
> PROTECTED](docdir)/$@/changelog.Debian
> +     -find $(tmpdir)/[EMAIL PROTECTED](docdir)/$@ -type f | xargs -r gzip -9f
> +     $(INSTALL_DATA) debian/copyright $(tmpdir)/[EMAIL 
> PROTECTED](docdir)/$@/.
> +
> +     # cp -a debian/libc-dev/{postinst,prerm} $(tmpdir)/$@/DEBIAN
> +
> +     find $(tmpdir)/$@ -name CVS -print -prune | xargs --no-run-if-empty rm 
> -rf
> +     dpkg-gencontrol -isp -p$@ -P$(tmpdir)/$@
> +     chown -R root.root $(tmpdir)/$@
> +     chmod -R go=rX $(tmpdir)/$@
> +     dpkg --build $(tmpdir)/$@ ..
> diff -u glibc-2.3.1/debian/patches/0list glibc-2.3.1/debian/patches/0list
> --- glibc-2.3.1/debian/patches/0list
> +++ glibc-2.3.1/debian/patches/0list
> @@ -58,0 +59,2 @@
> +x86-64-sigcontext.h
> +sscanf-gcc3.3
> # the sigcontext.h file distributed with x86-64 break some compiles,
> # this solves the problem, but the final solution should be to
> # fix bits/sigcontext.h in a way that does not need asm/sigcontext.h
> only in patch2:
> unchanged:
> --- glibc-2.3.1.orig/debian/patches/x86-64-sigcontext.h.dpatch
> +++ glibc-2.3.1/debian/patches/x86-64-sigcontext.h.dpatch
> @@ -0,0 +1,103 @@
> +#! /bin/sh -e
> +
> +# All lines beginning with `# DP:' are a description of the patch.
> +# DP: Description: fix sigcontext.h header file for x86_64
> +# DP: Author: Arnd Bergmann
> +# DP: Upstream status: Not submitted
> +# DP: Status Details:
> +# DP: Date: 2003-01-21
> +
> +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
> +
> +--- glibc-2.3.1/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h.orig 
> 2003-01-20 13:15:42.000000000 +0100
> ++++ glibc-2.3.1/sysdeps/unix/sysv/linux/x86_64/bits/sigcontext.h 2003-01-22 
> 02:29:49.000000000 +0100
> +@@ -23,8 +23,16 @@
> + # error "Never use <bits/sigcontext.h> directly; include <signal.h> 
> instead."
> + #endif
> + 
> ++#define sigcontext_struct sigcontext
> ++
> + #include <bits/wordsize.h>
> + 
> ++#if __WORDSIZE == 32
> ++
> ++#include <asm/sigcontext.h>
> ++
> ++#else /* __WORDSIZE == 64 */
> ++
> + struct _fpreg
> + {
> +   unsigned short significand[4];
> +@@ -43,61 +51,6 @@
> +   __uint32_t        element[4];
> + };
> + 
> +-
> +-
> +-#if __WORDSIZE == 32
> +-
> +-struct _fpstate
> +-{
> +-  /* Regular FPU environment.  */
> +-  __uint32_t        cw;
> +-  __uint32_t                sw;
> +-  __uint32_t                tag;
> +-  __uint32_t                ipoff;
> +-  __uint32_t                cssel;
> +-  __uint32_t                dataoff;
> +-  __uint32_t                datasel;
> +-  struct _fpreg     _st[8];
> +-  unsigned short status;
> +-  unsigned short magic;
> +-
> +-  /* FXSR FPU environment.  */
> +-  __uint32_t                _fxsr_env[6];
> +-  __uint32_t                mxcsr;
> +-  __uint32_t                reserved;
> +-  struct _fpxreg    _fxsr_st[8];
> +-  struct _xmmreg    _xmm[8];
> +-  __uint32_t                padding[56];
> +-};
> +-
> +-struct sigcontext
> +-{
> +-  unsigned short gs, __gsh;
> +-  unsigned short fs, __fsh;
> +-  unsigned short es, __esh;
> +-  unsigned short ds, __dsh;
> +-  unsigned long edi;
> +-  unsigned long esi;
> +-  unsigned long ebp;
> +-  unsigned long esp;
> +-  unsigned long ebx;
> +-  unsigned long edx;
> +-  unsigned long ecx;
> +-  unsigned long eax;
> +-  unsigned long trapno;
> +-  unsigned long err;
> +-  unsigned long eip;
> +-  unsigned short cs, __csh;
> +-  unsigned long eflags;
> +-  unsigned long esp_at_signal;
> +-  unsigned short ss, __ssh;
> +-  struct _fpstate * fpstate;
> +-  unsigned long oldmask;
> +-  unsigned long cr2;
> +-};
> +-
> +-#else /* __WORDSIZE == 64 */
> +-
> + struct _fpstate
> + {
> +   /* FPU environment matching the 64-bit FXSAVE layout.  */
> only in patch2:
> unchanged:
> # applicable only until the update to 2.3.2

Are there any plans to send this patch to upstream?  And could you
describe the detail in the DP: Description field from 0list?

> --- glibc-2.3.1.orig/debian/patches/sscanf-gcc3.3.dpatch
> +++ glibc-2.3.1/debian/patches/sscanf-gcc3.3.dpatch
> @@ -0,0 +1,34 @@
> +#! /bin/sh -e
> +
> +# All lines beginning with `# DP:' are a description of the patch.
> +# DP: Description: fix sscanf.c for compilation with gcc-3.3
> +# DP: Author: Arnd Bergmann
> +# DP: Upstream status: already in 2.3.2
> +# DP: Date: 2003-04-22
> +
> +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
> +
> +--- glibc-2.3.1/stdio-common/sscanf.c        2002-08-10 20:09:08.000000000 
> +0200
> ++++ glibc-2.3.1/stdio-common/sscanf.c        2003-04-23 02:55:03.000000000 
> +0200
> +@@ -27,9 +27,7 @@
> + /* Read formatted input from S, according to the format string FORMAT.  */
> + /* VARARGS2 */
> + int
> +-sscanf (s, format)
> +-     const char *s;
> +-     const char *format;
> ++sscanf (const char *s, const char *format, ...)
> + {
> +   va_list arg;
> +   int done;

This bug is fixed in the next glibc-2.3.2, so this patch can be
removed, as you described.

Regards,
-- gotom


Reply via email to