|
@@ -161,10 +161,12 @@ extern unsigned int vdso_enabled;
|
|
/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
|
|
/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
|
|
use of this is to invoke "./ld.so someprog" to test out a new version of
|
|
use of this is to invoke "./ld.so someprog" to test out a new version of
|
|
the loader. We need to make sure that it is out of the way of the program
|
|
the loader. We need to make sure that it is out of the way of the program
|
|
- that it will "exec", and that there is sufficient room for the brk. */
|
|
|
|
-
|
|
|
|
|
|
+ that it will "exec", and that there is sufficient room for the brk. 64-bit
|
|
|
|
+ tasks are aligned to 4GB. */
|
|
extern unsigned long randomize_et_dyn(void);
|
|
extern unsigned long randomize_et_dyn(void);
|
|
-#define ELF_ET_DYN_BASE randomize_et_dyn()
|
|
|
|
|
|
+#define ELF_ET_DYN_BASE (randomize_et_dyn() + (is_32bit_task() ? \
|
|
|
|
+ (STACK_TOP / 3 * 2) : \
|
|
|
|
+ (STACK_TOP / 3 * 2) & ~((1UL << 32) - 1)))
|
|
|
|
|
|
/* This yields a mask that user programs can use to figure out what
|
|
/* This yields a mask that user programs can use to figure out what
|
|
instruction set this CPU supports. */
|
|
instruction set this CPU supports. */
|