* sysdeps/mach/hurd/Makefile ($(link-rpcuserlibs)): Don't append

options after $(build-module), which is no longer a single command.
	(LDFLAGS-link-rpcuserlibs): New variable to hold those options.
	(LDFLAGS-libmachuser-link.so, LDFLAGS-libhurduser-link.so): New
	variables using it.  Reported by Mark Kettenis <kettenis@gnu.org>.

2001-03-11  Roland McGrath  <roland@frob.com>

	* elf/rtld.c (dl_main): Add cast to quiet warning.
	* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
	* iconv/gconv_conf.c (__gconv_get_path): Likewise.
	(__gconv_read_conf): Likewise.
	* iconv/gconv_db.c (gen_steps): Likewise.
	(__gconv_find_transform): Likewise.
	* locale/programs/charmap-dir.c (fopen_uncompressed): Likewise.
	(fopen_uncompressed): Use const in second argument's type.

2001-03-11  Roland McGrath  <roland@frob.com>

	* sysdeps/mach/hurd/dl-sysdep.c (__writev): New function.

	* mach/mach_error.h: Fix ancient #endif syntax.
	* hurd/hurdmalloc.c: Likewise.

	* sysdeps/generic/atomicity.h (exchange_and_add, atomic_add,
	compare_and_swap): Add volatile qualifier to first arg, to bring
	these prototypes in line with all the other implementations.
	Add a #warning to remind the builder that these are not atomic.

2001-03-04  Roland McGrath  <roland@frob.com>

	* hurd/vpprintf.c (vpprintf) [USE_IN_LIBIO]: Use innermore first
	member of TEMP_F so its type is _IO_FILE * as expected.

	* hurd/fopenport.c (seekio): Conditionalize type of POS argument
	on [USE_IN_LIBIO].  Check the value for overflow, since for libio
	it might exceed off_t's range.

2001-02-25  Roland McGrath  <roland@frob.com>

	* sysdeps/mach/hurd/sysd-stdio.c (__stdio_reopen): Use prototype.
	* sysdeps/unix/bsd/getpt.c (__posix_openpt): Likewise.

	* sysdeps/mach/hurd/i386/intr-msg.h (SYSCALL_EXAMINE): Make this a
	macro instead of an inline function,
	(MSG_EXAMINE): Likewise.

	* hurd/hurd/ioctl.h (_HURD_HANDLE_IOCTLS_1): Remove extraneous ##.

	* hurd/get-host.c: Include <string.h> for decls of built-ins.
	* hurd/hurdchdir.c: Likewise.
	* sysdeps/mach/hurd/i386/sigreturn.c: Likweise.
	* sysdeps/mach/hurd/opendir.c: Likewise.

	* mach/mach_init.c: Include <unistd.h> for _exit decl.

	* mach/errsystems.awk: Give output file a trailing newline.

	* mach/Machrules (MIG): Prepend CC='${CC}' to the mig command, so that
	the script will use our compiler for the cpp stage.

	With --enable-all-warnings we get a whole bunch of warnings,
	and these are just a few fixes; there are more needed to silence it.
	* mach/mach/mig_support.h (__mig_strncpy, mig_strncpy): Add extern
	decls before extern inline defns to quiet gcc warning.
	* hurd/hurd/threadvar.h (__hurd_threadvar_location_from_sp): Likewise.
	* sysdeps/mach/i386/machine-sp.h (__thread_stack_pointer): Likewise.
This commit is contained in:
Roland McGrath 2001-04-01 05:04:31 +00:00
parent 24cf21d780
commit 8a0746ae74
25 changed files with 253 additions and 108 deletions

View file

