m68k-rtems-gcc toolchain build problem on Solaris-7
Paul Cadaret
rtems at usd.com
Tue Dec 30 20:13:01 UTC 2003
Joel/Ralph,
It took my old Ultra-10 quite a while to finish the builds.
I found the problem. As I was double checking everything I did
yesterday, I noticed that the output from
the find command I used to search for all of the ocurrences of
'limits.h' had the following included:
...
../../src/newlib/newlib/libc/include/limits.h
../../src/newlib/newlib/libc/sys/linux/include/limits.h
../../src/newlib/newlib/libc/sys/rtems/include/limits.h
../../src/newlib/newlib/libc/sys/rtems/machine/limits.h
This morning I noticed this and I thought the 'newlib/newlib' part
looked a bit strange.
In reviewing the PDF file documentation again, it says:
4.1.4.2 Using configure and make
...
cd gcc-3.2.3
ln -s ../newlib-1.11.0/newlib .
Also, I just noticed that the unpacked newlib-1.11.0 archive contains a
'newlib' subdir. I just adjusted my
../../src/newlib sym-link to now point to this 'newlib' sub directory
within the unpacked newlib-1.11.0 archive,
re-configured, and re-ran make. The make then ran past the point of the
last error and ultimately completed
without error. A subsequent 'make install' also was run and completed
without error also.
This is not an error in the PDF file. It is my error.
However, perhaps a few extra words of warning about this in the docs
would be appropriate (for dummies like me).
Thanks you very much for responses. Sorry for the trouble.
Paul
------------------------------------------------------------------------
Paul Cadaret wrote:
> Joel ,
> I listed a number of tools at the bottom of my post. I thought it
> would be important. Here's an excerpt.
>
> rtems> type gcc
> gcc is /tools/local/bin/gcc
> rtems> gcc --version
> 2.95.2
> rtems>
>
> Thanks.
> Paul
>
>
> Joel Sherrill wrote:
>
>> What native compiler are you using?
>>
>> --joel
>>
>> Paul Cadaret wrote:
>>
>>> With help from Thomas (see below) I used the files he pointed out at
>>>
>>> ftp://ftp.rtems.com/pub/rtems/releases/4.6.0pre5/tools
>>>
>>> to run the build according to the PDF file at
>>> http://www.rtems.com/onlinedocs/releases/rtemsdocs-4.6.0pre5/share/rtems/pdf/started.pdf
>>>
>>> and I followed the PDF file instructions carefully for:
>>>
>>> 4.1.2 Unarchiving the Tools
>>> 4.1.3 Applying RTEMS Patches,
>>> Apply RTEMS Patch to GCC,
>>> Apply RTEMS Patch to binutils,
>>> Apply RTEMS Patch to newlib
>>> 4.1.4.2 Using configure and make,
>>> Configuring and Building BINUTILS,
>>> Configuring and Building GCC and NEWLIB
>>>
>>> Binutils built and installed without error.
>>>
>>> Building gcc-3.2.3 died as follows:
>>>
>>> 1113
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc/xgcc
>>>
>>> -B/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/
>>> 1113 tools/gcc-3.2.3/build.m68k-rtems/gcc/ -nostdinc
>>>
>>> -B/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/m
>>>
>>> 1113 68k-rtems/newlib/ -isystem
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/m68k-rtems/newlib/targ-i
>>>
>>> 1113 nclude -isystem
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/src/newlib/libc/include
>>>
>>> -B/tools/local.m68k-rtems/m6
>>> 1113 8k-rtems/bin/ -B/tools/local.m68k-rtems/m68k-rtems/lib/
>>> -isystem /tools/local.m68k-rtems/m68k-rtems/include -O2
>>> -I../../src/
>>> 1113 gcc/../newlib/libc/sys/rtems/include -DIN_GCC
>>> -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes
>>> -Wmissing-proto
>>> 1113 types -isystem ./include -g -DHAVE_GTHR_DEFAULT
>>> -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I.
>>> -I../../src/g
>>> 1113 cc -I../../src/gcc/. -I../../src/gcc/config
>>> -I../../src/gcc/../include -DL_floatdisf -c
>>> ../../src/gcc/libgcc2.c
>>> -o libgcc/.
>>> 1113 /_floatdisf.o
>>>
>>> 1114
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc/xgcc
>>>
>>> -B/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/
>>> 1114 tools/gcc-3.2.3/build.m68k-rtems/gcc/ -nostdinc
>>>
>>> -B/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/m
>>>
>>> 1114 68k-rtems/newlib/ -isystem
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/m68k-rtems/newlib/targ-i
>>>
>>> 1114 nclude -isystem
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/src/newlib/libc/include
>>>
>>> -B/tools/local.m68k-rtems/m6
>>> 1114 8k-rtems/bin/ -B/tools/local.m68k-rtems/m68k-rtems/lib/
>>> -isystem /tools/local.m68k-rtems/m68k-rtems/include -O2
>>> -I../../src/
>>> 1114 gcc/../newlib/libc/sys/rtems/include -DIN_GCC
>>> -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes
>>> -Wmissing-proto
>>> 1114 types -isystem ./include -g -DHAVE_GTHR_DEFAULT
>>> -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I.
>>> -I../../src/g
>>> 1114 cc -I../../src/gcc/. -I../../src/gcc/config
>>> -I../../src/gcc/../include -DL_fixunsdfsi -c
>>> ../../src/gcc/libgcc2.c -o libgcc/
>>> 1114 ./_fixunsdfsi.o
>>>
>>> 1115 In file included from
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc/include/syslimits.h:7,
>>>
>>> 1116 from
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc/include/limits.h:11,
>>>
>>> 1117 from ../../src/gcc/libgcc2.c:1166:
>>> 1118
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc/include/limits.h:132:75:
>>>
>>> no include path in whi
>>> 1118 ch to find limits.h
>>> 1119 make[2]: *** [libgcc/./_fixunsdfsi.o] Error 1
>>> 1120 make[2]: Leaving directory
>>>
>>> `/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc'
>>>
>>> 1121 make[1]: *** [stmp-multilib] Error 2
>>> 1122 make[1]: Leaving directory
>>>
>>> `/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc'
>>>
>>> 1123 make: *** [all-gcc] Error 2
>>>
>>> ../../src/gcc/libgcc2.c looks like:
>>>
>>> 1155 #ifdef L_fixunsdfsi
>>> 1156 /* Reenable the normal types, in case limits.h needs
>>> them. */
>>> 1157 #undef char
>>> 1158 #undef short
>>> 1159 #undef int
>>> 1160 #undef long
>>> 1161 #undef unsigned
>>> 1162 #undef float
>>> 1163 #undef double
>>> 1164 #undef MIN
>>> 1165 #undef MAX
>>> 1166 #include <limits.h> <<<============== OK
>>>
>>> Note that ../src/gcc is where I unpacked the gcc-3.2.3 source tree and
>>> applied the patches.
>>> The above file includes ./gcc/include/limits.h:
>>> 9 #ifndef _LIBC_LIMITS_H_
>>> 10 /* Use "..." so that we find syslimits.h only in this same
>>> directory. */
>>> 11 #include "syslimits.h" <<<===============OK
>>> 12 #endif
>>> 13 #ifndef _LIMITS_H___
>>> 14 #define _LIMITS_H___
>>>
>>> The above file includes ./gcc/include/syslimits.h:
>>> 1 /* syslimits.h stands for the system's own limits.h file.
>>> 2 If we can use it ok unmodified, then we install this text.
>>> 3 If fixincludes fixes it, then the fixed version is installed
>>> 4 instead of this text. */
>>> 5
>>> 6 #define _GCC_NEXT_LIMITS_H /* tell gcc's limits.h
>>> to recurse */
>>> 7 #include_next <limits.h> <<<============= dies here
>>> searching
>>> for a secondary instance of limits.h
>>> 8 #undef _GCC_NEXT_LIMITS_H
>>>
>>> What is "the system's own limits.h file" ??? linux? solaris? newlib?
>>> rtems?
>>> The "#include_next" is a feature of the newer gcc's
>>>
>>>
>>> Disecting my build log line 1114 above looks like this:
>>>
>>>
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc/xgcc
>>>
>>> \
>>>
>>>
>>> -B/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc/
>>>
>>> \
>>> -nostdinc \
>>>
>>>
>>> -B/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/m68k-rtems/newlib/
>>>
>>> \
>>> -isystem
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/m68k-rtems/newlib/targ-include
>>>
>>> \
>>> -isystem
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/src/newlib/libc/include
>>>
>>> \
>>> -B/tools/local.m68k-rtems/m68k-rtems/bin/ \
>>> -B/tools/local.m68k-rtems/m68k-rtems/lib/ \
>>> -isystem /tools/local.m68k-rtems/m68k-rtems/include \
>>> -O2 \
>>> -I../../src/gcc/../newlib/libc/sys/rtems/include \
>>> -DIN_GCC -DCROSS_COMPILE \
>>> -W -Wall -Wwrite-strings -Wstrict-prototypes
>>> -Wmissing-prototypes \
>>> -isystem ./include \
>>> -g \
>>> -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED
>>> -Dinhibit_libc \
>>> -I. \
>>> -I. \
>>> -I../../src/gcc \
>>> -I../../src/gcc/. \
>>> -I../../src/gcc/config \
>>> -I../../src/gcc/../include \
>>> -DL_fixunsdfsi \
>>> -c \
>>> ../../src/gcc/libgcc2.c \
>>> -o libgcc/./_fixunsdfsi.o
>>>
>>> From my build directory
>>> (/sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/gcc)
>>>
>>> if I run the command below
>>>
>>> find .. ../../src /tools/local.m68k-rtems -follow -name limits.h
>>> -print
>>>
>>> shows the following:
>>>
>>> find: ../gcc/cp/stage1: No such file or directory
>>> find: ../gcc/cp/stage2: No such file or directory
>>> find: ../gcc/cp/stage3: No such file or directory
>>> find: ../gcc/cp/stage4: No such file or directory
>>> ../gcc/cp/include/limits.h
>>> find: ../gcc/fixinc/stage1: No such file or directory
>>> find: ../gcc/fixinc/stage2: No such file or directory
>>> find: ../gcc/fixinc/stage3: No such file or directory
>>> find: ../gcc/fixinc/stage4: No such file or directory
>>> ../gcc/fixinc/include/limits.h
>>> ../gcc/include/limits.h
>>> ../../src/gcc/fixinc/tests/base/sys/limits.h
>>> ../../src/libstdc++-v3/config/cpu/generic/bits/limits.h
>>> ../../src/libstdc++-v3/include/c_compatibility/limits.h
>>> ../../src/libstdc++-v3/include/c_shadow/limits.h
>>> ../../src/newlib/newlib/libc/include/limits.h
>>> ../../src/newlib/newlib/libc/sys/linux/include/limits.h
>>> ../../src/newlib/newlib/libc/sys/rtems/include/limits.h
>>> ../../src/newlib/newlib/libc/sys/rtems/machine/limits.h
>>>
>>> The above list shows --ALL-- of the instances of files named
>>> "limits.h"
>>> available to this build; in fact, everything
>>> that might possibly pertain to the RTEMS tool sources I downloaded.
>>>
>>>
>>> The file "./include/limits.h" (aka ../gcc/include/limits.h) is the
>>> file
>>> that xgcc finds on line 1166 above.
>>> The file "syslimits.h" tries to use the "#include_next" mechanism to
>>> find a secondary "limits.h", however,
>>> the xgcc include path doesn't have any more files along the path. As
>>> best I can determine the xgcc include path
>>> should effectively be (from top to bottom):
>>> ../../src/gcc/../newlib/libc/sys/rtems/include
>>> .
>>> ../../src/gcc
>>> ../../src/gcc/config
>>> ../../src/gcc/../include
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/build.m68k-rtems/m68k-rtems/newlib/targ-include
>>>
>>>
>>> /sd/c0t8d0/opt1/web/sites/ftp.rtems.com/tools/gcc-3.2.3/src/newlib/libc/include
>>>
>>> /tools/local.m68k-rtems/m68k-rtems/include
>>> ./include
>>>
>>> Since 'configure' builds the makefiles here and I have no idea what it
>>> is trying to accomplish here, I really don't know
>>> what to fix. As best I can tell the Solaris toolchain is broken.
>>>
>>> Some further data:
>>>
>>> rtems> uname -a
>>> SunOS u2 5.7 Generic_106541-08 sun4u sparc
>>> SUNW,UltraSPARC-IIi-Engine
>>>
>>> rtems> perl --version
>>> This is perl, v5.6.0 built for sun4-solaris
>>>
>>> rtems> autoconf --version
>>> autoconf (GNU Autoconf) 2.59
>>>
>>> rtems> automake --version
>>> automake (GNU automake) 1.8
>>>
>>> rtems> gmake --version
>>> GNU Make 3.80
>>>
>>> rtems> gcc --version
>>> 2.95.2
>>>
>>> rtems> type m68k-rtems-as
>>> m68k-rtems-as is /tools/local.m68k-rtems/bin/m68k-rtems-as
>>>
>>> rtems> m68k-rtems-as --version
>>> GNU assembler 2.13.2.1
>>>
>>> I would appreciate some guidance here.
>>>
>>> Thanks much.
>>> Paul
>>> -------------------------------------------------------------------------------------------------------------
>>>
>>> Thomas Doerfler wrote:
>>>
>>> >Paul,
>>> >
>>> >the files you are looking for are actually located under
>>> >
>>> >ftp://ftp.rtems.com/pub/rtems/releases/4.6.0pre5/tools/rtems-4.6-gcc3.2.3newlib1.11.0-1/source/newlib-1.11.0-rtems-20030605.diff
>>>
>>> >
>>> >and
>>> >
>>> >ftp://ftp.rtems.com/pub/rtems/releases/4.6.0pre5/tools/rtems-4.6-gcc3.2.3newlib1.11.0-1/source/gcc-3.2.3-rtems-20030826.diff
>>>
>>> >
>>> >wkr,
>>> > Thomas.
>>> >
>>> >
>>> >
>>> >>The web page
>>> >>http://www.rtems.com/onlinedocs/releases/rtemsdocs-4.6.0pre5/share/rtems/html/
>>>
>>> >>has an entry that referrs to ' Getting Started with RTEMS for C/C++
>>> >>Users
>>> >><http://www.rtems.com/onlinedocs/releases/rtemsdocs-4.6.0pre5/share/rtems/html/started/index.html>'
>>>
>>> >>that is a PDF file
>>> >>'started-6.pdf'.
>>> >>
>>> >>On page 14 of the PDF file it says:
>>> >>
>>> >> RTEMS Speci c Tool Patches and Scripts
>>> >>
>>> >> FTP Site: ftp.rtems.com
>>> >> Directory: /pub/rtems/releases/4.6.0pre5/c_tools/source
>>> >> File: newlib-1.11.0-rtems-20030605.diff
>>> >> File: gcc-3.2.3-rtems-20030507a.diff
>>> >>
>>> >>The directory /pub/rtems/releases/4.6.0pre5/c_tools does not exist.
>>> >>
>>> >>
>>> >>Where can these patch diffs be found now?
>>> >>
>>> >>thanks much.
>>> >>paul
>>> >>
>>> >>
>>> >
>>> >--------------------------------------------
>>> >IMD Ingenieurbuero fuer Microcomputertechnik
>>> >Thomas Doerfler Herbststrasse 8
>>> >D-82178 Puchheim Germany
>>> >email: Thomas.Doerfler at imd-systems.de
>>> >PGP public key available at: http://www.imd-
>>> >systems.de/pgp_keys.htm
>>> >
>>> >
>>> >
>>>
>>>
>>>
>>
>>
>>
>
>
More information about the users
mailing list