función virtual pura llamada en gcc 4.4 pero no en la versión más nueva o clang 3.4
Este es un error específico de Red Hat que no está presente en FSF GCC. No es un problema en su código.
En un sistema con GCC de CentOS 6 y FSF GCC 4.4.7, ambos generan una lista de ensamblaje y ven las diferencias entre los dos, salta un bit:
GCC de CentOS 6 genera
movq $_ZTV8BaseType+16, (%rsp)
mientras que FSF GCC 4.4.7 genera
movq $_ZTV11TypeTextFix+16, (%rsp)
En otras palabras, uno de los parches GCC de Red Hat hace que configure vtable incorrectamente. Esto es parte de tu main
función, puede verlo en su propia lista de ensamblaje poco después de .L48:
.
Red Hat aplica muchos parches a su versión de GCC, y algunos de ellos son parches que afectan la generación de código. Desafortunadamente, uno de ellos parece tener un efecto secundario no deseado.