Commit Graph

2063 Commits

Author SHA1 Message Date
Joel Sherrill
3108b76c7d Regenerated. 1999-03-25 01:02:33 +00:00
Joel Sherrill
0bf2ff8179 utime.h moved to c/src/lib/include/sys since it is needed by some libc
routines.
1999-03-24 23:15:20 +00:00
Joel Sherrill
244ecd9fb8 These files were not added as part of a recent patch from
Ralf Corsepius <corsepiu@faw.uni-ulm.de>.
1999-03-24 23:14:36 +00:00
Joel Sherrill
a432c4b710 Fix based on bug report from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
There seems to be an ugly dependency between posix-headers and
    libcsupport.

    Configuring rtems with
    ../rtems-rc-19990324-0/configure \
    --target=i386-rtems \
    --prefix=<somewhere> \
    --disable-posix

    "make RTEMS_BSP=pc386" results into:

    [...]
    /opt/rtems/bin/i386-rtems-gcc --pipe
    -B/users/rtems/src/multi/build/pc386/lib/ -specs bsp_specs -qrtems
    -I/users/rtems/src/multi/build/pc386/lib/include/networking  -g -Wall
    -ansi -fasm  -O4 -fomit-frame-pointer    -c -o o-pc386/utime.o
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c
    In file included from
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:16:
    /opt/rtems/i386-rtems/include/utime.h:4: sys/utime.h: No such file or
    directory
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:24: warning:
    `struct utimbuf' declared inside parameter list
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:24: warning:
    its scope is only this definition or declaration,
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:24: warning:
    which is probably not what you want.
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c: In function
    `utime':
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:34:
    dereferencing pointer to incomplete type
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:34:
    dereferencing pointer to incomplete type
    make[4]: *** [o-pc386/utime.o] Error 1
    make[3]: *** [all] Error 1
    make[2]: *** [all] Error 1
    make[1]: *** [all] Error 1
    make[1]: Leaving directory `/lfs/poseidon/users/rtems/src/multi/build/c'

    make: *** [all] Error 1

    Apparently sys/utime.h is one of the posix headers and therefore gets
    not installed (I suppose this is correct).

    IMO, this probably indicates that sys/utime.h has to be moved to another
    include subdirectory and should not be part of the posix-package.
    [AFAIK, sys/*.h are system dependent headers, so why should it be a
    posix-header? - Hmm]
1999-03-24 22:52:47 +00:00
Joel Sherrill
c9b07e92d1 Automake II patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
With my most recent automake patch (automake II) we could even simplify more
  files below make/, because the host-compiler related parts of those files
  aren't used anymore :-.

  Whatsoever, the patch below should fix this problem.

  Note: This is a mere bug fix, it doesn't move any of the variables involved
  to target.cfg nor does it try to eliminate any variable.
1999-03-24 22:49:17 +00:00
Joel Sherrill
367cc5ef05 Patch from Eric Norum <eric@skatter.usask.ca> to use new network
interface naming convention.
1999-03-24 22:29:32 +00:00
Joel Sherrill
33508cb149 Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>. 1999-03-24 21:15:21 +00:00
Joel Sherrill
e828c2dd40 SPARC optimized version of IP checksum header routine. Submitted
by Jiri Gaisler <jgais@ws.estec.esa.nl>.
1999-03-23 23:06:42 +00:00
Joel Sherrill
f1f42b454d Modifications from Jiri Gaisler <jgais@ws.estec.esa.nl> to
fix some problems encountered when reusing this driver on
a SPARC ERC32 based Tharsys board.  He eliminted the need
for TX interrupts and added code that can optionally ensure that
the IP address is 32-bit aligned. He also fixed a handful of
problems that only occured because the 8 Mhz ERC32 was
enough slower than the 100 Mhz PPC603e that timing
issues in this driver were magnified.
1999-03-23 22:51:05 +00:00
Joel Sherrill
b6f5f9385d Patch from Eric Norum <eric@skatter.usask.ca> to improve parsing of
network interface names.  This change does not introduce any
compatibility problems.
1999-03-23 22:39:13 +00:00
Joel Sherrill
9b8baa128b Automake II patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>. Email
description follows:

Description:

    * automake for *all* tool subdirectories (Makefile.am, configure.in etc.)
    * autogen now also considers CONFIG_HEADER (generates stamp-h.ins and
      config.h.ins)
    * c/src/tests/tools/generic/difftest and
      c/src/tests/tools/generic/sorttimes generated by configure scripts
    * c/update-tools/ampolish, beautifier for Makefile.ams, similar to
      acpolish
    * rtems-polish.sh added to c/update-tools/ + ampolish support
    * New subdirectory ./automake, contains automake -Makefile fragments to
      support RTEMS make "debug, debug_install, profile, profile_install" for
      native Makefile.ams (== ignore these make targets).
    * aclocal/rtems-top.m4's RTEMS_TOP now reads the automake makefile
      variable VERSION from RTEMS ./VERSION file.
    * ./configure.in uses the macros from aclocal + support for the tools'
      configure scripts

  Remarks:
    * To run rtems-polish.sh, "cd <rtems-source-tree>;
      ./c/update-tools/rtems-polish.sh"
    * AFAIS, now all native subdirectories are converted to automake (Please
      drop me a note, if I forgot something).
    * Unless you notice something fatal, IMO the time has come for a public
      try (== snapshot). I do not intend to send more automake related patches
      within, say 2 weeks, to give these patches time to settle and to give me
      some time to think on how to continue.
    * The patch assumes installation to the new main installation directory
      [$(prefix)].
1999-03-23 18:02:17 +00:00
Joel Sherrill
4fb9af858e Another cleanup patch for the previous rejected hunk. 1999-03-19 23:26:11 +00:00
Joel Sherrill
04c308c022 Incorporated automake I patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
This is the first real automake patch.

    It adds automake support to c/build-tools and cleans up a few minor
    issues.

    I consider this to be a testing probe to examine problems with automake.
    Therefore, this patch is just a more or less harmless replacement of the
    former RTEMS Makefiles and I expect it not last for long. If you want to
    give automake Makefiles a public try and if you want/need to learn about
    problems with it, then it's about time for a new snapshot, IMO. I may
    have screwed up something not directly related to automake, but I expect
    very few (none to be precise) problems with automake. However, somebody
    should at least try building on Cygwin. If you feel a bit more
    adventureous, then I also can continue to submit more patches.

    [FYI: I still have a couple of automake files laying around, but they
    need some cleanup before being submitted as patches. Now, that I am just
    into it, I'll perhaps submit another one tonight :-]

    After applying this patch (patch -p1 -E <
    <path-to>/rtems-rc-19990318-0), first run the "autogen" script from the
    toplevel source directory, before committing to CVS. Be careful about
    dependencies between Makefile.am and Makefile.ins when cutting tarballs
    from CVS. Makefile.ins are required to be newer than Makefile.ams,
    otherwise users would need to have automake, autoconf and perl. Some
    people recommend to "touch" all Makefile.in after checkout from cvs (cf.
    egcs/contrib/egcs_update).

    ATTENTION:
      * This patch adds a number of new files.
      * remove aclocal/exeext.m4 and aclocal/cygwin.m4 from CVS, They are now
        covered by autoconf-2.13`s AC_EXEEXT.

    Some features/side-effects which are probably interesting for you:
    In a configured build-tree "cd c/build-tools", then try

      * "make RTEMS_BSP=<bsp> install"
      * "make RTEMS_BSP=<bsp> dist"
