> > +  if (relocatable)
> > +    {
> > +      if (base_addr > min_addr)
> > +       grub_multiboot_payload_eip += base_addr - min_addr;
> > +      else
> > +       grub_multiboot_payload_eip -= min_addr - base_addr;
> > +    }
> > +
> >
> Why is it relative to min_addr? Sounds like it should be just an offset

Ugh... IIRC, it has meaning but I forgot what. I will check it.
However, this means that I must put comment here.
 
Is it possible that you have confused link address and minimal loading address? How is entry usually specified in ELF? How do you suggest it should be done in mb headers?

> from base addr. What do ET_DYN files use?

I will take a look.

Daniel


--
Regards
Vladimir 'phcoder' Serbinenko