From 27f7a71a252ba146b04a1610a3d1c05729b07012 Mon Sep 17 00:00:00 2001 From: Brian Gaeke Date: Thu, 11 Dec 2003 00:24:36 +0000 Subject: [PATCH] Turn off "attribute weak" to pacify Mac OS X's system compiler, which prints a warning whenever it sees it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10391 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/CBackend/CBackend.cpp | 29 +++++++++++++++++++++++++---- lib/Target/CBackend/Writer.cpp | 29 +++++++++++++++++++++++++---- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index 63a5ec8bc34..3d73493d94a 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -585,7 +585,28 @@ static void generateCompilerSpecificCode(std::ostream& Out) { // If we aren't being compiled with GCC, just drop these attributes. Out << "#ifndef __GNUC__ /* Can only support \"linkonce\" vars with GCC */\n" << "#define __attribute__(X)\n" - << "#endif\n"; + << "#endif\n\n"; + +#if 0 + // At some point, we should support "external weak" vs. "weak" linkages. + // On Mac OS X, "external weak" is spelled "__attribute__((weak_import))". + Out << "#if defined(__GNUC__) && defined(__APPLE_CC__)\n" + << "#define __EXTERNAL_WEAK__ __attribute__((weak_import))\n" + << "#elif defined(__GNUC__)\n" + << "#define __EXTERNAL_WEAK__ __attribute__((weak))\n" + << "#else\n" + << "#define __EXTERNAL_WEAK__\n" + << "#endif\n\n"; +#endif + + // For now, turn off the weak linkage attribute on Mac OS X. (See above.) + Out << "#if defined(__GNUC__) && defined(__APPLE_CC__)\n" + << "#define __ATTRIBUTE_WEAK__\n" + << "#elif defined(__GNUC__)\n" + << "#define __ATTRIBUTE_WEAK__ __attribute__((weak))\n" + << "#else\n" + << "#define __ATTRIBUTE_WEAK__\n" + << "#endif\n\n"; } // generateProcessorSpecificCode - This is where we add conditional compilation @@ -683,7 +704,7 @@ void CWriter::printModule(Module *M) { if ((I->hasInternalLinkage() || !MangledGlobals.count(I)) && !I->getIntrinsicID()) { printFunctionSignature(I, true); - if (I->hasWeakLinkage()) Out << " __attribute__((weak))"; + if (I->hasWeakLinkage()) Out << " __ATTRIBUTE_WEAK__"; Out << ";\n"; } } @@ -706,7 +727,7 @@ void CWriter::printModule(Module *M) { if (I->hasLinkOnceLinkage()) Out << " __attribute__((common))"; else if (I->hasWeakLinkage()) - Out << " __attribute__((weak))"; + Out << " __ATTRIBUTE_WEAK__"; Out << ";\n"; } } @@ -722,7 +743,7 @@ void CWriter::printModule(Module *M) { if (I->hasLinkOnceLinkage()) Out << " __attribute__((common))"; else if (I->hasWeakLinkage()) - Out << " __attribute__((weak))"; + Out << " __ATTRIBUTE_WEAK__"; // If the initializer is not null, emit the initializer. If it is null, // we try to avoid emitting large amounts of zeros. The problem with diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp index 63a5ec8bc34..3d73493d94a 100644 --- a/lib/Target/CBackend/Writer.cpp +++ b/lib/Target/CBackend/Writer.cpp @@ -585,7 +585,28 @@ static void generateCompilerSpecificCode(std::ostream& Out) { // If we aren't being compiled with GCC, just drop these attributes. Out << "#ifndef __GNUC__ /* Can only support \"linkonce\" vars with GCC */\n" << "#define __attribute__(X)\n" - << "#endif\n"; + << "#endif\n\n"; + +#if 0 + // At some point, we should support "external weak" vs. "weak" linkages. + // On Mac OS X, "external weak" is spelled "__attribute__((weak_import))". + Out << "#if defined(__GNUC__) && defined(__APPLE_CC__)\n" + << "#define __EXTERNAL_WEAK__ __attribute__((weak_import))\n" + << "#elif defined(__GNUC__)\n" + << "#define __EXTERNAL_WEAK__ __attribute__((weak))\n" + << "#else\n" + << "#define __EXTERNAL_WEAK__\n" + << "#endif\n\n"; +#endif + + // For now, turn off the weak linkage attribute on Mac OS X. (See above.) + Out << "#if defined(__GNUC__) && defined(__APPLE_CC__)\n" + << "#define __ATTRIBUTE_WEAK__\n" + << "#elif defined(__GNUC__)\n" + << "#define __ATTRIBUTE_WEAK__ __attribute__((weak))\n" + << "#else\n" + << "#define __ATTRIBUTE_WEAK__\n" + << "#endif\n\n"; } // generateProcessorSpecificCode - This is where we add conditional compilation @@ -683,7 +704,7 @@ void CWriter::printModule(Module *M) { if ((I->hasInternalLinkage() || !MangledGlobals.count(I)) && !I->getIntrinsicID()) { printFunctionSignature(I, true); - if (I->hasWeakLinkage()) Out << " __attribute__((weak))"; + if (I->hasWeakLinkage()) Out << " __ATTRIBUTE_WEAK__"; Out << ";\n"; } } @@ -706,7 +727,7 @@ void CWriter::printModule(Module *M) { if (I->hasLinkOnceLinkage()) Out << " __attribute__((common))"; else if (I->hasWeakLinkage()) - Out << " __attribute__((weak))"; + Out << " __ATTRIBUTE_WEAK__"; Out << ";\n"; } } @@ -722,7 +743,7 @@ void CWriter::printModule(Module *M) { if (I->hasLinkOnceLinkage()) Out << " __attribute__((common))"; else if (I->hasWeakLinkage()) - Out << " __attribute__((weak))"; + Out << " __ATTRIBUTE_WEAK__"; // If the initializer is not null, emit the initializer. If it is null, // we try to avoid emitting large amounts of zeros. The problem with -- 2.34.1