File.........: B - Known issues.txt
Copyright....: (C) 2010 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
License......: Creative Commons Attribution Share Alike (CC-by-sa), v2.5


Known issues  /
_____________/


This files lists the known issues encountered while developing crosstool-NG,
but that could not be addressed before the release.

The file has one section for each known issue, each section containing four
sub-sections: Symptoms, Explanations, Fix, and Workaround.

Each section is separated from the others with a lines of at least 4 dashes.

The following dummy section explains it all.

    --------------------------------
    Symptoms:
      A one- or two-liner of what you would observe.
      Usually, the error message you would see in the build logs.

    Explanations:
      An as much as possible in-depth explanations of the context, why it
      happens, what has been investigated so far, and possible orientations
      as how to try to solve this (eg. URLs, code snippets...).

    Status:
      Tells about the status of the issue:
        UNCONFIRMED : missing information, or unable, to reproduce, but there
                      is consensus that there is an issue somewhere...
        CURRENT     : the issue is applicable.
        DEPRECATED  : the issue used to apply in some cases, but has not been
                      confirmed or reported again lately.
        CLOSED      : the issue is no longer valid, and a fix has been added
                      either as a patch to this component, and/or as a
                      workaround in the scripts and/or the configuration.

    Fix:
      What you have to do to fix it, if at all possible.
      The fact that there is a fix, and yet this is a known issue means that
      time to incorporate the fix in crosstool-NG was missing, or planned for
      a future release.

    Workaround:
      What you can do to fix it *temporarily*, if at all possible.
      A workaround is not a real fix, as it can break other parts of
      crosstool-NG, but at least makes you going in your particular case.

So now, on for the real issues...

--------------------------------
Symptoms:
  gcc is not found, although I *do* have gcc installed.

Explanations:
  This is an issue on at least RHEL systems, where gcc is a symlink to ccache.
  Because crosstool-NG create links to gcc for the build and host environment,
  those symlinks are in fact pointing to ccache, which then doesn't know how
  to run the compiler.

  A possible fix could probably set the environment variable CCACHE_CC to the
  actual compiler used.

Status:
  CURRENT

Fix:
  None known.

Workaround:
  Uninstall ccache.

--------------------------------
Symptoms:
  The extract and/or path steps fail under Cygwin.

Explanations:
  This is not related to crosstool-NG. Mounts under Cygwin are by default not
  case-sensitive. You have to use so-called "managed" mounts. See:
  http://cygwin.com/faq.html section 4, question 32.

Status:
  DEPRECATED

Fix:
  Use "managed" mounts for the directories where you build *and* install your
  toolchains.

Workaround:
  None.

--------------------------------
Symptoms:
  uClibc fails to build under Cygwin.

Explanations:
  With uClibc, it is possible to build a cross-ldd. Unfortunately, it is
  not (currently) possible to build this cross-ldd under Cygwin.

Status:
  DEPRECATED

Fix:
  None so far.

Workaround:
  Disable the cross-ldd build.

--------------------------------
Symptoms:
  On 64-bit build systems, the glibc (possibly eglibc too) build fails for
  64-bit targets, because it can not find libgcc.

Explanations:
  This issue has been observed when the companion libraries are built
  statically. For an unknown reason, in this case, the libgcc built by the
  core gcc is not located in the same place it is located when building
  with shared companion libraries.

Status:
  DEPRECATED

Fix:
  None so far.

Workaround:
  Build shared companion libraries.

--------------------------------
Symptoms:
  libtool.m4: error: problem compiling FC test program

Explanations:
  The gcc build procedure tries to run a Fortran test to see if it has a
  working native fortran compiler installed on the build machine, and it
  can't find one. A native Fortran compiler is needed (seems to be needed)
  to build the Fortran frontend of the cross-compiler.
  Even if you don't want to build the Fortran frontend, gcc tries to see
  if it has one, but fails. This is no problem, as the Fortran frontend
  will not be built. There is nothing to be worry about (unless you do
  want to build the Fortran frontend, of course).

Status:
  CURRENT

Fix:
  None so far. It's a spurious error, so there will probably never be
  a fix for this issue.

Workaround:
  None needed, it's a spurious error.

--------------------------------
Symptoms:
  unable to detect the exception model

Explanations:
  On some architectures, proper stack unwinding (C++) requires that
  setjmp/longjmp (sjlj) be used, while on other architectures do not
  need sjlj. On some architectures, gcc is unable to determine whether
  sjlj are needed or not.

Status:
  CURRENT

Fix:
  None so far.

Workaround:
  Trying setting use of sjlj to either 'Y' or 'N' (instead of the
  default 'M') in the menuconfig, option CT_CC_GCC_SJLJ_EXCEPTIONS
  labelled "Use sjlj for exceptions".

--------------------------------
Symptoms:
  configure: error: forced unwind support is required

Explanations:
  The issue seems to be related to building NPTL on old versions
  of glibc (and possibly eglibc as well) on some architectures
  (seen on powerpc, s390, s390x and x86_64).

Status:
  CURRENT

Fix:
  None so far. It would require some glibc hacking.

Workaround:
  Try setting "Force unwind support" in the "C-library" menu.

--------------------------------
Symptoms:
  glibc start files and headers fail with: [/usr/include/limits.h] Error 1

Explanations:
  Old glibc (and eglibc) Makefiles break with make-3.82.

Status:
  CURRENT

Fix:
  None so far. It would require some glibc/eglibc hacking.

Workaround:
  There two possible workarounds:
  1- ask crosstool-NG to build make-3.81 just for this build session:
     Select the following options:
        Paths and misc options  --->
            [*] Try features marked as EXPERIMENTAL
        Companion tools  --->
            [*] Build some companion tools
            [*]   make
  2- manually install make-3.81 to take precedence over the system make.

--------------------------------
Symptoms:
  The build fails with "mixed implicit and normal rules. Stop."

Explanations:
  Old glibc (and eglibc) Makefiles break with make-3.82.

Status:
  CURRENT

Fix:
  None so far. See above issue.

Workaround:
  See above issue.

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