On 2018-Nov-3, at 12:51 PM, Konstantin Belousov <kostikbel at gmail.com> wrote:

> On Sat, Nov 03, 2018 at 12:04:53PM -0700, Mark Millard wrote:
>> 80903 ld-elf.so.1 CALL  
>> mmap(0x10000,0xb000,0<PROT_NONE>,0x6010<MAP_FIXED|MAP_GUARD|MAP_EXCL>,0xffffffff,0x10000,0,0)
>> 80903 ld-elf.so.1 RET   mmap -1 errno 12 Cannot allocate memory
> 
> This is the allocation of VA for the whole binary.  I guess that the normal
> non-PIE binary virtual base on arm is 0x10000.
> 
> I put the arm PIE base at 0x12000, which obviously causes the conflict
> between pre-loaded ld-elf.so.1 and later attempt to mmap the binary at
> the linked address.  In fact I am happy that we added MAP_EXCL and it
> catched the situation.
> 
> You can try to change ET_DYN_LOAD_ADDR on arm:
> 
> diff --git a/sys/arm/include/elf.h b/sys/arm/include/elf.h
> index 7424b45e78f..28fc14e3dae 100644
> --- a/sys/arm/include/elf.h
> +++ b/sys/arm/include/elf.h
> @@ -84,7 +84,7 @@ __ElfType(Auxinfo);
>  */
> #define       MAGIC_TRAMP_NUMBER      0x5c000003
> 
> -#define      ET_DYN_LOAD_ADDR        0x12000
> +#define      ET_DYN_LOAD_ADDR        0x500000
> 
> /* Flags passed in AT_HWCAP. */
> #define       HWCAP_SWP               0x00000001      /* Unsupported, never 
> set.    */

I finally got to building-for, installing-on, booting-the, and
testing-the armv7 issue. The change worked:

# /libexec/ld-elf.so.1 /bin/ls -c1
.cshrc
.history
.k5login
.lesshst
.lldb
.login
.profile
.shrc
.subversion

(and so on).

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)

_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to