1999-03-19 23:11:36 +00:00
Joel Sherrill
c0a3642981 A cleanup patch on fcntl.c from Eric Norum <eric@skatter.usask.ca> for
2 lines of code that did not get included when Joel tried to manually
add a rejected patch.
1999-03-19 22:59:20 +00:00
Joel Sherrill
d8ff79366b Towards automake XI patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
This patch is the most scary of all proposals I've been mailing to you
    this week until now.

    It consists of 3 parts:
        1. a patch
        2. a perl script (acpolish)
        3. a shell script wrapper to invoke the perl-script.

    The perl-script reads in each Makefile.in and modifies them
    ("polishes/beautifies" them :-).

    These modifications are not easy to describe:

    Basically, it hard-codes some automake Makefile-variables and rules into
    RTEMS autoconf-Makefile.ins (Note: autoconf vs. automake!!) and converts
    some settings/variables to configure scripts' requirements (Yes,
    plural).

    E.g. it adds the automake standard variables $top_builddir and $subdir,
    adds dependency rules for automatic re-generation of Makefiles from
    Makefile.in, adds support variables for relative paths to multiple
    configure scripts etc.


    The patch is a one-line patch to enable the support of the new features
    added by acpolish.

    The shell script is a wrapper which pokes around inside of the source
    tree for Makefile.ins and invokes acpolish on all autoconf-Makefile.ins.

    acpolish is designed to be able to run several times on the same
    Makefile.in and may once become a more general tool to convert RTEMS
    Makefile.in to automake. Therefore, I'd like to keep it inside of source
    tree. (e.g. as contrib/acpolish or c/update-tools/acpolish). However, it
    doesn't make sense to export it outside of RTEMS.


