Thanks Peter! The memcpy has all the details I need. Regards, Asim On 8/18/08, Peter Teoh <htmldeveloper@xxxxxxxxx> wrote: > Looking at kernel/module.c:load_module(): >> >> I was curious how I would find the start and end of a section in >> memory of ".data" section. From the code, I believe it is > > To know that u can see how load_module() identify each section by name: > > exportindex = find_sec(hdr, sechdrs, secstrings, "__ksymtab"); > gplindex = find_sec(hdr, sechdrs, secstrings, "__ksymtab_gpl"); > gplfutureindex = find_sec(hdr, sechdrs, secstrings, > "__ksymtab_gpl_future"); > unusedindex = find_sec(hdr, sechdrs, secstrings, > "__ksymtab_unused"); > unusedgplindex = find_sec(hdr, sechdrs, secstrings, > "__ksymtab_unused_gpl"); > >> sechdr->sh_addr (start). How to reach the end(in memory) since the > > What u said is correct. U can see how load_module() load each > section into memory (from file image) in the following extraction > (look at the memcp() statement - both the start of memory, and size is > indicated). > >> field sechdr->sh_size is physical as per your explanation? (correct as >> well). >> > > /* Transfer each section which specifies SHF_ALLOC */ > DEBUGP("final section addresses:\n"); > for (i = 0; i < hdr->e_shnum; i++) { > void *dest; > > if (!(sechdrs[i].sh_flags & SHF_ALLOC)) > continue; > > if (sechdrs[i].sh_entsize & INIT_OFFSET_MASK) > dest = mod->module_init > + (sechdrs[i].sh_entsize & > ~INIT_OFFSET_MASK); > else > dest = mod->module_core + sechdrs[i].sh_entsize; > > if (sechdrs[i].sh_type != SHT_NOBITS) > memcpy(dest, (void *)sechdrs[i].sh_addr, > > sechdrs[i].sh_size);==============>>>>this is the heart of section > loading. > /* Update sh_addr to point to copy in image. */ > sechdrs[i].sh_addr = (unsigned long)dest; > DEBUGP("\t0x%lx %s\n", sechdrs[i].sh_addr, secstrings > + sechdrs[i].sh_name); > } > > >> >> Regards, >> Asim >> > > > > -- > Regards, > Peter Teoh > -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