1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
---
elf/dl-load.c | 11 +++++++++++
1 file changed, 11 insertions(+)
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1706,6 +1706,17 @@
__set_errno (ENOENT);
return -1;
}
+#ifdef __arm__
+ else if (!VALID_FLOAT_ABI (ehdr->e_flags))
+ {
+ /* This is not a fatal error. On architectures where
+ soft-float and hard-float binaries can be run this
+ might happen. */
+ __close_nocancel (fd);
+ __set_errno (ENOENT);
+ return -1;
+ }
+#endif
else if (ehdr->e_ident[EI_DATA] != byteorder)
{
if (BYTE_ORDER == BIG_ENDIAN)
|