grub-devel
[Top][All Lists]
Advanced

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

Re: Failed to build grub2


From: Bean
Subject: Re: Failed to build grub2
Date: Tue, 25 Dec 2007 19:37:04 +0800

On Dec 25, 2007 7:23 PM, Francis Gendreau <address@hidden> wrote:
> On Tue, 2007-12-25 at 12:07 +0100, Robert Millan wrote:
> > On Tue, Dec 25, 2007 at 04:41:27AM -0500, Francis Gendreau wrote:
> > >             GNU assembler 2.15 [FreeBSD] 2004-05-23
> > > [...]
> > > gcc -Iboot/i386/pc -I./boot/i386/pc -I. -Iinclude -I./include -Wall -W
> > > -DASM_FILE=1  -nostdinc -fno-builtin -m32 -MD -c -o
> > > lnxboot_img-boot_i386_pc_lnxboot.o boot/i386/pc/lnxboot.S
> > > lnxboot.S: Assembler messages:
> > > lnxboot.S:49: Error: `0x200+data_start - data_next(%ebx,%eax)' is not a
> > > valid 16 bit base/index expression
> > > lnxboot.S:264: Error: `(%esi,%eax)' is not a valid 16 bit base/index
> > > expression
> > > lnxboot.S:265: Error: `(%edi,%eax)' is not a valid 16 bit base/index
> > > expression
> > > gmake: *** [lnxboot_img-boot_i386_pc_lnxboot.o] Error 1
> > >
> > > I hope someone here may have a clue how to fix the problem. I ignore
> > > almost everything about the Assembly language.
> >
> > I don't see anything wrong in the code (`(%esi,%eax)' is indeed not a valid
> > 16 bit base/index, but it AFAICT it isn't meant to be).
> >
> > However, your binutils are a bit old.  Perhaps this is a bug they fixed ?
> >
> > Anyway, maybe this solves the problem for you:
> >
> > +       .code32
> >         leal    0x200 + data_start - data_next(%ebx,%eax), %eax
> > +       .code16
> >
> > (please report if it does)
> >
> Yes it did, thanks!
>
> I continue to upgrade my applications, like bison, it seems to misbehave
> on the normal/parser.y file on '%' character.
>
> Have a happy year! (in advance)
>
> Francis

I use the 32-bit address to save space, maybe your compiler doesn't
support it. anyway, you can try the following transformation:

leal    0x200 + data_start - data_next(%ebx,%eax), %eax

->

addl %ebx, %eax
addl $(0x200 + data_start - data_next), %eax

-----------

leal    (%esi, %eax), %esi
leal    (%edi, %eax), %edi

->

addl %eax, %esi
addl %eax, %edi


-- 
Bean




reply via email to

[Prev in Thread] Current Thread [Next in Thread]