Index: lib/builtins/assembly.h =================================================================== --- lib/builtins/assembly.h +++ lib/builtins/assembly.h @@ -28,6 +28,7 @@ // tell linker it can break up file at label boundaries #define FILE_LEVEL_DIRECTIVE .subsections_via_symbols #define SYMBOL_IS_FUNC(name) +#define CONST_SECTION .const #elif defined(__ELF__) @@ -39,10 +40,11 @@ #else #define SYMBOL_IS_FUNC(name) .type name,@function #endif +#define CONST_SECTION .section .rodata -#else // !__APPLE__ && !__ELF__ +#elif defined(__WIN32__) -#define HIDDEN_DIRECTIVE(name) +#define HIDDEN(name) #define LOCAL_LABEL(name) .L ## name #define FILE_LEVEL_DIRECTIVE #define SYMBOL_IS_FUNC(name) \ @@ -50,6 +52,11 @@ .scl 2 SEPARATOR \ .type 32 SEPARATOR \ .endef +#define CONST_SECTION .section .rdata,"rd" + +#else + +#error "Unknown platform" #endif Index: lib/builtins/i386/floatdidf.S =================================================================== --- lib/builtins/i386/floatdidf.S +++ lib/builtins/i386/floatdidf.S @@ -7,13 +7,7 @@ #ifdef __i386__ -#if defined(__APPLE__) - .const -#elif defined(__ELF__) - .section .rodata -#else - .section .rdata,"rd" -#endif +CONST_SECTION .balign 16 twop52: Index: lib/builtins/i386/floatundidf.S =================================================================== --- lib/builtins/i386/floatundidf.S +++ lib/builtins/i386/floatundidf.S @@ -17,13 +17,7 @@ #ifdef __i386__ -#if defined(__APPLE__) - .const -#elif defined(__ELF__) - .section .rodata -#else - .section .rdata,"rd" -#endif +CONST_SECTION .balign 16 twop52: Index: lib/builtins/i386/floatundisf.S =================================================================== --- lib/builtins/i386/floatundisf.S +++ lib/builtins/i386/floatundisf.S @@ -18,7 +18,7 @@ #ifdef __i386__ -.const +CONST_SECTION .balign 3 .quad 0x43f0000000000000 @@ -52,13 +52,7 @@ #ifdef __i386__ -#if defined(__APPLE__) - .const -#elif defined(__ELF__) - .section .rodata -#else - .section .rdata,"rd" -#endif +CONST_SECTION .balign 16 twop52: Index: lib/builtins/i386/floatundixf.S =================================================================== --- lib/builtins/i386/floatundixf.S +++ lib/builtins/i386/floatundixf.S @@ -7,13 +7,7 @@ #ifdef __i386__ -#if defined(__APPLE__) - .const -#elif defined(__ELF__) - .section .rodata -#else - .section .rdata,"rd" -#endif +CONST_SECTION .balign 16 twop52: Index: lib/builtins/x86_64/floatundidf.S =================================================================== --- lib/builtins/x86_64/floatundidf.S +++ lib/builtins/x86_64/floatundidf.S @@ -17,13 +17,7 @@ #ifdef __x86_64__ -#if defined(__APPLE__) - .const -#elif defined(__ELF__) - .section .rodata -#else - .section .rdata,"rd" -#endif +CONST_SECTION .balign 16 twop52: Index: lib/builtins/x86_64/floatundisf.S =================================================================== --- lib/builtins/x86_64/floatundisf.S +++ lib/builtins/x86_64/floatundisf.S @@ -7,13 +7,7 @@ #ifdef __x86_64__ -#if defined(__APPLE__) - .literal4 -#elif defined(__ELF__) - .section .rodata -#else - .section .rdata,"rd" -#endif +CONST_SECTION .balign 16 two: Index: lib/builtins/x86_64/floatundixf.S =================================================================== --- lib/builtins/x86_64/floatundixf.S +++ lib/builtins/x86_64/floatundixf.S @@ -7,13 +7,7 @@ #ifdef __x86_64__ -#if defined(__APPLE__) - .const -#elif defined(__ELF__) - .section .rodata -#else - .section .rdata,"rd" -#endif +CONST_SECTION .balign 16 twop64: @@ -42,13 +36,8 @@ #ifdef __x86_64__ -#if defined(__APPLE__) - .const -#elif defined(__ELF__) - .rdata -#else - .section .rdata,"rd" -#endif +CONST_SECTION + .balign 4 twop52: .quad 0x4330000000000000 Index: make/config.mk =================================================================== --- make/config.mk +++ make/config.mk @@ -44,6 +44,6 @@ ### # Common compiler options COMMON_INCLUDES=-I${ProjSrcRoot}/lib -I${ProjSrcRoot}/include -COMMON_CXXFLAGS=-std=c++11 -fno-exceptions -fPIC -funwind-tables $(COMMON_INCLUDES) -COMMON_CFLAGS=-fPIC $(COMMON_INCLUDES) +COMMON_CXXFLAGS=-std=c++11 -fno-exceptions -funwind-tables $(COMMON_INCLUDES) +COMMON_CFLAGS=$(COMMON_INCLUDES) COMMON_ASMFLAGS=$(COMMON_INCLUDES) Index: make/platform/clang_darwin.mk =================================================================== --- make/platform/clang_darwin.mk +++ make/platform/clang_darwin.mk @@ -149,7 +149,7 @@ override CC := $(subst -arch ,-arch_,$(CC)) override CC := $(patsubst -arch_%,,$(CC)) -CFLAGS := -Wall -Werror -O3 -fomit-frame-pointer +CFLAGS := -fPIC -Wall -Werror -O3 -fomit-frame-pointer # Always set deployment target arguments for every build, these libraries should # never depend on the environmental overrides. We simply set them to minimum Index: make/platform/clang_linux.mk =================================================================== --- make/platform/clang_linux.mk +++ make/platform/clang_linux.mk @@ -89,7 +89,7 @@ ### -CFLAGS := -Wall -Werror -O3 -fomit-frame-pointer +CFLAGS := -fPIC -Wall -Werror -O3 -fomit-frame-pointer SANITIZER_CFLAGS := -fPIE -fno-builtin -gline-tables-only CFLAGS.builtins-i386 := $(CFLAGS) -m32 Index: make/platform/darwin_bni.mk =================================================================== --- make/platform/darwin_bni.mk +++ make/platform/darwin_bni.mk @@ -29,7 +29,7 @@ DEPLOYMENT_FLAGS += -isysroot $(SDKROOT) endif -CFLAGS := -Wall -Os -fomit-frame-pointer -g $(DEPLOYMENT_FLAGS) +CFLAGS := -fPIC -Wall -Os -fomit-frame-pointer -g $(DEPLOYMENT_FLAGS) CFLAGS.Static := $(CFLAGS) -static DYLIB_FLAGS := $(DEPLOYMENT_FLAGS) \ -Xarch_arm -Wl,-alias_list,$(SRCROOT)/lib/arm/softfloat-alias.list Index: make/platform/darwin_fat.mk =================================================================== --- make/platform/darwin_fat.mk +++ make/platform/darwin_fat.mk @@ -39,7 +39,7 @@ CC := clang -CFLAGS := -Wall -Werror +CFLAGS := -fPIC -Wall -Werror CFLAGS.Debug := $(CFLAGS) -g CFLAGS.Release := $(CFLAGS) -O3 -fomit-frame-pointer CFLAGS.Profile := $(CFLAGS) -pg -g