1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00

* sysdeps/sh/dl-machine.h (elf_machine_rela): Remove code using

RESOLVE.

2005-02-07  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-load.c (_dl_map_object_from_fd): Makre sure registers are
	set correctly.

	* sysdeps/unix/sysv/linux/i386/sysdep.h (check_consistency): Define.
This commit is contained in:
Ulrich Drepper
2005-02-08 08:25:22 +00:00
parent dbfc1e0267
commit 606832e6e5
4 changed files with 39 additions and 12 deletions

View File

@ -1,5 +1,5 @@
/* Stack executability handling for GNU dynamic linker. Linux version.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005 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
@ -24,6 +24,7 @@
#include <stdbool.h>
#include <stackinfo.h>
#include <caller.h>
#include <sysdep.h>
#include "kernel-features.h"
@ -38,6 +39,7 @@ _dl_make_stack_executable (void **stack_endp)
/* This gives us the highest/lowest page that needs to be changed. */
uintptr_t page = ((uintptr_t) *stack_endp
& -(intptr_t) GLRO(dl_pagesize));
int result = 0;
/* Challenge the caller. */
if (__builtin_expect (__check_caller (RETURN_ADDRESS (0),
@ -60,7 +62,10 @@ _dl_make_stack_executable (void **stack_endp)
no_growsupdown = true;
else
# endif
return errno;
{
result = errno;
goto out;
}
}
#endif
@ -85,7 +90,10 @@ _dl_make_stack_executable (void **stack_endp)
else
{
if (errno != ENOMEM) /* Unexpected failure mode. */
return errno;
{
result = errno;
goto out;
}
if (size == GLRO(dl_pagesize))
/* We just tried to mprotect the top hole page and failed.
@ -108,7 +116,10 @@ _dl_make_stack_executable (void **stack_endp)
else
{
if (errno != ENOMEM) /* Unexpected failure mode. */
return errno;
{
result = errno;
goto out;
}
if (size == GLRO(dl_pagesize))
/* We just tried to mprotect the lowest hole page and failed.
@ -133,6 +144,11 @@ _dl_make_stack_executable (void **stack_endp)
/* Remember that we changed the permission. */
GL(dl_stack_flags) |= PF_X;
return 0;
out:
#ifdef check_consistency
check_consistency ();
#endif
return result;
}
rtld_hidden_def (_dl_make_stack_executable)