Author: andrew
Date: Thu Jul  2 15:02:59 2015
New Revision: 285044
URL: https://svnweb.freebsd.org/changeset/base/285044

Log:
  Force the dynamic linker to resolve _end early so we pick up the correct
  copy.
  
  Sponsored by: ABT Systems Ltd

Modified:
  head/lib/csu/aarch64/crt1.c

Modified: head/lib/csu/aarch64/crt1.c
==============================================================================
--- head/lib/csu/aarch64/crt1.c Thu Jul  2 14:54:21 2015        (r285043)
+++ head/lib/csu/aarch64/crt1.c Thu Jul  2 15:02:59 2015        (r285044)
@@ -51,6 +51,8 @@ extern int eprol;
 extern int etext;
 #endif
 
+extern long * _end;
+
 void __start(int, char **, char **, void (*)(void));
 
 /* The entry function. */
@@ -79,8 +81,17 @@ __start(int argc, char *argv[], char *en
 
        if (&_DYNAMIC != NULL)
                atexit(cleanup);
-       else
+       else {
+               /*
+                * Hack to resolve _end so we read the correct symbol.
+                * Without this it will resolve to the copy in the library
+                * that firsts requests it. We should fix the toolchain,
+                * however this is is needed until this can take place.
+                */
+               *(volatile long *)&_end;
+
                _init_tls();
+       }
 
 #ifdef GCRT
        atexit(_mcleanup);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to