To apply this:

    cd <source-tree>
    patch -p1 -E < <path-to-patch>/rtems-rc-19990318-1.diff
    tar xzvf <path-to>/rtems-rc-polish.tar.gz
    ./rtems-polish.sh
    ./autogen

    Note: The path contrib/acpolish is hard-coded into rtems-polish.sh, if
    you decide to put it in an alternative place, please modify
    rtems-polish.sh to reflect this change.

    Later:
    cvs rm make/rtems.cfg (It isn't used anymore)
    cvs add contrib
    cvs add contrib/acpolish
    cvs commit

    I've tested this intensively, but naturally I can't exclude bugs.

    Ralf.

    PS.: Most probably, this is the last "Towards automake" patch. The next
    one probably will be a real automake patch.
1999-03-19 22:27:02 +00:00
Joel Sherrill
5906ac5e9f Towards automake X patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
This one once again changes the scheme to preinstall bsp_specs.

    It moves generating PROJECT_ROOT/lib/bsp_specs to
    libbsp/<cpu>/<bsp>/wrapup/Makefile.in.

    I.e. it decentralizes generation of bsp_specs to a bsp-dependent
    directory, because preinstalling bsp_specs in a centralized Makefile
    like it has been done until now does not harmonize well with spliting
    the toplevel configure script in cpu and bsp-dependent configure scripts
    and automake.

    First apply the patch (rtems-rc-19990318-0.diff) below, then run the
    reorg-bsp_specs.sh script.

    IMO, this one is comparatively harmless and eases automake support
    significantly.
1999-03-19 22:10:04 +00:00
Joel Sherrill
e619c2895b Towards automake IX patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
This is the next step towards automake:

    * Two scripts for the toplevel directory:
      a) "autogen" (Idea borrowed from libtool and gnome) A helper script to
      recursively regenerate autoconf/automake/aclocal generated files
      (Still not perfect but sufficient).
      b) "missing" (from automake-cvs archive). This file normally is
      automatically generated by automake, but we have to manually add
      it until we add automake support to the toplevel configure script.

        "chmod 755 missing autogen" after applying the patch.

    * Changing the toplevel installation directory [ I can hear you
      falling off the chair ;-]
      Until now rtems installed itself to $(prefix)/rtems. This is in
      contradiction to automake and GNU/FSF/Cygnus conventions.
      With this patch applied, rtems installs into $(prefix).
      To achieve the old behaviour simply configure with
      --prefix=<install-dir>/rtems instead of --prefix=<install-dir>

      This is a widely visible change and I can understand if you don't
      like it at the present point. It enables us to use automake's
      default installation paths instead of having to set up installation
      paths manually. At the moment this doesn't help much, but in the not
      so far future this would enable us to mix cpu-only dependent libraries
      into the host's cross-compiler library and header files into
      newlib's include directories, tools into the toolchain directories etc.

      I would  recommend to change the main installation directory, however it's
      up to you to draw the final design decision.
1999-03-19 22:01:26 +00:00
Joel Sherrill
af0200363e Patch from Eric Norum <eric@skatter.usask.ca> that adds external
fcntl support and an external fcntl handler for sockets.
1999-03-19 21:51:58 +00:00
Joel Sherrill
1105818d14 Patch from Ian Lance Taylor <ian@airs.com>:
Erik Ivanenko pointed out a problem in the ne2000.c driver I
    submitted: it did not work correctly with bootp.  Here is a patch,
    based on a patch he sent me.
1999-03-18 16:36:50 +00:00
Joel Sherrill
dfe7746ed9 Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de> 1999-03-17 23:43:32 +00:00
Joel Sherrill
f4a8ee1c55 Unlimited objects patch from Chris Johns <ccj@acm.org>. Email follows:
First, the unlimited patch. I have compiled the unlmited patch for the
    Linux posix BSP only and it seems to work cleanly. I would like a really
    major application run on this change before commiting as the changes are
    very core and significant. I am currently building all the tests to run.

    I have no targets suitable to test on at the moment.

    I have tested the patch for inline functions and macros.

    Turning macros on has found some core bugs. I have fixed these but have
    not run all the tests. Please review the patch for these changes. They
    are:

    1) The conditional compilation for MP support broke the core messages
    code. You cannot embed a conditional macro in another macro. The Send
    and Urgent Send calls are macros.

    2) User extensions handler initialisation now has two parameters. I have
    updated the macros to support the extra parameter.

    The patch also contains the gcc-target-default.cfg fix required to build
    the kernel. More of a by product than a fix for you.
1999-03-17 16:01:03 +00:00
Joel Sherrill
1c0a186bef Temporarily took rtems_servers directory out of the build tree since there
are build issues with it.
1999-03-17 15:53:13 +00:00
Joel Sherrill
a902441a25 Patch from John S. Gwynne <jgwynne@mrcday.com> to correct minor
problems that prevented the 19990302 snapshot from running on
the efi332.

    I'm happy to report that rtems-19990302 is running on the efi332
    board. I have enclosed a few minor patches below to the efi332 bsp. All
    patches are within that library but one. make/custom/efi332.cfg has a
    patch to select the right CPU_CFLAGS (at one time -m68332 was a
    problem... -mcpu32 or -m68332 work fine now).
1999-03-16 02:26:50 +00:00
Joel Sherrill
6d0e13c3bd Added ftpd server from Jake Janovetz <janovetz@tempest.ece.uiuc.edu>. 1999-03-16 01:51:53 +00:00
Joel Sherrill
504a8c9d16 Added rtems_servers directory. 1999-03-16 01:51:40 +00:00
Joel Sherrill
cda0c07ed5 Commented out test case that no long works since addition of POSIX timers. 1999-03-16 01:41:48 +00:00
Joel Sherrill
23c4bbf58a Use proper include for libio.h. 1999-03-16 01:41:16 +00:00
Joel Sherrill
e602b3f845 Interrupt handler installed as raw handler. Problem caught by
by Jiri Gaisler <jgais@ws.estec.esa.nl> when using this
driver on a SPARC.
1999-03-11 22:13:45 +00:00
Joel Sherrill
5b3632e9cd Took generated files off list of source files. 1999-03-08 21:40:14 +00:00
Joel Sherrill
b10f6e12e0 Corrected bug where pointer to doubly linked blocks was being incorrectly
calculated.
1999-03-08 21:39:39 +00:00
Joel Sherrill
3195d9c0a5 Added code to translate internal libio flags to POSIX style flags. 1999-03-08 21:39:16 +00:00
Joel Sherrill
1bb170208b Added support for F_GETFL and F_SETFL. 1999-03-08 21:38:56 +00:00
Joel Sherrill
550b6da660 Install remote debugger pieces. 1999-03-08 21:38:37 +00:00
Joel Sherrill
b02af64c5e Removed unused variable. 1999-03-08 21:37:13 +00:00
Joel Sherrill
a4dc7e0563 Patch from Ian Lance Taylor <ian@airs.com> to correct previous interrupt
patch.
1999-03-08 21:02:20 +00:00
Joel Sherrill
3ef87981eb Added F_GETFL support so the fdopen() implementation in newlib 1.8.1
would work.  At the same time, the initial implementation of F_SETFL
was added.  A support routine was added to convert internal libio
flags back to the POSIX style.  Eventually the internal representation
should be eliminated in the interest of simplicity and code reduction.
This problem was reported by Jake Janovetz <janovetz@tempest.ece.uiuc.edu>.
1999-03-06 18:09:15 +00:00
Joel Sherrill
eaefca9084 Wrong constant name was used for the DEBUG exception. 1999-03-03 18:11:51 +00:00
Joel Sherrill
163b29a653 Generated files were accidentally included in the library. 1999-03-03 18:11:35 +00:00
Joel Sherrill
4f6d73adc1 Patch from Erik Ivanenko <erik.ivanenko@utoronto.ca> to correct a bug
that shows up if the BSP uses memory near address 0.
1999-03-03 16:22:57 +00:00
Joel Sherrill
0077e9efb9 changed version to 19990302 1999-03-02 15:43:39 +00:00
Joel Sherrill
faf7f46c96 Patch from Jay Monkman <jmonkman@frasca.com> to address minor issues
in the eth_comm BSP documentation.
1999-03-02 15:32:30 +00:00
Joel Sherrill
9d813800b3 Updated Ethernet driver from Erik Ivanenko <erik.ivanenko@utoronto.ca>.
Comments follow:

    Please find attached, the updated network driver.  I have verified
    that it is working as expected, by timestamping the error messages
    generated from the ISR.

    If you've taken a look inside, the network driver has a reset thread
    in addition to the RX and TX threads.  It is possible to avoid the
    additional reset thread by allowing the TX driver to time out and then
    checking status bits set by the ISR.  However, this approach demands
    that a transmission is necessary for the NIC to be reset.

    Due to Eric V's ISR handling, I suppose that the reset routine could
    be called from the "ISR" itself, due to the 8259 interrupt mode, and
    that the interrupt is acknowledged prior to running the "ISR".
    (Providing that no NIC interrupts are generated during reset -- I
    worry about re-entrancy.  )

    This would be a minor improvement, but you know, I don't want to make
    this driver my lifes work.
----------------------------------------------------------------------
----------------------------------------------------------------------
1999-03-01 23:50:22 +00:00
Joel Sherrill
73f6236bc0 Patch from Eric Norum <eric@skatter.usask.ca> to eliminate external
IO handlers scheme that was implemented originally just to support
sockets.  The file system IO switch is more general and works fine.
1999-03-01 22:40:08 +00:00
Joel Sherrill
e069cdc3f1 Part of the automake VI patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
> 5) rtems-rc-19990202-1.diff/reorg-install.sh
>
> reorg-install.sh fixes a Makefile variable name clash of RTEMS
> configuration files and automake/autoconf standards.
> Until now, RTEMS used $(INSTALL) for install-if-change. Automake and
> autoconf use $(INSTALL) for a bsd-compatible install. As
> install-if-change and bsd-install are not compatible, I renamed all
> references to install-if-changed to $(INSTALL_CHANGED) and used
> $(INSTALL) for bsd-install (==automake/autoconf standard).  When
> automake will be introduced install-if-change will probably be replaced
> by $(INSTALL) and therefore will slowly vanish. For the moment, this
> patch fixes a very nasty problem which prevents adding any automake file
> until now (There are still more).
1999-03-01 15:18:26 +00:00
Joel Sherrill
3cf8394af5 Changed IMFS to use IMFS_NAME_MAX as the maximum length of a basename
rather then NAME_MAX.  NAME_MAX is 255 and that lets IMFS chew up memory
too fast.  Perhaps in the future, the places in IMFS that put a maximum
length name string on the stack and the jnode structure does not include
a maximu length name string can be fixed so this is not a problem.
1999-02-24 20:58:47 +00:00
Joel Sherrill
32a98d216b Moved mpc860.h around to make things compile. 1999-02-24 20:46:18 +00:00
Joel Sherrill
4e4e6911e5 Patch from Charles Gauthier <Charles.Gauthier@iit.nrc.ca> to address
FP issues on this target:

