summaryrefslogtreecommitdiffstats
path: root/runtime/GCCLibraries
diff options
context:
space:
mode:
authorMisha Brukman <brukman+llvm@gmail.com>2003-12-16 22:57:30 +0000
committerMisha Brukman <brukman+llvm@gmail.com>2003-12-16 22:57:30 +0000
commitb49fa616d47a39193c59d610964276ddb1df732a (patch)
treeba77e0f113eb5975a7302c189ecf2106b993fc79 /runtime/GCCLibraries
parenta28e3cea1c80376a4992a6d06b27ea4276303a65 (diff)
downloadexternal_llvm-b49fa616d47a39193c59d610964276ddb1df732a.zip
external_llvm-b49fa616d47a39193c59d610964276ddb1df732a.tar.gz
external_llvm-b49fa616d47a39193c59d610964276ddb1df732a.tar.bz2
Disable __attribute__((weak)) on Mac OS X and other lame platforms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10489 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'runtime/GCCLibraries')
-rw-r--r--runtime/GCCLibraries/libc/memory.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/runtime/GCCLibraries/libc/memory.c b/runtime/GCCLibraries/libc/memory.c
index a839832..64aef89 100644
--- a/runtime/GCCLibraries/libc/memory.c
+++ b/runtime/GCCLibraries/libc/memory.c
@@ -2,14 +2,29 @@
//
// A lot of this code is ripped gratuitously from glibc and libiberty.
//
-//===----------------------------------------------------------------------===//
+//===---------------------------------------------------------------------===//
#include <stdlib.h>
-void *malloc(size_t) __attribute__((weak));
-void free(void *) __attribute__((weak));
-void *memset(void *, int, size_t) __attribute__((weak));
-void *calloc(size_t nelem, size_t elsize) __attribute__((weak));
+// If we're not being compiled with GCC, turn off attributes. Question is how
+// to handle overriding of memory allocation functions in that case.
+#ifndef __GNUC__
+#define __attribute__(X)
+#endif
+
+// For now, turn off the weak linkage attribute on Mac OS X.
+#if defined(__GNUC__) && defined(__APPLE_CC__)
+#define __ATTRIBUTE_WEAK__
+#elif defined(__GNUC__)
+#define __ATTRIBUTE_WEAK__ __attribute__((weak))
+#else
+#define __ATTRIBUTE_WEAK__
+#endif
+
+void *malloc(size_t) __ATTRIBUTE_WEAK__;
+void free(void *) __ATTRIBUTE_WEAK__;
+void *memset(void *, int, size_t) __ATTRIBUTE_WEAK__;
+void *calloc(size_t nelem, size_t elsize) __ATTRIBUTE_WEAK__;
void *calloc(size_t nelem, size_t elsize) {
void *Result = malloc(nelem*elsize);