Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys




On 16/03/2010, at 2:44 AM, Izumi Tsutsui wrote:

I've tested with an i386 kernel.  I'd rather not make those changes
conditional so I'll see if I can work out why the Atari kernel would
have problems.  If no CTF section is found then ksyms should behave
exactly as it did before the change, just with an empty CTF section.

Ok, I'll check what happens on initialization,
but should it work even with old bootloaders?

It looks more sanity checks are required in ksyms_addsyms_elf().

---
#ifdef KDTRACE_HOOKS
        /* Find the CTF section */
        shdr = (Elf_Shdr *)((uint8_t *)start + ehdr->e_shoff);
        if (ehdr->e_shstrndx != 0) {
                char *shstr = (uint8_t*)start +
                                shdr[ehdr->e_shstrndx].sh_offset;
                for (i = 1; i < ehdr->e_shnum; i++) {
                        if (shdr[i].sh_type != SHT_PROGBITS)
                                continue;
                        if (strncmp(".SUNW_ctf", &shstr[shdr[i].sh_name] ,10) 
!= 0)
                                continue;
---

My atari kernel hangs in this strncmp().
shstr is 0x4c60f4 and it looks invalid because
kernel end is 0x277d48 and shdr is 0x277d7c.

It looks like the elf header is broken for some reason. If the section header section is not present then its index should have been set to 0.

Darran.


Home | Main Index | Thread Index | Old Index