Package: dietlibc / 0.33~cvs20120325-4

Metadata

Package Version Patches format
dietlibc 0.33~cvs20120325-4 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
0002 fflush NULL don t flush input streams stdin.diff | (download)

libstdio/fflush.c | 1 0 + 1 - 0 !
1 file changed, 1 deletion(-)

 [patch 02/13] fflush(null): don't flush input streams (stdin).

See http://bugs.debian.org/346437

0004 nice set errno EPERM on error.diff | (download)

lib/__nice.c | 7 6 + 1 - 0 !
1 file changed, 6 insertions(+), 1 deletion(-)

 [patch 04/13] nice(): set errno=eperm on error.

See http://bugs.debian.org/286825

0005 Do not clobber HOME environment variable.diff | (download)

Makefile | 6 3 + 3 - 0 !
1 file changed, 3 insertions(+), 3 deletions(-)

 [patch 05/13] do not clobber home environment variable.

To: Debian Bug Tracking System <submit@bugs.debian.org>
Date: Tue, 17 Oct 2006 21:57:23 +1000

During the build of dietlibc the Makefile clobbers the HOME environment
variable for the duration of the build. The HOME environment variable
is used by ccontrol to find its configuration file, but when building
dietlibc it can't find its configuration and fails to execute properly.

Here is a snippet of the build output when using ccontrol:
> /usr/bin/make prefix=/usr/lib/diet \
>           MYARCH='i386' VERSION='0.30-1'
> make[1]: Entering directory `/tmp/dietlibc-0.30'
> mkdir bin-i386
> gcc -I. -isystem include -pipe -nostdinc -Os -fomit-frame-pointer
> -falign-functions=1 -falign-jumps=1 -falign-loops=1
> -mpreferred-stack-boundary=2 -Wall -W -Wchar-subscripts
> -Wmissing-prototypes -Wmissing-declarations -Wno-switch -Wno-unused
> -Wredundant-decls -c i386/start.S -o bin-i386/start.o
> ccontrol error: reading /tmp/dietlibc-0.30/.ccontrol/config: 2
> make[1]: *** [bin-i386/start.o] Error 1

I propose changing the variable name in the Makefile to "DIETHOME" in
order to fix this. A patch to do so is attached.

-Ted

0006 Don t define WANT_SSP.diff | (download)

dietfeatures.h | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch 06/13] don't define want_ssp.

It causes similar problems as WANT_STACKGAP back in Dec 2004, see
http://bug.debian.org/374349

0007 semctl.S semget.S semop.s for parisc.diff | (download)

parisc/semctl.S | 3 3 + 0 - 0 !
parisc/semget.S | 3 3 + 0 - 0 !
parisc/semop.S | 3 3 + 0 - 0 !
3 files changed, 9 insertions(+)

 [patch 07/13] semctl.s, semget.s, semop.s for parisc.

On hppa, the semctl, semget, and semop functions were unavailable. Trying
to use them results in
> undefined reference to `__ipc'
when linking. This can be seen in the ccontrol build log:
<http://buildd.debian.org/fetch.cgi?pkg=ccontrol;ver=0.9.1%2B20060806-2;arch=hppa;stamp=1160949237>

0008 Use syscall _newselect instead of select on ppc.diff | (download)

ppc/select.S | 3 3 + 0 - 0 !
1 file changed, 3 insertions(+)

 [patch 08/13] use syscall _newselect instead of select on ppc.

See http://bugs.debian.org/394928

0009 workaround Bug 428814 powerpc error initializer eleme.diff | (download)

libm/gamma.c | 17 17 + 0 - 0 !
1 file changed, 17 insertions(+)

 [patch 09/13] workaround bug#428814: [powerpc] error: initializer element is not constant

On Sat, Jun 30, 2007 at 11:24:15AM +0200, Matthias Klose wrote:
> Gerrit Pape writes:
> > On Thu, Jun 14, 2007 at 02:27:49PM +0200, Falk Hueffner wrote:
> > > Gerrit Pape <pape@dbnbgs.smarden.org> writes:
> > > > On a current Debian/powerpc sid system:
> > > >
> > > >  $ cat >ttt.c <<EOT
> > > >  static const double d[] = { 1.0l/6/1/2, -1.0l/30/3/4 };
> > > >  int main() { return 0; }
> > > >  EOT
> > > >  $ gcc-4.1 ttt.c
> > > >  ttt.c:1: error: initializer element is not constant
> > > >  ttt.c:1: error: (near initialization for 'd[0]')
> > > >  ttt.c:1: error: initializer element is not constant
> > > >  ttt.c:1: error: (near initialization for 'd[1]')
> > >
> > > This is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26374
> >
> > The dietlibc FTBFS because of this.
> >
> > gcc-4.2 4.2-20070627-1 has the same problem, is there a workaround?
>
> make the initializer double precision for now?

