No es la versión de su kernel el problema.
El cargador de su sistema no es compatible con el nuevo Linux
ABI. Hasta hace relativamente poco tiempo, los binarios ELF de Linux usaban el System V
ABI. Recientemente, en apoyo de STT_GNU_IFUNC, el Linux
Se agregó ABI. Tendrías que actualizar tu sistema Biblioteca C para tener un cargador que admita STT_GNU_IFUNC, y luego también reconocerá objetos ELF con el Linux
tipo ABI.
Consulte la entrada de blog de Dave Miller sobre STT_GNU_IFUNC para Sparc (archivada) para comprender qué hace STT_GNU_IFUNC, si le interesa.
Si tiene en sus manos el cargador de un sistema más nuevo, es posible que pueda hacer que funcione con eso. Pero tendrá que llevar el cargador donde quiera que vaya su programa. Puede compilar su programa para usar ese cargador como se explica aquí, o compilar su programa y parchearlo más tarde usando patchelf, de una manera similar a la que menciono aquí. Pude ejecutar un programa que me estaba dando el OS ABI invalid
error en un linux 2.6.18 (más antiguo que el suyo) que tenía ld-2.5.so, copiando un ld-2.15.so de otro lugar.
NOTA:NO sobrescriba su sistema ld*.so o ld-linux.;-/
Es posible que su glibc haya sido construida con --enable-multiarch
bandera que forzó el uso de ifunc y el nuevo LINUX ABI