logan created this revision. logan added reviewers: rengolin, danalbert, kevin.qin, echristo, srhines. logan added a subscriber: cfe-commits. Herald added subscribers: rengolin, aemerson.
This commit adds SHF_ALLOC and SHF_EXECINSTR section flags to .text.__cxa_end_cleanup section. This fixes a link error when we are using integrated-as and ld.gold (with -Wl,--gc-sections and -Wl,--fatal-warnings.) Detailed Explanation: 1. There might be some issue with LLVM integrated-as, so that there is no default section flags for text sections. (This will be fixed in an independent commit.) 2. ld.gold will skip the external symbols in the section without SHF_ALLOC. This is the reason why .text.__cxa_end_cleanup_impl section is discarded even though it is referenced by __cxa_end_cleanup(). This commit workaround the problem by specifying the section flag explicitly. Fix http://llvm.org/PR21292 http://reviews.llvm.org/D15613 Files: src/cxa_exception.cpp Index: src/cxa_exception.cpp =================================================================== --- src/cxa_exception.cpp +++ src/cxa_exception.cpp @@ -334,7 +334,7 @@ } asm ( - " .pushsection .text.__cxa_end_cleanup\n" + " .pushsection .text.__cxa_end_cleanup,\"ax\",%progbits\n" " .globl __cxa_end_cleanup\n" " .type __cxa_end_cleanup,%function\n" "__cxa_end_cleanup:\n"
Index: src/cxa_exception.cpp =================================================================== --- src/cxa_exception.cpp +++ src/cxa_exception.cpp @@ -334,7 +334,7 @@ } asm ( - " .pushsection .text.__cxa_end_cleanup\n" + " .pushsection .text.__cxa_end_cleanup,\"ax\",%progbits\n" " .globl __cxa_end_cleanup\n" " .type __cxa_end_cleanup,%function\n" "__cxa_end_cleanup:\n"
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits