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