1998-07-14 19:39  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/vfscanf.c (ungetc): Use _IO_sputbackc, not _IO_ungetc.
	[_USE_IN_LIBIO] (encode_error): Free cancelation handler.
	(conv_error): Likewise.
	(input_error): Likewise.
	(memory_error): Likewise.

1998-07-12  Mark Kettenis  <kettenis@phys.uva.nl>

	* sysdeps/mach/hurd/dl-sysdep.c: Bring in sync with generic
	implementation.  Include <entry.h>.  Replace references to symbol
	_start with macro ENTRY_POINT.
	(__libc_uid): Remove.
	(__libc_multiple_libcs): New variable.
	(__libc_stack_end): New variable.
	(_dl_hwcap_mask): New variable.
	(_dl_important_hwcaps): New function.
	(_dl_show_auxv): Mark internal.
This commit is contained in:
Ulrich Drepper 1998-07-14 19:43:02 +00:00
parent 19cc96bfe5
commit c764b9a728
5 changed files with 72 additions and 10 deletions

View File

@ -1,3 +1,23 @@
1998-07-14 19:39 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/vfscanf.c (ungetc): Use _IO_sputbackc, not _IO_ungetc.
[_USE_IN_LIBIO] (encode_error): Free cancelation handler.
(conv_error): Likewise.
(input_error): Likewise.
(memory_error): Likewise.
1998-07-12 Mark Kettenis <kettenis@phys.uva.nl>
* sysdeps/mach/hurd/dl-sysdep.c: Bring in sync with generic
implementation. Include <entry.h>. Replace references to symbol
_start with macro ENTRY_POINT.
(__libc_uid): Remove.
(__libc_multiple_libcs): New variable.
(__libc_stack_end): New variable.
(_dl_hwcap_mask): New variable.
(_dl_important_hwcaps): New function.
(_dl_show_auxv): Mark internal.
1998-07-14 Mark Kettenis <kettenis@phys.uva.nl>
* mach/Makefile: Create target directory before generating

View File

@ -1,3 +1,7 @@
1998-07-14 19:38 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/pthread/bits/libc-lock.h: Define __libc_cleanup_end.
1998-07-11 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* Examples/ex6.c: Include <unistd.h> for usleep.

View File

@ -131,6 +131,12 @@ typedef pthread_key_t __libc_key_t;
} \
}
/* Sometimes we have to exit the block in the middle. */
#define __libc_cleanup_end(DOIT) \
if (_avail) { \
_pthread_cleanup_pop_restore (&_buffer, (DOIT)); \
}
/* Create thread-specific key. */
#define __libc_key_create(KEY, DESTRUCTOR) \
(__pthread_key_create != NULL ? __pthread_key_create (KEY, DESTRUCTOR) : 1)

View File

@ -55,30 +55,35 @@
# undef va_list
# define va_list _IO_va_list
# define ungetc(c, s) ((void) ((int) c != EOF && --read_in), \
_IO_ungetc (c, s))
# define ungetc(c, s) ((void) ((int) c == EOF \
|| (--read_in, \
_IO_sputbackc (s, (unsigned char) c))))
# define inchar() (c == EOF ? EOF \
: ((c = _IO_getc_unlocked (s)), \
(void) (c != EOF && ++read_in), c))
# define encode_error() do { \
if (errp != NULL) *errp |= 4; \
_IO_funlockfile (s); \
__libc_cleanup_end (0); \
__set_errno (EILSEQ); \
return done; \
} while (0)
# define conv_error() do { \
if (errp != NULL) *errp |= 2; \
_IO_funlockfile (s); \
__libc_cleanup_end (0); \
return done; \
} while (0)
# define input_error() do { \
_IO_funlockfile (s); \
if (errp != NULL) *errp |= 1; \
__libc_cleanup_end (0); \
return done ?: EOF; \
} while (0)
# define memory_error() do { \
_IO_funlockfile (s); \
__set_errno (ENOMEM); \
__libc_cleanup_end (0); \
return EOF; \
} while (0)
# define ARGCHECK(s, format) \

View File

@ -37,16 +37,24 @@
#include <ctype.h>
#include <sys/stat.h>
#include "dl-machine.h"
#include <entry.h>
#include <dl-machine.h>
#include <dl-procinfo.h>
extern void __mach_init (void);
extern int _dl_argc;
extern char **_dl_argv;
extern char **_environ;
extern void ENTRY_POINT (void);
uid_t __libc_uid;
int __libc_enable_secure;
int __libc_multiple_libcs; /* Defining this here avoids the inclusion
of init-first. */
/* This variable containts the lowest stack address ever used. */
void *__libc_stack_end;
unsigned long int _dl_hwcap_mask = HWCAP_IMPORTANT;
struct hurd_startup_data *_dl_hurd_data;
@ -86,8 +94,6 @@ _dl_sysdep_start (void **start_argptr,
void (*dl_main) (const Elf32_Phdr *phdr, Elf32_Word phent,
Elf32_Addr *user_entry))
{
extern void _start ();
void go (int *argdata)
{
extern unsigned int _dl_skip_args; /* rtld.c */
@ -103,21 +109,20 @@ _dl_sysdep_start (void **start_argptr,
{
static struct hurd_startup_data nodata;
_dl_hurd_data = &nodata;
nodata.user_entry = (vm_address_t) &_start;
nodata.user_entry = (vm_address_t) &ENTRY_POINT;
}
else
_dl_hurd_data = (void *) p;
__libc_uid = __getuid ();
__libc_enable_secure = _dl_hurd_data->flags & EXEC_SECURE;
if (_dl_hurd_data->flags & EXEC_STACK_ARGS &&
_dl_hurd_data->user_entry == 0)
_dl_hurd_data->user_entry = (vm_address_t) &_start;
_dl_hurd_data->user_entry = (vm_address_t) &ENTRY_POINT;
unfmh(); /* XXX */
if (_dl_hurd_data->user_entry == (vm_address_t) &_start)
if (_dl_hurd_data->user_entry == (vm_address_t) &ENTRY_POINT)
/* We were invoked as a command, not as the program interpreter.
The generic ld.so code supports this: it will parse the args
as "ld.so PROGRAM [ARGS...]". For booting the Hurd, we
@ -576,11 +581,33 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
void
internal_function
_dl_show_auxv (void)
{
/* There is nothing to print. Hurd has no auxiliary vector. */
}
/* Return an array of useful/necessary hardware capability names. */
const struct r_strlenpair *
internal_function
_dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
size_t *max_capstrlen)
{
struct r_strlenpair *result;
/* Return an empty array. Hurd has no hardware capabilities. */
result = (struct r_strlenpair *) malloc (sizeof (*result));
if (result == NULL)
_dl_signal_error (ENOMEM, NULL, "cannot create capability list");
result[0].str = (char *) result; /* Does not really matter. */
result[0].len = 0;
*sz = 1;
return result;
}
void weak_function
_dl_sysdep_fatal (const char *msg, ...)
{