From a12a10679017d89194c0dd873f44804b64f71102 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 22 Jan 2012 01:28:18 +0100 Subject: Fix build on 64bit host When stealing the memset function from the 32bit host libc on a 64bit host system, glibc tends to bring unwanted references to _Unwind_Resume, __gcc_personality_v0, etc. So let's stop stealing memset. * kern/strings.c (memset): New function. * Makefile.am (clib_routines): Remove memset. --- Makefile.am | 2 +- kern/strings.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 0c98bfd..319b7e8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -156,7 +156,7 @@ noinst_PROGRAMS += \ gnumach.o # This is the list of routines we decide is OK to steal from the C library. -clib_routines := memcmp memcpy memmove memset \ +clib_routines := memcmp memcpy memmove \ strchr strstr strsep strtok \ htonl htons ntohl ntohs \ udivdi3 __udivdi3 \ diff --git a/kern/strings.c b/kern/strings.c index 80e410e..3676f98 100644 --- a/kern/strings.c +++ b/kern/strings.c @@ -172,3 +172,22 @@ strlen( return string - 1 - ret; } + +/* + * Abstract: + * memset writes value "c" in the "n" bytes starting at address "s". + * The return value is a pointer to the "s" string. + */ + +void * +memset( + void *_s, int c, size_t n) +{ + char *s = _s; + int i; + + for (i = 0; i < n ; i++) + s[i] = c; + + return _s; +} -- cgit v1.2.3