mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 10:22:41 +08:00
Update.
2002-12-18 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/sysdep.h: Define ENTER_KERNEL macro. Use it instead of directly int $0x80. * sysdeps/unix/sysv/linux/i386/brk.c: Use ENTER_KERNEL. * sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise. * sysdeps/unix/sysv/linux/i386/mmap.S: Likewise. * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. * sysdeps/unix/sysv/linux/i386/socket.S: Likewise. * sysdeps/unix/sysv/linux/i386/syscall.S: Likewise.
This commit is contained in:
parent
d7913e0e25
commit
f051627fad
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
2002-12-18 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/i386/sysdep.h: Define ENTER_KERNEL macro.
|
||||||
|
Use it instead of directly int $0x80.
|
||||||
|
* sysdeps/unix/sysv/linux/i386/brk.c: Use ENTER_KERNEL.
|
||||||
|
* sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/i386/socket.S: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/i386/syscall.S: Likewise.
|
||||||
|
|
||||||
2002-12-17 Ulrich Drepper <drepper@redhat.com>
|
2002-12-17 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* malloc/malloc.c (mALLOPt): Make sure malloc is initialized.
|
* malloc/malloc.c (mALLOPt): Make sure malloc is initialized.
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
2002-12-18 Ulrich Drepper <drepper@redhat.com>
|
2002-12-18 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use ENTER_KERNEL
|
||||||
|
macro instead of using int $0x80 directly.
|
||||||
|
|
||||||
* sysdeps/pthread/bits/stdio-lock.h: New file.
|
* sysdeps/pthread/bits/stdio-lock.h: New file.
|
||||||
* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: New file.
|
* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: New file.
|
||||||
* sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: New file.
|
* sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: New file.
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
PUSHARGS_##args \
|
PUSHARGS_##args \
|
||||||
DOCARGS_##args \
|
DOCARGS_##args \
|
||||||
movl $SYS_ify (syscall_name), %eax; \
|
movl $SYS_ify (syscall_name), %eax; \
|
||||||
int $0x80 \
|
ENTER_KERNEL \
|
||||||
POPARGS_##args; \
|
POPARGS_##args; \
|
||||||
POPCARGS_##args \
|
POPCARGS_##args \
|
||||||
cmpl $-4095, %eax; \
|
cmpl $-4095, %eax; \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* brk system call for Linux/i386.
|
/* brk system call for Linux/i386.
|
||||||
Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc.
|
Copyright (C) 1995, 1996, 2000, 2002 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -36,10 +36,10 @@ __brk (void *addr)
|
|||||||
{
|
{
|
||||||
void *__unbounded newbrk, *__unbounded scratch;
|
void *__unbounded newbrk, *__unbounded scratch;
|
||||||
|
|
||||||
asm ("movl %%ebx, %1\n" /* Save %ebx in scratch register. */
|
asm ("movl %%ebx, %1\n\t" /* Save %ebx in scratch register. */
|
||||||
"movl %3, %%ebx\n" /* Put ADDR in %ebx to be syscall arg. */
|
"movl %3, %%ebx\n\t" /* Put ADDR in %ebx to be syscall arg. */
|
||||||
"int $0x80 # %2\n" /* Perform the system call. */
|
ENTER_KERNEL "\n\t" /* Perform the system call. */
|
||||||
"movl %1, %%ebx\n" /* Restore %ebx from scratch register. */
|
"movl %1, %%ebx" /* Restore %ebx from scratch register. */
|
||||||
: "=a" (newbrk), "=r" (scratch)
|
: "=a" (newbrk), "=r" (scratch)
|
||||||
: "0" (SYS_ify (brk)), "g" (__ptrvalue (addr)));
|
: "0" (SYS_ify (brk)), "g" (__ptrvalue (addr)));
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
|
/* Copyright (C) 1995,96,97,98,99,2000,2002 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -50,7 +50,7 @@ ENTRY (__mmap)
|
|||||||
movl $SYS_ify(mmap2), %eax /* System call number in %eax. */
|
movl $SYS_ify(mmap2), %eax /* System call number in %eax. */
|
||||||
|
|
||||||
/* Do the system call trap. */
|
/* Do the system call trap. */
|
||||||
int $0x80
|
ENTER_KERNEL
|
||||||
L(skip):
|
L(skip):
|
||||||
/* Restore registers. */
|
/* Restore registers. */
|
||||||
popl %edi
|
popl %edi
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
|
/* Copyright (C) 1995,96,97,98,99,2000,2002 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -65,7 +65,7 @@ ENTRY (BP_SYM (__mmap64))
|
|||||||
|
|
||||||
/* Do the system call trap. */
|
/* Do the system call trap. */
|
||||||
L(do_syscall):
|
L(do_syscall):
|
||||||
int $0x80
|
ENTER_KERNEL
|
||||||
|
|
||||||
/* Restore registers. */
|
/* Restore registers. */
|
||||||
popl %edi
|
popl %edi
|
||||||
@ -110,7 +110,7 @@ L(einval):
|
|||||||
lea ADDR-SVRSP(%esp), %ebx /* Address of args is 1st arg. */
|
lea ADDR-SVRSP(%esp), %ebx /* Address of args is 1st arg. */
|
||||||
|
|
||||||
/* Do the system call trap. */
|
/* Do the system call trap. */
|
||||||
int $0x80
|
ENTER_KERNEL
|
||||||
|
|
||||||
/* Restore registers. */
|
/* Restore registers. */
|
||||||
movl %edx, %ebx
|
movl %edx, %ebx
|
||||||
|
@ -131,9 +131,9 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
|
|||||||
k_newact.sa_restorer = &restore;
|
k_newact.sa_restorer = &restore;
|
||||||
}
|
}
|
||||||
|
|
||||||
asm volatile ("pushl %%ebx\n"
|
asm volatile ("pushl %%ebx\n\t"
|
||||||
"movl %2, %%ebx\n"
|
"movl %2, %%ebx\n\t"
|
||||||
"int $0x80\n"
|
ENTER_KERNEL_STR "\n\t"
|
||||||
"popl %%ebx"
|
"popl %%ebx"
|
||||||
: "=a" (result)
|
: "=a" (result)
|
||||||
: "0" (SYS_ify (sigaction)), "mr" (sig),
|
: "0" (SYS_ify (sigaction)), "mr" (sig),
|
||||||
|
@ -57,7 +57,7 @@ ENTRY (__socket)
|
|||||||
lea 4(%esp), %ecx /* Address of args is 2nd arg. */
|
lea 4(%esp), %ecx /* Address of args is 2nd arg. */
|
||||||
|
|
||||||
/* Do the system call trap. */
|
/* Do the system call trap. */
|
||||||
int $0x80
|
ENTER_KERNEL
|
||||||
|
|
||||||
/* Restore registers. */
|
/* Restore registers. */
|
||||||
movl %edx, %ebx
|
movl %edx, %ebx
|
||||||
@ -89,7 +89,7 @@ L(pseudo_end):
|
|||||||
lea 8(%esp), %ecx /* Address of args is 2nd arg. */
|
lea 8(%esp), %ecx /* Address of args is 2nd arg. */
|
||||||
|
|
||||||
/* Do the system call trap. */
|
/* Do the system call trap. */
|
||||||
int $0x80
|
ENTER_KERNEL
|
||||||
|
|
||||||
/* Restore registers. */
|
/* Restore registers. */
|
||||||
movl %edx, %ebx
|
movl %edx, %ebx
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1995, 1996, 1998 Free Software Foundation, Inc.
|
/* Copyright (C) 1995, 1996, 1998, 2002 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -27,7 +27,7 @@ ENTRY (syscall)
|
|||||||
PUSHARGS_5 /* Save register contents. */
|
PUSHARGS_5 /* Save register contents. */
|
||||||
_DOARGS_5(36) /* Load arguments. */
|
_DOARGS_5(36) /* Load arguments. */
|
||||||
movl 16(%esp), %eax /* Load syscall number into %eax. */
|
movl 16(%esp), %eax /* Load syscall number into %eax. */
|
||||||
int $0x80 /* Do the system call. */
|
ENTER_KERNEL /* Do the system call. */
|
||||||
POPARGS_5 /* Restore register contents. */
|
POPARGS_5 /* Restore register contents. */
|
||||||
cmpl $-4095, %eax /* Check %eax for error. */
|
cmpl $-4095, %eax /* Check %eax for error. */
|
||||||
jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
|
jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
|
||||||
|
@ -159,6 +159,11 @@ __i686.get_pc_thunk.reg: \
|
|||||||
# endif /* _LIBC_REENTRANT */
|
# endif /* _LIBC_REENTRANT */
|
||||||
#endif /* PIC */
|
#endif /* PIC */
|
||||||
|
|
||||||
|
|
||||||
|
/* The original calling convention for system calls on Linux/i386 is
|
||||||
|
to use int $0x80. */
|
||||||
|
#define ENTER_KERNEL int $0x80
|
||||||
|
|
||||||
/* Linux takes system call arguments in registers:
|
/* Linux takes system call arguments in registers:
|
||||||
|
|
||||||
syscall number %eax call-clobbered
|
syscall number %eax call-clobbered
|
||||||
@ -208,7 +213,7 @@ __i686.get_pc_thunk.reg: \
|
|||||||
PUSHARGS_##args \
|
PUSHARGS_##args \
|
||||||
DOARGS_##args \
|
DOARGS_##args \
|
||||||
movl $SYS_ify (syscall_name), %eax; \
|
movl $SYS_ify (syscall_name), %eax; \
|
||||||
int $0x80 \
|
ENTER_KERNEL \
|
||||||
POPARGS_##args
|
POPARGS_##args
|
||||||
|
|
||||||
#define PUSHARGS_0 /* No arguments to push. */
|
#define PUSHARGS_0 /* No arguments to push. */
|
||||||
@ -255,6 +260,10 @@ __i686.get_pc_thunk.reg: \
|
|||||||
|
|
||||||
#else /* !__ASSEMBLER__ */
|
#else /* !__ASSEMBLER__ */
|
||||||
|
|
||||||
|
/* The original calling convention for system calls on Linux/i386 is
|
||||||
|
to use int $0x80. */
|
||||||
|
#define ENTER_KERNEL "int $0x80"
|
||||||
|
|
||||||
/* We need some help from the assembler to generate optimal code. We
|
/* We need some help from the assembler to generate optimal code. We
|
||||||
define some macros here which later will be used. */
|
define some macros here which later will be used. */
|
||||||
asm (".L__X'%ebx = 1\n\t"
|
asm (".L__X'%ebx = 1\n\t"
|
||||||
@ -315,7 +324,7 @@ asm (".L__X'%ebx = 1\n\t"
|
|||||||
asm volatile ( \
|
asm volatile ( \
|
||||||
LOADARGS_##nr \
|
LOADARGS_##nr \
|
||||||
"movl %1, %%eax\n\t" \
|
"movl %1, %%eax\n\t" \
|
||||||
"int $0x80\n\t" \
|
ENTER_KERNEL "\n\t" \
|
||||||
RESTOREARGS_##nr \
|
RESTOREARGS_##nr \
|
||||||
: "=a" (resultvar) \
|
: "=a" (resultvar) \
|
||||||
: "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \
|
: "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \
|
||||||
|
Loading…
Reference in New Issue
Block a user