Page MenuHomeFreeBSD

D12274.id.diff
No OneTemporary

D12274.id.diff

Index: UPDATING
===================================================================
--- UPDATING
+++ UPDATING
@@ -51,6 +51,13 @@
****************************** SPECIAL WARNING: ******************************
+20170908:
+ For 32-bit arm compiled for hard-float support, soft-floating point
+ binaries now always get their shared libraries from
+ LD_SOFT_LIBRARY_PATH (in the past, this was only used if
+ /usr/libsoft also existed). Only users with a hard-float ld.so, but
+ soft-float everything else should be affected.
+
20170826:
During boot the geli passphrase will be hidden. To restore previous
behavior see geli(8) configuration options.
Index: libexec/rtld-elf/arm/reloc.c
===================================================================
--- libexec/rtld-elf/arm/reloc.c
+++ libexec/rtld-elf/arm/reloc.c
@@ -18,6 +18,14 @@
#include "rtld.h"
#include "paths.h"
+#ifdef __ARM_FP
+/*
+ * On processors that have hard floating point supported, we also support
+ * running soft float binaries. If we're being built with hard float support,
+ * check the ELF headers to make sure that this is a hard float binary. If it is
+ * a soft float binary, force the dynamic linker to use the altnerative soft
+ * float path.
+ */
void
arm_abi_variant_hook(Elf_Auxinfo **aux_info)
{
@@ -39,17 +47,6 @@
if ((ehdr & EF_ARM_VFP_FLOAT) != 0)
return;
- /*
- * If there's no /usr/libsoft, then we don't have a system with both
- * hard and soft float. In that case, hope for the best and just
- * return. Such systems are required to have all soft or all hard
- * float ABI binaries and libraries. This is, at best, a transition
- * compatibility hack. Once we're fully hard-float, this should
- * be removed.
- */
- if (stat("/usr/libsoft", &sb) != 0 || !S_ISDIR(sb.st_mode))
- return;
-
/*
* This is a soft float ABI binary. We need to use the soft float
* settings.
@@ -60,6 +57,7 @@
ld_standard_library_path = SOFT_STANDARD_LIBRARY_PATH;
ld_env_prefix = LD_SOFT_;
}
+#endif
void
init_pltgot(Obj_Entry *obj)
Index: libexec/rtld-elf/arm/rtld_machdep.h
===================================================================
--- libexec/rtld-elf/arm/rtld_machdep.h
+++ libexec/rtld-elf/arm/rtld_machdep.h
@@ -31,6 +31,7 @@
#include <sys/types.h>
#include <machine/atomic.h>
+#include <machine/acle-compat.h>
struct Struct_Obj_Entry;
@@ -74,7 +75,9 @@
extern void arm_abi_variant_hook(Elf_Auxinfo **);
+#ifdef __ARM_FP
#define md_abi_variant_hook(x) arm_abi_variant_hook(x)
#define RTLD_VARIANT_ENV_NAMES
+#endif
#endif

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 13, 7:05 PM (21 h, 51 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23641113
Default Alt Text
D12274.id.diff (2 KB)

Event Timeline