0010 util vserver vsched fails to read config directory.diff | (download)

dietdirent.h | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 [patch 10/13] util-vserver: vsched fails to read config directory

Jan H Eringa wrote:
> Use of /etc/vservers/<vserver name>/sched/.... causes vsched to blow up
> |my-server# vsched --xid 40000 --dir /etc/vservers/test-1/sched
> |vsched: readdir(): Bad address
>
>
> Which I suspect is the cause of....
> |my-server# /etc/init.d/util-vserver start
> |Fixing visibility of /proc entries for Linux-VServer guests...readdir():
> Bad
>  address
> |readdir(): Bad address
[...]

This is due to dietlibc not properly aligning the buffer it's handing to
sys_readdir. Check your dmesg output, and it should say something like
Kernel unaligned access at TPC[4b7268] filldir64+0x70/0x134

0011 Add new defines to indicate which syscall is umount 3.diff | (download)

alpha/syscalls.h | 2 2 + 0 - 0 !
ia64/syscalls.h | 2 2 + 0 - 0 !
syscalls.s/umount.S | 4 4 + 0 - 0 !
syscalls.s/umount2.S | 4 3 + 1 - 0 !
4 files changed, 11 insertions(+), 1 deletion(-)

 [patch 11/13] add new #defines to indicate which syscall is umount(3) and which is umount2(3).

* on architectures where __NR_umount is umount(3) and __NR_umount2 is
  umount2(3), don't do anything special
* on architectures where this is not the case, define __NR_umount_with_flags
  so that it's umount2(3)
* define __NR_umount_without_flags to be umount(3) on architectures where
  such a syscall exists

In the currently-supported architectures there are four families:

* on i386, arm etc., __NR_umount takes one argument and __NR_umount2 takes two
* on x86_64 and parisc __NR_umount2 takes two arguments and there is no
  1-argument umount
* on alpha, __NR_oldumount takes one argument and __NR_umount takes two
* on ia64, __NR_umount takes two arguments and there is no 1-argument umount

0012 Add an implementation of umount 3 for ia64.diff | (download)

ia64/Makefile.add | 2 1 + 1 - 0 !
ia64/umount-wrapper.c | 5 5 + 0 - 0 !
2 files changed, 6 insertions(+), 1 deletion(-)

 [patch 12/13] add an implementation of umount(3) for ia64

Like x86_64 and parisc, ia64 lacks a single-argument umount syscall, so we
need to provide a stub implementation that just calls umount2(path, 0).
I don't know ia64 assembler, so this one is in C.

0013 sparc use mcpu v9 instead of mcpu supersparc.diff | (download)

diet.c | 2 1 + 1 - 0 !
sparc/Makefile.add | 2 1 + 1 - 0 !
2 files changed, 2 insertions(+), 2 deletions(-)

 [patch 13/13] sparc: use -mcpu=v9 instead of -mcpu=supersparc

This fixes a build failure of libowfat on sparc:

diet -v -Os gcc -g -o t t.o libowfat.a `cat libsocket` -lpthread
gcc -nostdlib -static -L/usr/lib/diet/lib-sparc /usr/lib/diet/lib-sparc/start.o -g -o t t.o libowfat.a -lpthread -isystem /usr/lib/diet/include -D__dietlibc__ -Os -mcpu=supersparc /usr/lib/diet/lib-sparc/libc.a -lgcc /usr/lib/diet/lib-sparc/libc.a
/usr/lib/diet/lib-sparc/libc.a(vprintf.o): In function `vprintf':
vprintf.c:(.text+0x1c): warning: warning: the printf functions add several kilobytes of bloat.
t.o: In function `main':
t.c:(.text+0x30): undefined reference to `__sync_add_and_fetch_4'
t.c:(.text+0x48): undefined reference to `__sync_add_and_fetch_4'
t.c:(.text+0x64): undefined reference to `__sync_bool_compare_and_swap_4'
t.c:(.text+0x80): undefined reference to `__sync_bool_compare_and_swap_4'
collect2: ld returned 1 exit status

According to http://www.debian.org/releases/stable/sparc/ch02s01.html.en
supersparc isn't supported anymore anyway, and multisparc and niagara
are v9.

0014 sparc_v9 does not imply arch64.diff | (download)

include/endian.h | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

---
0017 disable propolice.diff | (download)

Makefile | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 disable propolice ssp, which may be enabled by default
0018 manpage.diff | (download)

diet.1 | 14 7 + 7 - 0 !
1 file changed, 7 insertions(+), 7 deletions(-)

 fix errors in the manpage
0020 fixes for ARMv7.diff | (download)

arm/__aeabi_unwind_cpp.S | 25 9 + 16 - 0 !
arm/__fadvise.c | 5 4 + 1 - 0 !
arm/__guard.S | 3 3 + 0 - 0 !
arm/__longjmp.S | 27 20 + 7 - 0 !
arm/__testandset.S | 16 12 + 4 - 0 !
arm/arm-features.h | 110 110 + 0 - 0 !
arm/clone.S | 22 11 + 11 - 0 !
arm/dyn_syscalls.S | 19 13 + 6 - 0 !
arm/mcount.S | 10 3 + 7 - 0 !
arm/md5asm.S | 26 9 + 17 - 0 !
arm/setjmp.S | 49 36 + 13 - 0 !
arm/start.S | 65 41 + 24 - 0 !
arm/strcpy.S | 12 4 + 8 - 0 !
arm/strlen.S | 15 4 + 11 - 0 !
arm/syscalls.h | 65 13 + 52 - 0 !
arm/unified.S | 47 29 + 18 - 0 !
arm/waitpid.S | 19 6 + 13 - 0 !
syscalls.s/fadvise64.S | 9 4 + 5 - 0 !
18 files changed, 331 insertions(+), 213 deletions(-)

 upstream changes introduced in version 0.33~cvs20110710-1
 This patch has been created by dpkg-source during the package build.
 Here's the last changelog entry, hopefully it gives details on why
 those changes were made:
 .
 dietlibc (0.33~cvs20110710-1) experimental; urgency=low
 .
   * New upstream pre-release
   * Bump Standards-Version
   * Use DEP5 as copyright format
   * Don't build arm* with DEBUG flag
   * Use debian source format 3.0 (quilt)
   * Move tc523086.c into debian/test directory
   * Add local-options file
   * Refresh debian patchset
   * parisc/strstr.S: remove local removal
   * strip elftrunc and dnsd resulting binaries
 .
 The person named in the Author field signed this changelog entry.
0021 fix ftbfs s390.diff | (download)

s390/setjmp.S | 1 1 + 0 - 0 !
s390x/setjmp.S | 1 1 + 0 - 0 !
2 files changed, 2 insertions(+)

 upstream changes introduced in version 0.33~cvs20110710-2
 This patch has been created by dpkg-source during the package build.
 Here's the last changelog entry, hopefully it gives details on why
 those changes were made:
 .
 dietlibc (0.33~cvs20110710-2) experimental; urgency=low
 .
   * Fix build for ARMv7 arches.
   * Fix FTBFS on s390.
0024 fno stack protector.diff | (download)

diet.c | 6 6 + 0 - 0 !
1 file changed, 6 insertions(+)

 [patch] explicitly disable ssp if dietlibc is defined without support for it

dietfeatures.h says that the code will segfault; *buntu adds this to
their gcc unconditionally (and diet eats -fno-stack-protector up when
passed manually!), plus some code probes for -fstack-protector{,-all}
and uses it if it compiles. So passing -fno-stack-protector from diet
as last argument is probably the proper fix.

Signed-off-by: Thorsten Glaser <tg@mirbsd.org>

0025 fix alpha as syntax.diff | (download)

syscalls.s/fadvise64.S | 2 1 + 1 - 0 !
syscalls.s/fadvise64_64.S | 2 1 + 1 - 0 !
2 files changed, 2 insertions(+), 2 deletions(-)

 [patch] fix alpha as syntax

.set cannot be used on alpha, .equ cannot be used on hppa, *sigh*

0026 dont strip bins.diff | (download)

Makefile | 4 0 + 4 - 0 !
1 file changed, 4 deletions(-)

 [patch] do not strip binaries

leave that to the debian/rules code

0027 fix arm mmap.diff | (download)

arm/mmap.S | 33 17 + 16 - 0 !
1 file changed, 17 insertions(+), 16 deletions(-)

 [patch] fix mmap syscall on arm

several issues found while debugging on the Debian armhf porterbox
on #debian-arm with pbrook (Paul Brook) and lindi- (Timo Juhani Lindfors)

- the comment only applies to the non-EABI part of the function
- "This is ARM code. But you've not maked mmap as a function symbol."
=> use the arm-features.h macros

0028 fix ssize_t.diff | (download)

include/sys/types.h | 11 10 + 1 - 0 !
1 file changed, 10 insertions(+), 1 deletion(-)

 [patch] fix ssize_t definition

gcc -Wformat likes to warn if '%zd' is used and ssize_t is not
a signed size_t (several architectures have 'unsigned int' as
their __SIZE_TYPE__ definition); use __SIZE_TYPE__ in the same
way for defining ssize_t as size_t uses (in stddef.h), except
it must, of course, be signed; this actual kludge comes from
$MirOS: src/sys/sys/types.h,v 1.8 2007/05/18 00:47:58 tg Exp $
and is incorporated here with permission of its creator

example build log (mipsel, too) exhibiting this warning:
https://buildd.debian.org/status/fetch.php?pkg=mksh&arch=powerpc&ver=40.2-4&stamp=1321055433

0029 secure string functions.diff | (download)

arm/strcpy.S | 49 0 + 49 - 0 !
arm/strlen.S | 45 0 + 45 - 0 !
lib/strcmp.c | 36 0 + 36 - 0 !
lib/strcpy.c | 25 0 + 25 - 0 !
lib/strlen.c | 87 0 + 87 - 0 !
5 files changed, 242 deletions(-)

 [patch] make string functions oob secure

Several !defined(WANT_SMALL_STRING_ROUTINES) string function
implementations read up to 7 chars past the end of the string.
This is forbidden, enforced by several memory allocators (such
as omalloc) and valgrind, and causes trouble in general (e.g.
t-ascii1.c to fail).

This patch *removes* the faster string functions where they
are unsafe, i.e. do not operate either on an explicit length
argument (such as memcpy, strncpy) or merely are "faster" by
loop unrolling (such as strncat).

Sorry, guys. There is no way to speed up these functions if
you need to avoid reading past the end of the allocated memory.

0030 strtod long double optional.diff | (download)

alpha/Makefile.add | 1 1 + 0 - 0 !
lib/strtod.c | 14 10 + 4 - 0 !
sparc/Makefile.add | 1 1 + 0 - 0 !
sparc64/Makefile.add | 2 2 + 0 - 0 !
4 files changed, 14 insertions(+), 4 deletions(-)

 [patch] avoid use of 'long double' in strtod

Use of 'long double' on alpha and sparc is now no longer
possible in Debian since they switched to 128 bits, which
needs supporting functions that weirdly enough are not in
libgcc. Use 'double' on these platforms, since that's what
'long double' was on them before (no change) and allows us
to link code calling strtod() again.

http://thread.gmane.org/gmane.linux.lib.dietlibc/1166

Keep strtold() as-is; users must ensure the supporting code
is there. (Or submit it to dietlibc inclusion.)

Other functions may or may not need patching, unsure.

0031 s390 sigsetjmp.diff | (download)

s390/setjmp.S | 11 7 + 4 - 0 !
s390x/setjmp.S | 11 7 + 4 - 0 !
2 files changed, 14 insertions(+), 8 deletions(-)

 [patch] fix sigsetjmp on s390

(via IRC, thanks); integrated by tg
Update 20.11.2011: align more closely with eglibc

0032 utimes warning.diff | (download)

lib/__utime.c | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 fix compile time warning on armel, armhf, ia64

utimes is defined in <sys/time.h> only if Fefes variant
of _BSD_SOURCE is set, which we dont do in dietlibc it
self, so pull in the declaration

0033 aliasing.diff | (download)

Makefile | 26 26 + 0 - 0 !
1 file changed, 26 insertions(+)

 add -fno-strict-aliasing to some files abusing pointer casts

Fixing the whole mess is non-trivial, e.g. making DIR->buf into a
union of the char buffer and the dirent struct, for seekdir.c, is
not sufficient since other code does pointer arithmetics and cast
afterwards. This must be fixed upstream.

0034 make select testcase useful.diff | (download)

test/select.c | 5 4 + 1 - 0 !
1 file changed, 4 insertions(+), 1 deletion(-)

 make select testcase actually useful

What's the use of a testcase run at build if it always returns 0,
even in the face of an error?

0035 Use syscall _newselect instead of select on ppc64.diff | (download)

ppc64/select.S | 3 3 + 0 - 0 !
1 file changed, 3 insertions(+)

 use syscall _newselect instead of select on ppc64

0036 fix jmp_buf size on armhf.diff | (download)

include/setjmp.h | 3 1 + 2 - 0 !
1 file changed, 1 insertion(+), 2 deletions(-)

 fix jmp_buf size on armhf

On armhf (!__SOFTFP__) with __ARM_ARCH__ >= 6 and __ARM_NEON__,
sigsetjmp() can store as much as 42 registers:
* d0 - d15 (armhf)	=> 16
* d16 - d31 (NEON)	=> 16
* r4 - r11, sp, lr	=> 10
Make appropriate space for that in jmp_buf and remove an unused
define at the same time.