@ -1,3 +1,73 @@
2001-03-30 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/Makefile ($(link-rpcuserlibs)): Don't append
options after $(build-module), which is no longer a single command.
(LDFLAGS-link-rpcuserlibs): New variable to hold those options.
(LDFLAGS-libmachuser-link.so, LDFLAGS-libhurduser-link.so): New
variables using it. Reported by Mark Kettenis <kettenis@gnu.org>.
2001-03-11 Roland McGrath <roland@frob.com>
* elf/rtld.c (dl_main): Add cast to quiet warning.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* iconv/gconv_conf.c (__gconv_get_path): Likewise.
(__gconv_read_conf): Likewise.
* iconv/gconv_db.c (gen_steps): Likewise.
(__gconv_find_transform): Likewise.
* locale/programs/charmap-dir.c (fopen_uncompressed): Likewise.
(fopen_uncompressed): Use const in second argument's type.
2001-03-11 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/dl-sysdep.c (__writev): New function.
* mach/mach_error.h: Fix ancient #endif syntax.
* hurd/hurdmalloc.c: Likewise.
* sysdeps/generic/atomicity.h (exchange_and_add, atomic_add,
compare_and_swap): Add volatile qualifier to first arg, to bring
these prototypes in line with all the other implementations.
Add a #warning to remind the builder that these are not atomic.
2001-03-04 Roland McGrath <roland@frob.com>
* hurd/vpprintf.c (vpprintf) [USE_IN_LIBIO]: Use innermore first
member of TEMP_F so its type is _IO_FILE * as expected.
* hurd/fopenport.c (seekio): Conditionalize type of POS argument
on [USE_IN_LIBIO]. Check the value for overflow, since for libio
it might exceed off_t's range.
2001-02-25 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/sysd-stdio.c (__stdio_reopen): Use prototype.
* sysdeps/unix/bsd/getpt.c (__posix_openpt): Likewise.
* sysdeps/mach/hurd/i386/intr-msg.h (SYSCALL_EXAMINE): Make this a
macro instead of an inline function,
(MSG_EXAMINE): Likewise.
* hurd/hurd/ioctl.h (_HURD_HANDLE_IOCTLS_1): Remove extraneous ##.
* hurd/get-host.c: Include <string.h> for decls of built-ins.
* hurd/hurdchdir.c: Likewise.
* sysdeps/mach/hurd/i386/sigreturn.c: Likweise.
* sysdeps/mach/hurd/opendir.c: Likewise.
* mach/mach_init.c: Include <unistd.h> for _exit decl.
* mach/errsystems.awk: Give output file a trailing newline.
* mach/Machrules (MIG): Prepend CC='${CC}' to the mig command, so that
the script will use our compiler for the cpp stage.
With --enable-all-warnings we get a whole bunch of warnings,
and these are just a few fixes; there are more needed to silence it.
* mach/mach/mig_support.h (__mig_strncpy, mig_strncpy): Add extern
decls before extern inline defns to quiet gcc warning.
* hurd/hurd/threadvar.h (__hurd_threadvar_location_from_sp): Likewise.
* sysdeps/mach/i386/machine-sp.h (__thread_stack_pointer): Likewise.
2001-03-31 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/net/if_arp.h (ARPHRD_RAWHDLC): Added.

View file

