patches/gcc/3.3.1/gcc-3.3-libstdc++-v3-dg.exp.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
permissions -rw-r--r--
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
yann@1
     1
Without this patch, the command
yann@1
     2
yann@1
     3
RUNTESTFLAGS=--target=powerpc-750-linux-gnu -v -v -v -v make check-target-libstdc++-v3
yann@1
     4
yann@1
     5
fails in two ways:
yann@1
     6
1. the -L option meant to locate the testsuite directory is incorrect, and
yann@1
     7
2. the wrong compiler is invoked, causing all sorts of havoc, not least of which
yann@1
     8
is the native compiler is invoked when we really wanted to invoke the cross-compiler
yann@1
     9
we just built.
yann@1
    10
yann@1
    11
Here's an example log of the problem in action.  Every testcase fails, this shows just one:
yann@1
    12
-------------
yann@1
    13
Invoking the compiler as g++ -ggdb3 -DDEBUG_ASSERT -I/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite /home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc   -g -O2 -DDEBUG_ASSERT  -L/testsuite -lv3test -lm  -o ./binders.exe
yann@1
    14
compiler exited with status 1
yann@1
    15
output is:
yann@1
    16
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h: In method `void binder2nd<mem_fun1_ref_t<void,Elem,int> >::operator ()(const Elem &) const':^M
yann@1
    17
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_algo.h:83:   instantiated from `for_each<Elem *, binder2nd<mem_fun1_ref_t<void,Elem,int> > >(Elem *, Elem *, binder2nd<mem_fun1_ref_t<void,Elem,int> >)'^M
yann@1
    18
/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc:43:   instantiated from here^M
yann@1
    19
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:224: conversion from `const Elem' to `Elem &' discards qualifiers^M
yann@1
    20
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:622: in passing argument 1 of `mem_fun1_ref_t<void,Elem,int>::operator ()(Elem &, int) const'^M
yann@1
    21
...
yann@1
    22
FAIL: 20_util/binders.cc (test for excess errors)
yann@1
    23
WARNING: 20_util/binders.cc compilation failed to produce executable
yann@1
    24
-------------
yann@1
    25
yann@1
    26
And here's the patch.  I'm not happy with it, and it probably gets some cases wrong,
yann@1
    27
but it seems to work for the common native case and for my cross-compiler case.
yann@1
    28
yann@1
    29
--- gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp.old	Sun Jul 13 10:42:01 2003
yann@1
    30
+++ gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp	Sun Jul 13 11:39:54 2003
yann@1
    31
@@ -46,8 +46,23 @@
yann@1
    32
     global gluefile wrap_flags
yann@1
    33
     global ld_library_path
yann@1
    34
     global tool_root_dir
yann@1
    35
+    global target_triplet
yann@1
    36
 
yann@1
    37
     set blddir [lookfor_file [get_multilibs] libstdc++-v3]
yann@1
    38
+    if { $blddir == "" } {
yann@1
    39
+        set multilibs [get_multilibs]
yann@1
    40
+        # FIXME: assume multilib only one level deep
yann@1
    41
+        set multisub [file tail $multilibs]
yann@1
    42
+        verbose "libstdc++-v3-init: couldn't find libstdc++-v3 in $multilibs, trying $objdir"
yann@1
    43
+        set blddir [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"]
yann@1
    44
+    }
yann@1
    45
+    if { $blddir == "" } {
yann@1
    46
+        verbose "libstdc++-v3-init: couldn't find libstdc++-v3, trying $objdir without multilibs"
yann@1
    47
+        set blddir [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"]
yann@1
    48
+    }
yann@1
    49
+    if { $blddir == "" } {
yann@1
    50
+         error "Can't find libstdc++-v3"
yann@1
    51
+    }
yann@1
    52
 
yann@1
    53
     # By default, we assume we want to run program images.
yann@1
    54
     global dg-do-what-default