The default variants of libc, libm and libgcc assume that a 68881
coprocessor is present. Without the FPSP, any floating point operation,
including printf() with a "%f" format specifier, is likely to cause an
unimplemented instruction exception.

The FPSP works with the default variants of libc, libm and libgcc. It does not
work in conjunction with the msoft-float variants. The paranoia test goes into
an infinite loop at milestone 40. I am guessing that floor() is returning an
incorrect value.

The msoft-float variants of libc, libm and libgcc appear to do floating point
I/O properly. They only failed in paranoia. Offhand, I can't think of why they
would conflict with the FPSP, so I think that there is something wrong with the
msoft-float code. It might be my installation.

Given my experiences, I decided to install the FPSP in bsp_start(), and to link
against the default variants of libc, libm and libgcc. This causes the
executables to increase in size by about 60 KB. The README file and the
mvme167.cfg specify how to remove the FPSP, and how to link against the
msoft-float variants of the libraries. This is not what Eric Norum had done: on
my host, his gen68360_040 port links RTEMS code with the msoft-float variants
of libc and libm, and the default variant of libgcc. In this configuration, the
output of printf() with "%f" is garbage on my target.
1999-02-24 15:37:49 +00:00
Joel Sherrill
d6a5c812ed Switch to using standard compile rule for assembly. 1999-02-24 15:26:38 +00:00
Joel Sherrill
4d20133bef Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>. The following email
is long but I hate to lose the information so I am including it here.


> I am still fixing and recompiling but this is the issue that was not the
> result of another patch.  This is a fundamental build issue that I value
> your opinion on.

This is difficult issue (I.e. I have no destinct solution for it)

Background:

(gnu-) make's  implicit rules apply CFLAGS, CPPFLAGS, CXXFLAGS, ASFLAGS and
LDFLAGS (cf. make.info/Implicit Rules/Catalogue of Rules), only.

In brief:
CPPFLAGS .. passed to the c-preprocessor
CFLAGS ... passed to the c-compiler
CXXFLAGS ... equivalent to CFLAGS but passed to the c++ compiler
(Attention: CFLAGS is not passed to the c++ compiler)
ASFLAGS .. equivalent to CFLAGS, but passed to the assembler
LDFLAGS .. equivalent to CFLAGS, but passed to the linker

A bit oversimplifying, these make rules are as follows
.c.o:
    $(CC) $(CPPFLAGS) $(CFLAGS) -c
.cc.o:
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
.S.s:
    $(CPP) $(CPPFLAGS)
.s.o:
    $(AS) $(ASFLAGS)

