On Thu, 2009-06-25 at 01:10 +0200, Robert Millan wrote: > On Wed, Jun 24, 2009 at 03:00:32AM +0200, Robert Millan wrote: > > A possible solution to this could be to make grub_dl_load_core() create a > > copy of the module and work on the copy. This could even be ifdef'ed, > > but I doubt the performance hit would be significant. > > I found a better approach; instead of copiing the whole module, we just > need to copy the symbol tab. A small adjustment to each of the functions > that will access it (grub_dl_resolve_symbols and > grub_arch_dl_relocate_symbols) will make them use the copy instead of > the original.
Massive use of undef seems inelegant. Maybe it's better to use distinctive names instead, e.g. target_Elf_Ehdr v.s. host_Elf_Ehdr? Also, I'm getting many warnings on i386-pc about redefined Elf_Ehdr when compiling on x86_64. Generally, I like the idea for i386-qemu, but for other architectures, the only change is the increased memory consumption. I would be willing to accept this change if you could suggest some universal benefit for all platforms. Otherwise, it would be better to use wrappers like get_header() and put_header() what would do grub_malloc() and grub_free() only if needed and return the original header otherwise. I'm fine with adding the symtab field unconditionally, it doesn't cost much memory. -- Regards, Pavel Roskin _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel