içinde sessiz bir şekilde yok sayılıyor. Ayrı bir işlev kümesini ayrı bir bölüme koymaya çalışıyorum ve GCC ile çalışırken sorun yaşıyorum. Beklediğim gibi clang ilebölüm özniteliği, GCC
namespace /* anonymous */ {
[[gnu::section(".mysection")]]
void regular_func() { }
template <class T>
[[gnu::section(".mysection")]]
void template_func() { }
} // namespace /* anonymous */
void (*ptr1)() = ®ular_func;
void (*ptr2)() = &template_func<int>;
, regular_func
ve template_func<int>
ikisi için de semboller .mysection
yerleştirilir.
$ clang++ -std=c++14 a.cpp -c && objdump -t a.o | grep -E "regular|template"
0000000000000000 l F .mysection 0000000000000006 _ZN12_GLOBAL__N_112regular_funcEv
0000000000000010 l F .mysection 0000000000000006 _ZN12_GLOBAL__N_113template_funcIiEEvv
Ama GCC ile
, fonksiyon şablonu.mysection
yerleştirildi, ancak
.text.*
bölümünde verilmez.
$ g++ -std=c++14 a.cpp -c && objdump -t a.o | grep -E "regular|template"
0000000000000000 l F .mysection 0000000000000007 _ZN12_GLOBAL__N_112regular_funcEv
0000000000000000 l F .text 0000000000000007 _ZN12_GLOBAL__N_113template_funcIiEEvv
Ben clang-3.7.1 ve gcc-5.3.0 kullanıyorum.
gcc'yi şablon örneklenmiş işlevi ayrı bir bölüme yerleştirmeye nasıl zorlayabilirim?
Filed bir hata: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70435 – kukyakya