My reading of the documentation (make.info) is that {AS|AR|CC|CXX|CPP}FLAGS
are ment to be passed to the related tools directly, however examinating
the rule set of gmake (gmake -p -f /dev/null")  shows that many rules use
$(CC) instead of the related tools (eg. linker rules) etc.

I.e. these flags should not rely on being passed through cpp or gcc. With
gcc being the common frontend for all of these tools of a gnu-toolchain the
situation becomes difficult (Which option is passed to whom and which tool
really uses it?), because these variable can also contain the toolchain's
frontend (eg. AS=gcc, LD=gcc, CPP=gcc -E).

For some commonly used options the situation is quite clear:
* -g -> CFLAGS
* -OX -> CFLAGS
* -D -> CPPFLAGS
* -A -> CPPFLAGS

But where to add -m, -B, -specs, -qrtems_XXX ?
* -B, -specs, -qrtems_XXX are gcc-frontend options
* -m is a combinations of flags to go to different destinations, in many
(all?) cases, the following is valid
-m is expanded by gcc into a set of -D and -A options
-m is interpreted by cc1 as a machine flag to generate a specific
instruction set.
-m is interpreted by gcc as an implicit linker search path for multilibs to
set up calls to LD.

>From my point of view this indicates we can either destingush between these
different usages (= separately add -m to CFLAGS, LDFLAGS etc) or to add it
to CPPFLAGS and use gcc (the frontend) instead of calling each tool
directly (less error prone) -- I vote for CPPFLAGS, but I am not sure.

-----------------

Now, where to add CPU_CFLAGS?

AFAIS, in probably all cases CPU_CFLAGS contain -D -A, and -m options,
only.
* -D and -A are supposed to go to CPPFLAGS
* -mXXX options can have multiple meanings (It can be gcc, collect2/ld and
cc1/cc1plus option simultaneously)

Here, I made a mistake - I destinguished between CPU_DEFINES to be added to
CPPFLAGS and CPU_CFLAGS to be added to CFLAGS and CXXFLAGS (cf.
gcc-target-default.cfg), generally assuming CPU_CFLAGS are CFLAGS.

This breaks preprocessing *.S into *.i files because CPU_CFLAGS flags were
not added to CPPFLAGS. Hence *all* *.S were compiled without taking
-mXX-flags into account. The i960/cvme BSP was the only one which
explicitly checked for a specific -m flag (-mca) and refused to compile
without it -- all other CPUs/BSPs silently swallowed this.

IMO, we can either
1) add CPU_CFLAGS and CPU_DEFINES to CPPFLAGS, thus silently convert
CPU_CFLAGS's meaning into CPU_DEFINES (Alternative solution: rename
CPU_CFLAGS to CPU_DEFINES and merge CPU_FLAGS with CPU_DEFINES).
or
2) destinguish between CPU_DEFINES and CPU_CFLAGS. In this case we would
need to check the contents of each CPU_CFLAGS in custom/*.cfg and move the
some parts of the contents to CPU_DEFINES and keep other parts in
CPU_CFLAGS (CFLAGS must contain options for the c/c++-compiler only!).

Though Solution 2) is the clearer one, I implemented 1) which is the
simplier one (the patch below).

ATTENTION: This patch is small in size, but affects almost everything.

------------

Additional complications araise with linking:

Some BSPs call  LD and AS directly (esp. gcc-2.7 make-exe rules). If LD=gcc
then LDFLAGS are supposed to be gcc-options, but if LD=ld then LDFLAGS is
supposed to contain ld-options.

An analog thought is valid for AS, but luckily enough ASFLAGS is not used
of inside the whole source tree.

Most RTEMS' custom/*.cfg use $(CC) $(CFLAGS) to link with gcc-2.8 make-exe
rules. With the patch below (CPU_CFLAGS added to CPPFLAGS) this means
CPU_CFLAGS will not be passed to the linker, which is incorrect for
multilibbed CPU's.

gmake's default rule set contains a variety of rules for linking, all
ending up in calling $(CC) $(LDFLAGS) for linking at their very end.

IMO, this means we should use something like

LINK.o = $(CC) $(LDFLAGS) in gcc-target-default.cfg

+ modify all gcc-2.8 make-exe rules to use
$(LINK.o) .......

+ setup LDFLAGS according to the requirements of the above.

I.e. we should use $(CC) for linking instead of calling the linker (LD)
directly and set LDFLAGS = $(CPPFLAGS) $(CFLAGS) or similar.
1999-02-24 15:15:29 +00:00
Joel Sherrill
3dd7a724ed Removed dependency on bsp.h. 1999-02-24 14:36:00 +00:00