diff options
author | Keith Owens <kaos@ocs.com.au> | 2005-01-02 23:17:55 +0100 |
---|---|---|
committer | Sam Ravnborg <sam@mars.ravnborg.org> | 2005-01-02 23:17:55 +0100 |
commit | b0d103309812594ebb674eeb4b4a04e0bb2cd79e (patch) | |
tree | c22c884015a9675002a4ab3dbbdcbfa16d38c357 /scripts | |
parent | c97a20fb5b9e2f7e518d689e618971969f1df5cd (diff) | |
download | history-b0d103309812594ebb674eeb4b4a04e0bb2cd79e.tar.gz |
kallsyms: Avoid kallsyms corner case on _etext and _einittext
Avoid kallsyms corner case on _etext and _einittext with
CONFIG_KALLSYMS_ALL=n.
Signed-off-by: Keith Owens <kaos@ocs.com.au>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/kallsyms.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index c07ccfad031982..090ffda4adbc2d 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -184,6 +184,15 @@ symbol_valid(struct sym_entry *s) if ((s->addr < _stext || s->addr > _etext) && (s->addr < _sinittext || s->addr > _einittext)) return 0; + /* Corner case. Discard any symbols with the same value as + * _etext or _einittext, they can move between pass 1 and 2 + * when the kallsyms data is added. If these symbols move then + * they may get dropped in pass 2, which breaks the kallsyms + * rules. + */ + if ((s->addr == _etext && strcmp(s->sym + 1, "_etext")) || + (s->addr == _einittext && strcmp(s->sym + 1, "_einittext"))) + return 0; } /* Exclude symbols which vary between passes. */ |