diff options
| author | Logan Chien <tzuhsiang.chien@gmail.com> | 2015-12-22 14:38:30 +0000 |
|---|---|---|
| committer | Logan Chien <tzuhsiang.chien@gmail.com> | 2015-12-22 14:38:30 +0000 |
| commit | 338d6de5fa4a3f50be288960e1052a9cb1ab9158 (patch) | |
| tree | cb7553bbc150f4032013473bab2ee3499a69d77c | |
| parent | 5176f7ea6b752cf0e1f5cb593d01f126f12f4a7f (diff) | |
| download | bcm5719-llvm-338d6de5fa4a3f50be288960e1052a9cb1ab9158.tar.gz bcm5719-llvm-338d6de5fa4a3f50be288960e1052a9cb1ab9158.zip | |
Fix ARM __cxa_end_cleanup() and gc-sections.
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 problem with LLVM integrated-as. It is not
emitting any 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 flags
explicitly.
Fix http://llvm.org/PR21292
llvm-svn: 256241
| -rw-r--r-- | libcxxabi/src/cxa_exception.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libcxxabi/src/cxa_exception.cpp b/libcxxabi/src/cxa_exception.cpp index a8216df071c..50d1a468cea 100644 --- a/libcxxabi/src/cxa_exception.cpp +++ b/libcxxabi/src/cxa_exception.cpp @@ -334,7 +334,7 @@ __cxa_end_cleanup_impl() } 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" |

