Bug#190399: glibc: should support x86-64
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)/$@$(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)/$@$(includedir)/linux/
> - cp -R $(LINUX_SOURCE)/include/asm/. $(tmpdir)/$@$(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)/$@$(includedir)/.
> @@ -60,7 +59,28 @@
> $(tmpdir)/$@$(bindir)/generate-asm $(tmpdir)/$@$(includedir)/
> rm -rf $(tmpdir)/$@$(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)/$@$(includedir)/.
> + pushd $(tmpdir)/$@$(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)/$@$(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)/$@$(includedir)/.
> @@ -69,11 +89,15 @@
> $(tmpdir)/$@$(bindir)/generate-asm $(tmpdir)/$@$(includedir)/
> rm -rf $(tmpdir)/$@$(includedir)/asm-s390x
> else
> + cp -a $(install_root)$(includedir) $(tmpdir)/$@/usr/
> cp -R $(LINUX_SOURCE)/include/asm/. $(tmpdir)/$@$(includedir)/asm/
> endif
> endif
> +endif
> rm -rf $(tmpdir)/$@$(includedir)/linux/modules
> rm -f $(tmpdir)/$@$(includedir)/linux/modversions.h
> +else
> + cp -a $(install_root)$(includedir) $(tmpdir)/$@/usr/
> endif
> # Remove cruft from CVS trees
> find $(tmpdir)/$@$(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 >> $@T
> cat debian/control.in/sparc64 >> $@T
> cat debian/control.in/s390x >> $@T
> + cat debian/control.in/x86_64 >> $@T
> # Uncomment this line to enable optimized packages
> # cat debian/control.in/opt >> $@T
> cat debian/control.in/libc-udeb >> $@T
> 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)_$@_' -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)/$@$(docdir)
> + ln -sf $(libc) $(tmpdir)/$@$(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)/$@$(libdir)64
> + $(INSTALL_DATA) $(install_root_64)$(libdir)64/*.o $(tmpdir)/$@$(libdir)64/.
> + $(INSTALL_DATA) $(install_root_64)$(libdir)64/*.a $(tmpdir)/$@$(libdir)64/.
> + rm -f $(tmpdir)/$@$(libdir)64/*_?.a
> +ifeq ($(DEB_BUILD_OPTION_STRIP),yes)
> +# Don't strip linker scripts.
> + @tostrip=; for file in $(tmpdir)/$@$(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)/$@$(libdir)64/. || exit 1 ;; \
> + esac; \
> + done
> + cd $(tmpdir)/$@$(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)/$@$(includedir)
> + cp -R $(LINUX_SOURCE)/include/asm-x86_64 \
> + $(tmpdir)/$@$(includedir)/.
> + # Remove cruft from CVS trees
> + find $(tmpdir)/$@$(includedir)/ -name CVS -type d | xargs -r rm -rf
> + find $(tmpdir)/$@$(includedir)/ -name '.#*' -type f | xargs rm -f
> +
> + $(make_directory) $(tmpdir)/$@$(docdir)/$@
> + $(INSTALL_DATA) debian/changelog $(tmpdir)/$@$(docdir)/$@/changelog.Debian
> + -find $(tmpdir)/$@$(docdir)/$@ -type f | xargs -r gzip -9f
> + $(INSTALL_DATA) debian/copyright $(tmpdir)/$@$(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 to: