2003-07-31  Jakub Jelinek  <jakub@redhat.com>

	* dlfcn/dlerror.c (once): New.
	(dlerror): Call __libc_once.
	(_dlerror_run): Remove once.

2003-07-31  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext):
	Sync with 2.5.7 and 2.5.73 kernel changes.

2003-07-31  Jakub Jelinek  <jakub@redhat.com>

	* dlfcn/eval.c (funcall): Add noinline attribute to shut up warnings.
	* elf/rtld.c (dl_main): Cast ElfW(Addr) arguments with %Zx/%Zd
	formats to size_t.
	* elf/dl-lookup.c (_dl_debug_bindings): Likewise.
	* elf/tst-tls6.c (do_test): Use %zd format for l_tls_modid.
	* elf/tst-tls8.c (do_test): Use %zd format for modid1 and modid2.
	* gmon/tst-sprofil.c (main): Add parens to shut up warning.
	* iconv/tst-iconv3.c (main): Use %td instead of %zd for pointer
	difference argument.
	* stdio-common/tst-wc-printf.c (main): Cast arguments with %C
	format to wint_t.
	* stdlib/tst-limits.c (main): For WORD_BIT and LONG_BIT, use
	%d format and cast expected value to int.
	* sysdeps/generic/libc-start.c (STATIC): Add
	__attribute__((always_inline) if LIBC_START_MAIN is already defined.
	* sysdeps/powerpc/fpu/w_sqrt.c (a_nan, a_inf): Change from uint32_t
	to ieee_float_shape_type.
	(__sqrt): Avoid type punning.
	* sysdeps/powerpc/fpu/w_sqrtf.c (a_nan, a_inf): Change from uint32_t
	to ieee_float_shape_type.
	(__sqrtf): Avoid type punning.
	* sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Don't define
	refsym if in dl-conflict.c.
	* sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise.
	* sysdeps/unix/sysv/linux/i386/semctl.c (union semun): Add __old_buf.
	(__new_semctl): Shut up warning.
	* sysdeps/unix/sysv/linux/semctl.c (union semun): Add __old_buf.
	(__new_semctl): Shut up warning.
	* sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Wrap long lines.
	Change old into union of __old_shmid_ds and __old_shminfo structs.
	Adjust all users.
	* wcsmbs/wcsmbs-tst1.c (main): Cast arguments with %C format to wint_t.

2003-07-31  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/utimes.c (__utimes): Fix actime and
	modtime computation.
	* sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise.
	* sysdeps/posix/utimes.c (__utimes): Likewise.
This commit is contained in:
Ulrich Drepper 2003-07-31 19:26:38 +00:00
parent 1b26e9a566
commit d347a4ab1d
55 changed files with 258 additions and 135 deletions

View File

@ -1,3 +1,56 @@
2003-07-31 Jakub Jelinek <jakub@redhat.com>
* dlfcn/dlerror.c (once): New.
(dlerror): Call __libc_once.
(_dlerror_run): Remove once.
2003-07-31 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext):
Sync with 2.5.7 and 2.5.73 kernel changes.
2003-07-31 Jakub Jelinek <jakub@redhat.com>
* dlfcn/eval.c (funcall): Add noinline attribute to shut up warnings.
* elf/rtld.c (dl_main): Cast ElfW(Addr) arguments with %Zx/%Zd
formats to size_t.
* elf/dl-lookup.c (_dl_debug_bindings): Likewise.
* elf/tst-tls6.c (do_test): Use %zd format for l_tls_modid.
* elf/tst-tls8.c (do_test): Use %zd format for modid1 and modid2.
* gmon/tst-sprofil.c (main): Add parens to shut up warning.
* iconv/tst-iconv3.c (main): Use %td instead of %zd for pointer
difference argument.
* stdio-common/tst-wc-printf.c (main): Cast arguments with %C
format to wint_t.
* stdlib/tst-limits.c (main): For WORD_BIT and LONG_BIT, use
%d format and cast expected value to int.
* sysdeps/generic/libc-start.c (STATIC): Add
__attribute__((always_inline) if LIBC_START_MAIN is already defined.
* sysdeps/powerpc/fpu/w_sqrt.c (a_nan, a_inf): Change from uint32_t
to ieee_float_shape_type.
(__sqrt): Avoid type punning.
* sysdeps/powerpc/fpu/w_sqrtf.c (a_nan, a_inf): Change from uint32_t
to ieee_float_shape_type.
(__sqrtf): Avoid type punning.
* sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Don't define
refsym if in dl-conflict.c.
* sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise.
* sysdeps/unix/sysv/linux/i386/semctl.c (union semun): Add __old_buf.
(__new_semctl): Shut up warning.
* sysdeps/unix/sysv/linux/semctl.c (union semun): Add __old_buf.
(__new_semctl): Shut up warning.
* sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Wrap long lines.
Change old into union of __old_shmid_ds and __old_shminfo structs.
Adjust all users.
* wcsmbs/wcsmbs-tst1.c (main): Cast arguments with %C format to wint_t.
2003-07-31 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/utimes.c (__utimes): Fix actime and
modtime computation.
* sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise.
* sysdeps/posix/utimes.c (__utimes): Likewise.
2003-07-30 Jakub Jelinek <jakub@redhat.com>
* elf/dl-reloc.c (_dl_allocate_static_tls): Don't return any value,

View File

@ -1,5 +1,5 @@
/* Return error detail for failing <dlfcn.h> functions.
Copyright (C) 1995,1996,1997,1998,1999,2000,2002, 2003
Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -38,6 +38,7 @@ static struct dl_action_result *static_buf;
/* This is the key for the thread specific memory. */
static __libc_key_t key;
__libc_once_define (static, once);
/* Destructor for the thread-specific data. */
static void init (void);
@ -50,6 +51,9 @@ dlerror (void)
char *buf = NULL;
struct dl_action_result *result;
/* If we have not yet initialized the buffer do it now. */
__libc_once (once, init);
/* Get error string. */
result = (struct dl_action_result *) __libc_getspecific (key);
if (result == NULL)
@ -100,7 +104,6 @@ int
internal_function
_dlerror_run (void (*operate) (void *), void *args)
{
__libc_once_define (static, once);
struct dl_action_result *result;
/* If we have not yet initialized the buffer do it now. */

View File

@ -27,7 +27,7 @@
#include <string.h>
#include <unistd.h>
static void *funcall (char **stringp);
static void *funcall (char **stringp) __attribute_noinline__;
static void *eval (char **stringp);

View File

@ -704,20 +704,21 @@ _dl_debug_bindings (const char *undef_name, struct link_map *undef_map,
{
_dl_printf ("%s 0x%0*Zx 0x%0*Zx -> 0x%0*Zx 0x%0*Zx ",
conflict ? "conflict" : "lookup",
(int) sizeof (ElfW(Addr)) * 2, undef_map->l_map_start,
(int) sizeof (ElfW(Addr)) * 2,
((ElfW(Addr)) *ref) - undef_map->l_map_start,
(size_t) undef_map->l_map_start,
(int) sizeof (ElfW(Addr)) * 2,
(ElfW(Addr)) (value->s ? value->m->l_map_start : 0),
(size_t) (((ElfW(Addr)) *ref) - undef_map->l_map_start),
(int) sizeof (ElfW(Addr)) * 2,
(ElfW(Addr)) (value->s ? value->s->st_value : 0));
(size_t) (value->s ? value->m->l_map_start : 0),
(int) sizeof (ElfW(Addr)) * 2,
(size_t) (value->s ? value->s->st_value : 0));
if (conflict)
_dl_printf ("x 0x%0*Zx 0x%0*Zx ",
(int) sizeof (ElfW(Addr)) * 2,
(ElfW(Addr)) (val.s ? val.m->l_map_start : 0),
(size_t) (val.s ? val.m->l_map_start : 0),
(int) sizeof (ElfW(Addr)) * 2,
(ElfW(Addr)) (val.s ? val.s->st_value : 0));
(size_t) (val.s ? val.s->st_value : 0));
_dl_printf ("/%x %s\n", type_class, undef_name);
}

View File

@ -1307,13 +1307,15 @@ cannot allocate TLS data structures for initial thread");
: rtld_progname ?: "<main program>",
l->l_name[0] ? l->l_name
: rtld_progname ?: "<main program>",
(int) sizeof l->l_map_start * 2, l->l_map_start,
(int) sizeof l->l_addr * 2, l->l_addr);
(int) sizeof l->l_map_start * 2,
(size_t) l->l_map_start,
(int) sizeof l->l_addr * 2,
(size_t) l->l_addr);
#ifdef USE_TLS
if (l->l_tls_modid)
_dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid,
(int) sizeof l->l_tls_offset * 2,
l->l_tls_offset);
(size_t) l->l_tls_offset);
else
#endif
_dl_printf ("\n");
@ -1330,7 +1332,7 @@ cannot allocate TLS data structures for initial thread");
else
_dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name,
l->l_name, (int) sizeof l->l_map_start * 2,
l->l_map_start);
(size_t) l->l_map_start);
}
if (__builtin_expect (mode, trace) != trace)
@ -1349,8 +1351,9 @@ cannot allocate TLS data structures for initial thread");
_dl_printf ("%s found at 0x%0*Zd in object at 0x%0*Zd\n",
INTUSE(_dl_argv)[i],
(int) sizeof ref->st_value * 2, ref->st_value,
(int) sizeof loadbase * 2, loadbase);
(int) sizeof ref->st_value * 2,
(size_t) ref->st_value,
(int) sizeof loadbase * 2, (size_t) loadbase);
}
else
{

View File

@ -36,7 +36,7 @@ do_test (void)
modid = ((struct link_map *) h)->l_tls_modid;
else if (((struct link_map *) h)->l_tls_modid != modid)
{
printf ("round %d: modid now %d, initially %d\n",
printf ("round %d: modid now %zd, initially %d\n",
i, ((struct link_map *) h)->l_tls_modid, modid);
result = 1;
}

View File

@ -39,7 +39,7 @@ do_test (void)
modid1 = ((struct link_map *) h1)->l_tls_modid;
else if (((struct link_map *) h1)->l_tls_modid != modid1)
{
printf ("round %d: modid now %zd, initially %d\n",
printf ("round %d: modid now %zd, initially %zd\n",
i, ((struct link_map *) h1)->l_tls_modid, modid1);
result = 1;
}
@ -69,7 +69,7 @@ do_test (void)
modid2 = ((struct link_map *) h1)->l_tls_modid;
else if (((struct link_map *) h1)->l_tls_modid != modid2)
{
printf ("round %d: modid now %zd, initially %d\n",
printf ("round %d: modid now %zd, initially %zd\n",
i, ((struct link_map *) h1)->l_tls_modid, modid2);
result = 1;
}
@ -108,7 +108,7 @@ do_test (void)
time. The value of the first round is used. */
if (((struct link_map *) h1)->l_tls_modid != modid1)
{
printf ("round %d: modid now %zd, initially %d\n",
printf ("round %d: modid now %zd, initially %zd\n",
i, ((struct link_map *) h1)->l_tls_modid, modid1);
result = 1;
}
@ -136,7 +136,7 @@ do_test (void)
time. The value of the first round is used. */
if (((struct link_map *) h1)->l_tls_modid != modid2)
{
printf ("round %d: modid now %zd, initially %d\n",
printf ("round %d: modid now %zd, initially %zd\n",
i, ((struct link_map *) h1)->l_tls_modid, modid2);
result = 1;
}

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
@ -165,7 +165,7 @@ main (int argc, char **argv)
if (buf[i][j] != 0)
printf ("%0*Zx\t%u\t(buffer %d)\n",
(int) (sizeof (size_t) * 2),
(taddr[i] + (char *) &buf[i][j] - (char *) &buf[i][0]),
(taddr[i] + ((char *) &buf[i][j] - (char *) &buf[i][0])),
buf[i][j], i);
return 0;

View File

@ -42,7 +42,7 @@ main (int argc, char *argv[])
printf ("inptr change: %td\n", inptr - inbuf);
printf ("inlen change: %zd\n", BUFSIZE - inbytes_left);
printf ("outptr change: %zd\n", outptr - (char *) outbuf);
printf ("outptr change: %td\n", outptr - (char *) outbuf);
printf ("outlen change: %zd\n", BUFSIZE * 4 - outbytes_left);
result = 1;
}

View File

@ -1,3 +1,30 @@
2003-07-31 Jakub Jelinek <jakub@redhat.com>
* sysdeps/alpha/pt-machine.h (PT_EI): Add
__attribute__((always_inline)).
* sysdeps/arm/pt-machine.h (PT_EI): Likewise.
* sysdeps/cris/pt-machine.h (PT_EI): Likewise.
* sysdeps/hppa/pt-machine.h (PT_EI): Likewise.
* sysdeps/i386/i686/pt-machine.h (PT_EI): Likewise.
* sysdeps/i386/pt-machine.h (PT_EI): Likewise.
* sysdeps/ia64/pt-machine.h (PT_EI): Likewise.
* sysdeps/m68k/pt-machine.h (PT_EI): Likewise.
* sysdeps/mips/pt-machine.h (PT_EI): Likewise.
* sysdeps/powerpc/powerpc32/pt-machine.h (PT_EI): Likewise.
* sysdeps/powerpc/powerpc64/pt-machine.h (PT_EI): Likewise.
* sysdeps/s390/s390-32/pt-machine.h (PT_EI): Likewise.
* sysdeps/s390/s390-64/pt-machine.h (PT_EI): Likewise.
* sysdeps/sh/pt-machine.h (PT_EI): Likewise.
* sysdeps/sparc/sparc32/pt-machine.h (PT_EI): Likewise.
* sysdeps/sparc/sparc64/pt-machine.h (PT_EI): Likewise.
* sysdeps/x86_64/pt-machine.h (PT_EI): Likewise.
* spinlock.h (__pthread_set_own_extricate_if): Likewise.
* sysdeps/ia64/tls.h (TLS_INIT_TP): Cast tcbp to __typeof
(__thread_self).
* Examples/ex13.c (main): Change res type to void * to avoid
warnings.
* tst-cancel.c (cleanup, inner, tf1, tf2, tf3): Comment out.
2003-07-30 Jakub Jelinek <jakub@redhat.com>
* pthread.c (init_one_static_tls, __pthread_init_static_tls): New

View File

@ -1,5 +1,5 @@
/* Test for Pthreads/mutexes.
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Kurt Garloff <garloff@suse.de>, 2000.
@ -80,7 +80,7 @@ main (void)
struct thr_ctrl threadctrl;
pthread_t thread;
int err;
int *res = &threadctrl.retval;
void *res = &threadctrl.retval;
pthread_mutexattr_t mutattr;
pthread_mutexattr_init (&mutattr);
pthread_mutex_init (&threadctrl.mutex, &mutattr);
@ -106,7 +106,7 @@ main (void)
abort ();
};
dump_mut (&threadctrl.mutex);
pthread_join (thread, (void **) &res);
pthread_join (thread, &res);
printf ("OK\n");
return 0;
}

View File

@ -196,7 +196,7 @@ static inline long atomic_decrement(struct pthread_atomic *pa)
}
static inline void
static inline __attribute__((always_inline)) void
__pthread_set_own_extricate_if (pthread_descr self, pthread_extricate_if *peif)
{
/* Only store a non-null peif if the thread has cancellation enabled.

View File

@ -1,6 +1,7 @@
/* Machine-dependent pthreads configuration and inline functions.
Alpha version.
Copyright (C) 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>.
@ -23,7 +24,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
#ifdef __linux__

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
ARM version.
Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Philip Blundell <philb@gnu.org>.
@ -23,7 +23,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
CRIS version.
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003 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
@ -22,7 +22,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
hppa version.
Copyright (C) 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>.
@ -25,7 +25,7 @@
#include <bits/initspin.h>
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
i686 version.
Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>.
@ -23,7 +23,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
#include "kernel-features.h"

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
i386 version.
Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>.
@ -24,7 +24,7 @@
#ifndef __ASSEMBLER__
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -24,7 +24,7 @@
#include <ia64intrin.h>
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -84,7 +84,7 @@ typedef struct
special attention since 'errno' is not yet available and if the
operation can cause a failure 'errno' must not be touched. */
# define TLS_INIT_TP(tcbp, secondcall) \
(__thread_self = (tcbp), NULL)
(__thread_self = (__typeof (__thread_self)) (tcbp), NULL)
/* Return the address of the dtv for the current thread. */
# define THREAD_DTV() \

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
m68k version.
Copyright (C) 1996, 1998, 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 1996, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>.
@ -23,7 +23,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -27,7 +27,7 @@
#include <sys/tas.h>
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -1,6 +1,7 @@
/* Machine-dependent pthreads configuration and inline functions.
powerpc version.
Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003
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
@ -25,7 +26,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -25,7 +25,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
S390 version.
Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of the GNU C Library.
@ -23,7 +23,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
64 bit S/390 version.
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of the GNU C Library.
@ -23,7 +23,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -24,7 +24,7 @@
#ifndef __ASSEMBLER__
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -23,7 +23,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -23,7 +23,7 @@
#define _PT_MACHINE_H 1
#ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
#endif
extern long int testandset (int *spinlock);

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
x86-64 version.
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003 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
@ -28,7 +28,7 @@
# ifndef PT_EI
# define PT_EI extern inline
# define PT_EI extern inline __attribute__ ((always_inline))
# endif
extern long int testandset (int *spinlock);

View File

@ -12,6 +12,7 @@ int fd;
pthread_barrier_t bar;
#ifdef NOT_YET
static void
cleanup (void *arg)
{
@ -52,7 +53,7 @@ t2 (void *arg)
return NULL;
pthread_cleanup_pop (0);
}
#endif
/* This does not work yet. */
volatile int cleanupokcnt;
@ -63,7 +64,7 @@ cleanupok (void *arg)
++cleanupokcnt;
}
#ifdef NOT_YET
static void *
t3 (void *arg)
{
@ -72,7 +73,7 @@ t3 (void *arg)
pthread_exit (NULL);
pthread_cleanup_pop (0);
}
#endif
static void
innerok (int a)
@ -170,7 +171,7 @@ main (int argc, char *argv[])
err = pthread_create (&td, NULL, t4, (void *) 7);
if (err != 0)
{
printf ("cannot create thread t3: %s\n", strerror (err));
printf ("cannot create thread t4: %s\n", strerror (err));
exit (1);
}

View File

@ -1,3 +1,19 @@
2003-07-31 Jakub Jelinek <jakub@redhat.com>
* sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
Shut up warnings if INTERNAL_SYSCALL_ERROR_P does not use its first
argument.
* sysdeps/unix/sysv/linux/timer_create.c (timer_create): Likewise.
* pthread_condattr_setclock.c (pthread_condattr_setclock): Likewise.
* sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Include pthreaddef.h.
(__pthread_cleanup_upto): Fix prototype.
(_longjmp_unwind): Adjust caller.
* sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_timedlock):
Change second argument to const struct pointer.
* tst-sem8.c (main): Remove unused s2 and s3 variables.
* tst-sem9.c (main): Likewise.
* unwind.c: Include string.h for strlen prototype.
2003-07-31 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S

View File

@ -44,8 +44,9 @@ pthread_condattr_setclock (attr, clock_id)
struct timespec ts;
INTERNAL_SYSCALL_DECL (err);
int val = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC,
&ts);
int val;
val = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC,
&ts);
avail = INTERNAL_SYSCALL_ERROR_P (val, err) ? -1 : 1;
}

