Fix ARM __cxa_end_cleanup() and gc-sections.
authorLogan Chien <tzuhsiang.chien@gmail.com>
Tue, 22 Dec 2015 14:38:30 +0000 (14:38 +0000)
committerLogan Chien <tzuhsiang.chien@gmail.com>
Tue, 22 Dec 2015 14:38:30 +0000 (14:38 +0000)
commit338d6de5fa4a3f50be288960e1052a9cb1ab9158
treecb7553bbc150f4032013473bab2ee3499a69d77c
parent5176f7ea6b752cf0e1f5cb593d01f126f12f4a7f
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
libcxxabi/src/cxa_exception.cpp