Skip to content
This repository was archived by the owner on Dec 28, 2020. It is now read-only.

Commit

Permalink
[PATCH] x86_64: Don't define string functions to builtin
Browse files Browse the repository at this point in the history
gcc should handle this anyways, and it causes problems when
sprintf is turned into strcpy by gcc behind our backs and
the C fallback version of strcpy is actually defining __builtin_strcpy

Then drop -ffreestanding from the main Makefile because it isn't
needed anymore and implies -fno-builtin, which is wrong now.
(it was only added for x86-64, so dropping it should be safe)

Noticed by Roman Zippel

Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed Mar 25, 2006
1 parent 681558f commit 6edfba1
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 16 deletions.
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,7 @@ LINUXINCLUDE := -Iinclude \
CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)

CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common \
-ffreestanding
-fno-strict-aliasing -fno-common
AFLAGS := -D__ASSEMBLY__

# Read KERNELRELEASE from .kernelrelease (if it exists)
Expand Down
3 changes: 3 additions & 0 deletions arch/i386/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ include $(srctree)/arch/i386/Makefile.cpu

cflags-$(CONFIG_REGPARM) += -mregparm=3

# temporary until string.h is fixed
cflags-y += -ffreestanding

# Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
# a lot more stack due to the lack of sharing of stacklots:
CFLAGS += $(shell if [ $(call cc-version) -lt 0400 ] ; then echo $(call cc-option,-fno-unit-at-a-time); fi ;)
Expand Down
17 changes: 3 additions & 14 deletions include/asm-x86_64/string.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,26 +40,15 @@ extern void *__memcpy(void *to, const void *from, size_t len);


#define __HAVE_ARCH_MEMSET
#define memset __builtin_memset
void *memset(void *s, int c, size_t n);

#define __HAVE_ARCH_MEMMOVE
void * memmove(void * dest,const void *src,size_t count);

/* Use C out of line version for memcmp */
#define memcmp __builtin_memcmp
int memcmp(const void * cs,const void * ct,size_t count);

/* out of line string functions use always C versions */
#define strlen __builtin_strlen
size_t strlen(const char * s);

#define strcpy __builtin_strcpy
char * strcpy(char * dest,const char *src);

#define strcat __builtin_strcat
char * strcat(char * dest, const char * src);

#define strcmp __builtin_strcmp
char *strcpy(char * dest,const char *src);
char *strcat(char * dest, const char * src);
int strcmp(const char * cs,const char * ct);

#endif /* __KERNEL__ */
Expand Down

0 comments on commit 6edfba1

Please sign in to comment.