View File

@ -100,8 +100,9 @@ __pthread_cond_timedwait (cond, mutex, abstime)
{
#ifdef __NR_clock_gettime
INTERNAL_SYSCALL_DECL (err);
int val = INTERNAL_SYSCALL (clock_gettime, err, 2,
cond->__data.__clock, &rt);
int val;
val = INTERNAL_SYSCALL (clock_gettime, err, 2,
cond->__data.__clock, &rt);
# ifndef __ASSUME_POSIX_TIMERS
if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (val, err), 0))
{

View File

@ -9,7 +9,7 @@
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
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
@ -20,8 +20,9 @@
#include <setjmp.h>
#include <stddef.h>
#include <pthread-functions.h>
#include <pthreaddef.h>
extern void __pthread_cleanup_upto (jmp_buf env, char *targetframe);
extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe);
#pragma weak __pthread_cleanup_upto
@ -37,5 +38,5 @@ _longjmp_unwind (jmp_buf env, int val)
unsigned char local_var;
if (fptr != NULL)
fptr (env, &local_var);
fptr (env->__jmpbuf, &local_var);
}

View File

@ -162,7 +162,7 @@ extern int ___lll_mutex_timedlock (int *, const struct timespec *, int)
static inline int
__attribute__ ((always_inline))
__lll_mutex_timedlock (int *futex, struct timespec *abstime)
__lll_mutex_timedlock (int *futex, const struct timespec *abstime)
{
int oldval;
int newval;

View File

@ -133,7 +133,8 @@ timer_create (clock_id, evp, timerid)
{
INTERNAL_SYSCALL_DECL (err);
struct timespec ts;
int res = INTERNAL_SYSCALL (clock_getres, err, 1, &ts);
int res;
res = INTERNAL_SYSCALL (clock_getres, err, 1, &ts);
__no_posix_timers = (INTERNAL_SYSCALL_ERROR_P (res, err)
? -1 : 1);
}
@ -193,8 +194,9 @@ timer_create (clock_id, evp, timerid)
/* Create the timer. */
INTERNAL_SYSCALL_DECL (err);
int res = INTERNAL_SYSCALL (timer_create, err, 3, clock_id, &sev,
&newp->ktimerid);
int res;
res = INTERNAL_SYSCALL (timer_create, err, 3, clock_id, &sev,
&newp->ktimerid);
if (! INTERNAL_SYSCALL_ERROR_P (res, err))
{
*timerid = (timer_t) newp;

View File

@ -36,8 +36,6 @@ int
main (void)
{
sem_t *s;
sem_t *s2;
sem_t *s3;
int i;
on_exit (remove_sem, (void *) "/glibc-tst-sem8");

View File

@ -36,8 +36,6 @@ int
main (void)
{
sem_t *s;
sem_t *s2;
sem_t *s3;
int i;
on_exit (remove_sem, (void *) "/glibc-tst-sem9");

View File

@ -20,6 +20,7 @@
#include <setjmp.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "pthreadP.h"

View File

@ -16,7 +16,7 @@ main (void)
printf ("with %%S: %S\n", tmp);
printf ("with %%C: %C\n", tmp[0]);
printf ("with %%C: %C\n", (wint_t) tmp[0]);
return 0;
}

View File

@ -62,8 +62,8 @@ main (void)
TEST (PAGE_SIZE, "d", getpagesize ());
#endif
TEST (WORD_BIT, "zd", sizeof (int) * CHAR_BIT);
TEST (LONG_BIT, "zd", sizeof (long int) * CHAR_BIT);
TEST (WORD_BIT, "d", (int) sizeof (int) * CHAR_BIT);
TEST (LONG_BIT, "d", (int) sizeof (long int) * CHAR_BIT);
return result;
}

View File

@ -45,7 +45,7 @@ extern void __pthread_initialize_minimal (void)
#ifdef LIBC_START_MAIN
# define STATIC static inline
# define STATIC static inline __attribute__ ((always_inline))
#else
# define STATIC
# define LIBC_START_MAIN BP_SYM (__libc_start_main)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1997, 2000, 2003 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
@ -31,8 +31,8 @@ __utimes (const char *file, const struct timeval tvp[2])
if (tvp)
{
times = &buf;
times->actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
times->modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
buf.actime = tvp[0].tv_sec + (tvp[0].tv_usec + 500000) / 1000000;
buf.modtime = tvp[1].tv_sec + (tvp[1].tv_usec + 500000) / 1000000;
}
else
times = NULL;

View File

@ -23,8 +23,8 @@
#include <inttypes.h>
static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */
static const uint32_t a_nan = 0x7fc00000;
static const uint32_t a_inf = 0x7f800000;
static const ieee_float_shape_type a_nan = { .word = 0x7fc00000 };
static const ieee_float_shape_type a_inf = { .word = 0x7f800000 };
static const float two108 = 3.245185536584267269e+32;
static const float twom54 = 5.551115123125782702e-17;
extern const float __t_sqrt[1024];
@ -45,7 +45,7 @@ extern const float __t_sqrt[1024];
double
__sqrt(double x)
{
const float inf = *(const float *)&a_inf;
const float inf = a_inf.value;
/* x = f_wash(x); *//* This ensures only one exception for SNaN. */
if (x > 0)
{
@ -130,7 +130,7 @@ __sqrt(double x)
x = __kernel_standard(x,x,26);
else
#endif
x = *(const float*)&a_nan;
x = a_nan.value;
}
return f_wash(x);
}

View File

@ -1,5 +1,5 @@
/* Single-precision floating point square root.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 2003 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
@ -23,8 +23,8 @@
#include <inttypes.h>
static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */
static const uint32_t a_nan = 0x7fc00000;
static const uint32_t a_inf = 0x7f800000;
static const ieee_float_shape_type a_nan = { .word = 0x7fc00000 };
static const ieee_float_shape_type a_inf = { .word = 0x7f800000 };
static const float two48 = 281474976710656.0;
static const float twom24 = 5.9604644775390625e-8;
extern const float __t_sqrt[1024];
@ -45,7 +45,7 @@ extern const float __t_sqrt[1024];
float
__sqrtf(float x)
{
const float inf = *(const float *)&a_inf;
const float inf = a_inf.value;
/* x = f_washf(x); *//* This ensures only one exception for SNaN. */
if (x > 0)
{
@ -125,7 +125,7 @@ __sqrtf(float x)
x = __kernel_standard(x,x,126);
else
#endif
x = *(const float*)&a_nan;
x = a_nan.value;
}
return f_washf(x);
}

View File

@ -405,7 +405,9 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
return;
else
{
#ifndef RESOLVE_CONFLICT_FIND_MAP
const Elf32_Sym *const refsym = sym;
#endif
#if defined USE_TLS && !defined RTLD_BOOTSTRAP
struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;

View File

@ -373,7 +373,9 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
return;
else
{
#ifndef RESOLVE_CONFLICT_FIND_MAP
const Elf64_Sym *const refsym = sym;
#endif
#if defined USE_TLS && !defined RTLD_BOOTSTRAP
struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
Elf64_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;

View File

@ -1,4 +1,4 @@
/* futimes -- change access and modification times of open file. Stub version.
/* futimes -- change access and modification times of open file. Linux version.
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -58,8 +58,8 @@ __futimes (int fd, const struct timeval tvp[2])
if (tvp != NULL)
{
times = &buf;
buf.actime = tvp[0].tv_sec + tvp[0].tv_usec >= 500000;
buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec >= 500000;
buf.actime = tvp[0].tv_sec + (tvp[0].tv_usec + 500000) / 1000000;
buf.modtime = tvp[1].tv_sec + (tvp[1].tv_usec + 500000) / 1000000;
}
else
times = NULL;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
@ -48,6 +48,7 @@ union semun
struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
unsigned short int *array; /* array for GETALL & SETALL */
struct seminfo *__buf; /* buffer for IPC_INFO */
struct __old_semid_ds *__old_buf;
};
#include <bp-checks.h>
@ -145,7 +146,7 @@ __new_semctl (int semid, int semnum, int cmd, ...)
#endif
buf = arg.buf;
arg.buf = (struct semid_ds *)&old;
arg.__old_buf = &old;
if (cmd == IPC_SET)
{
old.sem_perm.uid = buf->sem_perm.uid;

View File

@ -50,7 +50,9 @@ struct sigcontext
struct ia64_fpreg sc_fr[128]; /* floating-point registers */
unsigned long int sc_rbs_base;/* NULL or new base of sighandler's rbs */
unsigned long int sc_loadrs; /* see description above */
unsigned long int sc_rsvd[14];/* reserved for future use */
unsigned long int sc_ar25; /* cmp8xchg16 uses this */
unsigned long int sc_ar26; /* rsvd for scratch use */
unsigned long int sc_rsvd[12];/* reserved for future use */
/* sc_mask is actually an sigset_t but we don't want to
* include the kernel headers here. */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
@ -48,6 +48,7 @@ union semun
struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
unsigned short int *array; /* array for GETALL & SETALL */
struct seminfo *__buf; /* buffer for IPC_INFO */
struct __old_semid_ds *__old_buf;
};
#include <bp-checks.h>
@ -152,7 +153,7 @@ __new_semctl (int semid, int semnum, int cmd, ...)
__set_errno(save_errno);
buf = arg.buf;
arg.buf = (struct semid_ds *)&old;
arg.__old_buf = &old;
if (cmd == IPC_SET)
{
old.sem_perm.uid = buf->sem_perm.uid;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
@ -74,7 +74,8 @@ int
__new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
{
#if __ASSUME_IPC64 > 0
return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, CHECK_1 (buf));
return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0,
CHECK_1 (buf));
#else
switch (cmd) {
case SHM_STAT:
@ -85,63 +86,69 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
#endif
break;
default:
return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, CHECK_1 (buf));
return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0,
CHECK_1 (buf));
}
{
int save_errno = errno, result;
struct __old_shmid_ds old;
union
{
struct __old_shmid_ds ds;
struct __old_shminfo info;
} old;
/* Unfortunately there is no way how to find out for sure whether
we should use old or new shmctl. */
result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, CHECK_1 (buf));
result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0,
CHECK_1 (buf));
if (result != -1 || errno != EINVAL)
return result;
__set_errno(save_errno);
if (cmd == IPC_SET)
{
old.shm_perm.uid = buf->shm_perm.uid;
old.shm_perm.gid = buf->shm_perm.gid;
old.shm_perm.mode = buf->shm_perm.mode;
if (old.shm_perm.uid != buf->shm_perm.uid ||
old.shm_perm.gid != buf->shm_perm.gid)
old.ds.shm_perm.uid = buf->shm_perm.uid;
old.ds.shm_perm.gid = buf->shm_perm.gid;
old.ds.shm_perm.mode = buf->shm_perm.mode;
if (old.ds.shm_perm.uid != buf->shm_perm.uid ||
old.ds.shm_perm.gid != buf->shm_perm.gid)
{
__set_errno (EINVAL);
return -1;
}
}
result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, __ptrvalue (&old));
result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0,
__ptrvalue (&old.ds));
if (result != -1 && (cmd == SHM_STAT || cmd == IPC_STAT))
{
memset(buf, 0, sizeof(*buf));
buf->shm_perm.__key = old.shm_perm.__key;
buf->shm_perm.uid = old.shm_perm.uid;
buf->shm_perm.gid = old.shm_perm.gid;
buf->shm_perm.cuid = old.shm_perm.cuid;
buf->shm_perm.cgid = old.shm_perm.cgid;
buf->shm_perm.mode = old.shm_perm.mode;
buf->shm_perm.__seq = old.shm_perm.__seq;
buf->shm_atime = old.shm_atime;
buf->shm_dtime = old.shm_dtime;
buf->shm_ctime = old.shm_ctime;
buf->shm_segsz = old.shm_segsz;
buf->shm_nattch = old.shm_nattch;
buf->shm_cpid = old.shm_cpid;
buf->shm_lpid = old.shm_lpid;
buf->shm_perm.__key = old.ds.shm_perm.__key;
buf->shm_perm.uid = old.ds.shm_perm.uid;
buf->shm_perm.gid = old.ds.shm_perm.gid;
buf->shm_perm.cuid = old.ds.shm_perm.cuid;
buf->shm_perm.cgid = old.ds.shm_perm.cgid;
buf->shm_perm.mode = old.ds.shm_perm.mode;
buf->shm_perm.__seq = old.ds.shm_perm.__seq;
buf->shm_atime = old.ds.shm_atime;
buf->shm_dtime = old.ds.shm_dtime;
buf->shm_ctime = old.ds.shm_ctime;
buf->shm_segsz = old.ds.shm_segsz;
buf->shm_nattch = old.ds.shm_nattch;
buf->shm_cpid = old.ds.shm_cpid;
buf->shm_lpid = old.ds.shm_lpid;
}
#if __WORDSIZE != 32
else if (result != -1 && cmd == IPC_INFO)
{
struct __old_shminfo *oldi = (struct __old_shminfo *)&old;
struct shminfo *i = (struct shminfo *)buf;
memset(i, 0, sizeof(*i));
i->shmmax = oldi->shmmax;
i->shmmin = oldi->shmmin;
i->shmmni = oldi->shmmni;
i->shmseg = oldi->shmseg;
i->shmall = oldi->shmall;
i->shmmax = old.info.shmmax;
i->shmmin = old.info.shmmin;
i->shmmni = old.info.shmmni;
i->shmseg = old.info.shmseg;
i->shmall = old.info.shmall;
}
#endif
return result;

View File

@ -47,8 +47,8 @@ __utimes (const char *file, const struct timeval tvp[2])
if (tvp != NULL)
{
times = &buf;
buf.actime = tvp[0].tv_sec + tvp[0].tv_usec >= 500000;
buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec >= 500000;
buf.actime = tvp[0].tv_sec + (tvp[0].tv_usec + 500000) / 1000000;
buf.modtime = tvp[1].tv_sec + (tvp[1].tv_usec + 500000) / 1000000;
}
else
times = NULL;

View File

@ -32,10 +32,10 @@ main (void)
buf[idx] = 0;
printf ("orig string %s\n", str);
printf ("string by wctomb %s\n", buf);
printf ("string by %%C %C", tmp[0]);
printf ("string by %%C %C", (wint_t) tmp[0]);
if (tmp[0] != L'H')
result = 1;
printf ("%C\n", tmp[1]);
printf ("%C\n", (wint_t) tmp[1]);
if (tmp[1] != L'e')
result = 1;
printf ("string by %%S %S\n", tmp);
@ -43,7 +43,7 @@ main (void)
result = 1;
puts ("---- test 2 ------");
printf ("wchar string %S\n", tmp1);
printf ("wchar %C\n", tmp1[0]);
printf ("wchar %C\n", (wint_t) tmp1[0]);
test = wcstombs (buf, tmp1, (wcslen (tmp1) + 1) * sizeof (wchar_t));
printf ("size of string by wcstombs %d\n", test);
if (test != wcslen (tmp1))