* Failed to build grub2
@ 2007-12-25 9:41 Francis Gendreau
2007-12-25 11:07 ` Robert Millan
0 siblings, 1 reply; 12+ messages in thread
From: Francis Gendreau @ 2007-12-25 9:41 UTC (permalink / raw)
To: grub-devel
[-- Attachment #1: Type: text/plain, Size: 2012 bytes --]
Hello.
I tried to build grub2 after having it checked-out from the repository
tonight (2007/12/25 4:00 EST).
My system is: FreeBSD 6.2-RELEASE-p8 #0: Thu Oct 11 23:11:25 EDT 2007
I am using
{
GNU Make 3.81
gcc version 3.4.6 [FreeBSD] 20060305
GNU assembler 2.15 [FreeBSD] 2004-05-23
aclocal (GNU automake) 1.9.6
autoconf (GNU Autoconf) 2.59
autoheader (GNU Autoconf) 2.59
autom4te (GNU Autoconf) 2.59
automake (GNU automake) 1.9.6
autoreconf (GNU Autoconf) 2.59
autoscan (GNU Autoconf) 2.59
autoupdate (GNU Autoconf) 2.59
ifnames (GNU Autoconf) 2.59
}
The port tree contain the lib LZO required by grub2, but installing the
package did not allow me to pass the configuration stage. So I compiled
and installed the latest (lzo-2.02) in a non-traditionnal location on my
filesystem (~/.local) (abreviation of the paths is done for this email
only).
Prior to configure grub2, I did:
tcsh$ setenv CFLAGS "-I~/.local/include"
tcsh$ setenv LDFLAGS "-L~/.local/lib -llzo2"
tcsh$ setenv PATH /usr/local/gnu-autotools/bin:$PATH
and configured grub2 only with: "--prefix=~/.local/"
Then, used gmake to compile the application and here is the failure:
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.
Thanks in advance.
Francis
[-- Attachment #2: config.log --]
[-- Type: text/x-log, Size: 33374 bytes --]
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by GRUB configure 1.95, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ ./configure --prefix=/home/theotek/.local
## --------- ##
## Platform. ##
## --------- ##
hostname = latsun.main.fg
uname -m = i386
uname -r = 6.2-RELEASE-p8
uname -s = FreeBSD
uname -v = FreeBSD 6.2-RELEASE-p8 #0: Thu Oct 11 23:11:25 EDT 2007 theotek@latsun.main.fg:/usr/obj/usr/src/sys/LATSUN
/usr/bin/uname -p = i386
/bin/uname -X = unknown
/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
PATH: /usr/local/gnu-autotools/bin
PATH: /home/theotek/bin
PATH: /home/jails/no_jail/bin
PATH: /sbin
PATH: /bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /usr/games
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/X11R6/bin
PATH: /home/theotek/bin
## ----------- ##
## Core tests. ##
## ----------- ##
configure:1783: checking build system type
configure:1801: result: i386-unknown-freebsd6.2
configure:1823: checking host system type
configure:1838: result: i386-unknown-freebsd6.2
configure:1860: checking target system type
configure:1875: result: i386-unknown-freebsd6.2
configure:1982: checking for cmp
configure:1998: found /usr/bin/cmp
configure:2009: result: cmp
configure:2030: checking for bison
configure:2046: found /usr/local/bin/bison
configure:2057: result: bison
configure:2087: checking for a BSD-compatible install
configure:2143: result: /usr/bin/install -c
configure:2158: checking for gawk
configure:2174: found /usr/local/bin/gawk
configure:2185: result: gawk
configure:2196: checking whether make sets $(MAKE)
configure:2217: result: yes
configure:2230: checking for ruby
configure:2248: found /usr/local/bin/ruby
configure:2260: result: /usr/local/bin/ruby
configure:2321: checking for gcc
configure:2337: found /usr/bin/gcc
configure:2348: result: gcc
configure:2586: checking for C compiler version
configure:2593: gcc --version >&5
gcc (GCC) 3.4.6 [FreeBSD] 20060305
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:2596: $? = 0
configure:2603: gcc -v >&5
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.6 [FreeBSD] 20060305
configure:2606: $? = 0
configure:2613: gcc -V >&5
gcc: `-V' option must have argument
configure:2616: $? = 1
configure:2639: checking for C compiler default output file name
configure:2666: gcc -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c >&5
configure:2669: $? = 0
configure:2707: result: a.out
configure:2724: checking whether the C compiler works
configure:2734: ./a.out
configure:2737: $? = 0
configure:2754: result: yes
configure:2761: checking whether we are cross compiling
configure:2763: result: no
configure:2766: checking for suffix of executables
configure:2773: gcc -o conftest -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c >&5
configure:2776: $? = 0
configure:2800: result:
configure:2806: checking for suffix of object files
configure:2832: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:2835: $? = 0
configure:2858: result: o
configure:2862: checking whether we are using the GNU C compiler
configure:2891: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:2897: $? = 0
configure:2914: result: yes
configure:2919: checking whether gcc accepts -g
configure:2949: gcc -c -g conftest.c >&5
configure:2955: $? = 0
configure:3054: result: yes
configure:3071: checking for gcc option to accept ISO C89
configure:3145: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:3151: $? = 0
configure:3174: result: none needed
configure:3211: checking for special C compiler options needed for large files
configure:3304: result: no
configure:3310: checking for _FILE_OFFSET_BITS value needed for large files
configure:3345: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:3351: $? = 0
configure:3419: result: no
configure:3561: checking how to run the C preprocessor
configure:3601: gcc -E conftest.c
configure:3607: $? = 0
configure:3638: gcc -E conftest.c
conftest.c:9:28: ac_nonexistent.h: No such file or directory
configure:3644: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:3677: result: gcc -E
configure:3706: gcc -E conftest.c
configure:3712: $? = 0
configure:3743: gcc -E conftest.c
conftest.c:9:28: ac_nonexistent.h: No such file or directory
configure:3749: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:3787: checking for grep that handles long lines and -e
configure:3861: result: /usr/bin/grep
configure:3866: checking for egrep
configure:3944: result: /usr/bin/grep -E
configure:3949: checking for ANSI C header files
configure:3979: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:3985: $? = 0
configure:4084: gcc -o conftest -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c >&5
configure:4087: $? = 0
configure:4093: ./conftest
configure:4096: $? = 0
configure:4113: result: yes
configure:4137: checking for sys/types.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4137: checking for sys/stat.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4137: checking for stdlib.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4137: checking for string.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4137: checking for memory.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4137: checking for strings.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4137: checking for inttypes.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4137: checking for stdint.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4137: checking for unistd.h
configure:4158: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4164: $? = 0
configure:4180: result: yes
configure:4192: checking whether byte ordering is bigendian
configure:4225: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4231: $? = 0
configure:4263: gcc -c -I/home/theotek/.local/include conftest.c >&5
conftest.c: In function `main':
conftest.c:26: error: syntax error before "big"
configure:4269: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h. */
| #include <sys/types.h>
| #include <sys/param.h>
|
| int
| main ()
| {
| #if BYTE_ORDER != BIG_ENDIAN
| not big endian
| #endif
|
| ;
| return 0;
| }
configure:4409: result: no
configure:4428: checking for void *
configure:4458: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4464: $? = 0
configure:4479: result: yes
configure:4486: checking size of void *
configure:4788: gcc -o conftest -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c >&5
configure:4791: $? = 0
configure:4797: ./conftest
configure:4800: $? = 0
configure:4823: result: 4
configure:4833: checking for long
configure:4863: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:4869: $? = 0
configure:4884: result: yes
configure:4891: checking size of long
configure:5193: gcc -o conftest -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c >&5
configure:5196: $? = 0
configure:5202: ./conftest
configure:5205: $? = 0
configure:5228: result: 4
configure:5249: checking for __lzo_init_v2 in -llzo2
configure:5284: gcc -o conftest -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c -llzo2 >&5
configure:5290: $? = 0
configure:5308: result: yes
configure:5452: checking for lzo1x_999_compress
configure:5508: gcc -o conftest -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c -llzo2 >&5
configure:5514: $? = 0
configure:5531: result: yes
configure:5559: checking lzo/lzo1x.h usability
configure:5576: gcc -c -I/home/theotek/.local/include conftest.c >&5
configure:5582: $? = 0
configure:5596: result: yes
configure:5600: checking lzo/lzo1x.h presence
configure:5615: gcc -E conftest.c
conftest.c:21:23: lzo/lzo1x.h: No such file or directory
configure:5621: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define SIZEOF_VOID_P 4
| #define SIZEOF_LONG 4
| /* end confdefs.h. */
| #include <lzo/lzo1x.h>
configure:5635: result: no
configure:5641: WARNING: lzo/lzo1x.h: accepted by the compiler, rejected by the preprocessor!
configure:5643: WARNING: lzo/lzo1x.h: proceeding with the compiler's result
configure:5668: checking for lzo/lzo1x.h
configure:5676: result: yes
configure:5559: checking lzo1x.h usability
configure:5576: gcc -c -I/home/theotek/.local/include conftest.c >&5
conftest.c:55:19: lzo1x.h: No such file or directory
configure:5582: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define SIZEOF_VOID_P 4
| #define SIZEOF_LONG 4
| #define HAVE_LZO_LZO1X_H 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <lzo1x.h>
configure:5596: result: no
configure:5600: checking lzo1x.h presence
configure:5615: gcc -E conftest.c
conftest.c:22:19: lzo1x.h: No such file or directory
configure:5621: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define SIZEOF_VOID_P 4
| #define SIZEOF_LONG 4
| #define HAVE_LZO_LZO1X_H 1
| /* end confdefs.h. */
| #include <lzo1x.h>
configure:5635: result: no
configure:5668: checking for lzo1x.h
configure:5676: result: no
configure:5697: checking for posix_memalign
configure:5753: gcc -o conftest -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c -llzo2 >&5
/var/tmp//ccVfJhes.o(.text+0x1d): In function `main':
: undefined reference to `posix_memalign'
configure:5759: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define SIZEOF_VOID_P 4
| #define SIZEOF_LONG 4
| #define HAVE_LZO_LZO1X_H 1
| /* end confdefs.h. */
| /* Define posix_memalign to an innocuous variant, in case <limits.h> declares posix_memalign.
| For example, HP-UX 11i <limits.h> declares gettimeofday. */
| #define posix_memalign innocuous_posix_memalign
|
| /* System header to define __stub macros and hopefully few prototypes,
| which can conflict with char posix_memalign (); below.
| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
| <limits.h> exists even on freestanding compilers. */
|
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
|
| #undef posix_memalign
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char posix_memalign ();
| /* The GNU C library defines this for functions which it implements
| to always fail with ENOSYS. Some functions are actually named
| something starting with __ and the normal name is an alias. */
| #if defined __stub_posix_memalign || defined __stub___posix_memalign
| choke me
| #endif
|
| int
| main ()
| {
| return posix_memalign ();
| ;
| return 0;
| }
configure:5777: result: no
configure:5697: checking for memalign
configure:5753: gcc -o conftest -I/home/theotek/.local/include -L/home/theotek/.local/lib -llzo2 conftest.c -llzo2 >&5
/var/tmp//cc49zFk9.o(.text+0x1d): In function `main':
: undefined reference to `memalign'
configure:5759: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define SIZEOF_VOID_P 4
| #define SIZEOF_LONG 4
| #define HAVE_LZO_LZO1X_H 1
| /* end confdefs.h. */
| /* Define memalign to an innocuous variant, in case <limits.h> declares memalign.
| For example, HP-UX 11i <limits.h> declares gettimeofday. */
| #define memalign innocuous_memalign
|
| /* System header to define __stub macros and hopefully few prototypes,
| which can conflict with char memalign (); below.
| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
| <limits.h> exists even on freestanding compilers. */
|
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
|
| #undef memalign
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char memalign ();
| /* The GNU C library defines this for functions which it implements
| to always fail with ENOSYS. Some functions are actually named
| something starting with __ and the normal name is an alias. */
| #if defined __stub_memalign || defined __stub___memalign
| choke me
| #endif
|
| int
| main ()
| {
| return memalign ();
| ;
| return 0;
| }
configure:5777: result: no
configure:6241: checking for objcopy
configure:6257: found /usr/bin/objcopy
configure:6268: result: objcopy
configure:6337: checking for strip
configure:6353: found /usr/bin/strip
configure:6364: result: strip
configure:6433: checking for nm
configure:6449: found /usr/bin/nm
configure:6460: result: nm
configure:6508: checking whether optimization for size works
configure:6536: gcc -c -Os conftest.c >&5
configure:6542: $? = 0
configure:6558: result: yes
configure:6568: checking whether -falign-loops works
configure:6596: gcc -c -falign-loops=1 conftest.c >&5
configure:6602: $? = 0
configure:6618: result: yes
configure:6635: checking whether the linker accepts `--build-id=none'
configure:6660: gcc -o conftest -falign-loops=1 -Wl,--build-id=none conftest.c >&5
/usr/bin/ld: unrecognized option '--build-id=none'
/usr/bin/ld: use the --help option for usage information
configure:6666: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define SIZEOF_VOID_P 4
| #define SIZEOF_LONG 4
| #define HAVE_LZO_LZO1X_H 1
| /* end confdefs.h. */
|
| int
| main ()
| {
|
| ;
| return 0;
| }
configure:6682: result: no
configure:6697: checking whether `gcc' accepts `-fstack-protector'
configure:6712: result: no
configure:6733: checking whether objcopy works for absolute addresses
configure:6746: gcc -c -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c:3: warning: no previous prototype for 'cmain'
configure:6749: $? = 0
configure:6759: gcc -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 conftest.o -o conftest.exec
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000002000
configure:6762: $? = 0
configure:6770: objcopy -O binary conftest.exec conftest
configure:6773: $? = 0
configure:6759: gcc -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 conftest.o -o conftest.exec
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000008000
configure:6762: $? = 0
configure:6770: objcopy -O binary conftest.exec conftest
configure:6773: $? = 0
configure:6781: cmp -s conftest.old conftest
configure:6784: $? = 0
configure:6759: gcc -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 conftest.o -o conftest.exec
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000007c00
configure:6762: $? = 0
configure:6770: objcopy -O binary conftest.exec conftest
configure:6773: $? = 0
configure:6781: cmp -s conftest.old conftest
configure:6784: $? = 0
configure:6795: result: yes
configure:6805: checking if C symbols get an underscore after compilation
configure:6820: gcc -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 -S conftest.c
conftest.c:3: warning: no previous prototype for 'func'
configure:6823: $? = 0
configure:6850: result: no
configure:6855: checking if start is defined by the compiler
configure:6881: gcc -o conftest -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c:25: warning: function declaration isn't a prototype
/var/tmp//ccJGNjrq.o(.text+0x5): In function `main':
/home/theotek/Desktop/grub/grub2/conftest.c:26: undefined reference to `start'
configure:6887: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define SIZEOF_VOID_P 4
| #define SIZEOF_LONG 4
| #define HAVE_LZO_LZO1X_H 1
| /* end confdefs.h. */
|
| int
| main ()
| {
| asm ("incl start")
| ;
| return 0;
| }
configure:6906: result: no
configure:6909: checking if _start is defined by the compiler
configure:6935: gcc -o conftest -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c:25: warning: function declaration isn't a prototype
configure:6941: $? = 0
configure:6960: result: yes
configure:6983: checking if __bss_start is defined by the compiler
configure:7009: gcc -o conftest -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c:26: warning: function declaration isn't a prototype
configure:7015: $? = 0
configure:7034: result: yes
configure:7037: checking if edata is defined by the compiler
configure:7063: gcc -o conftest -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c:26: warning: function declaration isn't a prototype
configure:7069: $? = 0
configure:7088: result: yes
configure:7091: checking if _edata is defined by the compiler
configure:7117: gcc -o conftest -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c:26: warning: function declaration isn't a prototype
configure:7123: $? = 0
configure:7142: result: yes
configure:7170: checking if end is defined by the compiler
configure:7196: gcc -o conftest -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c:27: warning: function declaration isn't a prototype
configure:7202: $? = 0
configure:7221: result: yes
configure:7224: checking if _end is defined by the compiler
configure:7250: gcc -o conftest -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c:27: warning: function declaration isn't a prototype
configure:7256: $? = 0
configure:7275: result: yes
configure:7298: checking whether addr32 must be in the same line as the instruction
configure:7309: gcc -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 -c conftest.s
configure:7312: $? = 0
configure:7342: result: yes
configure:7346: checking for .code16 addr32 assembler support
configure:7363: gcc -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 -c conftest.s
configure:7366: $? = 0
configure:7377: result: yes
configure:7380: checking whether an absolute indirect call/jump must not be prefixed with an asterisk
configure:7393: gcc -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 -c conftest.s
configure:7396: $? = 0
configure:7415: result: no
configure:7418: checking if GCC has the regparm=3 bug
configure:7469: gcc -o conftest -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1 conftest.c >&5
conftest.c: In function `main':
conftest.c:47: warning: no previous prototype for 'nestedfunc'
configure:7472: $? = 0
configure:7478: ./conftest
configure:7481: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "1.95"
| #define PACKAGE_STRING "GRUB 1.95"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define _GNU_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define SIZEOF_VOID_P 4
| #define SIZEOF_LONG 4
| #define HAVE_LZO_LZO1X_H 1
| #define START_SYMBOL _start
| #define BSS_START_SYMBOL __bss_start
| #define END_SYMBOL end
| #define ADDR32 addr32
| #define DATA32 data32
| /* end confdefs.h. */
|
| static int
| test (int *n)
| {
| return *n == -1;
| }
|
| static int
| testfunc (int __attribute__ ((__regparm__ (3))) (*hook) (int a, int b, int *c))
| {
| int a = 0;
| int b = 0;
| int c = -1;
| return hook (a, b, &c);
| }
|
| int
| main (void)
| {
| int __attribute__ ((__regparm__ (3))) nestedfunc (int a, int b, int *c)
| {
| return a == b && test (c);
| }
| return testfunc (nestedfunc) ? 0 : 1;
| }
|
configure:7499: result: yes
configure:8242: creating ./config.status
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by GRUB config.status 1.95, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES =
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ./config.status
on latsun.main.fg
config.status:634: creating Makefile
config.status:634: creating gensymlist.sh
config.status:634: creating genkernsyms.sh
config.status:634: creating stamp-h
config.status:634: creating config.h
config.status:879: linking ./include/grub/i386 to include/grub/cpu
config.status:879: linking ./include/grub/i386/pc to include/grub/machine
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_build=i386-unknown-freebsd6.2
ac_cv_c_bigendian=no
ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value=-I/home/theotek/.local/include
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_LDFLAGS_set=set
ac_cv_env_LDFLAGS_value='-L/home/theotek/.local/lib -llzo2'
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_func_lzo1x_999_compress=yes
ac_cv_func_memalign=no
ac_cv_func_posix_memalign=no
ac_cv_header_inttypes_h=yes
ac_cv_header_lzo1x_h=no
ac_cv_header_lzo_lzo1x_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_host=i386-unknown-freebsd6.2
ac_cv_lib_lzo2___lzo_init_v2=yes
ac_cv_objext=o
ac_cv_path_EGREP='/usr/bin/grep -E'
ac_cv_path_GREP=/usr/bin/grep
ac_cv_path_RUBY=/usr/local/bin/ruby
ac_cv_path_install='/usr/bin/install -c'
ac_cv_prog_AWK=gawk
ac_cv_prog_CMP=cmp
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_YACC=bison
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_NM=nm
ac_cv_prog_ac_ct_OBJCOPY=objcopy
ac_cv_prog_ac_ct_STRIP=strip
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_make_make_set=yes
ac_cv_sizeof_long=4
ac_cv_sizeof_void_p=4
ac_cv_sys_file_offset_bits=no
ac_cv_sys_largefile_CC=no
ac_cv_target=i386-unknown-freebsd6.2
ac_cv_type_long=yes
ac_cv_type_void_p=yes
grub_cv_asm_uscore=no
grub_cv_check_edata_symbol=yes
grub_cv_check_end_symbol=yes
grub_cv_check_start_symbol=no
grub_cv_check_uscore_edata_symbol=yes
grub_cv_check_uscore_end_symbol=yes
grub_cv_check_uscore_start_symbol=yes
grub_cv_check_uscore_uscore_bss_start_symbol=yes
grub_cv_i386_asm_absolute_without_asterisk=no
grub_cv_i386_asm_addr32=yes
grub_cv_i386_asm_prefix_requirement=yes
grub_cv_i386_check_nested_functions=yes
grub_cv_prog_objcopy_absolute=yes
## ----------------- ##
## Output variables. ##
## ----------------- ##
AWK='gawk'
CC='gcc'
CFLAGS='-I/home/theotek/.local/include'
CMP='cmp'
CPP='gcc -E'
CPPFLAGS=''
DEFS='-DHAVE_CONFIG_H'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='/usr/bin/grep -E'
EXEEXT=''
GREP='/usr/bin/grep'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
LDFLAGS='-L/home/theotek/.local/lib -llzo2'
LIBCURSES=''
LIBLZO='-llzo2'
LIBOBJS=''
LIBS=' -llzo2'
LTLIBOBJS=''
NM='nm'
OBJCOPY='objcopy'
OBJEXT='o'
PACKAGE_BUGREPORT='bug-grub@gnu.org'
PACKAGE_NAME='GRUB'
PACKAGE_STRING='GRUB 1.95'
PACKAGE_TARNAME='grub'
PACKAGE_VERSION='1.95'
PATH_SEPARATOR=':'
RUBY='/usr/local/bin/ruby'
SET_MAKE=''
SHELL='/usr/local/bin/bash'
STRIP='strip'
TARGET_CC='gcc'
TARGET_CFLAGS='-Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -Os -falign-jumps=1 -falign-loops=1 -falign-functions=1'
TARGET_CPPFLAGS=''
TARGET_LDFLAGS=''
YACC='bison'
ac_ct_CC='gcc'
ac_ct_TARGET_CC=''
bindir='${exec_prefix}/bin'
build='i386-unknown-freebsd6.2'
build_alias=''
build_cpu='i386'
build_os='freebsd6.2'
build_vendor='unknown'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
enable_grub_emu=''
exec_prefix='${prefix}'
host='i386-unknown-freebsd6.2'
host_alias=''
host_cpu='i386'
host_os='freebsd6.2'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
oldincludedir='/usr/include'
pdfdir='${docdir}'
platform='pc'
prefix='/home/theotek/.local'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target='i386-unknown-freebsd6.2'
target_alias=''
target_cpu='i386'
target_os='freebsd6.2'
target_vendor='unknown'
## ----------- ##
## confdefs.h. ##
## ----------- ##
#define PACKAGE_NAME "GRUB"
#define PACKAGE_TARNAME "grub"
#define PACKAGE_VERSION "1.95"
#define PACKAGE_STRING "GRUB 1.95"
#define PACKAGE_BUGREPORT "bug-grub@gnu.org"
#define _GNU_SOURCE 1
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define SIZEOF_VOID_P 4
#define SIZEOF_LONG 4
#define HAVE_LZO_LZO1X_H 1
#define START_SYMBOL _start
#define BSS_START_SYMBOL __bss_start
#define END_SYMBOL end
#define ADDR32 addr32
#define DATA32 data32
#define NESTED_FUNC_ATTR __attribute__ ((__regparm__ (2)))
configure: exit 0
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: Failed to build grub2
2007-12-25 9:41 Failed to build grub2 Francis Gendreau
@ 2007-12-25 11:07 ` Robert Millan
2007-12-25 11:23 ` Francis Gendreau
0 siblings, 1 reply; 12+ messages in thread
From: Robert Millan @ 2007-12-25 11:07 UTC (permalink / raw)
To: The development of GRUB 2
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)
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call, if you are unable to speak?
(as seen on /.)
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: Failed to build grub2
2007-12-25 11:07 ` Robert Millan
@ 2007-12-25 11:23 ` Francis Gendreau
2007-12-25 11:37 ` Bean
2007-12-26 7:15 ` Robert Millan
0 siblings, 2 replies; 12+ messages in thread
From: Francis Gendreau @ 2007-12-25 11:23 UTC (permalink / raw)
To: The development of GRUB 2
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Failed to build grub2
2007-12-25 11:23 ` Francis Gendreau
@ 2007-12-25 11:37 ` Bean
2007-12-26 7:17 ` Robert Millan
2007-12-26 7:15 ` Robert Millan
1 sibling, 1 reply; 12+ messages in thread
From: Bean @ 2007-12-25 11:37 UTC (permalink / raw)
To: The development of GRUB 2
On Dec 25, 2007 7:23 PM, Francis Gendreau <francisgendreau@videotron.ca> 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
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Failed to build grub2
2007-12-25 11:37 ` Bean
@ 2007-12-26 7:17 ` Robert Millan
2007-12-26 11:13 ` Bean
0 siblings, 1 reply; 12+ messages in thread
From: Robert Millan @ 2007-12-26 7:17 UTC (permalink / raw)
To: The development of GRUB 2
On Tue, Dec 25, 2007 at 07:37:04PM +0800, Bean wrote:
>
> 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
I think it has more to do with the op being "leal" instead of "leaw" than
with the addressing argument having 3 members.
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call, if you are unable to speak?
(as seen on /.)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Failed to build grub2
2007-12-26 7:17 ` Robert Millan
@ 2007-12-26 11:13 ` Bean
2007-12-27 9:57 ` Robert Millan
0 siblings, 1 reply; 12+ messages in thread
From: Bean @ 2007-12-26 11:13 UTC (permalink / raw)
To: The development of GRUB 2
On Dec 26, 2007 3:17 PM, Robert Millan <rmh@aybabtu.com> wrote:
> On Tue, Dec 25, 2007 at 07:37:04PM +0800, Bean wrote:
> >
> > 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
>
> I think it has more to do with the op being "leal" instead of "leaw" than
> with the addressing argument having 3 members.
It's a trick to do fast arithmetic using the 32-bit address mode, for example,
leal 10 (%ebx, %eax, 4) , %ecx
means
%ecx = %ebx + %eax * 4 + 10
But some assembler might not allow to use 32-bit address in 16-bit
mode, so you can follow the slow path, for example,
movl %eax, %ecx
shll $2, %ecx
addl %ebx, %ecx
addl $10, %ecx
The two code segment will get the same result, but the second one
doesn't use 32-bit address , so it wouldn't trigger an error.
--
Bean
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Failed to build grub2
2007-12-26 11:13 ` Bean
@ 2007-12-27 9:57 ` Robert Millan
2007-12-27 10:43 ` Bean
0 siblings, 1 reply; 12+ messages in thread
From: Robert Millan @ 2007-12-27 9:57 UTC (permalink / raw)
To: The development of GRUB 2
On Wed, Dec 26, 2007 at 07:13:22PM +0800, Bean wrote:
>
> It's a trick to do fast arithmetic using the 32-bit address mode, for example,
>
> leal 10 (%ebx, %eax, 4) , %ecx
>
> means
>
> %ecx = %ebx + %eax * 4 + 10
Reminds me again why the i386 instruction set is such a big joke ;-)
> But some assembler might not allow to use 32-bit address in 16-bit
> mode, so you can follow the slow path, for example,
Why not force it with .code32 / .code16 ?
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call, if you are unable to speak?
(as seen on /.)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Failed to build grub2
2007-12-27 9:57 ` Robert Millan
@ 2007-12-27 10:43 ` Bean
2007-12-27 11:00 ` Robert Millan
0 siblings, 1 reply; 12+ messages in thread
From: Bean @ 2007-12-27 10:43 UTC (permalink / raw)
To: The development of GRUB 2
On Dec 27, 2007 5:57 PM, Robert Millan <rmh@aybabtu.com> wrote:
> Why not force it with .code32 / .code16 ?
No, you can't use .code32/.code16, it will not cause compile error,
but the machine code is wrong. However, you can write it like this:
.byte 0x66, 0x67
.code32
leal 0x200 + data_start - data_next(%ebx,%eax), %eax
.code16
0x66 and 0x67 is the DATA32 and ADDR32 prefix, it tell the cpu that
the next instruction use different registry and address mode. (16-bit
%ax -> 32-bit %eax, 16-bit address mode to 32-bit address mode).
--
Bean
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Failed to build grub2
2007-12-27 10:43 ` Bean
@ 2007-12-27 11:00 ` Robert Millan
2007-12-27 11:07 ` Bean
0 siblings, 1 reply; 12+ messages in thread
From: Robert Millan @ 2007-12-27 11:00 UTC (permalink / raw)
To: The development of GRUB 2
On Thu, Dec 27, 2007 at 06:43:22PM +0800, Bean wrote:
> On Dec 27, 2007 5:57 PM, Robert Millan <rmh@aybabtu.com> wrote:
> > Why not force it with .code32 / .code16 ?
>
> No, you can't use .code32/.code16, it will not cause compile error,
> but the machine code is wrong. However, you can write it like this:
>
> .byte 0x66, 0x67
> .code32
> leal 0x200 + data_start - data_next(%ebx,%eax), %eax
> .code16
>
> 0x66 and 0x67 is the DATA32 and ADDR32 prefix, it tell the cpu that
> the next instruction use different registry and address mode. (16-bit
> %ax -> 32-bit %eax, 16-bit address mode to 32-bit address mode).
Uhm I recall seeing macros for that already:
kern/i386/pc/startup.S: DATA32 ADDR32 lgdt gdtdesc
I guess those are telling GAS to generate 0x66 and 0x67?
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call, if you are unable to speak?
(as seen on /.)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Failed to build grub2
2007-12-25 11:23 ` Francis Gendreau
2007-12-25 11:37 ` Bean
@ 2007-12-26 7:15 ` Robert Millan
2007-12-27 6:40 ` Francis Gendreau
1 sibling, 1 reply; 12+ messages in thread
From: Robert Millan @ 2007-12-26 7:15 UTC (permalink / raw)
To: The development of GRUB 2
On Tue, Dec 25, 2007 at 06:23:13AM -0500, Francis Gendreau 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!
You mean upgrading binutils, or appliing my suggested change?
> I continue to upgrade my applications, like bison, it seems to misbehave
> on the normal/parser.y file on '%' character.
Can you give more details? Perhaps it'd make sense to work around it.
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call, if you are unable to speak?
(as seen on /.)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Failed to build grub2
2007-12-26 7:15 ` Robert Millan
@ 2007-12-27 6:40 ` Francis Gendreau
0 siblings, 0 replies; 12+ messages in thread
From: Francis Gendreau @ 2007-12-27 6:40 UTC (permalink / raw)
To: The development of GRUB 2
On Wed, 2007-12-26 at 08:15 +0100, Robert Millan wrote:
> On Tue, Dec 25, 2007 at 06:23:13AM -0500, Francis Gendreau 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!
>
> You mean upgrading binutils, or appliing my suggested change?
I was refering to add .code32 before and .code16 after the problematic
lines. The upgrade of binutils on my system will occurs another day.
> > I continue to upgrade my applications, like bison, it seems to misbehave
> > on the normal/parser.y file on '%' character.
>
> Can you give more details? Perhaps it'd make sense to work around it.
Well, bison was yelling for every percent character it encountered into
the file. After a google search on the error, I saw people having the
same problem on other unrelated projects. The solution proposed on the
sites was to upgrade bison. I was using bison 1.75, from the ports of
FreeBSD. An upgrade to 2.03 solved the problem.
Curently, the build stage terminate flawlessly. But I am totally unable
to run the check target of the Makefile because I am failing to locate
the proper package/port that provide the m2c program. I tried the Garden
Point Modula-2 compiler which fails to run the tests. Maybe you could
tell me what application I should install on my system so I can have the
m2c binary ?
Francis Gendreau
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2007-12-27 11:07 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-12-25 9:41 Failed to build grub2 Francis Gendreau
2007-12-25 11:07 ` Robert Millan
2007-12-25 11:23 ` Francis Gendreau
2007-12-25 11:37 ` Bean
2007-12-26 7:17 ` Robert Millan
2007-12-26 11:13 ` Bean
2007-12-27 9:57 ` Robert Millan
2007-12-27 10:43 ` Bean
2007-12-27 11:00 ` Robert Millan
2007-12-27 11:07 ` Bean
2007-12-26 7:15 ` Robert Millan
2007-12-27 6:40 ` Francis Gendreau
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.