Sorry about that. This was done on top of the other kaslr patch, I'll rebase both and resend later today. On Wed, Feb 19, 2014 at 7:15 AM, Dave Anderson <anderson@xxxxxxxxxx> wrote: > > > ----- Original Message ----- >> Automatically detext kernel aslr offset >> >> This patch improves support for kernel aslr, to automatically find the >> aslr offset based on the location of the _stext symbol in the vmcore >> info. >> >> Signed-off-by: Andrew Honig <ahonig@xxxxxxxxxx> > > > This patch was created from some interim test version, or > something like that: > > $ patch -p1 < kaslr.patch > patching file netdump.c > Hunk #1 FAILED at 411. > 1 out of 1 hunk FAILED -- saving rejects to file netdump.c.rej > patching file symbols.c > Hunk #1 succeeded at 556 (offset 3 lines). > Hunk #2 FAILED at 625. > 1 out of 2 hunks FAILED -- saving rejects to file symbols.c.rej > $ > > In netdump.c, it's removing stuff that doesn't exist in crash-7.0.5: > >> --- >> netdump.c | 19 ++++++++----------- >> symbols.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- >> 2 files changed, 54 insertions(+), 14 deletions(-) >> >> diff --git a/netdump.c b/netdump.c >> index 8e7ec15..b327649 100644 >> --- a/netdump.c >> +++ b/netdump.c >> @@ -411,18 +411,15 @@ is_netdump(char *file, ulong source_query) >> get_log_from_vmcoreinfo(file, vmcoreinfo_read_string); >> } >> >> - // This is the code where I should read the aslr offset. >> + /* >> + *We may need the _stext_SYMBOL from the vmcore_info to adjust for >> + * kaslr and we may not have gotten it elsewhere. >> + */ >> if (source_query == KDUMP_LOCAL) { >> - long aslr_offset = 0; >> - char *aslr_string = vmcoreinfo_read_string("KERNELOFFSET"); >> - if (aslr_string) { >> - aslr_offset = strtoul(aslr_string, NULL, 16); >> - free (aslr_string); >> - } >> - if (!(kt->flags & RELOC_SET) && aslr_offset > 0) { >> - kt->flags |= RELOC_SET; >> - kt->relocate=aslr_offset * -1; >> - } >> + char *tmpstring = vmcoreinfo_read_string("SYMBOL(_stext)"); >> + kt->vmcoreinfo._stext_SYMBOL = >> + htol(tmpstring, RETURN_ON_ERROR, NULL); >> + free(tmpstring); >> } > > Same thing here in store_symbols(): > >> @@ -588,15 +625,21 @@ store_symbols(bfd *abfd, int dynamic, void *minisyms, >> long symcount, >> st->symcnt = 0; >> sp = st->symtable; >> >> + first = 0; >> + from = (bfd_byte *) minisyms; >> + fromend = from + symcount * size; >> + >> if (machine_type("X86") || machine_type("X86_64")) { >> + /* If kernel aslr offset has not been set, try to guess it. */ >> + if (kt->relocate == 0) >> + derive_kaslr_offset(abfd, dynamic, from, >> + fromend, size, store); >> + >> if (!(kt->flags & RELOC_SET)) >> kt->flags |= RELOC_FORCE; >> } else >> kt->flags &= ~RELOC_SET; >> >> - first = 0; >> - from = (bfd_byte *) minisyms; >> - fromend = from + symcount * size; >> for (; from < fromend; from += size) >> { >> if ((sym = bfd_minisymbol_to_symbol(abfd, dynamic, from, store)) >> -- > > Please redo it against crash-7.0.5. > > Thanks, > Dave > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility