mirror of
https://github.com/golang/go
synced 2024-11-22 05:14:40 -07:00
5l/6l/8l: add a DT_DEBUG dynamic tag to a dynamic ELF binary
This requires making the .dynamic section writable, as the dynamic linker will change the value of the DT_DEBUG tag at runtime. The DT_DEBUG tag is used by gdb to find all loaded shared libraries. R=rsc CC=golang-dev https://golang.org/cl/5189044
This commit is contained in:
parent
0b534bc9c3
commit
a55de2ba61
@ -232,7 +232,7 @@ doelf(void)
|
||||
/* define dynamic elf table */
|
||||
s = lookup(".dynamic", 0);
|
||||
s->reachable = 1;
|
||||
s->type = SELFROSECT;
|
||||
s->type = SELFSECT; // writable
|
||||
|
||||
/*
|
||||
* .dynamic table
|
||||
@ -251,6 +251,7 @@ doelf(void)
|
||||
elfwritedynent(s, DT_PLTREL, DT_REL);
|
||||
elfwritedynentsymsize(s, DT_PLTRELSZ, lookup(".rel.plt", 0));
|
||||
elfwritedynentsym(s, DT_JMPREL, lookup(".rel.plt", 0));
|
||||
elfwritedynent(s, DT_DEBUG, 0);
|
||||
elfwritedynent(s, DT_NULL, 0);
|
||||
}
|
||||
}
|
||||
|
@ -649,7 +649,7 @@ doelf(void)
|
||||
/* define dynamic elf table */
|
||||
s = lookup(".dynamic", 0);
|
||||
s->reachable = 1;
|
||||
s->type = SELFROSECT;
|
||||
s->type = SELFSECT; // writable
|
||||
|
||||
/*
|
||||
* .dynamic table
|
||||
@ -670,6 +670,8 @@ doelf(void)
|
||||
elfwritedynentsymsize(s, DT_PLTRELSZ, lookup(".rela.plt", 0));
|
||||
elfwritedynentsym(s, DT_JMPREL, lookup(".rela.plt", 0));
|
||||
|
||||
elfwritedynent(s, DT_DEBUG, 0);
|
||||
|
||||
// Do not write DT_NULL. elfdynhash will finish it.
|
||||
}
|
||||
}
|
||||
|
@ -607,7 +607,7 @@ doelf(void)
|
||||
/* define dynamic elf table */
|
||||
s = lookup(".dynamic", 0);
|
||||
s->reachable = 1;
|
||||
s->type = SELFROSECT;
|
||||
s->type = SELFSECT; // writable
|
||||
|
||||
/*
|
||||
* .dynamic table
|
||||
@ -627,6 +627,8 @@ doelf(void)
|
||||
elfwritedynentsymsize(s, DT_PLTRELSZ, lookup(".rel.plt", 0));
|
||||
elfwritedynentsym(s, DT_JMPREL, lookup(".rel.plt", 0));
|
||||
|
||||
elfwritedynent(s, DT_DEBUG, 0);
|
||||
|
||||
// Do not write DT_NULL. elfdynhash will finish it.
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user