[build] Don't use absolute 0 in dso_handle.ld

LLD is intentionally broken for handling SHN_ABS, STV_HIDDEN symbols.
So avoid using one in __dso_handle.ld.

Change-Id: I78d30ce511f229f46150012705f3af4864e527df
Esse commit está contido em:
Roland McGrath
2017-04-25 13:44:06 -07:00
commit 0e6424c5d7
+6 -1
Ver Arquivo
@@ -9,5 +9,10 @@
* no need for it, so just define the symbol away rather than wasting a
* data word defining it as a real variable somewhere. See
* third_party/ulib/musl/src/exit/atexit.c for a more detailed explanation.
*
* LLD doesn't like it when this uses 0, because it makes that SHN_ABS and
* then is broken about handling STV_HIDDEN SHN_ABS symbols; it defines
* __ehdr_start as not SHN_ABS (though SHN_ABS is the only thing that
* actually makes sense for it), so that avoids the problem.
*/
PROVIDE_HIDDEN(__dso_handle = 0);
PROVIDE_HIDDEN(__dso_handle = __ehdr_start);