@ -874,7 +874,7 @@ of this helper program; chances are you did not intend to run this program.\n\
_dl_printf ("\t%s => not found\n", l->l_libname->name);
else
_dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name,
l->l_name, sizeof l->l_addr * 2, l->l_addr);
l->l_name, (int) sizeof l->l_addr * 2, l->l_addr);
}
if (__builtin_expect (mode, trace) != trace)
@ -891,8 +891,9 @@ of this helper program; chances are you did not intend to run this program.\n\
loadbase = LOOKUP_VALUE_ADDRESS (result);
_dl_printf ("%s found at 0x%0*Zd in object at 0x%0*Zd\n",
_dl_argv[i], sizeof ref->st_value * 2, ref->st_value,
sizeof loadbase * 2, loadbase);
_dl_argv[i],
(int) sizeof ref->st_value * 2, ref->st_value,
(int) sizeof loadbase * 2, loadbase);
}
else
{

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1994,95,97,2000 Free Software Foundation, Inc.
/* Copyright (C) 1994,95,97,2000,01 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
@ -62,10 +62,27 @@ writeio (void *cookie, const char *buf, size_t n)
The current file position is stored in *POS.
Returns zero if successful, nonzero if not. */
static int
seekio (void *cookie, off_t *pos, int whence)
seekio (void *cookie,
#ifdef USE_IN_LIBIO
_IO_off64_t *pos,
#else
fpos_t *pos,
#endif
int whence)
{
off_t res;
error_t error = __io_seek ((file_t) cookie, *pos, whence, &res);
error_t error;
/* XXX We don't really support large files on the Hurd. So if POS
doesn't fit in an `off_t', we'll return `-1' and set errno. EOVERFLOW
probably isn't the right error value, but seems appropriate here. */
if ((off_t) *pos != *pos)
{
__set_errno (EOVERFLOW);
return -1;
}
error = __io_seek ((file_t) cookie, *pos, whence, &res);
if (error)
return __hurd_fail (error);
*pos = res;

View file

@ -1,5 +1,5 @@
/* Get a host configuration item kept as the whole contents of a file.
Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1996,97,99,2000,2001 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
@ -21,6 +21,7 @@
#include <hurd.h>
#include <hurd/lookup.h>
#include "hurdhost.h"
#include <string.h>
ssize_t
_hurd_get_host_config (const char *item, char *buf, size_t buflen)

View file

@ -1,5 +1,5 @@
/* User-registered handlers for specific `ioctl' requests.
Copyright (C) 1993,94,95,96,97,2000 Free Software Foundation, Inc.
Copyright (C) 1993,94,95,96,97,2000,01 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
@ -59,7 +59,7 @@ extern int hurd_register_ioctl_handler (int first_request, int last_request,
{ _IOC_NOTYPE (first), _IOC_NOTYPE (last), \
(int (*) (int, int, void *)) (handler), NULL }; \
text_set_element (_hurd_ioctl_handler_lists, \
##handler##_ioctl_handler##moniker)
handler##_ioctl_handler##moniker)
#define _HURD_HANDLE_IOCTLS(handler, first, last) \
_HURD_HANDLE_IOCTLS_1 (handler, first, last, first##_to_##last)

View file

@ -1,5 +1,5 @@
/* Internal per-thread variables for the Hurd.
Copyright (C) 1994, 95, 97, 98, 99, 2001 Free Software Foundation, Inc.
Copyright (C) 1994,95,97,98,99,2001 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
@ -74,6 +74,8 @@ enum __hurd_threadvar_index
/* Return the location of the value for the per-thread variable with index
INDEX used by the thread whose stack pointer is SP. */
extern unsigned long int *__hurd_threadvar_location_from_sp
(enum __hurd_threadvar_index __index, void *__sp);
_HURD_THREADVAR_H_EXTERN_INLINE unsigned long int *
__hurd_threadvar_location_from_sp (enum __hurd_threadvar_index __index,
void *__sp)

View file

@ -1,5 +1,5 @@
/* Change a port cell to a directory by looking up a name.
Copyright (C) 1999 Free Software Foundation, Inc.
Copyright (C) 1999, 2001 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,6 +23,7 @@
#include <hurd/port.h>
#include <hurd/fd.h>
#include <fcntl.h>
#include <string.h>
int
_hurd_change_directory_port_from_name (struct hurd_port *portcell,

View file

@ -9,34 +9,40 @@
#define vm_allocate __vm_allocate
#define vm_page_size __vm_page_size
/*
/*
* Mach Operating System
* Copyright (c) 1991,1990,1989 Carnegie Mellon University
* All Rights Reserved.
*
*
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
*
*
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
*
*
* Carnegie Mellon requests users of this software to return to
*
*
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
*
*
* any improvements or extensions that they make and grant Carnegie Mellon
* the rights to redistribute these changes.
*/
/*
* HISTORY
* $Log$
* Revision 1.14 2001/04/01 05:03:14 roland
* 2001-03-11 Roland McGrath <roland@frob.com>
*
* * mach/mach_error.h: Fix ancient #endif syntax.
* * hurd/hurdmalloc.c: Likewise.
*
* Revision 1.13 1996/12/20 01:32:01 drepper
* Update from main archive 961219
*
@ -178,7 +184,7 @@ typedef struct free_list {
header_t head; /* head of free list for this size */
#ifdef DEBUG
int in_use; /* # mallocs - # frees */
#endif DEBUG
#endif /* DEBUG */
} *free_list_t;
/*
@ -301,7 +307,7 @@ malloc(size)
#ifdef DEBUG
fl->in_use += 1;
#endif DEBUG
#endif /* DEBUG */
spin_unlock(&fl->lock);
/*
* Store free list pointer in block header
@ -359,7 +365,7 @@ free(base)
fl->head = h;
#ifdef DEBUG
fl->in_use -= 1;
#endif DEBUG
#endif /* DEBUG */
spin_unlock(&fl->lock);
return;
}
@ -455,7 +461,7 @@ print_malloc_free_list()
fprintf(stderr, " all sizes %10d %10d %10d\n",
total_used, total_free, total_used + total_free);
}
#endif DEBUG
#endif /* DEBUG */
static void
malloc_fork_prepare(void)

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1991,94,97,2000 Free Software Foundation, Inc.
/* Copyright (C) 1991,94,97,2000,01 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
@ -58,7 +58,7 @@ vpprintf (io_t port, const char *format, va_list arg)
_IO_cookie_init (&temp_f.cfile, _IO_NO_READS,
(void *) port, (cookie_io_functions_t) { write: do_write });
done = _IO_vfprintf (&temp_f.cfile.__fp, format, arg);
done = _IO_vfprintf (&temp_f.cfile.__fp.file, format, arg);
#else

View file

@ -1,5 +1,5 @@
/* Handle configuration data.
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1997,98,99,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -506,7 +506,7 @@ __gconv_get_path (void)
result[n].len = 0;
}
__gconv_path_elem = result ?: &empty_path_elem;
__gconv_path_elem = result ?: (struct path_elem *) &empty_path_elem;
if (cwd != NULL)
free (cwd);
@ -552,7 +552,7 @@ __gconv_read_conf (void)
{
struct gconv_alias fake_alias;
fake_alias.fromname = builtin_modules[cnt].from_string;
fake_alias.fromname = (char *) builtin_modules[cnt].from_string;
if (__tfind (&fake_alias, &__gconv_alias_db, __gconv_alias_compare)
!= NULL)

View file

@ -1,5 +1,5 @@
/* Provide access to the collection of available transformation modules.
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1997,98,99,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -225,7 +225,7 @@ gen_steps (struct derivation_step *best, const char *toset,
{
result[step_cnt].__from_name = (step_cnt == 0
? __strdup (fromset)
: current->last->result_set);
: (char *)current->last->result_set);
result[step_cnt].__to_name = (step_cnt + 1 == *nsteps
? __strdup (current->result_set)
: result[step_cnt + 1].__from_name);
@ -644,11 +644,11 @@ __gconv_find_transform (const char *toset, const char *fromset,
struct gconv_alias key;
struct gconv_alias **found;
key.fromname = fromset;
key.fromname = (char *) fromset;
found = __tfind (&key, &__gconv_alias_db, __gconv_alias_compare);
fromset_expand = found != NULL ? (*found)->toname : NULL;
key.fromname = toset;
key.fromname = (char *) toset;
found = __tfind (&key, &__gconv_alias_db, __gconv_alias_compare);
toset_expand = found != NULL ? (*found)->toname : NULL;
}

View file

@ -1,4 +1,4 @@
/* Copyright (C) 2000 Free Software Foundation, Inc.
/* Copyright (C) 2000,2001 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
@ -164,7 +164,7 @@ charmap_closedir (CHARMAP_DIR *cdir)
a stream reading its output (the decompressed data). */
static
FILE *
fopen_uncompressed (const char *pathname, char *compressor)
fopen_uncompressed (const char *pathname, const char *compressor)
{
int pfd;
@ -178,7 +178,8 @@ fopen_uncompressed (const char *pathname, char *compressor)
&& S_ISREG (statbuf.st_mode)
&& pipe (fd) >= 0)
{
char *argv[4] = { compressor, "-d", "-c", NULL };
char *argv[4]
= { (char *) compressor, (char *) "-d", (char *) "-c", NULL };
posix_spawn_file_actions_t actions;
if (posix_spawn_file_actions_init (&actions) == 0)

View file

@ -1,6 +1,6 @@
# Rules for MiG interfaces that want to go into the C library.
# Copyright (C) 1991,92,93,94,95,96,98,99 Free Software Foundation, Inc.
# Copyright (C) 1991,92,93,94,95,96,98,99,2001 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
@ -55,6 +55,9 @@ $(objpfx)dummy.mk:
MIGFLAGS = -DMACH_IPC_COMPAT=0 -DSTANDALONE -DTypeCheck=0 \
$(+includes) $(migdefines) -subrprefix __
# Putting CC in the enivronment makes the mig wrapper script
# use the same compiler setup we are using to run cpp.
MIG := CC='${CC}' $(MIG)
.SUFFIXES: .defs # Just to set specified_rule_matched.

View file

@ -16,6 +16,6 @@ const struct error_system __mach_error_systems[err_max_system + 1] =";
}
END {
print " };";
printf "\n\
print "\n\
const int __mach_error_system_count = errlib_count (__mach_error_systems);";
}

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1993, 1994, 1997, 1999 Free Software Foundation, Inc.
/* Copyright (C) 1993,94,97,99,2001 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
@ -65,6 +65,8 @@ extern void mig_reply_setup (const mach_msg_header_t *__request,
mach_msg_header_t *__reply);
/* Idiocy support function. */
extern vm_size_t mig_strncpy (char *__dst, const char *__src, vm_size_t __len);
extern vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t);
extern __inline vm_size_t
__mig_strncpy (char *__dst, const char *__src, vm_size_t __len)
{

View file

@ -1,31 +1,37 @@
/*
/*
* Mach Operating System
* Copyright (c) 1991,1990,1989 Carnegie Mellon University
* All Rights Reserved.
*
*
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
*
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
*
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
*
*
* Carnegie Mellon requests users of this software to return to
*
*
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
*
*
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*/
/*
* HISTORY
* $Log$
* Revision 1.4 2001/04/01 05:03:14 roland
* 2001-03-11 Roland McGrath <roland@frob.com>
*
* * mach/mach_error.h: Fix ancient #endif syntax.
* * hurd/hurdmalloc.c: Likewise.
*
* Revision 1.3 1997/03/16 17:42:25 drepper
* (mach_error_string, mach_error, mach_error_type): Always provide
* prototypes.
@ -53,10 +59,10 @@
*
* Revision 2.2 92/01/16 00:08:10 rpd
* Moved from user collection to mk collection.
*
*
* Revision 2.2 91/03/27 15:39:13 mrt
* First checkin
*
*
*/
/*
* File: mach_error.h
@ -93,4 +99,4 @@ const char *mach_error_type(
mach_error_t error_value
);
#endif _MACH_ERROR_
#endif /* _MACH_ERROR_ */

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1992, 1993, 1995, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1992,93,95,97,2001 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
@ -19,6 +19,7 @@
#include <mach_init.h>
#include <mach/mach_interface.h>
#include <mach/mig_support.h>
#include <unistd.h>
mach_port_t __mach_task_self_;
vm_size_t __vm_page_size = 0; /* Must be data not bss for weak alias. */

View file

@ -1,4 +1,4 @@
# Copyright (C) 1993,94,95,96,97,98,99,2000 Free Software Foundation, Inc.
# Copyright (C) 1993,94,95,96,97,98,99,2000,01 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
@ -149,7 +149,12 @@ lib-noranlib: $(common-objpfx)hurd/libhurduser-link.so
endif
$(link-rpcuserlibs): %-link.so: %_pic.a
$(build-module) -nostdlib -Wl,-soname=$(*F).so$($(*F).so-version)
# The $(build-module) variable now contains a sequence of several commands,
# so we can't tweak the ld command just by adding text to this command line.
$(build-module)
LDFLAGS-link-rpcuserlibs = -nostdlib -Wl,-soname=$(*F).so$($(*F).so-version)
LDFLAGS-libmachuser-link.so = $(LDFLAGS-link-rpcuserlibs)
LDFLAGS-libhurduser-link.so = $(LDFLAGS-link-rpcuserlibs)
# And get them into the libc.so ldscript.
$(inst_libdir)/libc.so: $(rpcuserlibs)

View file

@ -1,5 +1,5 @@
/* Operating system support for run-time dynamic linker. Hurd version.
Copyright (C) 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
Copyright (C) 1995,96,97,98,99,2000,2001 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
@ -36,6 +36,7 @@
#include <stdarg.h>
#include <ctype.h>
#include <sys/stat.h>
#include <sys/uio.h>
#include <entry.h>
#include <dl-machine.h>
@ -554,6 +555,37 @@ __libc_write (int fd, const void *buf, size_t nbytes)
return nwrote;
}
/* This is only used for printing messages (see dl-misc.c). */
__ssize_t weak_function
__writev (int fd, const struct iovec *iov, int niov)
{
int i;
size_t total = 0;
for (i = 0; i < niov; ++i)
total += iov[i].iov_len;
assert (fd < _hurd_init_dtablesize);
if (total != 0)
{
char buf[total], *bufp = buf;
error_t err;
mach_msg_type_number_t nwrote;
for (i = 0; i < niov; ++i)
bufp = (memcpy (bufp, iov[i].iov_base, iov[i].iov_len)
+ iov[i].iov_len);
err = __io_write (_hurd_init_dtable[fd], buf, total, -1, &nwrote);
if (err)
return __hurd_fail (err);
return nwrote;
}
return 0;
}
off_t weak_function
__lseek (int fd, off_t offset, int whence)
{

View file

@ -1,5 +1,5 @@
/* Machine-dependent details of interruptible RPC messaging. i386 version.
Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
Copyright (C) 1995,96,97,99,2001 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
@ -53,20 +53,20 @@ INTR_MSG_BACK_OUT (struct i386_thread_state *state)
#include "hurdfault.h"
static inline int
SYSCALL_EXAMINE (struct i386_thread_state *state, int *callno)
{
struct { unsigned int c[2]; } *p = (void *) (state->eip - 7);
int result;
if (_hurdsig_catch_memory_fault (p))
return 0;
if (result = p->c[0] == 0x0000009a && (p->c[1] & 0x00ffffff) == 0x00000700)
/* The PC is just after an `lcall $7,$0' instruction.
This is a system call in progress; %eax holds the call number. */
*callno = state->eax;
_hurdsig_end_catch_fault ();
return result;
}
/* This cannot be an inline function because it calls setjmp. */
#define SYSCALL_EXAMINE(state, callno) \
({ \
struct { unsigned int c[2]; } *p = (void *) ((state)->eip - 7); \
int result; \
if (_hurdsig_catch_memory_fault (p)) \
return 0; \
if (result = p->c[0] == 0x0000009a && (p->c[1] & 0x00ffffff) == 0x00000700) \
/* The PC is just after an `lcall $7,$0' instruction. \
This is a system call in progress; %eax holds the call number. */ \
*(callno) = (state)->eax; \
_hurdsig_end_catch_fault (); \
result; \
})
struct mach_msg_trap_args
@ -83,35 +83,31 @@ struct mach_msg_trap_args
};
static inline int
MSG_EXAMINE (struct i386_thread_state *state, int *msgid,
mach_port_t *rcv_name, mach_port_t *send_name,
mach_msg_option_t *option, mach_msg_timeout_t *timeout)
{
const struct mach_msg_trap_args *args = (const void *) state->uesp;
mach_msg_header_t *msg;
if (_hurdsig_catch_memory_fault (args))
return -1;
msg = args->msg;
*option = args->option;
*timeout = args->timeout;
*rcv_name = args->rcv_name;
_hurdsig_end_catch_fault ();
if (msg == 0)
{
*send_name = MACH_PORT_NULL;
*msgid = 0;
}
else
{
if (_hurdsig_catch_memory_fault (msg))
return -1;
*send_name = msg->msgh_remote_port;
*msgid = msg->msgh_id;
_hurdsig_end_catch_fault ();
}
return 0;
}
/* This cannot be an inline function because it calls setjmp. */
#define MSG_EXAMINE(state, msgid, rcvname, send_name, opt, tmout) \
({ \
const struct mach_msg_trap_args *args = (const void *) (state)->uesp; \
mach_msg_header_t *msg; \
_hurdsig_catch_memory_fault (args) ? -1 : \
({ \
msg = args->msg; \
*(opt) = args->option; \
*(tmout) = args->timeout; \
*(rcvname) = args->rcv_name; \
_hurdsig_end_catch_fault (); \
if (msg == 0) \
{ \
*(send_name) = MACH_PORT_NULL; \
*(msgid) = 0; \
} \
else \
{ \
if (_hurdsig_catch_memory_fault (msg)) \
return -1; \
*(send_name) = msg->msgh_remote_port; \
*(msgid) = msg->msgh_id; \
_hurdsig_end_catch_fault (); \
} \
0; \
}); \
})

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
/* Copyright (C) 1991,92,94,95,96,97,98,2001 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,6 +23,7 @@ register int *sp asm ("%esp");
#include <hurd/threadvar.h>
#include <hurd/msg.h>
#include <stdlib.h>
#include <string.h>
int
__sigreturn (struct sigcontext *scp)

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1993, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
/* Copyright (C) 1993,94,95,96,97,98,2001 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
@ -20,6 +20,7 @@
#include <limits.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <fcntl.h>
#include <sys/types.h>

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1994, 95, 96, 97, 98 Free Software Foundation, Inc.
/* Copyright (C) 1994,95,96,97,98,2001 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
@ -175,11 +175,10 @@ __stdio_open (filename, m, cookieptr)
/* Open FILENAME with the mode in M. Use the same magic cookie
already in *COOKIEPTR if possible, closing the old cookie with CLOSEFN. */
int
__stdio_reopen (filename, m, cookieptr, closefn)
const char *filename;
__io_mode m;
void **cookieptr;
__io_close_fn closefn;
__stdio_reopen (const char *filename,
__io_mode m,
void **cookieptr,
__io_close_fn closefn)
{
int flags;
file_t port;

View file

@ -1,5 +1,5 @@
/* Machine-specific function to return the stack pointer. i386 version.
Copyright (C) 1994, 1997 Free Software Foundation, Inc.
Copyright (C) 1994,97,2001 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
@ -26,6 +26,7 @@
#define _EXTERN_INLINE extern __inline
#endif
extern void *__thread_stack_pointer (void);
_EXTERN_INLINE void *
__thread_stack_pointer (void)
{

View file

@ -81,8 +81,7 @@ weak_alias (__getpt, getpt)
#ifndef HAVE_POSIX_OPENPT
/* We cannot define posix_openpt in general for BSD systems. */
int
__posix_openpt (oflag)
int oflag;
__posix_openpt (int oflag)
{
__set_errno (ENOSYS);
return -1;