diff options
author | Rich Felker <dalias@aerifal.cx> | 2013-08-01 17:12:23 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2013-08-01 17:12:23 -0400 |
commit | 4a1f55e92fa74ee382909baa96302231f566b5e1 (patch) | |
tree | 0b0cc0ee79ce1a859f1a62a3e0b79c8fde411450 | |
parent | 5db951ef80cae8b627f95b995811bf916c069757 (diff) | |
download | musl-4a1f55e92fa74ee382909baa96302231f566b5e1.zip musl-4a1f55e92fa74ee382909baa96302231f566b5e1.tar.gz musl-4a1f55e92fa74ee382909baa96302231f566b5e1.tar.bz2 |
work around gcc 4.8's generation of self-referential mem* functions at -O3
-rw-r--r-- | Makefile | 3 | ||||
-rwxr-xr-x | configure | 10 |
2 files changed, 13 insertions, 0 deletions
@@ -87,6 +87,9 @@ crt/Scrt1.o: CFLAGS += -fPIC OPTIMIZE_SRCS = $(wildcard $(OPTIMIZE_GLOBS:%=src/%)) $(OPTIMIZE_SRCS:%.c=%.o) $(OPTIMIZE_SRCS:%.c=%.lo): CFLAGS += -O3 +MEMOPS_SRCS = src/string/memcpy.c src/string/memmove.c src/string/memcmp.c src/string/memset.c +$(MEMOPS_SRCS:%.c=%.o) $(MEMOPS_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_MEMOPS) + %.o: $(ARCH)/%.s $(CC) $(CFLAGS_ALL_STATIC) -c -o $@ $< @@ -104,6 +104,7 @@ fi CFLAGS_C99FSE= CFLAGS_AUTO= +CFLAGS_MEMOPS= LDFLAGS_AUTO= OPTIMIZE_GLOBS= prefix=/usr/local/musl @@ -236,6 +237,14 @@ tryflag CFLAGS_C99FSE -fexcess-precision=standard \ || { test "$ARCH" = i386 && tryflag CFLAGS_C99FSE -ffloat-store ; } tryflag CFLAGS_C99FSE -frounding-math +# +# Check for options that may be needed to prevent the compiler from +# generating self-referential versions of memcpy,, memmove, memcmp, +# and memset. Really, we should add a check to determine if this +# option is sufficient, and if not, add a macro to cripple these +# functions with volatile... +# +tryflag CFLAGS_MEMOPS -fno-tree-loop-distribute-patterns # # If debugging is explicitly enabled, don't auto-enable optimizations @@ -403,6 +412,7 @@ syslibdir = $syslibdir CC = $CC CFLAGS= $CFLAGS_AUTO $CFLAGS CFLAGS_C99FSE = $CFLAGS_C99FSE +CFLAGS_MEMOPS = $CFLAGS_MEMOPS CPPFLAGS = $CPPFLAGS LDFLAGS = $LDFLAGS_AUTO $LDFLAGS CROSS_COMPILE = $CROSS_COMPILE |