Commit 44e51fad authored by Russ Cox's avatar Russ Cox

6l: fix divide by zero in glibc linker.

repeats 8l change http://code.google.com/p/go/source/detail?r=7594e16b5cf9

Fixes #179.

R=iant
https://golang.org/cl/154145
parent 1cdfe9fa
......@@ -320,15 +320,22 @@ doelf(void)
addstring(lookup(".interp", 0), linuxdynld);
/*
* hash table - empty for now.
* we should have to fill it out with an entry for every
* symbol in .dynsym, but it seems to work not to,
* which is fine with me.
* hash table.
* only entries that other objects need to find when
* linking us need to be in the table. right now that is
* no entries.
*
* must have at least 1 bucket, though, to avoid
* a divide by zero bug in some copies of the glibc
* dynamic loader.
*/
s = lookup(".hash", 0);
s->type = SDATA; // TODO: rodata
s->reachable = 1;
s->value += 8; // two leading zeros
adduint32(s, 1); // nbucket
adduint32(s, 1); // nchain
adduint32(s, 0); // bucket 0
adduint32(s, 0); // chain 0
/* dynamic symbol table - first entry all zeros */
s = lookup(".dynsym", 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment