diff options
Diffstat (limited to 'libc/sysdeps/unix')
-rw-r--r-- | libc/sysdeps/unix/sysv/linux/dl-osinfo.h | 4 | ||||
-rw-r--r-- | libc/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c | 27 | ||||
-rw-r--r-- | libc/sysdeps/unix/sysv/linux/sparc/sysdep.h | 7 | ||||
-rw-r--r-- | libc/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c | 2 | ||||
-rw-r--r-- | libc/sysdeps/unix/sysv/linux/x86_64/init-first.c | 4 | ||||
-rw-r--r-- | libc/sysdeps/unix/sysv/linux/x86_64/time.c | 2 |
6 files changed, 31 insertions, 15 deletions
diff --git a/libc/sysdeps/unix/sysv/linux/dl-osinfo.h b/libc/sysdeps/unix/sysv/linux/dl-osinfo.h index 874660be1..780b20ab6 100644 --- a/libc/sysdeps/unix/sysv/linux/dl-osinfo.h +++ b/libc/sysdeps/unix/sysv/linux/dl-osinfo.h @@ -84,8 +84,8 @@ _dl_setup_stack_chk_guard (void *dl_random) return ret.num; } # endif - ret.bytes[filllen - 2] = 255; - ret.bytes[filllen - 3] = '\n'; + ret.bytes[filllen] = 255; + ret.bytes[filllen - 1] = '\n'; } else #endif diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c index e181d9d36..ba44a61c8 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c @@ -154,6 +154,22 @@ __get_clockfreq_via_proc_openprom (void) return result; } +static void set_obp_int (struct openpromio *op, int val) +{ + char *cp = op->oprom_array; + int *ip = (int *) cp; + + *ip = val; +} + +static int get_obp_int (struct openpromio *op) +{ + char *cp = op->oprom_array; + int *ip = (int *) cp; + + return *ip; +} + static hp_timing_t __get_clockfreq_via_dev_openprom (void) { @@ -171,11 +187,11 @@ __get_clockfreq_via_dev_openprom (void) obp_cmd->oprom_size = sizeof (obp_buf) - sizeof (unsigned int); - *(int *) obp_cmd->oprom_array = 0; + set_obp_int (obp_cmd, 0); ret = ioctl (obp_dev_fd, OPROMCHILD, (char *) obp_cmd); if (ret == 0) { - int cur_node = *(int *) obp_cmd->oprom_array; + int cur_node = get_obp_int (obp_cmd); while (cur_node != 0 && cur_node != -1) { @@ -190,15 +206,14 @@ __get_clockfreq_via_dev_openprom (void) strcpy (obp_cmd->oprom_array, "clock-frequency"); ret = ioctl (obp_dev_fd, OPROMGETPROP, (char *) obp_cmd); if (ret == 0) - result = - (hp_timing_t) *(unsigned int *) obp_cmd->oprom_array; + result = (hp_timing_t) get_obp_int (obp_cmd); } obp_cmd->oprom_size = sizeof (obp_buf) - sizeof (unsigned int); - *(int *) obp_cmd->oprom_array = cur_node; + set_obp_int (obp_cmd, cur_node); ret = ioctl (obp_dev_fd, OPROMNEXT, (char *) obp_cmd); if (ret < 0) break; - cur_node = *(int *)obp_cmd->oprom_array; + cur_node = get_obp_int (obp_cmd); } } } diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sysdep.h b/libc/sysdeps/unix/sysv/linux/sparc/sysdep.h index 336c8538b..30144b9f6 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sysdep.h +++ b/libc/sysdeps/unix/sysv/linux/sparc/sysdep.h @@ -23,7 +23,7 @@ #define INLINE_SYSCALL(name, nr, args...) \ ({ INTERNAL_SYSCALL_DECL(err); \ unsigned int resultvar = INTERNAL_SYSCALL(name, err, nr, args); \ - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (resultvar, err), 0)) \ + if (INTERNAL_SYSCALL_ERROR_P (resultvar, err)) \ { \ __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, err)); \ resultvar = 0xffffffff; \ @@ -44,7 +44,8 @@ inline_syscall##nr(__SYSCALL_STRING, err, name, args) #undef INTERNAL_SYSCALL_ERROR_P -#define INTERNAL_SYSCALL_ERROR_P(val, err) ((err) != 0) +#define INTERNAL_SYSCALL_ERROR_P(val, err) \ + ((void) (val), __builtin_expect((err) != 0, 0)) #undef INTERNAL_SYSCALL_ERRNO #define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) @@ -152,7 +153,7 @@ "0" (__g1), "1" (__o0), "2" (__o1), \ "r" (__o2), "r" (__o3), "r" (__o4) : \ __SYSCALL_CLOBBERS); \ - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (__o0, __g1), 0)) \ + if (INTERNAL_SYSCALL_ERROR_P (__o0, __g1)) \ { \ __set_errno (INTERNAL_SYSCALL_ERRNO (__o0, __g1)); \ __o0 = -1L; \ diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c b/libc/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c index a13948b10..e41fddb29 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c +++ b/libc/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c @@ -30,7 +30,7 @@ gettimeofday_ifunc (void) PREPARE_VERSION (linux26, "LINUX_2.6", 61765110); /* If the vDSO is not available we fall back on the old vsyscall. */ - return (_dl_vdso_vsym ("gettimeofday", &linux26) + return (_dl_vdso_vsym ("__vdso_gettimeofday", &linux26) ?: (void *) VSYSCALL_ADDR_vgettimeofday); } __asm (".type __gettimeofday, %gnu_indirect_function"); diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/init-first.c b/libc/sysdeps/unix/sysv/linux/x86_64/init-first.c index 0a9948b3f..e8b52eacb 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/init-first.c +++ b/libc/sysdeps/unix/sysv/linux/x86_64/init-first.c @@ -36,13 +36,13 @@ _libc_vdso_platform_setup (void) { PREPARE_VERSION (linux26, "LINUX_2.6", 61765110); - void *p = _dl_vdso_vsym ("clock_gettime", &linux26); + void *p = _dl_vdso_vsym ("__vdso_clock_gettime", &linux26); if (p == NULL) p = __syscall_clock_gettime; PTR_MANGLE (p); __GI___vdso_clock_gettime = p; - p = _dl_vdso_vsym ("getcpu", &linux26); + p = _dl_vdso_vsym ("__vdso_getcpu", &linux26); /* If the vDSO is not available we fall back on the old vsyscall. */ #define VSYSCALL_ADDR_vgetcpu 0xffffffffff600800 if (p == NULL) diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/time.c b/libc/sysdeps/unix/sysv/linux/x86_64/time.c index 67afff306..0e05ddd52 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/time.c +++ b/libc/sysdeps/unix/sysv/linux/x86_64/time.c @@ -28,7 +28,7 @@ time_ifunc (void) PREPARE_VERSION (linux26, "LINUX_2.6", 61765110); /* If the vDSO is not available we fall back on the old vsyscall. */ - return _dl_vdso_vsym ("time", &linux26) ?: (void *) VSYSCALL_ADDR_vtime; + return _dl_vdso_vsym ("__vdso_time", &linux26) ?: (void *) VSYSCALL_ADDR_vtime; } __asm (".type time, %gnu_indirect_function"); |