mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 14:20:07 +00:00
Remove __ASSUME_AT_RANDOM.
This patch removes __ASSUME_AT_RANDOM now it can be assumed to be true unconditionally. Tested x86_64 that the disassembly of installed shared libraries is unchanged by this patch. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_RANDOM): Remove macro. * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard) [!__ASSUME_AT_RANDOM]: Remove conditional code. (_dl_setup_pointer_guard) [!__ASSUME_AT_RANDOM]: Likewise.
This commit is contained in:
parent
a2a76afe91
commit
4a103975c4
@ -1,5 +1,11 @@
|
||||
2014-06-20 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_RANDOM):
|
||||
Remove macro.
|
||||
* sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard)
|
||||
[!__ASSUME_AT_RANDOM]: Remove conditional code.
|
||||
(_dl_setup_pointer_guard) [!__ASSUME_AT_RANDOM]: Likewise.
|
||||
|
||||
* sysdeps/unix/sysv/linux/kernel-features.h
|
||||
(__ASSUME_ADJ_OFFSET_SS_READ): Remove macro.
|
||||
* sysdeps/unix/sysv/linux/adjtime.c (ADJTIME)
|
||||
|
@ -57,39 +57,17 @@ _dl_setup_stack_chk_guard (void *dl_random)
|
||||
unsigned char bytes[sizeof (uintptr_t)];
|
||||
} ret;
|
||||
|
||||
#ifndef __ASSUME_AT_RANDOM
|
||||
if (__glibc_unlikely (dl_random == NULL))
|
||||
{
|
||||
const size_t filllen = sizeof (ret.bytes) - 1;
|
||||
ret.num = 0;
|
||||
# ifdef ENABLE_STACKGUARD_RANDOMIZE
|
||||
int fd = open_not_cancel_2 ("/dev/urandom", O_RDONLY);
|
||||
if (fd >= 0)
|
||||
{
|
||||
ssize_t reslen = read_not_cancel (fd, ret.bytes + 1, filllen);
|
||||
close_not_cancel_no_status (fd);
|
||||
if (reslen == (ssize_t) filllen)
|
||||
return ret.num;
|
||||
}
|
||||
# endif
|
||||
ret.bytes[filllen] = 255;
|
||||
ret.bytes[filllen - 1] = '\n';
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
/* We need in the moment only 8 bytes on 32-bit platforms and 16
|
||||
bytes on 64-bit platforms. Therefore we can use the data
|
||||
directly and not use the kernel-provided data to seed a PRNG. */
|
||||
memcpy (ret.bytes, dl_random, sizeof (ret));
|
||||
/* We need in the moment only 8 bytes on 32-bit platforms and 16
|
||||
bytes on 64-bit platforms. Therefore we can use the data
|
||||
directly and not use the kernel-provided data to seed a PRNG. */
|
||||
memcpy (ret.bytes, dl_random, sizeof (ret));
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
ret.num &= ~(uintptr_t) 0xff;
|
||||
ret.num &= ~(uintptr_t) 0xff;
|
||||
#elif BYTE_ORDER == BIG_ENDIAN
|
||||
ret.num &= ~((uintptr_t) 0xff << (8 * (sizeof (ret) - 1)));
|
||||
ret.num &= ~((uintptr_t) 0xff << (8 * (sizeof (ret) - 1)));
|
||||
#else
|
||||
# error "BYTE_ORDER unknown"
|
||||
#endif
|
||||
}
|
||||
return ret.num;
|
||||
}
|
||||
|
||||
@ -97,18 +75,6 @@ static inline uintptr_t __attribute__ ((always_inline))
|
||||
_dl_setup_pointer_guard (void *dl_random, uintptr_t stack_chk_guard)
|
||||
{
|
||||
uintptr_t ret;
|
||||
#ifndef __ASSUME_AT_RANDOM
|
||||
if (dl_random == NULL)
|
||||
{
|
||||
ret = stack_chk_guard;
|
||||
# ifndef HP_TIMING_NONAVAIL
|
||||
hp_timing_t now;
|
||||
HP_TIMING_NOW (now);
|
||||
ret ^= now;
|
||||
# endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
memcpy (&ret, (char *) dl_random + sizeof (ret), sizeof (ret));
|
||||
memcpy (&ret, (char *) dl_random + sizeof (ret), sizeof (ret));
|
||||
return ret;
|
||||
}
|
||||
|
@ -162,9 +162,6 @@
|
||||
/* Support for the FUTEX_CLOCK_REALTIME flag was added in 2.6.29. */
|
||||
#define __ASSUME_FUTEX_CLOCK_REALTIME 1
|
||||
|
||||
/* Support for the AT_RANDOM auxiliary vector entry was added in 2.6.29. */
|
||||
#define __ASSUME_AT_RANDOM 1
|
||||
|
||||
/* Support for preadv and pwritev was added in 2.6.30. */
|
||||
#define __ASSUME_PREADV 1
|
||||
#define __ASSUME_PWRITEV 1
|
||||
|
Loading…
Reference in New Issue
Block a user