public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Link tests after GCC_NO_EXECUTABLES
@ 2007-09-18 11:56 Jie Zhang
  2007-09-18 12:25 ` Bernd Schmidt
  2007-09-18 13:55 ` Rask Ingemann Lambertsen
  0 siblings, 2 replies; 72+ messages in thread
From: Jie Zhang @ 2007-09-18 11:56 UTC (permalink / raw)
  To: gcc

libstdc++ tries to avoid link tests when configured with newlib. But I
saw this when working on bfin port gcc:

checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... no
checking how to hardcode library paths into programs... immediate
checking for shl_load... configure: error: Link tests are not allowed 
after GCC_NO_EXECUTABLES.
make[1]: *** [configure-target-libstdc++-v3] Error 1
make[1]: Leaving directory 
`/home/jie/blackfin-sources/build43/gcc_build-4.3'
make: *** [all] Error 2

I got this when building bfin-elf-gcc with patched gcc and newlib in the
same tree. I found LT_SYS_DLOPEN_SELF does link tests for shl_load after
GCC_NO_EXECUTABLES. The call path is

"libstdc++-v3/configure.ac" AM_PROG_LIBTOOL -> "libtool.m4" LT_INIT ->
_LT_SETUP -> _LT_LANG_C_CONFIG -> LT_SYS_DLOPEN_SELF

How about the patch below, which uses LT_SYS_DLOPEN_SELF only when not
cross compiling.


Jie


	* libtool.m4 (_LT_LANG_C_CONFIG): Only use LT_SYS_DLOPEN_SELF
	when not cross compiling.

Index: libtool.m4
===================================================================
--- libtool.m4  (revision 128569)
+++ libtool.m4  (working copy)
@@ -5117,7 +5117,9 @@
    _LT_LINKER_SHLIBS($1)
    _LT_SYS_DYNAMIC_LINKER($1)
    _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
+  if test "$cross_compiling" = no; then
+    LT_SYS_DLOPEN_SELF
+  fi
    _LT_CMD_STRIPLIB

    # Report which library types will actually be built


^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 11:56 Link tests after GCC_NO_EXECUTABLES Jie Zhang
@ 2007-09-18 12:25 ` Bernd Schmidt
  2007-09-18 12:52   ` Jie Zhang
  2007-09-18 13:55 ` Rask Ingemann Lambertsen
  1 sibling, 1 reply; 72+ messages in thread
From: Bernd Schmidt @ 2007-09-18 12:25 UTC (permalink / raw)
  To: Jie Zhang; +Cc: gcc

Jie Zhang wrote:
> libstdc++ tries to avoid link tests when configured with newlib. But I
> saw this when working on bfin port gcc:
> 
> checking whether -lc should be explicitly linked in... no
> checking dynamic linker characteristics... no
> checking how to hardcode library paths into programs... immediate
> checking for shl_load... configure: error: Link tests are not allowed 
> after GCC_NO_EXECUTABLES.
> make[1]: *** [configure-target-libstdc++-v3] Error 1
> make[1]: Leaving directory 
> `/home/jie/blackfin-sources/build43/gcc_build-4.3'
> make: *** [all] Error 2
> 
> I got this when building bfin-elf-gcc with patched gcc and newlib in the
> same tree. I found LT_SYS_DLOPEN_SELF does link tests for shl_load after
> GCC_NO_EXECUTABLES. The call path is
> 
> "libstdc++-v3/configure.ac" AM_PROG_LIBTOOL -> "libtool.m4" LT_INIT ->
> _LT_SETUP -> _LT_LANG_C_CONFIG -> LT_SYS_DLOPEN_SELF

I saw something similar, but managed to make it go away.  I don't 
remember how exactly (this kind of issue seems to happen to me all the 
time, for different reasons each time), but I think the actual problem 
was that you need to ensure that gcc_no_link doesn't get set.  That's a 
test somewhat earlier in configure.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 12:25 ` Bernd Schmidt
@ 2007-09-18 12:52   ` Jie Zhang
  2007-09-18 13:13     ` Bernd Schmidt
  0 siblings, 1 reply; 72+ messages in thread
From: Jie Zhang @ 2007-09-18 12:52 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: gcc

Bernd Schmidt wrote:
> Jie Zhang wrote:
>> libstdc++ tries to avoid link tests when configured with newlib. But I
>> saw this when working on bfin port gcc:
>>
>> checking whether -lc should be explicitly linked in... no
>> checking dynamic linker characteristics... no
>> checking how to hardcode library paths into programs... immediate
>> checking for shl_load... configure: error: Link tests are not allowed 
>> after GCC_NO_EXECUTABLES.
>> make[1]: *** [configure-target-libstdc++-v3] Error 1
>> make[1]: Leaving directory 
>> `/home/jie/blackfin-sources/build43/gcc_build-4.3'
>> make: *** [all] Error 2
>>
>> I got this when building bfin-elf-gcc with patched gcc and newlib in the
>> same tree. I found LT_SYS_DLOPEN_SELF does link tests for shl_load after
>> GCC_NO_EXECUTABLES. The call path is
>>
>> "libstdc++-v3/configure.ac" AM_PROG_LIBTOOL -> "libtool.m4" LT_INIT ->
>> _LT_SETUP -> _LT_LANG_C_CONFIG -> LT_SYS_DLOPEN_SELF
> 
> I saw something similar, but managed to make it go away.  I don't 
> remember how exactly (this kind of issue seems to happen to me all the 
> time, for different reasons each time), but I think the actual problem 
> was that you need to ensure that gcc_no_link doesn't get set.  That's a 
> test somewhat earlier in configure.
> 
But by design if gcc_no_link = no, link tests should be avoided.

Jie

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 12:52   ` Jie Zhang
@ 2007-09-18 13:13     ` Bernd Schmidt
  2007-09-18 13:15       ` Jie Zhang
  0 siblings, 1 reply; 72+ messages in thread
From: Bernd Schmidt @ 2007-09-18 13:13 UTC (permalink / raw)
  To: Jie Zhang; +Cc: gcc

Jie Zhang wrote:
> But by design if gcc_no_link = no, link tests should be avoided.

??? I would have thought gcc_no_link = yes means link tests are avoided.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 13:13     ` Bernd Schmidt
@ 2007-09-18 13:15       ` Jie Zhang
  2007-09-18 13:27         ` Bernd Schmidt
  0 siblings, 1 reply; 72+ messages in thread
From: Jie Zhang @ 2007-09-18 13:15 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: gcc

Bernd Schmidt wrote:
> Jie Zhang wrote:
>> But by design if gcc_no_link = no, link tests should be avoided.
> 
> ??? I would have thought gcc_no_link = yes means link tests are avoided.
> 
Oops, I meant gcc_no_link = yes.

Jie

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 13:15       ` Jie Zhang
@ 2007-09-18 13:27         ` Bernd Schmidt
  2007-09-18 13:33           ` Daniel Jacobowitz
  2007-09-18 14:02           ` Jie Zhang
  0 siblings, 2 replies; 72+ messages in thread
From: Bernd Schmidt @ 2007-09-18 13:27 UTC (permalink / raw)
  To: Jie Zhang; +Cc: gcc

Jie Zhang wrote:
> Bernd Schmidt wrote:
>> Jie Zhang wrote:
>>> But by design if gcc_no_link = no, link tests should be avoided.
>>
>> ??? I would have thought gcc_no_link = yes means link tests are avoided.
>>
> Oops, I meant gcc_no_link = yes.

Stupid double negatives.  Okay, so then your problem is that 
gcc_no_link=yes.  Find out why it's setting that.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 13:27         ` Bernd Schmidt
@ 2007-09-18 13:33           ` Daniel Jacobowitz
  2007-09-18 14:11             ` Jie Zhang
  2007-09-18 14:02           ` Jie Zhang
  1 sibling, 1 reply; 72+ messages in thread
From: Daniel Jacobowitz @ 2007-09-18 13:33 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: Jie Zhang, gcc

On Tue, Sep 18, 2007 at 03:27:18PM +0200, Bernd Schmidt wrote:
> Jie Zhang wrote:
> > Bernd Schmidt wrote:
> >> Jie Zhang wrote:
> >>> But by design if gcc_no_link = no, link tests should be avoided.
> >>
> >> ??? I would have thought gcc_no_link = yes means link tests are avoided.
> >>
> > Oops, I meant gcc_no_link = yes.
> 
> Stupid double negatives.  Okay, so then your problem is that gcc_no_link=yes.  
> Find out why it's setting that.

It always does for newlib.  The libtool tests are relatively recent
(from some recent autotools upgrade).

I believe this particular error comes from using --enable-shared on a
newlib target.

-- 
Daniel Jacobowitz
CodeSourcery

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 11:56 Link tests after GCC_NO_EXECUTABLES Jie Zhang
  2007-09-18 12:25 ` Bernd Schmidt
@ 2007-09-18 13:55 ` Rask Ingemann Lambertsen
  2007-09-18 14:19   ` Jie Zhang
  1 sibling, 1 reply; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-09-18 13:55 UTC (permalink / raw)
  To: gcc

On Tue, Sep 18, 2007 at 07:55:45PM +0800, Jie Zhang wrote:
> libstdc++ tries to avoid link tests when configured with newlib. But I
> saw this when working on bfin port gcc:

From config.log:
/home/rask/build/gcc-bfin-unknown-elf/gcc/../ld/ld-new:
cannot open linker script file bf532.ld: No such file or directory

$ grep -F -e bf532.ld gcc/config/bfin/*
gcc/config/bfin/elf.h:%{!T*:%{!msim:%{mcpu=bf531:-Tbf531.ld}%{mcpu=bf532:-Tbf532.ld} \
gcc/config/bfin/elf.h:        %{!mcpu=*:-Tbf532.ld}}}"

The file bf532.ld is nowhere to be found in gcc or newlib/libgloss.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 13:27         ` Bernd Schmidt
  2007-09-18 13:33           ` Daniel Jacobowitz
@ 2007-09-18 14:02           ` Jie Zhang
  2007-09-18 14:27             ` Bernd Schmidt
  2007-11-27 14:10             ` Bernd Schmidt
  1 sibling, 2 replies; 72+ messages in thread
From: Jie Zhang @ 2007-09-18 14:02 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: gcc

Bernd Schmidt wrote:
> Jie Zhang wrote:
>> Bernd Schmidt wrote:
>>> Jie Zhang wrote:
>>>> But by design if gcc_no_link = no, link tests should be avoided.
>>>
>>> ??? I would have thought gcc_no_link = yes means link tests are avoided.
>>>
>> Oops, I meant gcc_no_link = yes.
> 
> Stupid double negatives.  Okay, so then your problem is that 
> gcc_no_link=yes.  Find out why it's setting that.
> 
bfin-elf-gcc -mfdpic failed to link a simple test case because code is 
put into L1 instruction sram and data is put into L1 data sram, but 
Blackfin immediate offset load instruction cannot access GOT since the 
gap between instruction sram and data sram is too large. Using -msim as 
default will pass this test case and build gcc without problem but I 
would like bfin-elf-gcc target hardware board by default. Use -fPIC as 
default is not good, since -fpic is enough for any real applications. So 
I would like to avoid link test for shl_load when GCC_NO_EXECUTABLES.


Jie

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 13:33           ` Daniel Jacobowitz
@ 2007-09-18 14:11             ` Jie Zhang
  0 siblings, 0 replies; 72+ messages in thread
From: Jie Zhang @ 2007-09-18 14:11 UTC (permalink / raw)
  To: Bernd Schmidt, Jie Zhang, gcc

Daniel Jacobowitz wrote:
> On Tue, Sep 18, 2007 at 03:27:18PM +0200, Bernd Schmidt wrote:
>> Jie Zhang wrote:
>>> Bernd Schmidt wrote:
>>>> Jie Zhang wrote:
>>>>> But by design if gcc_no_link = no, link tests should be avoided.
>>>> ??? I would have thought gcc_no_link = yes means link tests are avoided.
>>>>
>>> Oops, I meant gcc_no_link = yes.
>> Stupid double negatives.  Okay, so then your problem is that gcc_no_link=yes.  
>> Find out why it's setting that.
> 
> It always does for newlib.  The libtool tests are relatively recent
> (from some recent autotools upgrade).
> 
Yes, It was added by

http://sourceware.org/ml/binutils/2007-05/msg00247.html


Jie

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 13:55 ` Rask Ingemann Lambertsen
@ 2007-09-18 14:19   ` Jie Zhang
  2007-09-18 16:09     ` Rask Ingemann Lambertsen
  0 siblings, 1 reply; 72+ messages in thread
From: Jie Zhang @ 2007-09-18 14:19 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen; +Cc: gcc

Rask Ingemann Lambertsen wrote:
> On Tue, Sep 18, 2007 at 07:55:45PM +0800, Jie Zhang wrote:
>> libstdc++ tries to avoid link tests when configured with newlib. But I
>> saw this when working on bfin port gcc:
> 
>From config.log:
> /home/rask/build/gcc-bfin-unknown-elf/gcc/../ld/ld-new:
> cannot open linker script file bf532.ld: No such file or directory
> 
> $ grep -F -e bf532.ld gcc/config/bfin/*
> gcc/config/bfin/elf.h:%{!T*:%{!msim:%{mcpu=bf531:-Tbf531.ld}%{mcpu=bf532:-Tbf532.ld} \
> gcc/config/bfin/elf.h:        %{!mcpu=*:-Tbf532.ld}}}"
> 
> The file bf532.ld is nowhere to be found in gcc or newlib/libgloss.
> 
I have not pushed out our recent newlib/libgloss changes to upstream 
yet. Currently you could get latest blackfin port newlib/libgloss from

http://blackfin.uclinux.org/gf/project/toolchain/scmsvn

But if it cannot find bf532.ld, it should avoid further link tests.


Jie

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 14:02           ` Jie Zhang
@ 2007-09-18 14:27             ` Bernd Schmidt
  2007-09-18 14:48               ` Jie Zhang
  2007-11-27 14:10             ` Bernd Schmidt
  1 sibling, 1 reply; 72+ messages in thread
From: Bernd Schmidt @ 2007-09-18 14:27 UTC (permalink / raw)
  To: Jie Zhang; +Cc: gcc

Jie Zhang wrote:
> Bernd Schmidt wrote:
>> Jie Zhang wrote:
>>> Bernd Schmidt wrote:
>>>> Jie Zhang wrote:
>>>>> But by design if gcc_no_link = no, link tests should be avoided.
>>>>
>>>> ??? I would have thought gcc_no_link = yes means link tests are 
>>>> avoided.
>>>>
>>> Oops, I meant gcc_no_link = yes.
>>
>> Stupid double negatives.  Okay, so then your problem is that 
>> gcc_no_link=yes.  Find out why it's setting that.
>>
> bfin-elf-gcc -mfdpic failed to link a simple test case because code is 
> put into L1 instruction sram and data is put into L1 data sram, but 
> Blackfin immediate offset load instruction cannot access GOT since the 
> gap between instruction sram and data sram is too large. Using -msim as 
> default will pass this test case and build gcc without problem but I 
> would like bfin-elf-gcc target hardware board by default.

Any chance we could target it in such a way as to not put everything in 
L1 by default?  I think it's stupid to have configure tests failing for 
such a reason.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 14:27             ` Bernd Schmidt
@ 2007-09-18 14:48               ` Jie Zhang
  0 siblings, 0 replies; 72+ messages in thread
From: Jie Zhang @ 2007-09-18 14:48 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: gcc

Bernd Schmidt wrote:
> Jie Zhang wrote:
>> bfin-elf-gcc -mfdpic failed to link a simple test case because code is 
>> put into L1 instruction sram and data is put into L1 data sram, but 
>> Blackfin immediate offset load instruction cannot access GOT since the 
>> gap between instruction sram and data sram is too large. Using -msim 
>> as default will pass this test case and build gcc without problem but 
>> I would like bfin-elf-gcc target hardware board by default.
> 
> Any chance we could target it in such a way as to not put everything in 
> L1 by default?  I think it's stupid to have configure tests failing for 
> such a reason.
> 
But then we need add sdram initialization code into crt files, which is 
usually provided by applications when needed.


Jie

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 14:19   ` Jie Zhang
@ 2007-09-18 16:09     ` Rask Ingemann Lambertsen
  2007-09-18 17:45       ` Rask Ingemann Lambertsen
  0 siblings, 1 reply; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-09-18 16:09 UTC (permalink / raw)
  To: Jie Zhang; +Cc: gcc

On Tue, Sep 18, 2007 at 10:19:37PM +0800, Jie Zhang wrote:
> Rask Ingemann Lambertsen wrote:
> >The file bf532.ld is nowhere to be found in gcc or newlib/libgloss.
> >
> I have not pushed out our recent newlib/libgloss changes to upstream 
> yet. Currently you could get latest blackfin port newlib/libgloss from
> 
> http://blackfin.uclinux.org/gf/project/toolchain/scmsvn

   Thanks. With that, I instead get:

/home/rask/build/gcc-bfin-unknown-elf/gcc/../ld/ld-new:
crt532.o: No such file: No such file or directory

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 16:09     ` Rask Ingemann Lambertsen
@ 2007-09-18 17:45       ` Rask Ingemann Lambertsen
  2007-09-19  3:43         ` Jie Zhang
  0 siblings, 1 reply; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-09-18 17:45 UTC (permalink / raw)
  To: Jie Zhang; +Cc: gcc

On Tue, Sep 18, 2007 at 06:09:18PM +0200, Rask Ingemann Lambertsen wrote:
> On Tue, Sep 18, 2007 at 10:19:37PM +0800, Jie Zhang wrote:
> > Rask Ingemann Lambertsen wrote:
> > >The file bf532.ld is nowhere to be found in gcc or newlib/libgloss.
> > >
> > I have not pushed out our recent newlib/libgloss changes to upstream 
> > yet. Currently you could get latest blackfin port newlib/libgloss from
> > 
> > http://blackfin.uclinux.org/gf/project/toolchain/scmsvn
> 
>    Thanks. With that, I instead get:
> 
> /home/rask/build/gcc-bfin-unknown-elf/gcc/../ld/ld-new:
> crt532.o: No such file: No such file or directory

   I sorted that out by using your config/bfin/elf.h, but there's something
weird. The first time configure runs, it will complain about
GCC_NO_EXECUTABLES but there's no (obvious) clue as to why in config.log. If
I run make again, it begins to build libstdc++ but fails with this:

Making all in libsupc++
make[4]: Entering directory `/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/libsupc++'
/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile /home/rask/build/gcc-bfin-unknown-elf/./gcc/xgcc -shared-libgcc -B/home/rask/build/gcc-bfin-unknown-elf/./gcc -nostdinc++ -L/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/src -L/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/src/.libs -nostdinc -B/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/newlib/ -isystem /home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/newlib/targ-include -isystem /n/12/rask/src/all/newlib/libc/include -B/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libgloss/bfin -L/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libgloss/libnosys -L/n/12/rask/src/all/libgloss/bfin -B/usr/local/bfin-unknown-elf/bin/ -B/usr/local/bfin-unknown-elf/lib/ -isystem /usr/local/bfin-unknown-elf/include -isystem /usr/local/bfin-unknown-elf/sys-include -L/home/rask/build/gcc-bfin-unknown-elf/./ld -I/n/12/rask/src/all/libstdc++-v3/../gcc -I/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/include/bfin-unknown-elf -I/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/include -I/n/12/rask/src/all/libstdc++-v3/libsupc++  -fno-implicit-templates  -Wall -Wextra -Wwrite-strings -Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections -fdata-sections  -g -O2    -c -o array_type_info.lo /n/12/rask/src/all/libstdc++-v3/libsupc++/array_type_info.cc
/bin/sh: ../libtool: No such file or directory
make[4]: *** [array_type_info.lo] Error 127
make[4]: Leaving directory `/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/libsupc++'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3'
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory `/home/rask/build/gcc-bfin-unknown-elf'
make: *** [all] Error 2

I don't know why this happens to bfin and not to the other newlib targets.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 17:45       ` Rask Ingemann Lambertsen
@ 2007-09-19  3:43         ` Jie Zhang
  0 siblings, 0 replies; 72+ messages in thread
From: Jie Zhang @ 2007-09-19  3:43 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen; +Cc: gcc

Rask Ingemann Lambertsen wrote:
>> /home/rask/build/gcc-bfin-unknown-elf/gcc/../ld/ld-new:
>> crt532.o: No such file: No such file or directory
> 
>    I sorted that out by using your config/bfin/elf.h, but there's something
> weird. The first time configure runs, it will complain about
> GCC_NO_EXECUTABLES but there's no (obvious) clue as to why in config.log. If
> I run make again, it begins to build libstdc++ but fails with this:
> 
> Making all in libsupc++
> make[4]: Entering directory `/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/libsupc++'
> /bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile /home/rask/build/gcc-bfin-unknown-elf/./gcc/xgcc -shared-libgcc -B/home/rask/build/gcc-bfin-unknown-elf/./gcc -nostdinc++ -L/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/src -L/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/src/.libs -nostdinc -B/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/newlib/ -isystem /home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/newlib/targ-include -isystem /n/12/rask/src/all/newlib/libc/include -B/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libgloss/bfin -L/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libgloss/libnosys -L/n/12/rask/src/all/libgloss/bfin -B/usr/local/bfin-unknown-elf/bin/ -B/usr/local/bfin-unknown-elf/lib/ -isystem /usr/local/bfin-unknown-elf/include -isystem /usr/local/bfin-unknown-elf/sys-include -L/home/rask/build/gcc-bfin-unknown-elf/./ld -I/n/12/rask/src/all/libstdc++-v3/../gcc -I/home/r
ask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/include/bfin-unknown-elf -I/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/include -I/n/12/rask/src/all/libstdc++-v3/libsupc++  -fno-implicit-templates  -Wall -Wextra -Wwrite-strings -Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections -fdata-sections  -g -O2    -c -o array_type_info.lo /n/12/rask/src/all/libstdc++-v3/libsupc++/array_type_info.cc
> /bin/sh: ../libtool: No such file or directory
> make[4]: *** [array_type_info.lo] Error 127
> make[4]: Leaving directory `/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3/libsupc++'
> make[3]: *** [all-recursive] Error 1
> make[3]: Leaving directory `/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3'
> make[2]: *** [all] Error 2
> make[2]: Leaving directory `/home/rask/build/gcc-bfin-unknown-elf/bfin-unknown-elf/libstdc++-v3'
> make[1]: *** [all-target-libstdc++-v3] Error 2
> make[1]: Leaving directory `/home/rask/build/gcc-bfin-unknown-elf'
> make: *** [all] Error 2
> 
> I don't know why this happens to bfin and not to the other newlib targets.
> 
I guess it might be caused by different multilib settings in our local 
(not FSF) newlib and FSF gcc. I have committed a patch in FSF gcc which 
makes FSF gcc use the same multilib setting as our local gcc. Sorry 
about that. Please try again.


Jie

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-09-18 14:02           ` Jie Zhang
  2007-09-18 14:27             ` Bernd Schmidt
@ 2007-11-27 14:10             ` Bernd Schmidt
  2007-11-27 22:40               ` Mark Mitchell
  1 sibling, 1 reply; 72+ messages in thread
From: Bernd Schmidt @ 2007-11-27 14:10 UTC (permalink / raw)
  To: Jie Zhang; +Cc: gcc, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 1524 bytes --]

Jie Zhang wrote:
> Bernd Schmidt wrote:
>> Jie Zhang wrote:
>>> Bernd Schmidt wrote:
>>>> Jie Zhang wrote:
>>>>> But by design if gcc_no_link = no, link tests should be avoided.
>>>>
>>>> ??? I would have thought gcc_no_link = yes means link tests are
>>>> avoided.
>>>>
>>> Oops, I meant gcc_no_link = yes.
>>
>> Stupid double negatives.  Okay, so then your problem is that
>> gcc_no_link=yes.  Find out why it's setting that.
>>
> bfin-elf-gcc -mfdpic failed to link a simple test case because code is
> put into L1 instruction sram and data is put into L1 data sram, but
> Blackfin immediate offset load instruction cannot access GOT since the
> gap between instruction sram and data sram is too large. Using -msim as
> default will pass this test case and build gcc without problem but I
> would like bfin-elf-gcc target hardware board by default. Use -fPIC as
> default is not good, since -fpic is enough for any real applications. So
> I would like to avoid link test for shl_load when GCC_NO_EXECUTABLES.

I've committed the following to take care of this.  Neither -mfdpic nor
-mid-shared-library are actually useful with bfin-elf toolchains, but by
making them imply -msim, we can at least get these kinds of configure
test executables to link.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

[-- Attachment #2: fix-bfin-elf.diff --]
[-- Type: text/x-patch, Size: 2198 bytes --]

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 130463)
+++ ChangeLog	(working copy)
@@ -1,3 +1,8 @@
+2007-11-27  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* config/bfin/elf.h (SUBTARGET_DRIVER_SELF_SPECS): New macro.
+	* doc/invoke.texi (Blackfin Options): Document the effects.
+
 2007-11-27  Ben Elliston  <bje@au.ibm.com>
 
 	* config/rs6000/sysv4.opt (m32): Add Negative(m64).
Index: config/bfin/elf.h
===================================================================
--- config/bfin/elf.h	(revision 130463)
+++ config/bfin/elf.h	(working copy)
@@ -30,4 +30,8 @@ asm ("P3 = [SP + 20];\n\tcall " USER_LAB
 asm (TEXT_SECTION_ASM_OP);
 #endif
 
+#undef SUBTARGET_DRIVER_SELF_SPECS
+#define SUBTARGET_DRIVER_SELF_SPECS \
+     "%{mfdpic:-msim} %{mid-shared-library:-msim}"
+
 #define NO_IMPLICIT_EXTERN_C
Index: doc/invoke.texi
===================================================================
--- doc/invoke.texi	(revision 130463)
+++ doc/invoke.texi	(working copy)
@@ -8668,6 +8668,8 @@ provided by libgloss to be linked in if 
 Specifies that the program will be run on the simulator.  This causes
 the simulator BSP provided by libgloss to be linked in.  This option
 has effect only for @samp{bfin-elf} toolchain.
+Certain other options, such as @option{-mid-shared-library} and
+@option{-mfdpic}, imply @option{-msim}.
 
 @item -momit-leaf-frame-pointer
 @opindex momit-leaf-frame-pointer
@@ -8717,6 +8719,7 @@ uClinux kernel.
 Generate code that supports shared libraries via the library ID method.
 This allows for execute in place and shared libraries in an environment
 without virtual memory management.  This option implies @option{-fPIC}.
+With a @samp{bfin-elf} target, this option implies @option{-msim}.
 
 @item -mno-id-shared-library
 @opindex mno-id-shared-library
@@ -9642,6 +9645,7 @@ implies @option{-fPIE}.  With @option{-f
 assumes GOT entries and small data are within a 12-bit range from the
 GOT base address; with @option{-fPIC} or @option{-fPIE}, GOT offsets
 are computed with 32 bits.
+With a @samp{bfin-elf} target, this option implies @option{-msim}.
 
 @item -minline-plt
 @opindex minline-plt

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-27 14:10             ` Bernd Schmidt
@ 2007-11-27 22:40               ` Mark Mitchell
  2007-11-27 22:46                 ` Bernd Schmidt
  0 siblings, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-11-27 22:40 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: Jie Zhang, gcc, GCC Patches

Bernd Schmidt wrote:

> I've committed the following to take care of this.  Neither -mfdpic nor
> -mid-shared-library are actually useful with bfin-elf toolchains, but by
> making them imply -msim, we can at least get these kinds of configure
> test executables to link.

My impression was that we'd developed the consensus that generic ELF
ports should not have a default board.  (IIRC, Power and MIPS are like
that; if you don't say -msim explicitly, you get a link error.)

If -mfdpic doesn't make sense for Blackfin, shouldn't it just be an
error?  Why accept it, but make it imply the simulator?

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-27 22:40               ` Mark Mitchell
@ 2007-11-27 22:46                 ` Bernd Schmidt
  2007-11-27 23:40                   ` Mark Mitchell
  0 siblings, 1 reply; 72+ messages in thread
From: Bernd Schmidt @ 2007-11-27 22:46 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Jie Zhang, gcc, GCC Patches

Mark Mitchell wrote:
> Bernd Schmidt wrote:
> 
>> I've committed the following to take care of this.  Neither -mfdpic nor
>> -mid-shared-library are actually useful with bfin-elf toolchains, but by
>> making them imply -msim, we can at least get these kinds of configure
>> test executables to link.
> 
> My impression was that we'd developed the consensus that generic ELF
> ports should not have a default board.  (IIRC, Power and MIPS are like
> that; if you don't say -msim explicitly, you get a link error.)
> 
> If -mfdpic doesn't make sense for Blackfin, shouldn't it just be an
> error?  Why accept it, but make it imply the simulator?

Because all the target libraries fail to build if the configure tests
don't link.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-27 22:46                 ` Bernd Schmidt
@ 2007-11-27 23:40                   ` Mark Mitchell
  2007-11-27 23:48                     ` Bernd Schmidt
  0 siblings, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-11-27 23:40 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: Jie Zhang, gcc, GCC Patches

Bernd Schmidt wrote:

>> If -mfdpic doesn't make sense for Blackfin, shouldn't it just be an
>> error?  Why accept it, but make it imply the simulator?
> 
> Because all the target libraries fail to build if the configure tests
> don't link.

But why isn't that a problem with the target libraries or the way in
which GCC is being configured?  Why don't we have that problem for MIPS
or Power, given that they don't link with a target board by default either?

I'm not trying to be rhetorical.  I just want to understand what's going
on here because it sounded to me from your patch like we were making the
compiler accept options that don't make sense in order to work around
some problem -- and maybe that problem is what should really be solved.

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-27 23:40                   ` Mark Mitchell
@ 2007-11-27 23:48                     ` Bernd Schmidt
  2007-11-28  0:19                       ` Mark Mitchell
  2007-11-28  1:42                       ` Joseph S. Myers
  0 siblings, 2 replies; 72+ messages in thread
From: Bernd Schmidt @ 2007-11-27 23:48 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Jie Zhang, gcc, GCC Patches

Mark Mitchell wrote:
>> Bernd Schmidt wrote:
>> 
>>>> If -mfdpic doesn't make sense for Blackfin, shouldn't it just be an
>>>> error?  Why accept it, but make it imply the simulator?
>>> Because all the target libraries fail to build if the configure tests
>>> don't link.
>> 
>> But why isn't that a problem with the target libraries or the way in
>> which GCC is being configured?  Why don't we have that problem for MIPS
>> or Power, given that they don't link with a target board by default either?

That's not something I can answer, being unfamiliar with both targets.
Maybe they don't build/need a default multilib for "no particular target"?

>> I'm not trying to be rhetorical.  I just want to understand what's going
>> on here because it sounded to me from your patch like we were making the
>> compiler accept options that don't make sense in order to work around
>> some problem -- and maybe that problem is what should really be solved.

We have two uses for the bfin-elf compiler - building standalone
applications, and bootstrapping uClibc for
bfin-uclinux/bfin-linux-uclibc.  For the latter, we need -mfdpic and
-mid-shared-library multilibs, to at least get a libgcc.  This always
worked since what is now "-msim" was default behaviour, but it started
to fail the libstdc++ configury once Jie changed that to use
target-specific linker scripts.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-27 23:48                     ` Bernd Schmidt
@ 2007-11-28  0:19                       ` Mark Mitchell
  2007-11-28  0:43                         ` Bernd Schmidt
  2007-11-28  1:42                       ` Joseph S. Myers
  1 sibling, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-11-28  0:19 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: Jie Zhang, gcc, GCC Patches

Bernd Schmidt wrote:

>>> But why isn't that a problem with the target libraries or the way in
>>> which GCC is being configured?  Why don't we have that problem for MIPS
>>> or Power, given that they don't link with a target board by default either?
> 
> That's not something I can answer, being unfamiliar with both targets.
> Maybe they don't build/need a default multilib for "no particular target"?

I'm pretty certain that both do have a default multilib for a lowest
common denominator CPU, and that you have to provide explicit options to
link with it.

> We have two uses for the bfin-elf compiler - building standalone
> applications, and bootstrapping uClibc for
> bfin-uclinux/bfin-linux-uclibc.

Most targets just do the usual dance of building compilers and libraries
interleaved appropriately.  For example, we build ARM uClinux compilers
without ever building an ARM ELF compiler.  Why can't you do that for
Blackfin?

> For the latter, we need -mfdpic and
> -mid-shared-library multilibs, to at least get a libgcc.  This always
> worked since what is now "-msim" was default behaviour, but it started
> to fail the libstdc++ configury once Jie changed that to use
> target-specific linker scripts.

I really think that we ought to compare with what happens with MIPS or
Power and figure out what's different.  Are you by any chance
configuring a native compiler, rather than a cross?

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  0:19                       ` Mark Mitchell
@ 2007-11-28  0:43                         ` Bernd Schmidt
  2007-11-28  0:45                           ` Mark Mitchell
  0 siblings, 1 reply; 72+ messages in thread
From: Bernd Schmidt @ 2007-11-28  0:43 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Jie Zhang, gcc, GCC Patches

Mark Mitchell wrote:

>> We have two uses for the bfin-elf compiler - building standalone
>> applications, and bootstrapping uClibc for
>> bfin-uclinux/bfin-linux-uclibc.
> 
> Most targets just do the usual dance of building compilers and libraries
> interleaved appropriately.  For example, we build ARM uClinux compilers
> without ever building an ARM ELF compiler.  Why can't you do that for
> Blackfin?

It sounds more complicated than what we do.  We just build bfin-elf,
build uClibc with it, and build up the bfin-*linux* compilers.  Just
three simple steps.  What do you do for ARM uClinux?

> I really think that we ought to compare with what happens with MIPS or
> Power and figure out what's different.  Are you by any chance
> configuring a native compiler, rather than a cross?

No native compilers - I don't think the linux nommu memory manager would
be very happy about running gcc.  Running the testsuite is bad enough.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  0:43                         ` Bernd Schmidt
@ 2007-11-28  0:45                           ` Mark Mitchell
  2007-11-28  0:55                             ` Bernd Schmidt
  2007-11-28 13:06                             ` Richard Sandiford
  0 siblings, 2 replies; 72+ messages in thread
From: Mark Mitchell @ 2007-11-28  0:45 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: Jie Zhang, gcc, GCC Patches, Richard Sandiford

Bernd Schmidt wrote:

>> Most targets just do the usual dance of building compilers and libraries
>> interleaved appropriately.  For example, we build ARM uClinux compilers
>> without ever building an ARM ELF compiler.  Why can't you do that for
>> Blackfin?
> 
> It sounds more complicated than what we do.  We just build bfin-elf,
> build uClibc with it, and build up the bfin-*linux* compilers.  Just
> three simple steps.  What do you do for ARM uClinux?

I'm not sure of the exact details.  It could be that your way is
simpler.  Perhaps on other systems the ABIs don't quite match, or
something.  In any case, I think that's immaterial.

>> I really think that we ought to compare with what happens with MIPS or
>> Power and figure out what's different.  Are you by any chance
>> configuring a native compiler, rather than a cross?
> 
> No native compilers - I don't think the linux nommu memory manager would
> be very happy about running gcc.  Running the testsuite is bad enough.

Yeah, I didn't think so, but I was trying to think about what could be
different.  I've CC'd Richard Sandiford, as I discussed some of the MIPS
stuff with him at one point.

Note that libstdc++/configure.ac carefully avoids linking except for
$GLIBCXX_IS_NATIVE.  It's a design property that you should not need to
link.  Where in libstdc++ is it requiring linking?

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  0:45                           ` Mark Mitchell
@ 2007-11-28  0:55                             ` Bernd Schmidt
  2007-11-28  1:05                               ` Mark Mitchell
  2007-11-28 13:06                             ` Richard Sandiford
  1 sibling, 1 reply; 72+ messages in thread
From: Bernd Schmidt @ 2007-11-28  0:55 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Jie Zhang, gcc, GCC Patches, Richard Sandiford

Mark Mitchell wrote:
> Note that libstdc++/configure.ac carefully avoids linking except for
> $GLIBCXX_IS_NATIVE.  It's a design property that you should not need to
> link.  Where in libstdc++ is it requiring linking?

Jie started the thread back in September, and posted the following call
trace:

"libstdc++-v3/configure.ac" AM_PROG_LIBTOOL -> "libtool.m4" LT_INIT ->
_LT_SETUP -> _LT_LANG_C_CONFIG -> LT_SYS_DLOPEN_SELF

which leads to
checking for shl_load... configure: error: Link tests are not allowed
after GCC_NO_EXECUTABLES.
make[1]: *** [configure-target-libstdc++-v3] Error 1

Jie had a patch for that, but I decided to fix it by just making things
link, since I've seen other occurrences of this problem over the years.
 It just seems more robust not to require the configure scripts to avoid
linking.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  0:55                             ` Bernd Schmidt
@ 2007-11-28  1:05                               ` Mark Mitchell
  2007-11-28  1:14                                 ` Bernd Schmidt
  2007-11-28  1:28                                 ` Joseph S. Myers
  0 siblings, 2 replies; 72+ messages in thread
From: Mark Mitchell @ 2007-11-28  1:05 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: Jie Zhang, gcc, GCC Patches, Richard Sandiford

Bernd Schmidt wrote:

> "libstdc++-v3/configure.ac" AM_PROG_LIBTOOL -> "libtool.m4" LT_INIT ->
> _LT_SETUP -> _LT_LANG_C_CONFIG -> LT_SYS_DLOPEN_SELF
> 
> which leads to
> checking for shl_load... configure: error: Link tests are not allowed
> after GCC_NO_EXECUTABLES.
> make[1]: *** [configure-target-libstdc++-v3] Error 1

Thanks.  Perhaps the difference here is that <dlfcn.h> isn't available
for MIPS/Power ELF, but is available in your configuration because
you're building with uClibc as your C library?  If so, I think there are
ways that we can solve this problem that don't involve adding -msim.  (I
haven't looked at Jie's approach, so I can't comment on that.)

> Jie had a patch for that, but I decided to fix it by just making things
> link, since I've seen other occurrences of this problem over the years.
>  It just seems more robust not to require the configure scripts to avoid
> linking.

I disagree.  Since the preferred bare-metal setup is that linking not
work without -msim (or a -T option), we don't want configure tests that
detect any properties that might depend on what happens when you link.
We want to make sure that detected properties are a property only of the
parts that a user isn't going to change.

In any case, I think this is something that ought to be decided as a
global policy for GCC and its run-time libraries, not something that
differs between ports.  In particular, if run-time libraries are allowed
to depend on linking in their configure tests, that's something everyone
should know.

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  1:05                               ` Mark Mitchell
@ 2007-11-28  1:14                                 ` Bernd Schmidt
  2007-11-28  2:14                                   ` Mark Mitchell
  2007-11-28  1:28                                 ` Joseph S. Myers
  1 sibling, 1 reply; 72+ messages in thread
From: Bernd Schmidt @ 2007-11-28  1:14 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Jie Zhang, gcc, GCC Patches, Richard Sandiford

Mark Mitchell wrote:
> Bernd Schmidt wrote:
> 
>> "libstdc++-v3/configure.ac" AM_PROG_LIBTOOL -> "libtool.m4" LT_INIT ->
>> _LT_SETUP -> _LT_LANG_C_CONFIG -> LT_SYS_DLOPEN_SELF
>>
>> which leads to
>> checking for shl_load... configure: error: Link tests are not allowed
>> after GCC_NO_EXECUTABLES.
>> make[1]: *** [configure-target-libstdc++-v3] Error 1
> 
> Thanks.  Perhaps the difference here is that <dlfcn.h> isn't available
> for MIPS/Power ELF, but is available in your configuration because
> you're building with uClibc as your C library?

We're talking bfin-elf here, so that'd be newlib.  I have no great
desire to meddle in the affairs of libtool, and I'd like to again make
the point that this isn't the first time I've seen the "Link tests are
not allowed after GCC_NO_EXECUTABLES" message; if there is a rule that
libstdc++ configure shouldn't try to link anything, it doesn't appear to
be well enforced.

There's another reason why the patch is helpful: the uClibc build system
tries to guess an OUTPUT_FORMAT for the linker from the output of
  bfin-elf-gcc -mfdpic -Wl,--verbose
which currently fails because without -msim, the linker is trying to
pull in the wrong objects.  I suppose that could be changed too, or I
could try to investigate other ways of building up all the toolchains
that don't require -mfdpic multilibs for bfin-elf.

> In any case, I think this is something that ought to be decided as a
> global policy for GCC and its run-time libraries, not something that
> differs between ports.  In particular, if run-time libraries are allowed
> to depend on linking in their configure tests, that's something everyone
> should know.

If you wish to approve Jie's original patch, I'm not stopping you.  I'll
then revert my patch if I can get some fix into the uClibc repository,
but I reserve the right to reapply it in the future if libstdc++ breaks
my build again.

What I'm trying to do here is to ensure that gcc-4.3 will work out of
the box as a compiler for our uClinux distribution.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  1:05                               ` Mark Mitchell
  2007-11-28  1:14                                 ` Bernd Schmidt
@ 2007-11-28  1:28                                 ` Joseph S. Myers
  2007-11-28  2:07                                   ` Mark Mitchell
  1 sibling, 1 reply; 72+ messages in thread
From: Joseph S. Myers @ 2007-11-28  1:28 UTC (permalink / raw)
  To: Mark Mitchell
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, Richard Sandiford

On Tue, 27 Nov 2007, Mark Mitchell wrote:

> In any case, I think this is something that ought to be decided as a
> global policy for GCC and its run-time libraries, not something that
> differs between ports.  In particular, if run-time libraries are allowed
> to depend on linking in their configure tests, that's something everyone
> should know.

For GNU/Linux, we decided some time ago that libstdc++ configuration would 
require link tests in order to identify the precise functions available in 
that particular multilib's libc version and configuration (depending, for 
example, on how uClibc is configured).  It is, after all, the case that 
you cannot create a proper libstdc++ shared library on a glibc system 
without linking it against a shared glibc so that it is bound to the right 
symbol versions in that glibc (static libraries do not generally remain 
compatible across glibc upgrades where symbols the static libraries use 
get new versions), and so you must already have a C library you can link 
against in order for libstdc++ to build, so you may as well use that 
library at configure time.  Some other targets similarly do many link 
checks in libstdc++-v3/crossconfig.m4.

If only static libraries are being built, it may be possible to build them 
without linking, and in such cases it may be possible to define a generic 
set of libc symbols considered to be present, as libstdc++-v3/configure.ac 
does with newlib.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-27 23:48                     ` Bernd Schmidt
  2007-11-28  0:19                       ` Mark Mitchell
@ 2007-11-28  1:42                       ` Joseph S. Myers
  1 sibling, 0 replies; 72+ messages in thread
From: Joseph S. Myers @ 2007-11-28  1:42 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: Mark Mitchell, Jie Zhang, gcc, GCC Patches

On Tue, 27 Nov 2007, Bernd Schmidt wrote:

> We have two uses for the bfin-elf compiler - building standalone
> applications, and bootstrapping uClibc for
> bfin-uclinux/bfin-linux-uclibc.  For the latter, we need -mfdpic and
> -mid-shared-library multilibs, to at least get a libgcc.  This always
> worked since what is now "-msim" was default behaviour, but it started
> to fail the libstdc++ configury once Jie changed that to use
> target-specific linker scripts.

When you are building a compiler to bootstrap libc, with a view to 
building a later full toolchain using that libc, the bootstrap compiler 
should be C-only (and have most of the other runtime libraries apart from 
libgcc disabled), so you only build libstdc++ after you have a libc.

The only exception would be if your libc contains C++ code and depends on 
libstdc++ - I think this has been mentioned as an issue for Cygwin.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  1:28                                 ` Joseph S. Myers
@ 2007-11-28  2:07                                   ` Mark Mitchell
  2007-11-28  2:40                                     ` Joseph S. Myers
  2007-11-28 11:40                                     ` Hans-Peter Nilsson
  0 siblings, 2 replies; 72+ messages in thread
From: Mark Mitchell @ 2007-11-28  2:07 UTC (permalink / raw)
  To: Joseph S. Myers
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, Richard Sandiford

Joseph S. Myers wrote:
> On Tue, 27 Nov 2007, Mark Mitchell wrote:
> 
>> In any case, I think this is something that ought to be decided as a
>> global policy for GCC and its run-time libraries, not something that
>> differs between ports.  In particular, if run-time libraries are allowed
>> to depend on linking in their configure tests, that's something everyone
>> should know.
> 
> For GNU/Linux, we decided some time ago that libstdc++ configuration would 
> require link tests in order to identify the precise functions available in 
> that particular multilib's libc version and configuration (depending, for 
> example, on how uClibc is configured).

Yes, that makes sense to me.  Bare metal systems are of course somewhat
different.  What do you think about that?

> If only static libraries are being built, it may be possible to build them 
> without linking, and in such cases it may be possible to define a generic 
> set of libc symbols considered to be present, as libstdc++-v3/configure.ac 
> does with newlib.

Do you understand how MIPS/Power works?  I'd really like to know what
the difference is.  It might be an easy difference to resolve, or there
might be something more fundamental, but before we do anything I'd like
to know why one works and the other doesn't.

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  1:14                                 ` Bernd Schmidt
@ 2007-11-28  2:14                                   ` Mark Mitchell
  2007-11-28 13:30                                     ` Bernd Schmidt
  0 siblings, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-11-28  2:14 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: Jie Zhang, gcc, GCC Patches, Richard Sandiford

Bernd Schmidt wrote:

> If you wish to approve Jie's original patch, I'm not stopping you.

Do you have a pointer?  Otherwise, I'll poke around and find it.  I
don't have a preconceived notion here, and I'm not trying to kick up a
big fuss; I'm just trying to understand the situation better.

> What I'm trying to do here is to ensure that gcc-4.3 will work out of
> the box as a compiler for our uClinux distribution.

Understood.  Out of curiousity, do you eventually build a bfin-uclinux
compiler, once you've built uClibc, or do you just use the bfin-elf
compiler on uClinux?

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  2:07                                   ` Mark Mitchell
@ 2007-11-28  2:40                                     ` Joseph S. Myers
  2007-11-28  8:12                                       ` Mark Mitchell
  2007-11-28 13:17                                       ` Bernd Schmidt
  2007-11-28 11:40                                     ` Hans-Peter Nilsson
  1 sibling, 2 replies; 72+ messages in thread
From: Joseph S. Myers @ 2007-11-28  2:40 UTC (permalink / raw)
  To: Mark Mitchell
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, Richard Sandiford

On Tue, 27 Nov 2007, Mark Mitchell wrote:

> Yes, that makes sense to me.  Bare metal systems are of course somewhat
> different.  What do you think about that?

I think it's well established that at least some bare-metal systems 
default to not linking with any particular start-files (etc.).

> > If only static libraries are being built, it may be possible to build them 
> > without linking, and in such cases it may be possible to define a generic 
> > set of libc symbols considered to be present, as libstdc++-v3/configure.ac 
> > does with newlib.
> 
> Do you understand how MIPS/Power works?  I'd really like to know what
> the difference is.  It might be an easy difference to resolve, or there
> might be something more fundamental, but before we do anything I'd like
> to know why one works and the other doesn't.

* They only build static libstdc++.

* --with-newlib is used, either explicitly or implicitly if newlib is 
built in a combined tree.  (I do not know if it works with --with-newlib 
is not used and it's not a combined tree.)

* configure.ac then checks for --with-newlib and handles it specially by 
hardcoding information about the functions present.

* With --disable-shared, GLIBCXX_ENABLE_SYMVERS disables symbol versioning 
instead of trying to do certain link tests it would do if shared libraries 
are being built; it also does so if unable to link.

* Each other configure test that might wish to link also needs special 
handling or to be appropriately conditional.

* Such special handling is also needed in other target libraries that 
support bare-metal systems (some libraries such as libgomp and libmudflap 
may well not do so at all).


So make sure the build is using --disable-shared if you can't link; if 
that still doesn't help, some configure test somewhere may need disabling, 
either if unable to link, or if not building shared libraries, or some 
other condition.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  2:40                                     ` Joseph S. Myers
@ 2007-11-28  8:12                                       ` Mark Mitchell
  2007-11-28 13:17                                       ` Bernd Schmidt
  1 sibling, 0 replies; 72+ messages in thread
From: Mark Mitchell @ 2007-11-28  8:12 UTC (permalink / raw)
  To: Joseph S. Myers
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, Richard Sandiford

Joseph S. Myers wrote:
> On Tue, 27 Nov 2007, Mark Mitchell wrote:
> 
>> Yes, that makes sense to me.  Bare metal systems are of course somewhat
>> different.  What do you think about that?
> 
> I think it's well established that at least some bare-metal systems 
> default to not linking with any particular start-files (etc.).

Sorry, I meant to be asking: "for bare-metal, do you think we should
permit the library configure scripts to perform link tests (as we do for
GNU/Linux), or should we require that they perform no link tests?"

>> Do you understand how MIPS/Power works?  I'd really like to know what
>> the difference is.  It might be an easy difference to resolve, or there
>> might be something more fundamental, but before we do anything I'd like
>> to know why one works and the other doesn't.

Thanks for answering this.  Bernd, I'd be interested in whether any of
that helps.

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  2:07                                   ` Mark Mitchell
  2007-11-28  2:40                                     ` Joseph S. Myers
@ 2007-11-28 11:40                                     ` Hans-Peter Nilsson
  1 sibling, 0 replies; 72+ messages in thread
From: Hans-Peter Nilsson @ 2007-11-28 11:40 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: gcc

On Tue, 27 Nov 2007, Mark Mitchell wrote:
> > If only static libraries are being built, it may be possible to build them
> > without linking, and in such cases it may be possible to define a generic
> > set of libc symbols considered to be present, as libstdc++-v3/configure.ac
> > does with newlib.
>
> Do you understand how MIPS/Power works?  I'd really like to know what
> the difference is.  It might be an easy difference to resolve, or there
> might be something more fundamental, but before we do anything I'd like
> to know why one works and the other doesn't.

I don't, but IIRC one thing that was necessary at one time for
CRIS (cris-elf; supposedly bare-metal newlib) was to a bit
hackishly copy the libgloss startup files to the newlib build
directory where they were expected as per
<http://sourceware.org/ml/newlib/2005/msg00089.html>.

You'll get a "X is not implemented and will always fail" warning
from linking with the non-working default stub functions when
not linking in any board-support package, so IMHO there are no
false pretenses about having built a correct program.

Not a proposed solution, just a datapoint of the hackery that's
pragmatically and historically been needed.  I think at the
time, I just noticed that a toolchain that built (might have
been ppc, might have been mips) happened to have a stub crt0.o
in a place that corresponded to search paths (newlib rather than
libgloss) when linking.

brgds, H-P

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  0:45                           ` Mark Mitchell
  2007-11-28  0:55                             ` Bernd Schmidt
@ 2007-11-28 13:06                             ` Richard Sandiford
  2007-11-28 14:32                               ` Rask Ingemann Lambertsen
                                                 ` (2 more replies)
  1 sibling, 3 replies; 72+ messages in thread
From: Richard Sandiford @ 2007-11-28 13:06 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches

Mark Mitchell <mark@codesourcery.com> writes:
>>> I really think that we ought to compare with what happens with MIPS or
>>> Power and figure out what's different.  Are you by any chance
>>> configuring a native compiler, rather than a cross?
>> 
>> No native compilers - I don't think the linux nommu memory manager would
>> be very happy about running gcc.  Running the testsuite is bad enough.
>
> Yeah, I didn't think so, but I was trying to think about what could be
> different.  I've CC'd Richard Sandiford, as I discussed some of the MIPS
> stuff with him at one point.

This may no longer be relevant given the rest of the thread, but for the
record: what you describe is indeed how things used to work before the
libtool upgrade.  (Although as Rask points out, linking never actually
failed for "int main () { return 0; }" without a -T option for MIPS;
it just gave a warning that __start was undefined and that the entry
point was being set to some built-in value.  I think both Dan and I
thought it should be an error instead, but that didn't fly...)

However, with the libtool upgrade, the shl_load test failed for MIPS
in the same way as it did for Bernd on Blackfin.  Rask got around this
by adding a "-T" option for the simulator board in top-level configure.
I still object to this approach for the reasons we discussed before,
but I didn't have time to come up with an alternative of my own,
so I didn't make a fuss.  It did at least get an unpatched libstdc++-v3
building again.

If Jie has a patch that gets us around the shl_load failure, I'd be glad
for us to go that route, and go back to not using the -T simulator options,
if that's possible.  Especially if we can do it before 4.3 is out, since
4.3 will then keep to the precedent set by earlier releases, and not set
a new precedent of its own.

Richard

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  2:40                                     ` Joseph S. Myers
  2007-11-28  8:12                                       ` Mark Mitchell
@ 2007-11-28 13:17                                       ` Bernd Schmidt
  1 sibling, 0 replies; 72+ messages in thread
From: Bernd Schmidt @ 2007-11-28 13:17 UTC (permalink / raw)
  To: Joseph S. Myers
  Cc: Mark Mitchell, Jie Zhang, gcc, GCC Patches, Richard Sandiford

Joseph S. Myers wrote:

> * They only build static libstdc++.
> 
> * --with-newlib is used, either explicitly or implicitly if newlib is 
> built in a combined tree.  (I do not know if it works with --with-newlib 
> is not used and it's not a combined tree.)
> 
> * configure.ac then checks for --with-newlib and handles it specially by 
> hardcoding information about the functions present.
> 
> * With --disable-shared, GLIBCXX_ENABLE_SYMVERS disables symbol versioning 
> instead of trying to do certain link tests it would do if shared libraries 
> are being built; it also does so if unable to link.

> So make sure the build is using --disable-shared if you can't link; if 
> that still doesn't help, some configure test somewhere may need disabling, 
> either if unable to link, or if not building shared libraries, or some 
> other condition.

We're doing all that.  I think Richard gave the correct answer elsewhere
in the thread: it doesn't actually work without hacks on MIPS either.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  2:14                                   ` Mark Mitchell
@ 2007-11-28 13:30                                     ` Bernd Schmidt
  0 siblings, 0 replies; 72+ messages in thread
From: Bernd Schmidt @ 2007-11-28 13:30 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Jie Zhang, gcc, GCC Patches, Richard Sandiford

Mark Mitchell wrote:
> Understood.  Out of curiousity, do you eventually build a bfin-uclinux
> compiler, once you've built uClibc, or do you just use the bfin-elf
> compiler on uClinux?

We build up several versions of uClibc with bfin-elf, and then we build
two additional separate toolchains: bfin-uclinux and bfin-linux-uclibc.
 The former produces flat binaries (a very simple binary format), while
the latter produces ELF FD-PIC binaries (using the -mfdpic), which
behave essentially like normal ELF binaries and support shared libraries
and dynamic loading.  In the past we used to allow -mfdpic with the
bfin-uclinux toolchain, but the gcc build system didn't cope too well
and we couldn't get it to build shared libraries for one set of
multilibs and not for the other, so we split things up.

We also need a bfin-elf toolchain, and while bare hardware applications
can't use -mfdpic or -mid-shared-library, in the past it hasn't hurt to
provide these multilibs, and it allows us to build up uClibc quite easily.

I guess I could try to build up C-only versions of bfin-uclinux and
bfin-linux-uclibc first and use them for building uClibc, although I'm
certain to get complaints about how the build script suddenly takes so
much longer, and it all seems somewhat more complicated than necessary.


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28 13:06                             ` Richard Sandiford
@ 2007-11-28 14:32                               ` Rask Ingemann Lambertsen
  2007-11-28 17:33                               ` Daniel Jacobowitz
  2007-11-28 19:49                               ` Mark Mitchell
  2 siblings, 0 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-28 14:32 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Wed, Nov 28, 2007 at 08:10:18AM +0000, Richard Sandiford wrote:
> 
> This may no longer be relevant given the rest of the thread, but for the
> record: what you describe is indeed how things used to work before the
> libtool upgrade.  (Although as Rask points out, linking never actually
> failed for "int main () { return 0; }" without a -T option for MIPS;
> it just gave a warning that __start was undefined and that the entry
> point was being set to some built-in value.  I think both Dan and I
> thought it should be an error instead, but that didn't fly...)

This is the error message (which we still get):
warning: cannot find entry symbol _start; defaulting to 0000000000400040

> However, with the libtool upgrade, the shl_load test failed for MIPS
> in the same way as it did for Bernd on Blackfin.  Rask got around this
> by adding a "-T" option for the simulator board in top-level configure.

   Not quite; I arranged for configure to add -L and -B options pointing
into the newlib, libgloss and libgloss/cpu directories when configuring
subdirectories, and it happens only if you build newlib. If you get a link
error with the default -T option, there's still no dice. sparc-unknown-elf
is an example of such a target, but most *-elf targets build out of the box
as long as they can find their newlib and libgloss bits.

> I still object to this approach for the reasons we discussed before,
> but I didn't have time to come up with an alternative of my own,
> so I didn't make a fuss.  It did at least get an unpatched libstdc++-v3
> building again.

   It is not just libstdc++-v3, it is also libgfortran, libobjc, libjava and
libffi. Maybe also libssp and libiberty.

> If Jie has a patch that gets us around the shl_load failure, I'd be glad
> for us to go that route, and go back to not using the -T simulator options,
> if that's possible.  Especially if we can do it before 4.3 is out, since
> 4.3 will then keep to the precedent set by earlier releases, and not set
> a new precedent of its own.

   I'm not against it in principle, but in practice, configuring target
libraries without linking is very fragile and has been broken more often
than not. Unless someone voluteers to battle with autoconf and libtool every
time it breaks, I'd very much prefer to keep the -L and -B options.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28 13:06                             ` Richard Sandiford
  2007-11-28 14:32                               ` Rask Ingemann Lambertsen
@ 2007-11-28 17:33                               ` Daniel Jacobowitz
  2007-11-28 19:49                               ` Mark Mitchell
  2 siblings, 0 replies; 72+ messages in thread
From: Daniel Jacobowitz @ 2007-11-28 17:33 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Wed, Nov 28, 2007 at 08:10:18AM +0000, Richard Sandiford wrote:
> This may no longer be relevant given the rest of the thread, but for the
> record: what you describe is indeed how things used to work before the
> libtool upgrade.  (Although as Rask points out, linking never actually
> failed for "int main () { return 0; }" without a -T option for MIPS;
> it just gave a warning that __start was undefined and that the entry
> point was being set to some built-in value.  I think both Dan and I
> thought it should be an error instead, but that didn't fly...)

It didn't violently not-fly either; I think we persuaded everyone, but
I haven't been back to submit the obvious patch at the end of that
thread yet.

-- 
Daniel Jacobowitz
CodeSourcery

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28 13:06                             ` Richard Sandiford
  2007-11-28 14:32                               ` Rask Ingemann Lambertsen
  2007-11-28 17:33                               ` Daniel Jacobowitz
@ 2007-11-28 19:49                               ` Mark Mitchell
  2007-11-28 21:04                                 ` Richard Sandiford
                                                   ` (2 more replies)
  2 siblings, 3 replies; 72+ messages in thread
From: Mark Mitchell @ 2007-11-28 19:49 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches,
	rsandifo, Rask Ingemann Lambertsen

Richard Sandiford wrote:

> This may no longer be relevant given the rest of the thread, but for the
> record: what you describe is indeed how things used to work before the
> libtool upgrade.

I see.  Thanks for explaining; that puts to rest my vain hope that there
was some simple thing we could do to fix this for Blackfin.

> However, with the libtool upgrade, the shl_load test failed for MIPS
> in the same way as it did for Bernd on Blackfin.  Rask got around this
> by adding a "-T" option for the simulator board in top-level configure.
> I still object to this approach for the reasons we discussed before

If I'm understanding correctly:

* You, Benjamin, and I think the previous behavior was best.

* Bernd is flexible, as long as it works.

* Rask prefers the new behavior because he thinks it will be more robust.

Rask, we may have to agree to disagree, as it's clear we both understand
the pros and cons.  I agree that making things link is more likely to
work, in the sense that it puts a lower burden on run-time library
configure scripts -- but I also think it increases the risk that the
configure scripts get the wrong answer.  And, in some cases, there isn't
any way to get a bare-metal toolchain to link; the necessary bits may be
outside Newlib itself and provided only by the end user.

> If Jie has a patch that gets us around the shl_load failure, I'd be glad
> for us to go that route, and go back to not using the -T simulator options,
> if that's possible.

Bernd kindly forwarded Jie's patch.  Unfortunately, it checks
$cross_compile, which means that native and cross compilers will
configure differently, so I don't think we can use that directly.

However, I think there's a solution.  In particular, on
libstdc++-v3/configure.ac, we do:

AC_LIBTOOL_DLOPEN
AM_PROG_LIBTOOL

The AC_LIBTOOL_DLOPEN call enables checking for dlopen support in
libtool.  The libtool documentation says:

     Enable checking for dlopen support. This macro should be used if
     the package makes use of the `-dlopen' and `-dlpreopen' flags,
     otherwise libtool will assume that the system does not support
     dlopening.  The macro must be called *before* `AC_PROG_LIBTOOL'.

But, for a bare-metal toolchain, I don't think we need that.  So, I'm
guessing that:

  if test "x${with_newlib}" != "xyes"; then
    AC_LIBTOOL_DLOPEN
  fi

will fix the problem.  (We already have checks for $with_newlib
elsewhere in configure.ac, so I think this is in the same spirit, though
a libstdc++ maintainer would of course be best to review the patch.)

Bernd, Richard, Rask, would one of you be willing to explore that route?

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28 19:49                               ` Mark Mitchell
@ 2007-11-28 21:04                                 ` Richard Sandiford
  2007-11-28 22:42                                 ` Rask Ingemann Lambertsen
  2007-11-29 22:59                                 ` Richard Sandiford
  2 siblings, 0 replies; 72+ messages in thread
From: Richard Sandiford @ 2007-11-28 21:04 UTC (permalink / raw)
  To: Mark Mitchell
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, Rask Ingemann Lambertsen

Mark Mitchell <mark@codesourcery.com> writes:
> However, I think there's a solution.  In particular, on
> libstdc++-v3/configure.ac, we do:
>
> AC_LIBTOOL_DLOPEN
> AM_PROG_LIBTOOL
>
> The AC_LIBTOOL_DLOPEN call enables checking for dlopen support in
> libtool.  The libtool documentation says:
>
>      Enable checking for dlopen support. This macro should be used if
>      the package makes use of the `-dlopen' and `-dlpreopen' flags,
>      otherwise libtool will assume that the system does not support
>      dlopening.  The macro must be called *before* `AC_PROG_LIBTOOL'.
>
> But, for a bare-metal toolchain, I don't think we need that.  So, I'm
> guessing that:
>
>   if test "x${with_newlib}" != "xyes"; then
>     AC_LIBTOOL_DLOPEN
>   fi
>
> will fix the problem.  (We already have checks for $with_newlib
> elsewhere in configure.ac, so I think this is in the same spirit, though
> a libstdc++ maintainer would of course be best to review the patch.)
>
> Bernd, Richard, Rask, would one of you be willing to explore that route?

Sure, thanks for the suggestion.  I've built binutils with _start warning
turned into an error, so I'll see how far I get.

Richard

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28 19:49                               ` Mark Mitchell
  2007-11-28 21:04                                 ` Richard Sandiford
@ 2007-11-28 22:42                                 ` Rask Ingemann Lambertsen
  2007-11-29  6:15                                   ` Mark Mitchell
  2007-11-29 22:59                                 ` Richard Sandiford
  2 siblings, 1 reply; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-28 22:42 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Wed, Nov 28, 2007 at 08:15:56AM -0800, Mark Mitchell wrote:
> 
> If I'm understanding correctly:
> 
> * You, Benjamin, and I think the previous behavior was best.
> 
> * Bernd is flexible, as long as it works.
> 
> * Rask prefers the new behavior because he thinks it will be more robust.
>
> Rask, we may have to agree to disagree, as it's clear we both understand
> the pros and cons.  I agree that making things link is more likely to
> work, in the sense that it puts a lower burden on run-time library
> configure scripts -- but I also think it increases the risk that the
> configure scripts get the wrong answer.

   Here's a detail I'm missing. If you configure --with-newlib (or get it
implicitly) and then link with something else when using the toolchain, then
the answers will be wrong, but I don't see how that's any worse than
assuming a set of hard coded link test results.

> And, in some cases, there isn't
> any way to get a bare-metal toolchain to link; the necessary bits may be
> outside Newlib itself and provided only by the end user.

   That's not in itself a problem; you could supply --with-sysroot assuming
you have all the necessary parts built already. It's only when you need GCC
to build those other parts needed to link that it becomes a mess. At the
moment, --with-newlib is a special case in that it allows you to configure
and build a newlib target from scratch with just "configure ...; make" while
e.g. glibc and uClibc targets need a more elaborate process, including
building GCC twice in many cases, and perhaps installing intermediate
libraries to satisfy link tests. A more general --with-libc=dirname option
would configure and build in "dirname", then configure libstdc++ etc. with a
"-B dirname" option to make link tests work.

> But, for a bare-metal toolchain, I don't think we need that.  So, I'm
> guessing that:
> 
>   if test "x${with_newlib}" != "xyes"; then
>     AC_LIBTOOL_DLOPEN
>   fi
> 
> will fix the problem.

   How about an explicit option --without-link-tests, --disable-link-tests
or something like that? Most people don't test on bare-metal targets and
won't notice if they break, but given an explicit option to turn off link
tests, you could make it a requirement to test that configure works with
link tests disabled before checking in changes to configure.{ac,in}.

> (We already have checks for $with_newlib
> elsewhere in configure.ac, so I think this is in the same spirit, though
> a libstdc++ maintainer would of course be best to review the patch.)

   I have a feeling it would be more robust to simulate the link tests
inside the autoconf/libtool macros themselves as opposed to explicitly
avoiding them in each and every configure.{ac,in}. Supply an option
--simulate-link-tests=file_with_results with the default being no and be
happy. A bit like having created config.cache by hand before configuring, I
suppose.

> Bernd, Richard, Rask, would one of you be willing to explore that route?

   I see that Richard has already started, so I'll leave it to him.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28 22:42                                 ` Rask Ingemann Lambertsen
@ 2007-11-29  6:15                                   ` Mark Mitchell
  2007-11-30 19:37                                     ` Rask Ingemann Lambertsen
  0 siblings, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-11-29  6:15 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

Rask Ingemann Lambertsen wrote:

>    Here's a detail I'm missing. If you configure --with-newlib (or get it
> implicitly) and then link with something else when using the toolchain, then
> the answers will be wrong, but I don't see how that's any worse than
> assuming a set of hard coded link test results.

The issue isn't just Newlib; it's the "BSP" (crt0, system-call
implementations, etc.) that you might have in your individual system.
Some BSPs add considerable functionality beyond that provided by Newlib
itself, and we don't want libstdc++ to detect and rely on that.

>    How about an explicit option --without-link-tests, --disable-link-tests
> or something like that? Most people don't test on bare-metal targets and
> won't notice if they break, but given an explicit option to turn off link
> tests, you could make it a requirement to test that configure works with
> link tests disabled before checking in changes to configure.{ac,in}.

That's a reasonable idea, but as Joseph said, for GNU/Linux (and other
"hosted" platforms, presumably), we've decided we do need to do links,
so on those platforms, --without-link-tests would probably result in
broken libraries.

>    I have a feeling it would be more robust to simulate the link tests
> inside the autoconf/libtool macros themselves as opposed to explicitly
> avoiding them in each and every configure.{ac,in}. Supply an option
> --simulate-link-tests=file_with_results with the default being no and be
> happy.

We would still need to hard-code things.  For example, we want libstdc++
to call functions that are in Newlib (but might not be in other C
libraries).  So, libstdc++ has to have some way of asking whether the
function is in the C library, whether by linking, having the answer
hard-coded, or doing some other kind of probe (running nm?).

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28 19:49                               ` Mark Mitchell
  2007-11-28 21:04                                 ` Richard Sandiford
  2007-11-28 22:42                                 ` Rask Ingemann Lambertsen
@ 2007-11-29 22:59                                 ` Richard Sandiford
  2007-11-29 23:18                                   ` Mark Mitchell
                                                     ` (2 more replies)
  2 siblings, 3 replies; 72+ messages in thread
From: Richard Sandiford @ 2007-11-29 22:59 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches

Mark Mitchell <mark@codesourcery.com> writes:
> However, I think there's a solution.  In particular, on
> libstdc++-v3/configure.ac, we do:
>
> AC_LIBTOOL_DLOPEN
> AM_PROG_LIBTOOL
>
> The AC_LIBTOOL_DLOPEN call enables checking for dlopen support in
> libtool.  The libtool documentation says:
>
>      Enable checking for dlopen support. This macro should be used if
>      the package makes use of the `-dlopen' and `-dlpreopen' flags,
>      otherwise libtool will assume that the system does not support
>      dlopening.  The macro must be called *before* `AC_PROG_LIBTOOL'.
>
> But, for a bare-metal toolchain, I don't think we need that.  So, I'm
> guessing that:
>
>   if test "x${with_newlib}" != "xyes"; then
>     AC_LIBTOOL_DLOPEN
>   fi
>
> will fix the problem.  (We already have checks for $with_newlib
> elsewhere in configure.ac, so I think this is in the same spirit, though
> a libstdc++ maintainer would of course be best to review the patch.)

I built a version of binutils that treated an undefined _start as
a hard error.  (I also had another local binutils patch to fix an
unrelated .eh_frame_hdr problem.)  Reverting the libgloss change
and applying the change above introduced no regressions.

Applying this patch would revert to the previous situation of
libgfortran being unbuildable for mips*-elf*.  That's not a regression
from previous releases, and I'm not sure how useful the status quo is.
Even though current mainline can build libgfortran, all tests fail for
simulator testing, and I'm not sure whether you could get it work for
bare-metal boards or not.  It sounds like we've agreed that, if we want
to support libgfortran on targets like mips*-elf*, we should use
libstd++-like with_newlib checks there too.

Perhaps we should turn target-libgfortran off by default for mips*-elf*.
I'll work on a patch to do that if this one is OK.

Richard


	Revert:

	2007-09-10  Rask Ingemann Lambertsen  <rask@sygehus.dk>

	PR other/32154
	* configure.ac: For libgloss targets, point the linker to the linker
	script, startup code and simulator library.
	* configure: Regenerate.

libstdc++-v3/
2007-xx-xx  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac: Don't check AC_LIBTOOL_DLOPEN if using newlib.
	* configure: Regenerate.

Index: configure.ac
===================================================================
--- configure.ac	(revision 130491)
+++ configure.ac	(working copy)
@@ -399,9 +399,6 @@ if test x$enable_libgomp = x ; then
     esac
 fi
 
-# Default libgloss CPU subdirectory.
-libgloss_dir="$target_cpu"
-
 case "${target}" in
   *-*-chorusos)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}"
@@ -507,7 +504,6 @@ case "${target}" in
       *) noconfigdirs="$noconfigdirs gdb readline"
 	 ;;
     esac
-    libgloss_dir=wince
     ;;
   arc-*-*)
     noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
@@ -516,11 +512,9 @@ case "${target}" in
     ;;
   arm-*-coff | strongarm-*-coff | xscale-*-coff)
     noconfigdirs="$noconfigdirs ${libgcj}"
-    libgloss_dir=arm
     ;;
   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-    libgloss_dir=arm
     ;;
   arm*-*-linux-gnueabi)
     noconfigdirs="$noconfigdirs target-qthreads"
@@ -528,11 +522,9 @@ case "${target}" in
     case ${with_newlib} in
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
     esac
-    libgloss_dir=arm
     ;;
   arm*-*-symbianelf*)
     noconfigdirs="$noconfigdirs ${libgcj} target-libiberty"
-    libgloss_dir=arm
     ;;
   arm-*-pe*)
     noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
@@ -579,7 +571,6 @@ case "${target}" in
 	unsupported_languages="$unsupported_languages fortran"
 	noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss";;
     esac
-    libgloss_dir=cris
     ;;
   crx-*-*)
     noconfigdirs="$noconfigdirs target-libstdc++-v3 target-mudflap ${libgcj}"
@@ -590,9 +581,6 @@ case "${target}" in
   d30v-*-*)
     noconfigdirs="$noconfigdirs ${libgcj} gdb"
     ;;
-  ep9312-*-elf | ep9312-*-coff)
-    libgloss_dir=arm
-    ;;
   fr30-*-elf*)
     noconfigdirs="$noconfigdirs ${libgcj} gdb"
     ;;
@@ -624,9 +612,6 @@ case "${target}" in
   hppa*-hp-hpux11*)
     noconfigdirs="$noconfigdirs ld shellutils"
     ;;
-  hppa*-*-pro*)
-    libgloss_dir=pa
-    ;;
   hppa*-*-*)
     # According to Alexandre Oliva <aoliva@redhat.com>, libjava won't
     # build on HP-UX 10.20.
@@ -647,7 +632,6 @@ case "${target}" in
     ;;
   i[[3456789]]86-*-coff | i[[3456789]]86-*-elf)
     noconfigdirs="$noconfigdirs ${libgcj}"
-    libgloss_dir=i386
     ;;
   i[[3456789]]86-*-linux*)
     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
@@ -717,7 +701,6 @@ case "${target}" in
     ;;
   m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
     noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
-    libgloss_dir=m68hc11
     ;;
   m68k-*-elf*)
     noconfigdirs="$noconfigdirs ${libgcj}"
@@ -725,9 +708,6 @@ case "${target}" in
   m68k-*-coff*)
     noconfigdirs="$noconfigdirs ${libgcj}"
     ;;
-  m68*-*-* | fido-*-*)
-    libgloss_dir=m68k
-    ;;
   mcore-*-pe*)
   # The EPOC C++ environment does not support exceptions or rtti,
   # and so building libstdc++-v3 tends not to always work.
@@ -759,17 +739,14 @@ case "${target}" in
     # This is temporary until we can link against shared libraries
   powerpcle-*-solaris*)
     noconfigdirs="$noconfigdirs gdb sim make tcl tk expect itcl gnuserv ${libgcj}"
-    libgloss_dir=rs6000
     ;;
   powerpc-*-beos*)
     noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss ${libgcj}"
     ;;
   powerpc-*-eabi)
     noconfigdirs="$noconfigdirs ${libgcj}"
-    libgloss_dir=rs6000
     ;;
   powerpc-*-eabi* | powerpcle-*-eabi* | powerpc-*-rtems* )
-    libgloss_dir=rs6000
     ;;
   rs6000-*-lynxos*)
     noconfigdirs="$noconfigdirs target-newlib gprof ${libgcj}"
@@ -809,7 +786,6 @@ case "${target}" in
     ;;
   mips*-*-*)
     noconfigdirs="$noconfigdirs gprof ${libgcj}"
-    libgloss_dir=mips
     ;;
   romp-*-*)
     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
@@ -823,19 +799,14 @@ case "${target}" in
     esac
     noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
     ;;
-  sparclet-*-aout* | sparc86x-*-*)
-    libgloss_dir=sparc
-    ;;
   sparc-*-elf*)
     noconfigdirs="$noconfigdirs ${libgcj}"
     ;;
   sparc64-*-elf*)
     noconfigdirs="$noconfigdirs ${libgcj}"
-    libgloss_dir=sparc
     ;;
   sparclite-*-*)
     noconfigdirs="$noconfigdirs ${libgcj}"
-    libgloss_dir=sparc
     ;;
   sparc-*-sunos4*)
     noconfigdirs="$noconfigdirs ${libgcj}"
@@ -2360,19 +2331,6 @@ case " $target_configdirs " in
       # for any libc-related directories first (so make it the last -B
       # switch).
       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/newlib/ -isystem $$r/$(TARGET_SUBDIR)/newlib/targ-include -isystem $$s/newlib/libc/include'
-
-      # If we're building libgloss, find the startup file, simulator library
-      # and linker script.
-      case " $target_configdirs " in
-	*" libgloss "*)
-	# Look for startup file, simulator library and maybe linker script.
-	FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/libgloss/'"$libgloss_dir"
-	# Look for libnosys.a in case the target needs it.
-	FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/libgloss/libnosys'
-	# Most targets have the linker script in the source directory.
-	FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$s/libgloss/'"$libgloss_dir"
-	;;
-      esac
       ;;
    esac
    ;;
@@ -2410,6 +2368,16 @@ fi
 
 # Search for other target-specific linker scripts and such.
 case "${target}" in
+  m32c-*-* )
+    if test -d ${srcdir}/libgloss/m32c; then
+      # This is for crt0.o
+      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/libgloss/m32c'
+      # This is for r8c.ld
+      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/libgloss/m32c'
+      # This is for libnosys.a
+      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/libgloss/libnosys'
+    fi
+    ;;
   mep*)
     FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary"
     ;;
Index: libstdc++-v3/configure.ac
===================================================================
--- libstdc++-v3/configure.ac	(revision 130491)
+++ libstdc++-v3/configure.ac	(working copy)
@@ -82,7 +82,9 @@ AH_TEMPLATE(VERSION, [Version number of 
 # up critical shell variables.
 GLIBCXX_CONFIGURE
 
-AC_LIBTOOL_DLOPEN
+if test "x${with_newlib}" != "xyes"; then
+  AC_LIBTOOL_DLOPEN
+fi
 AM_PROG_LIBTOOL
 AC_SUBST(enable_shared)
 AC_SUBST(enable_static)

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-29 22:59                                 ` Richard Sandiford
@ 2007-11-29 23:18                                   ` Mark Mitchell
  2007-11-29 23:33                                     ` Benjamin Kosnik
  2007-11-30 16:11                                   ` Rask Ingemann Lambertsen
  2007-11-30 18:59                                   ` Rask Ingemann Lambertsen
  2 siblings, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-11-29 23:18 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches,
	rsandifo, libstdc++

Richard Sandiford wrote:

[I've added the libstdc++ list to this mail.  If the libstdc++
maintainers need more context, I'll be happy to provide pointers, as I'm
sure will others CC'd above.]

>>   if test "x${with_newlib}" != "xyes"; then
>>     AC_LIBTOOL_DLOPEN
>>   fi

> Reverting the libgloss change
> and applying the change above introduced no regressions.

Thank you for working on this.

> Perhaps we should turn target-libgfortran off by default for mips*-elf*.

I think that is the right thing to do.  If we want Fortran to work on
bare-metal targets, then we should make it's configure script work like
the libstdc++ one, as you say.

I would like to give the libstdc++ maintainers a chance to comment on
the libstdc++ patch above and Rask and other maintainers a chance to
comment on the libgloss reversion.  I'll pre-approve the patch if no
objections in 48 hours.

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-29 23:18                                   ` Mark Mitchell
@ 2007-11-29 23:33                                     ` Benjamin Kosnik
  0 siblings, 0 replies; 72+ messages in thread
From: Benjamin Kosnik @ 2007-11-29 23:33 UTC (permalink / raw)
  To: Mark Mitchell
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo, libstdc++


> I would like to give the libstdc++ maintainers a chance to comment on
> the libstdc++ patch above and Rask and other maintainers a chance to
> comment on the libgloss reversion.  I'll pre-approve the patch if no
> objections in 48 hours.

This looks fine to me.

-benjamin

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-29 22:59                                 ` Richard Sandiford
  2007-11-29 23:18                                   ` Mark Mitchell
@ 2007-11-30 16:11                                   ` Rask Ingemann Lambertsen
  2007-11-30 16:27                                     ` Mark Mitchell
                                                       ` (3 more replies)
  2007-11-30 18:59                                   ` Rask Ingemann Lambertsen
  2 siblings, 4 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-30 16:11 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo, hp

On Thu, Nov 29, 2007 at 10:05:54PM +0000, Richard Sandiford wrote:

> Even though current mainline can build libgfortran, all tests fail for
> simulator testing, and I'm not sure whether you could get it work for
> bare-metal boards or not. 

   It works on arm-unknown-elf, v850-unknown-elf and frv-unknown-elf:
http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg01428.html
http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg01468.html
http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg00427.html

   Some work has been and is being done in this area:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21185

   Hans, you showed gfortran results for cris-elf, but we don't seem to be
building gfortran for the cris?

> It sounds like we've agreed that, if we want
> to support libgfortran on targets like mips*-elf*, we should use
> libstd++-like with_newlib checks there too.

   Likewise for the other target libraries - how many did you test?

   I tried a build of sparc-unknown-elf (which is know to fail link tests)
with "with_newlib" checks around the AC_LIBTOOL_DLOPEN macro in both
libstdc++ and libgfortran. It fails because:

configure:3391: checking whether symbol versioning is supported
configure:3402: error: Link tests are not allowed after GCC_NO_EXECUTABLES.

With this patch I get marginally further:

Index: libgfortran/configure.ac
===================================================================
--- libgfortran/configure.ac    (revision 130442)
+++ libgfortran/configure.ac    (working copy)
@@ -142,12 +142,14 @@
   global: *foo*; bar; local: *;
 };
 EOF
-save_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
-AC_TRY_LINK([int foo;],[],[gfortran_use_symver=yes],[gfortran_use_symver=no])
-LDFLAGS="$save_LDFLAGS"
-AC_MSG_RESULT($gfortran_use_symver)
-AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" = xyes])
+if test "x${with_newlib}" != "xyes"; then
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
+  AC_TRY_LINK([int foo;],[],[gfortran_use_symver=yes],[gfortran_use_symver=no])
+  LDFLAGS="$save_LDFLAGS"
+  AC_MSG_RESULT($gfortran_use_symver)
+  AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" = xyes])
+fi

 # Find other programs we need.
 AC_CHECK_TOOL(AS, as)
@@ -158,7 +160,9 @@

 # Configure libtool
 #AC_MSG_NOTICE([====== Starting libtool configuration])
-AC_LIBTOOL_DLOPEN
+if test "x${with_newlib}" != "xyes"; then
+  AC_LIBTOOL_DLOPEN
+fi
 AM_PROG_LIBTOOL
 AC_SUBST(enable_shared)
 AC_SUBST(enable_static)

configure:18061: checking for getrusage
configure:18067: error: Link tests are not allowed after GCC_NO_EXECUTABLES.

> Perhaps we should turn target-libgfortran off by default for mips*-elf*.

   No. There is a point in excercising the compiler: Testing. In most cases,
you don't find problems with the compiler until you try to compile something.

> @@ -2410,6 +2368,16 @@ fi
>  
>  # Search for other target-specific linker scripts and such.
>  case "${target}" in
> +  m32c-*-* )
> +    if test -d ${srcdir}/libgloss/m32c; then
> +      # This is for crt0.o
> +      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/libgloss/m32c'
> +      # This is for r8c.ld
> +      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/libgloss/m32c'
> +      # This is for libnosys.a
> +      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/libgloss/libnosys'
> +    fi
> +    ;;
>    mep*)
>      FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary"
>      ;;

   This hunk should be left out. And I would prefer that we don't revert the
patch until everything that builds with the patch also builds without the
patch.

   Additionally, I would prefer we call the option something else than
--with-newlib - suppose there's no newlib for the target. At least the AVR
uses something else.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 16:11                                   ` Rask Ingemann Lambertsen
@ 2007-11-30 16:27                                     ` Mark Mitchell
  2007-11-30 22:18                                       ` Rask Ingemann Lambertsen
  2007-11-30 17:00                                     ` Richard Sandiford
                                                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-11-30 16:27 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo, hp

Rask Ingemann Lambertsen wrote:

>> Perhaps we should turn target-libgfortran off by default for mips*-elf*.
> 
>    No. There is a point in excercising the compiler: Testing. In most cases,
> you don't find problems with the compiler until you try to compile something.

When building the compiler and its libraries, testing is of incidental
benefit; the primary goal is to build things. :-) The testsuite is for
testing things.

It's great to know that gfortran works for other ELF targets.  That
means that there must be something a bit odd in the MIPS support
somewhere, and I'm sure we can find it and fix it.

Thanks for working on the gfortran configure script.  I think it would
be great to make that work like the libstdc++ script.

>    This hunk should be left out. And I would prefer that we don't revert the
> patch until everything that builds with the patch also builds without the
> patch.

I don't think that's necessary -- unless these things built with
previous releases, in which case I'd be very concerned about making a
change that caused fewer things to build.  Did this work in 4.2?  I
don't know, but I'm expecting that it did not?

It sounds like we upgraded libtool, and that introduced link-time tests
into libstdc++, which caused build failures.  So you came up with the
top-level patch, which then probably made it possible to build some of
the other target libraries that didn't build before for bare metal
because they had always depended on link-time tests.  Is that correct?

We should be conservative about making changes in assumptions.  If we're
going to change the assumption that target library configure scripts
cannot rely on link-time tests when $with_newlib is set, then let's do
that consciously.  I think it's reasonable to take that position (even
though it's not my preference), but I don't want to change the
assumption quietly.  And, I think libstdc++ is our canonical model of a
run-time library; others should follow its lead, until/unless we
consciously decide otherwise.

I also don't want to see each architecture or run-time library doing
things in different ways.  GCC's biggest strength is its cross-platform
nature; we undermine that every time we do things in slightly different
ways within our own individual areas of concentration.

I'm in no way criticizing you or your top-level patch.  I understand
completely why you did what you did and its benefits.  But, I want to
get everyone on the same page, and until that happens, I want to stick
with how things have been in the past.

>    Additionally, I would prefer we call the option something else than
> --with-newlib - suppose there's no newlib for the target. At least the AVR
> uses something else.

That might be a good idea -- I think we do need to know which C library
is in use for at least some of the target libraries.  I'm pretty sure
that libstdc++ actually depends on --with-newlib meaning that you're
using Newlib (rather than some other C library) in that it uses
facilities in Newlib that aren't necessarily part of a standard C
library.  I could be wrong about that, though.

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 16:11                                   ` Rask Ingemann Lambertsen
  2007-11-30 16:27                                     ` Mark Mitchell
@ 2007-11-30 17:00                                     ` Richard Sandiford
  2007-11-30 18:17                                       ` Rask Ingemann Lambertsen
  2007-11-30 20:52                                       ` Mark Mitchell
  2007-11-30 22:48                                     ` Rask Ingemann Lambertsen
       [not found]                                     ` <20071203092630.N17510@dair.pair.com>
  3 siblings, 2 replies; 72+ messages in thread
From: Richard Sandiford @ 2007-11-30 17:00 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen
  Cc: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, hp, dj

Rask Ingemann Lambertsen <rask@sygehus.dk> writes:
> On Thu, Nov 29, 2007 at 10:05:54PM +0000, Richard Sandiford wrote:
>> Even though current mainline can build libgfortran, all tests fail for
>> simulator testing, and I'm not sure whether you could get it work for
>> bare-metal boards or not. 
>
>    It works on arm-unknown-elf, v850-unknown-elf and frv-unknown-elf:
> http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg01428.html
> http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg01468.html
> http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg00427.html
>
>    Some work has been and is being done in this area:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21185
>
>    Hans, you showed gfortran results for cris-elf, but we don't seem to be
> building gfortran for the cris?
>
>> It sounds like we've agreed that, if we want
>> to support libgfortran on targets like mips*-elf*, we should use
>> libstd++-like with_newlib checks there too.
>
>    Likewise for the other target libraries - how many did you test?

C, C++ and Objective C.  Libjava isn't supported before or after
the patch for mips*-elf*.  Which other libraries were you thinking of?

>    I tried a build of sparc-unknown-elf (which is know to fail link tests)
> with "with_newlib" checks around the AC_LIBTOOL_DLOPEN macro in both
> libstdc++ and libgfortran. It fails because:
>
> configure:3391: checking whether symbol versioning is supported
> configure:3402: error: Link tests are not allowed after GCC_NO_EXECUTABLES.
>
> With this patch I get marginally further:

Yeah, as it happens, I'd got a similar patch too.  As the comment says,
the test is taken from libssp, which was later adjusted to handle
$with_newlib correctly:

--------------------------------------------------------------------------
AC_MSG_CHECKING([whether symbol versioning is supported])
cat > conftest.map <<EOF
FOO_1.0 {
  global: *foo*; bar; local: *;
};
EOF
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
if test x$gcc_no_link = xyes; then
  # If we cannot link, we cannot build shared libraries, so do not use
  # symbol versioning.
  ssp_use_symver=no
else
  AC_TRY_LINK([int foo;],[],[ssp_use_symver=yes],[ssp_use_symver=no])
fi
LDFLAGS="$save_LDFLAGS"
AC_MSG_RESULT($ssp_use_symver)
AM_CONDITIONAL(LIBSSP_USE_SYMVER, [test "x$ssp_use_symver" = xyes])
--------------------------------------------------------------------------

So my patch simply copied the new test across to libgfortran, although the
outcome is obviously the same either way.

However, I then realised that it was only the beginning.  We have lots
of AC_CHECK_FUNCS and AC_CHECK_LIB tests, which we would need to handle
in the same way as for libstdc++-v3.  A useful project, but probably too
dangerous for 4.3.

>> @@ -2410,6 +2368,16 @@ fi
>>  
>>  # Search for other target-specific linker scripts and such.
>>  case "${target}" in
>> +  m32c-*-* )
>> +    if test -d ${srcdir}/libgloss/m32c; then
>> +      # This is for crt0.o
>> +      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/libgloss/m32c'
>> +      # This is for r8c.ld
>> +      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/libgloss/m32c'
>> +      # This is for libnosys.a
>> +      FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/libgloss/libnosys'
>> +    fi
>> +    ;;
>>    mep*)
>>      FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary"
>>      ;;
>
>    This hunk should be left out.

I was thinking I should return it to the pre-patch situation, as I wasn't
comfortable overriding a decision made by the m32c maintainer.  That said,
the changelog says:

2006-04-18  DJ Delorie  <dj@redhat.com>

	* configure.in (m32c): Build libstdc++-v3.  Pass flags to
	reference libgloss so that libssp can be built in a combined
	tree.
	* configure: Regenerate.

and libssp was later made newlib-friendly by (at least):

2006-09-29  Joseph S. Myers  <joseph@codesourcery.com>

	PR other/25035
	* configure.ac (AC_EXEEXT): Remove.
	(GCC_NO_EXECUTABLES): Call.
	(ssp_use_symver): Default to no if unable to link.
	(AC_CHECK_FUNCS): Hardwire results if unable to link.
	* aclocal.m4, configure, Makefile.in: Regenerate.

Mark, DJ?  Do you agree it's OK to drop that hunk?

Richard

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 17:00                                     ` Richard Sandiford
@ 2007-11-30 18:17                                       ` Rask Ingemann Lambertsen
  2007-11-30 20:52                                       ` Mark Mitchell
  1 sibling, 0 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-30 18:17 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, hp,
	dj, rsandifo

On Fri, Nov 30, 2007 at 08:44:59AM +0000, Richard Sandiford wrote:
> Rask Ingemann Lambertsen <rask@sygehus.dk> writes:
> > On Thu, Nov 29, 2007 at 10:05:54PM +0000, Richard Sandiford wrote:
> >> It sounds like we've agreed that, if we want
> >> to support libgfortran on targets like mips*-elf*, we should use
> >> libstd++-like with_newlib checks there too.
> >
> >    Likewise for the other target libraries - how many did you test?
> 
> C, C++ and Objective C.  Libjava isn't supported before or after
> the patch for mips*-elf*.  Which other libraries were you thinking of?

   Libjava, libssp and libffi, of which libssp has already been taken care
of.

   I checked my build directories and it looks like we only build libjava on
the ARM and there, it doesn't quite build yet, but that is work in (slow)
progress:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31325
http://gcc.gnu.org/svn/gcc/branches/gcj/gcj-eabi-branch/
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32340

   The only target I know of that builds libffi is ia64-unknown-elf, but
expect arm-unknown-{eabi,elf} to follow. Checking ia64's libffi/config.log,
I spotted three link tests (for mmap, memcpy and alloca).

> I was thinking I should return it to the pre-patch situation, as I wasn't
> comfortable overriding a decision made by the m32c maintainer.  That said,
> the changelog says:
> 
> 2006-04-18  DJ Delorie  <dj@redhat.com>
> 
> 	* configure.in (m32c): Build libstdc++-v3.  Pass flags to
> 	reference libgloss so that libssp can be built in a combined
> 	tree.
> 	* configure: Regenerate.
> 
> and libssp was later made newlib-friendly by (at least):

   And we don't build libjava or libffi on the m32c. That leaves libgfortran
which doesn't build due to PR 32055. So although that hunk did make it into
the 4.2 branch, there's no loss on the m32c.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-29 22:59                                 ` Richard Sandiford
  2007-11-29 23:18                                   ` Mark Mitchell
  2007-11-30 16:11                                   ` Rask Ingemann Lambertsen
@ 2007-11-30 18:59                                   ` Rask Ingemann Lambertsen
  2 siblings, 0 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-30 18:59 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Thu, Nov 29, 2007 at 10:05:54PM +0000, Richard Sandiford wrote:
> libstdc++-v3/
> 2007-xx-xx  Mark Mitchell  <mark@codesourcery.com>
> 
> 	* configure.ac: Don't check AC_LIBTOOL_DLOPEN if using newlib.
> 	* configure: Regenerate.
> 
> Index: libstdc++-v3/configure.ac
> ===================================================================
> --- libstdc++-v3/configure.ac	(revision 130491)
> +++ libstdc++-v3/configure.ac	(working copy)
> @@ -82,7 +82,9 @@ AH_TEMPLATE(VERSION, [Version number of 
>  # up critical shell variables.
>  GLIBCXX_CONFIGURE
>  
> -AC_LIBTOOL_DLOPEN
> +if test "x${with_newlib}" != "xyes"; then
> +  AC_LIBTOOL_DLOPEN
> +fi
>  AM_PROG_LIBTOOL
>  AC_SUBST(enable_shared)
>  AC_SUBST(enable_static)

   This bit is fine with me as it clearly improves the situation. For
example, it is now possible to build and test sparc-unknown-elf with fortran
disabled (--enable-languages=c,c++,objc,obj-c++,java) which is an
improvement over the current situation.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-29  6:15                                   ` Mark Mitchell
@ 2007-11-30 19:37                                     ` Rask Ingemann Lambertsen
  2007-11-30 19:45                                       ` Mark Mitchell
  0 siblings, 1 reply; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-30 19:37 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Wed, Nov 28, 2007 at 03:21:08PM -0800, Mark Mitchell wrote:
> Rask Ingemann Lambertsen wrote:
> 
> >    Here's a detail I'm missing. If you configure --with-newlib (or get it
> > implicitly) and then link with something else when using the toolchain, then
> > the answers will be wrong, but I don't see how that's any worse than
> > assuming a set of hard coded link test results.
> 
> The issue isn't just Newlib; it's the "BSP" (crt0, system-call
> implementations, etc.) that you might have in your individual system.
> Some BSPs add considerable functionality beyond that provided by Newlib
> itself, and we don't want libstdc++ to detect and rely on that.

   Ok, I got that. I suppose that means you don't actually have a way of
making libstdc++ use such extra functionality?

> >    How about an explicit option --without-link-tests, --disable-link-tests
> > or something like that? Most people don't test on bare-metal targets and
> > won't notice if they break, but given an explicit option to turn off link
> > tests, you could make it a requirement to test that configure works with
                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > link tests disabled before checking in changes to configure.{ac,in}.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> That's a reasonable idea, but as Joseph said, for GNU/Linux (and other
> "hosted" platforms, presumably), we've decided we do need to do links,
> so on those platforms, --without-link-tests would probably result in
> broken libraries.

   You wouldn't be using those libraries -- I wouldn't even expect people to
actually wait for the libraries to build -- just check that 'configure
--without-link-tests' runs to completion with no errors, then press ^C.

> >    I have a feeling it would be more robust to simulate the link tests
> > inside the autoconf/libtool macros themselves as opposed to explicitly
> > avoiding them in each and every configure.{ac,in}. Supply an option
> > --simulate-link-tests=file_with_results with the default being no and be
> > happy.
> 
> We would still need to hard-code things.

   Yes. The difference being it wouldn't break the first time someone edits
configure.ac. --simulate-link-tests=file would be similar to
--cache-file=file, but anything not specified in 'file' would default to
'no' instead of being probed for. We would ship a file with the hard-coded
answers. It would need no hacks, tricks or work-arounds in configure.ac, and
it would deal with all the libraries, present, past and future, in one fell
swoop.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 19:37                                     ` Rask Ingemann Lambertsen
@ 2007-11-30 19:45                                       ` Mark Mitchell
  2007-11-30 22:19                                         ` Rask Ingemann Lambertsen
  0 siblings, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-11-30 19:45 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen
  Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

Rask Ingemann Lambertsen wrote:

>> The issue isn't just Newlib; it's the "BSP" (crt0, system-call
>> implementations, etc.) that you might have in your individual system.
>> Some BSPs add considerable functionality beyond that provided by Newlib
>> itself, and we don't want libstdc++ to detect and rely on that.
> 
>    Ok, I got that. I suppose that means you don't actually have a way of
> making libstdc++ use such extra functionality?

Correct.

>    You wouldn't be using those libraries -- I wouldn't even expect people to
> actually wait for the libraries to build -- just check that 'configure
> --without-link-tests' runs to completion with no errors, then press ^C.

Oh, I understand now; that makes sense to me.

>>>    I have a feeling it would be more robust to simulate the link tests
>>> inside the autoconf/libtool macros themselves as opposed to explicitly
>>> avoiding them in each and every configure.{ac,in}. Supply an option
>>> --simulate-link-tests=file_with_results with the default being no and be
>>> happy.
>> We would still need to hard-code things.
> 
>    Yes. The difference being it wouldn't break the first time someone edits
> configure.ac. --simulate-link-tests=file would be similar to
> --cache-file=file, but anything not specified in 'file' would default to
> 'no' instead of being probed for. We would ship a file with the hard-coded
> answers. It would need no hacks, tricks or work-arounds in configure.ac, and
> it would deal with all the libraries, present, past and future, in one fell
> swoop.

That sounds plausible too.  For libstdc++, there's a fair amount of
target-specificity, so you'd presumably end up with multiple cache files
for various targets, but that sounds like it would work.  The tradeoff
is that you might end up adding checks for functions that are in fact
available in Newlib, but, because nobody added them to the cache file,
wouldn't be used.  The advantage to the current setup is that you get a
loud failure, and have to go actually work out the right answer.

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 17:00                                     ` Richard Sandiford
  2007-11-30 18:17                                       ` Rask Ingemann Lambertsen
@ 2007-11-30 20:52                                       ` Mark Mitchell
  2007-11-30 21:17                                         ` DJ Delorie
  2007-12-01  9:55                                         ` Richard Sandiford
  1 sibling, 2 replies; 72+ messages in thread
From: Mark Mitchell @ 2007-11-30 20:52 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen, Mark Mitchell, Bernd Schmidt,
	Jie Zhang, gcc, GCC Patches, hp, dj, rsandifo

Richard Sandiford wrote:

> 2006-04-18  DJ Delorie  <dj@redhat.com>
> 
> 	* configure.in (m32c): Build libstdc++-v3.  Pass flags to
> 	reference libgloss so that libssp can be built in a combined
> 	tree.
> 	* configure: Regenerate.

> Mark, DJ?  Do you agree it's OK to drop that hunk?

I'm not quite sure if you're asking for agreement to leave it in our
sourcebase, or to remove it therefrom, so, unambiguously:

I would prefer to revert DJ's change, for the same reason as the other
changes under discussion, so that we're consistent across architectures.

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 20:52                                       ` Mark Mitchell
@ 2007-11-30 21:17                                         ` DJ Delorie
  2007-12-01  9:55                                         ` Richard Sandiford
  1 sibling, 0 replies; 72+ messages in thread
From: DJ Delorie @ 2007-11-30 21:17 UTC (permalink / raw)
  To: mark; +Cc: rask, mark, bernds_cb1, jzhang918, gcc, gcc-patches, hp, rsandifo


> I would prefer to revert DJ's change, for the same reason as the
> other changes under discussion, so that we're consistent across
> architectures.

I don't care as long as a combined tree still builds.

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 16:27                                     ` Mark Mitchell
@ 2007-11-30 22:18                                       ` Rask Ingemann Lambertsen
  0 siblings, 0 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-30 22:18 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo, hp

On Thu, Nov 29, 2007 at 08:16:22PM -0800, Mark Mitchell wrote:
> Rask Ingemann Lambertsen wrote:
> 
> >> Perhaps we should turn target-libgfortran off by default for mips*-elf*.
> > 
> >    No. There is a point in excercising the compiler: Testing. In most cases,
> > you don't find problems with the compiler until you try to compile something.
> 
> When building the compiler and its libraries, testing is of incidental
> benefit; the primary goal is to build things. :-)   The testsuite is for
> testing things.

   The benefit is the same, incidental or not. We have the testsuite as a
result of someone trying to build something with the compiler and not being
satisfied with the result. Alternatively, think of libfortran as a testsuite
in itself. :-)

> It's great to know that gfortran works for other ELF targets.  That
> means that there must be something a bit odd in the MIPS support
> somewhere, and I'm sure we can find it and fix it.

   I think so too. IIRC, of the *-elf targets that don't currently work with
libfortran, one runs into a memory access trap and the others have a link
failures due to a missing symbol.
 
> It sounds like we upgraded libtool, and that introduced link-time tests
> into libstdc++, which caused build failures.  So you came up with the
> top-level patch, which then probably made it possible to build some of
> the other target libraries that didn't build before for bare metal
> because they had always depended on link-time tests.  Is that correct?

   No, the problem with GCC_NO_EXECUTABLES failures predates the libtool
upgrade and I don't recall any problems related to the libtool upgrade. The
timeline:

2003-08-21: PR 12019 opened: libstdc++ GCC_NO_EXECUTABLES failure.
2006-04-18: DJ Delorie adds -L and -B options for the m32c due to libssp
	    failing to build with GCC_NO_EXECUTABLES problems. The patch
	    also enables libstdc++ on the m32c.
2006-09-29: Joseph S. Myers fixes libssp/configure.ac.
2007-01-??: I duplicate DJ Delorie's -L/-B options for the powerpc.
2007-05-24: Libtool is upgraded with revision 125032, 16:37:27.
2007-05-30: I open PR 32154, early patch against revision 125037, 19:19:31.
2007-09-10: PR 32154 (and PR 12019) fixed.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 19:45                                       ` Mark Mitchell
@ 2007-11-30 22:19                                         ` Rask Ingemann Lambertsen
  2007-12-01  9:48                                           ` Richard Sandiford
  0 siblings, 1 reply; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-30 22:19 UTC (permalink / raw)
  To: Mark Mitchell; +Cc: Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Fri, Nov 30, 2007 at 10:25:34AM -0800, Mark Mitchell wrote:
> Rask Ingemann Lambertsen wrote:
> 
> >>>    I have a feeling it would be more robust to simulate the link tests
> >>> inside the autoconf/libtool macros themselves as opposed to explicitly
> >>> avoiding them in each and every configure.{ac,in}. Supply an option
> >>> --simulate-link-tests=file_with_results with the default being no and be
> >>> happy.

> The advantage to the current setup is that you get a
> loud failure, and have to go actually work out the right answer.

   That's the --cache-file option, except for clobbering the file. I'll see
if I can arrange for the toplevel Makefile to copy a pre-made config.cache
into target library build directories just before running configure. That
ought to deal with all AC_FUNC(S) macros. That leaves just symbol versioning
and AC_LIBTOOL_DLOPEN, which is manageble.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 16:11                                   ` Rask Ingemann Lambertsen
  2007-11-30 16:27                                     ` Mark Mitchell
  2007-11-30 17:00                                     ` Richard Sandiford
@ 2007-11-30 22:48                                     ` Rask Ingemann Lambertsen
       [not found]                                     ` <20071203092630.N17510@dair.pair.com>
  3 siblings, 0 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-11-30 22:48 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo, hp

On Fri, Nov 30, 2007 at 03:21:32AM +0100, Rask Ingemann Lambertsen wrote:
> On Thu, Nov 29, 2007 at 10:05:54PM +0000, Richard Sandiford wrote:
> 
> > Even though current mainline can build libgfortran, all tests fail for
> > simulator testing, and I'm not sure whether you could get it work for
> > bare-metal boards or not. 
> 
>    It works on arm-unknown-elf, v850-unknown-elf and frv-unknown-elf:
> http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg01428.html
> http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg01468.html
> http://gcc.gnu.org/ml/gcc-testresults/2007-11/msg00427.html
> 
>    Some work has been and is being done in this area:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21185
> 
>    Hans, you showed gfortran results for cris-elf, but we don't seem to be
> building gfortran for the cris?

   A one-liner for cris-axis-elf does the trick:

Index: configure.ac
===================================================================
--- configure.ac        (revision 130442)
+++ configure.ac        (working copy)
@@ -571,7 +571,6 @@
        unsupported_languages="$unsupported_languages fortran"
        noconfigdirs="$noconfigdirs target-libffi target-boehm-gc";;
       *-*-elf)
-       unsupported_languages="$unsupported_languages fortran"
        noconfigdirs="$noconfigdirs target-boehm-gc";;
       *-*-linux*)
        noconfigdirs="$noconfigdirs target-newlib target-libgloss";;

                === gfortran Summary ===

# of expected passes            21543
# of unexpected failures        235
# of expected failures          6
# of unresolved testcases       48
# of unsupported tests          116

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 22:19                                         ` Rask Ingemann Lambertsen
@ 2007-12-01  9:48                                           ` Richard Sandiford
  2007-12-01 11:53                                             ` Rask Ingemann Lambertsen
  0 siblings, 1 reply; 72+ messages in thread
From: Richard Sandiford @ 2007-12-01  9:48 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen
  Cc: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches

Rask Ingemann Lambertsen <rask@sygehus.dk> writes:
> On Fri, Nov 30, 2007 at 10:25:34AM -0800, Mark Mitchell wrote:
>> Rask Ingemann Lambertsen wrote:
>> 
>> >>>    I have a feeling it would be more robust to simulate the link tests
>> >>> inside the autoconf/libtool macros themselves as opposed to explicitly
>> >>> avoiding them in each and every configure.{ac,in}. Supply an option
>> >>> --simulate-link-tests=file_with_results with the default being no and be
>> >>> happy.
>
>> The advantage to the current setup is that you get a
>> loud failure, and have to go actually work out the right answer.
>
>    That's the --cache-file option, except for clobbering the file. I'll see
> if I can arrange for the toplevel Makefile to copy a pre-made config.cache
> into target library build directories just before running configure. That
> ought to deal with all AC_FUNC(S) macros. That leaves just symbol versioning
> and AC_LIBTOOL_DLOPEN, which is manageble.

I've lost track of whether we're still talking about what to do for 4.3,
or whether we're talking about future directions.  So: are we considering
this for 4.3, or for 4.4+?

Richard

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-30 20:52                                       ` Mark Mitchell
  2007-11-30 21:17                                         ` DJ Delorie
@ 2007-12-01  9:55                                         ` Richard Sandiford
  2007-12-02 21:01                                           ` Mark Mitchell
  1 sibling, 1 reply; 72+ messages in thread
From: Richard Sandiford @ 2007-12-01  9:55 UTC (permalink / raw)
  To: Mark Mitchell
  Cc: Rask Ingemann Lambertsen, Bernd Schmidt, Jie Zhang, gcc,
	GCC Patches, hp, dj

Mark Mitchell <mark@codesourcery.com> writes:
> Richard Sandiford wrote:
>> 2006-04-18  DJ Delorie  <dj@redhat.com>
>> 
>> 	* configure.in (m32c): Build libstdc++-v3.  Pass flags to
>> 	reference libgloss so that libssp can be built in a combined
>> 	tree.
>> 	* configure: Regenerate.
>
>> Mark, DJ?  Do you agree it's OK to drop that hunk?
>
> I'm not quite sure if you're asking for agreement to leave it in our
> sourcebase, or to remove it therefrom, so, unambiguously:

Yeah, sorry about that.  And...

> I would prefer to revert DJ's change, for the same reason as the other
> changes under discussion, so that we're consistent across architectures.

...I was indeed asking whether I could remove that hunk from the source,
rather than restoring it to its original position.

Anyway, given that there have been objections to the patch generally,
I realise that the pre-approval is void.

Richard

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-12-01  9:48                                           ` Richard Sandiford
@ 2007-12-01 11:53                                             ` Rask Ingemann Lambertsen
  2007-12-01 12:03                                               ` Rask Ingemann Lambertsen
  0 siblings, 1 reply; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-12-01 11:53 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Sat, Dec 01, 2007 at 09:48:20AM +0000, Richard Sandiford wrote:
> Rask Ingemann Lambertsen <rask@sygehus.dk> writes:
> >
> >    That's the --cache-file option, except for clobbering the file. I'll see
> > if I can arrange for the toplevel Makefile to copy a pre-made config.cache
> > into target library build directories just before running configure. That
> > ought to deal with all AC_FUNC(S) macros. That leaves just symbol versioning
> > and AC_LIBTOOL_DLOPEN, which is manageble.
> 
> I've lost track of whether we're still talking about what to do for 4.3,
> or whether we're talking about future directions.  So: are we considering
> this for 4.3, or for 4.4+?

   I'll post a patch to implement the --cache-file trick just as soon as I
figure out why the $with_newlib variable is lost sometime before configuring
libgfortran, because it seems to basicly work apart from that. Then we can
decide for 4.3 or 4.4.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-12-01 11:53                                             ` Rask Ingemann Lambertsen
@ 2007-12-01 12:03                                               ` Rask Ingemann Lambertsen
  2007-12-01 13:37                                                 ` Andreas Schwab
  0 siblings, 1 reply; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-12-01 12:03 UTC (permalink / raw)
  To: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Sat, Dec 01, 2007 at 12:52:52PM +0100, Rask Ingemann Lambertsen wrote:
> 
>    I'll post a patch to implement the --cache-file trick just as soon as I
> figure out why the $with_newlib variable is lost sometime before configuring
> libgfortran, because it seems to basicly work apart from that. Then we can
> decide for 4.3 or 4.4.

   Correction: $with_newlib seems to be completely unavailable in the toplevel
Makefile(.tpl). Any ideas?

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-12-01 12:03                                               ` Rask Ingemann Lambertsen
@ 2007-12-01 13:37                                                 ` Andreas Schwab
  2007-12-01 22:35                                                   ` Rask Ingemann Lambertsen
  0 siblings, 1 reply; 72+ messages in thread
From: Andreas Schwab @ 2007-12-01 13:37 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen
  Cc: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

Rask Ingemann Lambertsen <rask@sygehus.dk> writes:

> On Sat, Dec 01, 2007 at 12:52:52PM +0100, Rask Ingemann Lambertsen wrote:
>> 
>>    I'll post a patch to implement the --cache-file trick just as soon as I
>> figure out why the $with_newlib variable is lost sometime before configuring
>> libgfortran, because it seems to basicly work apart from that. Then we can
>> decide for 4.3 or 4.4.
>
>    Correction: $with_newlib seems to be completely unavailable in the toplevel
> Makefile(.tpl). Any ideas?

Only variables subject to AC_SUBST are available in the generated
Makefile.  There is extra_host_args which includes --with-newlib, but
this is only passed to configure scripts in host directories (via
host_configargs), not target directories.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-12-01 13:37                                                 ` Andreas Schwab
@ 2007-12-01 22:35                                                   ` Rask Ingemann Lambertsen
  2007-12-02 21:11                                                     ` Mark Mitchell
  2007-12-04 14:46                                                     ` Rask Ingemann Lambertsen
  0 siblings, 2 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-12-01 22:35 UTC (permalink / raw)
  To: Andreas Schwab
  Cc: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Sat, Dec 01, 2007 at 02:37:38PM +0100, Andreas Schwab wrote:
> 
> Only variables subject to AC_SUBST are available in the generated
> Makefile.  There is extra_host_args which includes --with-newlib, but
> this is only passed to configure scripts in host directories (via
> host_configargs), not target directories.

   Thanks. I frequently configure using --with-newlib --without-newlib and
configure gets it right, so I won't just grep the configure args for
--with-newlib. Instead I use AC_SUBST to export with_newlib to the
Makefile.

   So, here is the patch to implement the config.cache file trick: Create a
config.cache file with all the right link test answers for newlib just
before running configure, in both Makefile.tpl and config-ml.in. This allows
sparc-unknown-elf to build libstdc++-v3 with unmodified
libstdc++-v3/configure.ac. Libgfortran's configure.ac needs just the symbol
versioning patch ported from libssp. And that's it!

   The file config-newlib-linktests.cache is just an extract of the
config.cache files I had lying around, except for the last four entries that
I had to extract manually from libgfortran's config.log because they're not
saved to config.cache. It's reasonably straight-forward to add entries as
needed.

Index: configure.ac
===================================================================
--- configure.ac	(revision 130442)
+++ configure.ac	(working copy)
 AC_SUBST(CONFIGURE_GDB_TK)
 AC_SUBST(GDB_TK)
 AC_SUBST(INSTALL_GDB_TK)
+AC_SUBST(with_newlib)
 
 # Build module lists & subconfigure args.
 AC_SUBST(build_configargs)
Index: Makefile.tpl
===================================================================
--- Makefile.tpl	(revision 130442)
+++ Makefile.tpl	(working copy)
@@ -394,6 +394,7 @@
 # ------------------------------------
 # Miscellaneous targets and flag lists
 # ------------------------------------
+with_newlib = @with_newlib@
 
 # The first rule in the file had better be this one.  Don't put any above it.
 # This lives here to allow makefile fragments to contain dependencies.
@@ -814,7 +815,12 @@
 	  *) topdir=`echo [+subdir+]/[+module+]/ | \
 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
 	esac; \
-	srcdiroption="--srcdir=$${topdir}/[+module+]"; \
+	[+ IF check_multilibs
+	+]if test ! -f config.cache -a "x$(with_newlib)" = "xyes"; then \
+	  echo "Using link test cache $${s}/config-newlib-linktests.cache."; \
+	  cp $${s}/config-newlib-linktests.cache config.cache; \
+	fi; \
+	[+ ENDIF check_multilibs +]srcdiroption="--srcdir=$${topdir}/[+module+]"; \
 	libsrcdir="$$s/[+module+]"; \
 	[+ IF no-config-site +]rm -f no-such-file || : ; \
 	CONFIG_SITE=no-such-file [+ ENDIF +]$(SHELL) $${libsrcdir}/configure \
Index: config-ml.in
===================================================================
--- config-ml.in	(revision 130442)
+++ config-ml.in	(working copy)
@@ -893,6 +893,10 @@
 	fi
     fi
 
+    if test ! -f config.cache -a "x${with_newlib}" = "xyes"; then
+      echo "Using link test cache ${s}/config-newlib-linktests.cache."
+      cp ${s}/config-newlib-linktests.cache config.cache
+    fi
     if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
 	--with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
 	${ac_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then
Index: libgfortran/configure.ac
===================================================================
--- libgfortran/configure.ac	(revision 130442)
+++ libgfortran/configure.ac	(working copy)
@@ -144,7 +144,13 @@
 EOF
 save_LDFLAGS="$LDFLAGS"
 LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
-AC_TRY_LINK([int foo;],[],[gfortran_use_symver=yes],[gfortran_use_symver=no])
+if test x$gcc_no_link = xyes; then
+  # If we cannot link, we cannot build shared libraries, so do not use
+  # symbol versioning.
+  gfortran_use_symver=no
+else
+  AC_TRY_LINK([int foo;],[],[gfortran_use_symver=yes],[gfortran_use_symver=no])
+fi
 LDFLAGS="$save_LDFLAGS"
 AC_MSG_RESULT($gfortran_use_symver)
 AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" = xyes])
--- /dev/null	2007-11-25 19:34:41.836000250 +0100
+++ config-newlib-linktests.cache	2007-12-01 20:48:47.000000000 +0100
@@ -0,0 +1,298 @@
+ac_cv_func_accept=${ac_cv_func_accept=no}
+ac_cv_func_access=${ac_cv_func_access=no}
+ac_cv_func_alarm=${ac_cv_func_alarm=no}
+ac_cv_func_alloca_works=${ac_cv_func_alloca_works=yes}
+ac_cv_func_argz_append=${ac_cv_func_argz_append=yes}
+ac_cv_func_argz_create_sep=${ac_cv_func_argz_create_sep=yes}
+ac_cv_func_argz_insert=${ac_cv_func_argz_insert=yes}
+ac_cv_func_argz_next=${ac_cv_func_argz_next=yes}
+ac_cv_func_argz_stringify=${ac_cv_func_argz_stringify=yes}
+ac_cv_func_backtrace=${ac_cv_func_backtrace=no}
+ac_cv_func_backtrace_symbols=${ac_cv_func_backtrace_symbols=no}
+ac_cv_func_bind=${ac_cv_func_bind=no}
+ac_cv_func_chdir=${ac_cv_func_chdir=no}
+ac_cv_func_chsize=${ac_cv_func_chsize=no}
+ac_cv_func_clock=${ac_cv_func_clock=yes}
+ac_cv_func_close=${ac_cv_func_close=yes}
+ac_cv_func_closedir=${ac_cv_func_closedir=no}
+ac_cv_func_connect=${ac_cv_func_connect=no}
+ac_cv_func_ctime=${ac_cv_func_ctime=yes}
+ac_cv_func_dlopen=${ac_cv_func_dlopen=no}
+ac_cv_func_dup2=${ac_cv_func_dup2=no}
+ac_cv_func_dup=${ac_cv_func_dup=no}
+ac_cv_func__dyld_func_lookup=${ac_cv_func__dyld_func_lookup=no}
+ac_cv_func_epoll_create=${ac_cv_func_epoll_create=no}
+ac_cv_func_execl=${ac_cv_func_execl=no}
+ac_cv_func_execve=${ac_cv_func_execve=no}
+ac_cv_func_execvp=${ac_cv_func_execvp=no}
+ac_cv_func_fcntl=${ac_cv_func_fcntl=yes}
+ac_cv_func_fdopen=${ac_cv_func_fdopen=yes}
+ac_cv_func_fork=${ac_cv_func_fork=no}
+ac_cv_func_fork=${ac_cv_func_fork=yes}
+ac_cv_func_fp_enable=${ac_cv_func_fp_enable=no}
+ac_cv_func_fp_trap=${ac_cv_func_fp_trap=no}
+ac_cv_func_fstat=${ac_cv_func_fstat=yes}
+ac_cv_func_fsync=${ac_cv_func_fsync=no}
+ac_cv_func_ftruncate=${ac_cv_func_ftruncate=no}
+ac_cv_func_getcwd=${ac_cv_func_getcwd=no}
+ac_cv_func_gethostbyname_r=${ac_cv_func_gethostbyname_r=no}
+ac_cv_func_gethostname=${ac_cv_func_gethostname=no}
+ac_cv_func_getifaddrs=${ac_cv_func_getifaddrs=no}
+ac_cv_func_getloadavg=${ac_cv_func_getloadavg=no}
+ac_cv_func_getlogin=${ac_cv_func_getlogin=no}
+ac_cv_func_getpagesize=${ac_cv_func_getpagesize=no}
+ac_cv_func_getpeername=${ac_cv_func_getpeername=no}
+ac_cv_func_getpwuid=${ac_cv_func_getpwuid=no}
+ac_cv_func_getrlimit=${ac_cv_func_getrlimit=no}
+ac_cv_func_getrusage=${ac_cv_func_getrusage=no}
+ac_cv_func_getsockname=${ac_cv_func_getsockname=no}
+ac_cv_func_getsockopt=${ac_cv_func_getsockopt=no}
+ac_cv_func_gettimeofday=${ac_cv_func_gettimeofday=yes}
+ac_cv_func_htonl=${ac_cv_func_htonl=no}
+ac_cv_func_htons=${ac_cv_func_htons=no}
+ac_cv_func_inet_addr=${ac_cv_func_inet_addr=no}
+ac_cv_func_inet_aton=${ac_cv_func_inet_aton=no}
+ac_cv_func_inet_pton=${ac_cv_func_inet_pton=no}
+ac_cv_func_kevent=${ac_cv_func_kevent=no}
+ac_cv_func_kill=${ac_cv_func_kill=yes}
+ac_cv_func_kqueue=${ac_cv_func_kqueue=no}
+ac_cv_func_link=${ac_cv_func_link=yes}
+ac_cv_func_listen=${ac_cv_func_listen=no}
+ac_cv_func_localtime_r=${ac_cv_func_localtime_r=yes}
+ac_cv_func_lseek=${ac_cv_func_lseek=yes}
+ac_cv_func_lstat=${ac_cv_func_lstat=no}
+ac_cv_func_madvise=${ac_cv_func_madvise=no}
+ac_cv_func_memcpy=${ac_cv_func_memcpy=yes}
+ac_cv_func_memmove=${ac_cv_func_memmove=yes}
+ac_cv_func_memset=${ac_cv_func_memset=yes}
+ac_cv_func_mincore=${ac_cv_func_mincore=no}
+ac_cv_func_mkstemp=${ac_cv_func_mkstemp=yes}
+ac_cv_func_mktime=${ac_cv_func_mktime=yes}
+ac_cv_func_mmap=${ac_cv_func_mmap=no}
+ac_cv_func_mmap_anon=${ac_cv_func_mmap_anon=no}
+ac_cv_func_mmap_dev_zero=${ac_cv_func_mmap_dev_zero=no}
+ac_cv_func_mmap_file=${ac_cv_func_mmap_file=no}
+ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=no}
+ac_cv_func_msync=${ac_cv_func_msync=no}
+ac_cv_func_munmap=${ac_cv_func_munmap=no}
+ac_cv_func_open=${ac_cv_func_open=yes}
+ac_cv_func_opendir=${ac_cv_func_opendir=no}
+ac_cv_func_perror=${ac_cv_func_perror=yes}
+ac_cv_func_pipe=${ac_cv_func_pipe=no}
+ac_cv_func_read=${ac_cv_func_read=yes}
+ac_cv_func_readdir=${ac_cv_func_readdir=no}
+ac_cv_func_readdir_r=${ac_cv_func_readdir_r=no}
+ac_cv_func_readlink=${ac_cv_func_readlink=no}
+ac_cv_func_readv=${ac_cv_func_readv=no}
+ac_cv_func_recvfrom=${ac_cv_func_recvfrom=no}
+ac_cv_func_select=${ac_cv_func_select=no}
+ac_cv_func_send=${ac_cv_func_send=no}
+ac_cv_func_sendto=${ac_cv_func_sendto=no}
+ac_cv_func_setmode=${ac_cv_func_setmode=no}
+ac_cv_func_setsockopt=${ac_cv_func_setsockopt=no}
+ac_cv_func_shl_load=${ac_cv_func_shl_load=no}
+ac_cv_func_signal=${ac_cv_func_signal=yes}
+ac_cv_func_sleep=${ac_cv_func_sleep=no}
+ac_cv_func_snprintf=${ac_cv_func_snprintf=yes}
+ac_cv_func_socket=${ac_cv_func_socket=no}
+ac_cv_func_stat=${ac_cv_func_stat=yes}
+ac_cv_func_strcasestr=${ac_cv_func_strcasestr=yes}
+ac_cv_func_strchr=${ac_cv_func_strchr=yes}
+ac_cv_func_strcmp=${ac_cv_func_strcmp=yes}
+ac_cv_func_strerror=${ac_cv_func_strerror=yes}
+ac_cv_func_strerror_r=${ac_cv_func_strerror_r=yes}
+ac_cv_func_strncmp_works=${ac_cv_func_strncmp_works=no}
+ac_cv_func_strrchr=${ac_cv_func_strrchr=yes}
+ac_cv_func_strtof=${ac_cv_func_strtof=yes}
+ac_cv_func_strtold=${ac_cv_func_strtold=no}
+ac_cv_func_symlink=${ac_cv_func_symlink=no}
+ac_cv_func_sysconf=${ac_cv_func_sysconf=no}
+ac_cv_func_time=${ac_cv_func_time=yes}
+ac_cv_func_times=${ac_cv_func_times=yes}
+ac_cv_func_ttyname=${ac_cv_func_ttyname=no}
+ac_cv_func_vsnprintf=${ac_cv_func_vsnprintf=yes}
+ac_cv_func_wait=${ac_cv_func_wait=yes}
+ac_cv_func_which_gethostbyname_r=${ac_cv_func_which_gethostbyname_r=unknown}
+ac_cv_func_write=${ac_cv_func_write=yes}
+ac_cv_func_writev=${ac_cv_func_writev=no}
+ac_cv_lib_c_geteuid=${ac_cv_lib_c_geteuid=no}
+ac_cv_lib_c_getgid=${ac_cv_lib_c_getgid=no}
+ac_cv_lib_c_getpid=${ac_cv_lib_c_getpid=yes}
+ac_cv_lib_c_getppid=${ac_cv_lib_c_getppid=no}
+ac_cv_lib_c_getuid=${ac_cv_lib_c_getuid=no}
+ac_cv_lib_dld_dld_link=${ac_cv_lib_dld_dld_link=no}
+ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen=no}
+ac_cv_lib_dld_shl_load=${ac_cv_lib_dld_shl_load=no}
+ac_cv_lib_m_acos=${ac_cv_lib_m_acos=yes}
+ac_cv_lib_m_acosf=${ac_cv_lib_m_acosf=yes}
+ac_cv_lib_m_acosh=${ac_cv_lib_m_acosh=yes}
+ac_cv_lib_m_acoshf=${ac_cv_lib_m_acoshf=yes}
+ac_cv_lib_m_acoshl=${ac_cv_lib_m_acoshl=no}
+ac_cv_lib_m_acosl=${ac_cv_lib_m_acosl=no}
+ac_cv_lib_magic_magic_open=${ac_cv_lib_magic_magic_open=no}
+ac_cv_lib_m_asin=${ac_cv_lib_m_asin=yes}
+ac_cv_lib_m_asinf=${ac_cv_lib_m_asinf=yes}
+ac_cv_lib_m_asinh=${ac_cv_lib_m_asinh=yes}
+ac_cv_lib_m_asinhf=${ac_cv_lib_m_asinhf=yes}
+ac_cv_lib_m_asinhl=${ac_cv_lib_m_asinhl=no}
+ac_cv_lib_m_asinl=${ac_cv_lib_m_asinl=no}
+ac_cv_lib_m_atan2=${ac_cv_lib_m_atan2=yes}
+ac_cv_lib_m_atan2f=${ac_cv_lib_m_atan2f=yes}
+ac_cv_lib_m_atan2l=${ac_cv_lib_m_atan2l=no}
+ac_cv_lib_m_atan=${ac_cv_lib_m_atan=yes}
+ac_cv_lib_m_atanf=${ac_cv_lib_m_atanf=yes}
+ac_cv_lib_m_atanh=${ac_cv_lib_m_atanh=yes}
+ac_cv_lib_m_atanhf=${ac_cv_lib_m_atanhf=yes}
+ac_cv_lib_m_atanhl=${ac_cv_lib_m_atanhl=no}
+ac_cv_lib_m_atanl=${ac_cv_lib_m_atanl=no}
+ac_cv_lib_m_cabs=${ac_cv_lib_m_cabs=yes}
+ac_cv_lib_m_cabsf=${ac_cv_lib_m_cabsf=yes}
+ac_cv_lib_m_cabsl=${ac_cv_lib_m_cabsl=no}
+ac_cv_lib_m_carg=${ac_cv_lib_m_carg=no}
+ac_cv_lib_m_cargf=${ac_cv_lib_m_cargf=no}
+ac_cv_lib_m_cargl=${ac_cv_lib_m_cargl=no}
+ac_cv_lib_m_ccos=${ac_cv_lib_m_ccos=no}
+ac_cv_lib_m_ccosf=${ac_cv_lib_m_ccosf=no}
+ac_cv_lib_m_ccosh=${ac_cv_lib_m_ccosh=no}
+ac_cv_lib_m_ccoshf=${ac_cv_lib_m_ccoshf=no}
+ac_cv_lib_m_ccoshl=${ac_cv_lib_m_ccoshl=no}
+ac_cv_lib_m_ccosl=${ac_cv_lib_m_ccosl=no}
+ac_cv_lib_m_ceil=${ac_cv_lib_m_ceil=yes}
+ac_cv_lib_m_ceilf=${ac_cv_lib_m_ceilf=yes}
+ac_cv_lib_m_ceill=${ac_cv_lib_m_ceill=no}
+ac_cv_lib_m_cexp=${ac_cv_lib_m_cexp=no}
+ac_cv_lib_m_cexpf=${ac_cv_lib_m_cexpf=no}
+ac_cv_lib_m_cexpl=${ac_cv_lib_m_cexpl=no}
+ac_cv_lib_m_clog10=${ac_cv_lib_m_clog10=no}
+ac_cv_lib_m_clog10f=${ac_cv_lib_m_clog10f=no}
+ac_cv_lib_m_clog10l=${ac_cv_lib_m_clog10l=no}
+ac_cv_lib_m___clog=${ac_cv_lib_m___clog=no}
+ac_cv_lib_m_clog=${ac_cv_lib_m_clog=no}
+ac_cv_lib_m_clogf=${ac_cv_lib_m_clogf=no}
+ac_cv_lib_m_clogl=${ac_cv_lib_m_clogl=no}
+ac_cv_lib_m_copysign=${ac_cv_lib_m_copysign=yes}
+ac_cv_lib_m_copysignf=${ac_cv_lib_m_copysignf=yes}
+ac_cv_lib_m_copysignl=${ac_cv_lib_m_copysignl=no}
+ac_cv_lib_m_cos=${ac_cv_lib_m_cos=yes}
+ac_cv_lib_m_cosf=${ac_cv_lib_m_cosf=yes}
+ac_cv_lib_m_cosh=${ac_cv_lib_m_cosh=yes}
+ac_cv_lib_m_coshf=${ac_cv_lib_m_coshf=yes}
+ac_cv_lib_m_coshl=${ac_cv_lib_m_coshl=no}
+ac_cv_lib_m_cosl=${ac_cv_lib_m_cosl=no}
+ac_cv_lib_m_cpow=${ac_cv_lib_m_cpow=no}
+ac_cv_lib_m_cpowf=${ac_cv_lib_m_cpowf=no}
+ac_cv_lib_m_cpowl=${ac_cv_lib_m_cpowl=no}
+ac_cv_lib_m_csin=${ac_cv_lib_m_csin=no}
+ac_cv_lib_m_csinf=${ac_cv_lib_m_csinf=no}
+ac_cv_lib_m_csinh=${ac_cv_lib_m_csinh=no}
+ac_cv_lib_m_csinhf=${ac_cv_lib_m_csinhf=no}
+ac_cv_lib_m_csinhl=${ac_cv_lib_m_csinhl=no}
+ac_cv_lib_m_csinl=${ac_cv_lib_m_csinl=no}
+ac_cv_lib_m_csqrt=${ac_cv_lib_m_csqrt=no}
+ac_cv_lib_m_csqrtf=${ac_cv_lib_m_csqrtf=no}
+ac_cv_lib_m_csqrtl=${ac_cv_lib_m_csqrtl=no}
+ac_cv_lib_m_ctan=${ac_cv_lib_m_ctan=no}
+ac_cv_lib_m_ctanf=${ac_cv_lib_m_ctanf=no}
+ac_cv_lib_m_ctanh=${ac_cv_lib_m_ctanh=no}
+ac_cv_lib_m_ctanhf=${ac_cv_lib_m_ctanhf=no}
+ac_cv_lib_m_ctanhl=${ac_cv_lib_m_ctanhl=no}
+ac_cv_lib_m_ctanl=${ac_cv_lib_m_ctanl=no}
+ac_cv_lib_m_erf=${ac_cv_lib_m_erf=yes}
+ac_cv_lib_m_erfc=${ac_cv_lib_m_erfc=yes}
+ac_cv_lib_m_erfcf=${ac_cv_lib_m_erfcf=yes}
+ac_cv_lib_m_erfcl=${ac_cv_lib_m_erfcl=no}
+ac_cv_lib_m_erff=${ac_cv_lib_m_erff=yes}
+ac_cv_lib_m_erfl=${ac_cv_lib_m_erfl=no}
+ac_cv_lib_m_exp=${ac_cv_lib_m_exp=yes}
+ac_cv_lib_m_expf=${ac_cv_lib_m_expf=yes}
+ac_cv_lib_m_expl=${ac_cv_lib_m_expl=no}
+ac_cv_lib_m_fabs=${ac_cv_lib_m_fabs=yes}
+ac_cv_lib_m_fabsf=${ac_cv_lib_m_fabsf=yes}
+ac_cv_lib_m_fabsl=${ac_cv_lib_m_fabsl=no}
+ac_cv_lib_m_feenableexcept=${ac_cv_lib_m_feenableexcept=no}
+ac_cv_lib_m_floor=${ac_cv_lib_m_floor=yes}
+ac_cv_lib_m_floorf=${ac_cv_lib_m_floorf=yes}
+ac_cv_lib_m_floorl=${ac_cv_lib_m_floorl=no}
+ac_cv_lib_m_fmod=${ac_cv_lib_m_fmod=yes}
+ac_cv_lib_m_fmodf=${ac_cv_lib_m_fmodf=yes}
+ac_cv_lib_m_fmodl=${ac_cv_lib_m_fmodl=no}
+ac_cv_lib_m_frexp=${ac_cv_lib_m_frexp=yes}
+ac_cv_lib_m_frexpf=${ac_cv_lib_m_frexpf=yes}
+ac_cv_lib_m_frexpl=${ac_cv_lib_m_frexpl=no}
+ac_cv_lib_m_hypot=${ac_cv_lib_m_hypot=yes}
+ac_cv_lib_m_hypotf=${ac_cv_lib_m_hypotf=yes}
+ac_cv_lib_m_hypotl=${ac_cv_lib_m_hypotl=no}
+ac_cv_lib_m_j0=${ac_cv_lib_m_j0=yes}
+ac_cv_lib_m_j0f=${ac_cv_lib_m_j0f=yes}
+ac_cv_lib_m_j0l=${ac_cv_lib_m_j0l=no}
+ac_cv_lib_m_j1=${ac_cv_lib_m_j1=yes}
+ac_cv_lib_m_j1f=${ac_cv_lib_m_j1f=yes}
+ac_cv_lib_m_j1l=${ac_cv_lib_m_j1l=no}
+ac_cv_lib_m_jn=${ac_cv_lib_m_jn=yes}
+ac_cv_lib_m_jnf=${ac_cv_lib_m_jnf=yes}
+ac_cv_lib_m_jnl=${ac_cv_lib_m_jnl=no}
+ac_cv_lib_m_ldexp=${ac_cv_lib_m_ldexp=yes}
+ac_cv_lib_m_ldexpf=${ac_cv_lib_m_ldexpf=yes}
+ac_cv_lib_m_ldexpl=${ac_cv_lib_m_ldexpl=no}
+ac_cv_lib_m_lgamma=${ac_cv_lib_m_lgamma=yes}
+ac_cv_lib_m_lgammaf=${ac_cv_lib_m_lgammaf=yes}
+ac_cv_lib_m_lgammal=${ac_cv_lib_m_lgammal=no}
+ac_cv_lib_m_llround=${ac_cv_lib_m_llround=no}
+ac_cv_lib_m_llroundf=${ac_cv_lib_m_llroundf=no}
+ac_cv_lib_m_llroundl=${ac_cv_lib_m_llroundl=no}
+ac_cv_lib_m_log10=${ac_cv_lib_m_log10=yes}
+ac_cv_lib_m_log10f=${ac_cv_lib_m_log10f=yes}
+ac_cv_lib_m_log10l=${ac_cv_lib_m_log10l=no}
+ac_cv_lib_m_log=${ac_cv_lib_m_log=yes}
+ac_cv_lib_m_logf=${ac_cv_lib_m_logf=yes}
+ac_cv_lib_m_logl=${ac_cv_lib_m_logl=no}
+ac_cv_lib_m_lround=${ac_cv_lib_m_lround=yes}
+ac_cv_lib_m_lroundf=${ac_cv_lib_m_lroundf=yes}
+ac_cv_lib_m_lroundl=${ac_cv_lib_m_lroundl=no}
+ac_cv_lib_m_nextafter=${ac_cv_lib_m_nextafter=yes}
+ac_cv_lib_m_nextafterf=${ac_cv_lib_m_nextafterf=yes}
+ac_cv_lib_m_nextafterl=${ac_cv_lib_m_nextafterl=no}
+ac_cv_lib_m_pow=${ac_cv_lib_m_pow=yes}
+ac_cv_lib_m_powf=${ac_cv_lib_m_powf=yes}
+ac_cv_lib_m_powl=${ac_cv_lib_m_powl=no}
+ac_cv_lib_m_round=${ac_cv_lib_m_round=yes}
+ac_cv_lib_m_roundf=${ac_cv_lib_m_roundf=yes}
+ac_cv_lib_m_roundl=${ac_cv_lib_m_roundl=no}
+ac_cv_lib_m_scalbn=${ac_cv_lib_m_scalbn=yes}
+ac_cv_lib_m_scalbnf=${ac_cv_lib_m_scalbnf=yes}
+ac_cv_lib_m_scalbnl=${ac_cv_lib_m_scalbnl=no}
+ac_cv_lib_m_sin=${ac_cv_lib_m_sin=yes}
+ac_cv_lib_m_sinf=${ac_cv_lib_m_sinf=yes}
+ac_cv_lib_m_sinh=${ac_cv_lib_m_sinh=yes}
+ac_cv_lib_m_sinhf=${ac_cv_lib_m_sinhf=yes}
+ac_cv_lib_m_sinhl=${ac_cv_lib_m_sinhl=no}
+ac_cv_lib_m_sinl=${ac_cv_lib_m_sinl=no}
+ac_cv_lib_m_sqrt=${ac_cv_lib_m_sqrt=yes}
+ac_cv_lib_m_sqrtf=${ac_cv_lib_m_sqrtf=yes}
+ac_cv_lib_m_sqrtl=${ac_cv_lib_m_sqrtl=no}
+ac_cv_lib_m_tan=${ac_cv_lib_m_tan=yes}
+ac_cv_lib_m_tanf=${ac_cv_lib_m_tanf=yes}
+ac_cv_lib_m_tanh=${ac_cv_lib_m_tanh=yes}
+ac_cv_lib_m_tanhf=${ac_cv_lib_m_tanhf=yes}
+ac_cv_lib_m_tanhl=${ac_cv_lib_m_tanhl=no}
+ac_cv_lib_m_tanl=${ac_cv_lib_m_tanl=no}
+ac_cv_lib_m_tgamma=${ac_cv_lib_m_tgamma=yes}
+ac_cv_lib_m_tgammaf=${ac_cv_lib_m_tgammaf=yes}
+ac_cv_lib_m_tgammal=${ac_cv_lib_m_tgammal=no}
+ac_cv_lib_m_trunc=${ac_cv_lib_m_trunc=yes}
+ac_cv_lib_m_truncf=${ac_cv_lib_m_truncf=yes}
+ac_cv_lib_m_truncl=${ac_cv_lib_m_truncl=no}
+ac_cv_lib_m_y0=${ac_cv_lib_m_y0=yes}
+ac_cv_lib_m_y0f=${ac_cv_lib_m_y0f=yes}
+ac_cv_lib_m_y0l=${ac_cv_lib_m_y0l=no}
+ac_cv_lib_m_y1=${ac_cv_lib_m_y1=yes}
+ac_cv_lib_m_y1f=${ac_cv_lib_m_y1f=yes}
+ac_cv_lib_m_y1l=${ac_cv_lib_m_y1l=no}
+ac_cv_lib_m_yn=${ac_cv_lib_m_yn=yes}
+ac_cv_lib_m_ynf=${ac_cv_lib_m_ynf=yes}
+ac_cv_lib_m_ynl=${ac_cv_lib_m_ynl=no}
+ac_cv_lib_svld_dlopen=${ac_cv_lib_svld_dlopen=no}
+have_attribute_alias=${have_attribute_alias=yes}
+have_fpsetmask=${have_fpsetmask=no}
+have_mingw_snprintf=${have_mingw_snprintf=no}
+have_sync_fetch_and_add=${have_sync_fetch_and_add=no}

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-12-01  9:55                                         ` Richard Sandiford
@ 2007-12-02 21:01                                           ` Mark Mitchell
  2007-12-03 15:55                                             ` Richard Sandiford
  0 siblings, 1 reply; 72+ messages in thread
From: Mark Mitchell @ 2007-12-02 21:01 UTC (permalink / raw)
  To: Mark Mitchell, Rask Ingemann Lambertsen, Bernd Schmidt,
	Jie Zhang, gcc, GCC Patches, hp, dj, rsandifo

Richard Sandiford wrote:

> Anyway, given that there have been objections to the patch generally,
> I realise that the pre-approval is void.

I think there's no controversy over the libstdc++ change, so let's put
that in.  If nothing else, it makes the libstdc++ configury more
self-consistent; if we decide to change the overall strategy, then we
can do that all at once.

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-12-01 22:35                                                   ` Rask Ingemann Lambertsen
@ 2007-12-02 21:11                                                     ` Mark Mitchell
  2007-12-04 14:46                                                     ` Rask Ingemann Lambertsen
  1 sibling, 0 replies; 72+ messages in thread
From: Mark Mitchell @ 2007-12-02 21:11 UTC (permalink / raw)
  To: Rask Ingemann Lambertsen
  Cc: Andreas Schwab, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

Rask Ingemann Lambertsen wrote:

>    So, here is the patch to implement the config.cache file trick: Create a
> config.cache file with all the right link test answers for newlib just
> before running configure, in both Makefile.tpl and config-ml.in. This allows
> sparc-unknown-elf to build libstdc++-v3 with unmodified
> libstdc++-v3/configure.ac. Libgfortran's configure.ac needs just the symbol
> versioning patch ported from libssp. And that's it!

This trick seems plausible to me.  Certainly, if it works, it would
simplify development of configure scripts for run-time libraries.

My only concern with this approach is that Newlib might not be entirely
consistent across configurations and architectures.  The libstdc++
approach presumably entails some manual verification of each function's
presence or absence; before we claim that "Newlib has foo" someone
verifies that.  I don't know if this is a problem in practice.

For example, these lines seem like things that might vary.

> +have_fpsetmask=${have_fpsetmask=no}
...
> +have_sync_fetch_and_add=${have_sync_fetch_and_add=no}

I suppose we could solve that problem, if it arises, with different
config.cache files for different targets.  Perhaps it would be best to
generalize this by adding a top-level --with-target-lib-cache= option,
and then, if that's not present, and $with_newlib is set, passing in the
Newlib cache that you have?

That would give people a way to say that for their particular RTOS
and/or C library the following functions are available.

In theory, at least, we might also have differences between multilibs.
It Would Be Nice to be moving GCC in the direction of allowing different
multilibs for different operating systems and/or C libraries.  So, I
suppose the all-singing, all-dancing version of this would be some
option that allows you to specify a cache file per multilib.  But, I
think that could be left for later.

What do you and others think?

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-12-02 21:01                                           ` Mark Mitchell
@ 2007-12-03 15:55                                             ` Richard Sandiford
  0 siblings, 0 replies; 72+ messages in thread
From: Richard Sandiford @ 2007-12-03 15:55 UTC (permalink / raw)
  To: Mark Mitchell
  Cc: Rask Ingemann Lambertsen, Bernd Schmidt, Jie Zhang, gcc,
	GCC Patches, hp, dj

Mark Mitchell <mark@codesourcery.com> writes:
> Richard Sandiford wrote:
>> Anyway, given that there have been objections to the patch generally,
>> I realise that the pre-approval is void.
>
> I think there's no controversy over the libstdc++ change, so let's put
> that in.  If nothing else, it makes the libstdc++ configury more
> self-consistent; if we decide to change the overall strategy, then we
> can do that all at once.

Well, Rask's patch would make the libstdc++ change unnecessary,
so it seems premature to change libstdc++ now.  (Not that I'm objecting
to anyone else doing it.  I'm just not comfortable doing it myself,
especially since, on its own, it doesn't affect any of "my" targets.)

Richard

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
       [not found]                                       ` <87d4tn4v94.fsf@firetop.home>
@ 2007-12-03 18:13                                         ` Rask Ingemann Lambertsen
  0 siblings, 0 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-12-03 18:13 UTC (permalink / raw)
  To: Hans-Peter Nilsson, GCC, Geoff Keating, rsandifo

On Mon, Dec 03, 2007 at 04:07:35PM +0000, Richard Sandiford wrote:
> And I haven't yet looked at why the tests are failing.  I was just noting
> that they did.  It looks from PR21185 that Rask was seeing the same thing
> on mipsisa64-elf, and TBH, I was so unsurprised that they were failing that
> I hadn't even realised it was _supposed_ to work now.  I'll have a prod.

mips-core: 1 byte read to unmapped address 0x0 at 0xffffffff80021468
program stopped with signal 10.

There are 8456 such messages at slightly different addresses out of a total
of 8488 failures. And generally, on the targets with problems, the problems
seem to be in the simulation part (dejagnu, the simulator itself or the
linker script) rather than in GCC. For example, the special linker script
used for SPARC testing needs to be updated to handle .e.g. .rodata.*
sections so they don't collide with the .bss section.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-12-01 22:35                                                   ` Rask Ingemann Lambertsen
  2007-12-02 21:11                                                     ` Mark Mitchell
@ 2007-12-04 14:46                                                     ` Rask Ingemann Lambertsen
  1 sibling, 0 replies; 72+ messages in thread
From: Rask Ingemann Lambertsen @ 2007-12-04 14:46 UTC (permalink / raw)
  To: Andreas Schwab
  Cc: Mark Mitchell, Bernd Schmidt, Jie Zhang, gcc, GCC Patches, rsandifo

On Sat, Dec 01, 2007 at 11:34:47PM +0100, Rask Ingemann Lambertsen wrote:

> Index: configure.ac
> ===================================================================
> --- configure.ac	(revision 130442)
> +++ configure.ac	(working copy)
>  AC_SUBST(CONFIGURE_GDB_TK)
>  AC_SUBST(GDB_TK)
>  AC_SUBST(INSTALL_GDB_TK)
> +AC_SUBST(with_newlib)
>  
>  # Build module lists & subconfigure args.
>  AC_SUBST(build_configargs)

   That hunk is corrupt, it should look like this:

Index: configure.ac
===================================================================
--- configure.ac	(revision 130442)
+++ configure.ac	(working copy)
@@ -2435,6 +2435,7 @@
 AC_SUBST(CONFIGURE_GDB_TK)
 AC_SUBST(GDB_TK)
 AC_SUBST(INSTALL_GDB_TK)
+AC_SUBST(with_newlib)
 
 # Build module lists & subconfigure args.
 AC_SUBST(build_configargs)

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  2:04 ` Joseph S. Myers
@ 2007-11-28  3:11   ` Benjamin Kosnik
  0 siblings, 0 replies; 72+ messages in thread
From: Benjamin Kosnik @ 2007-11-28  3:11 UTC (permalink / raw)
  To: Joseph S. Myers; +Cc: gcc


> (Dependencies on native or not are a bad idea.  It's much better
> always to do the same thing for a GNU/Linux target - or any other
> target that can also be native - than to do things differently
> depending on whether the same target is native or cross.)

Agreed.

When we have a staged build directory, with all the libs that gcc +
deps need in one canonical place, named coherently and
consistently, built with proper deps, then we can use link tests.

Till then, we bite it, avoid, and hard-code the minimum amount
necessary.

It's not optimum, but it's well established procedure. Let's not change
this at random, on a per-port basis. Or, if we do, let's have a plan
and communicate it clearly, with a full transition by all the runtime
libs.

Haphazardly breaking stuff is weak.

-benjamin

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
  2007-11-28  1:34 Benjamin Kosnik
@ 2007-11-28  2:04 ` Joseph S. Myers
  2007-11-28  3:11   ` Benjamin Kosnik
  0 siblings, 1 reply; 72+ messages in thread
From: Joseph S. Myers @ 2007-11-28  2:04 UTC (permalink / raw)
  To: Benjamin Kosnik; +Cc: gcc

On Tue, 27 Nov 2007, Benjamin Kosnik wrote:

> > if there is a rule that
> > libstdc++ configure shouldn't try to link anything, it doesn't appear
> > to be well enforced. 
> 
> The rule is that libstdc++ shouldn't do link tests unless it knows it
> is native. Not "libstdc++ configure shouldn't try to link anything."

Unless it knows it must be able to link anyway when building libstdc++.  
Which is the case in order to build (shared) libstdc++ for GNU/Linux.  
Where link tests are more reliable than compile tests, given that uClibc 
doesn't always disable header declarations just because functions are 
disabled in the library.

(Dependencies on native or not are a bad idea.  It's much better always to 
do the same thing for a GNU/Linux target - or any other target that can 
also be native - than to do things differently depending on whether the 
same target is native or cross.)

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 72+ messages in thread

* Re: Link tests after GCC_NO_EXECUTABLES
@ 2007-11-28  1:34 Benjamin Kosnik
  2007-11-28  2:04 ` Joseph S. Myers
  0 siblings, 1 reply; 72+ messages in thread
From: Benjamin Kosnik @ 2007-11-28  1:34 UTC (permalink / raw)
  To: gcc

> if there is a rule that
> libstdc++ configure shouldn't try to link anything, it doesn't appear
> to be well enforced. 

The rule is that libstdc++ shouldn't do link tests unless it knows it
is native. Not "libstdc++ configure shouldn't try to link anything."

This means that there is a huge bias to do compile-time tests if at
all possible, as then native/cross configury is unified.

From configure.ac...

# Enable all the variable C++ runtime options that doesn't require
linking. 
GLIBCXX_ENABLE_CSTDIO

...

# Checks for operating systems support that don't require linking.
GLIBCXX_CHECK_SYSTEM_ERROR

...

if $GLIBCXX_IS_NATIVE; then

  # We can do more elaborate tests that assume a working linker.
  CANADIAN=no
....

The intent here seems obvious to me: is this not clear? 

It's not especially well enforced, as you note. (And other runtimes
may not take as much care or notice about this at all.) In particular, 

>> AM_PROG_LIBTOOL -> "libtool.m4" LT_INIT ->
>> _LT_SETUP -> _LT_LANG_C_CONFIG -> LT_SYS_DLOPEN_SELF

is not something libstdc++ has much control over.... I see this as a
bug in AM_PROG_LIBTOOL or these other macros.

> In any case, I think this is something that ought to be decided as a
> global policy for GCC and its run-time libraries, not something that
> differs between ports.  In particular, if run-time libraries are
> allowed to depend on linking in their configure tests, that's
> something everyone should know.

And....

> Since the preferred bare-metal setup is that linking not
> work without -msim (or a -T option), we don't want configure tests
> that detect any properties that might depend on what happens when you
> link. We want to make sure that detected properties are a property
> only of the parts that a user isn't going to change.

Thanks for this Mark. Absolutely agreed.

It is insanity to have this differ on a machine by machine or port by
port basis!!!! 

-benjamin


^ permalink raw reply	[flat|nested] 72+ messages in thread

end of thread, other threads:[~2007-12-04 14:46 UTC | newest]

Thread overview: 72+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-09-18 11:56 Link tests after GCC_NO_EXECUTABLES Jie Zhang
2007-09-18 12:25 ` Bernd Schmidt
2007-09-18 12:52   ` Jie Zhang
2007-09-18 13:13     ` Bernd Schmidt
2007-09-18 13:15       ` Jie Zhang
2007-09-18 13:27         ` Bernd Schmidt
2007-09-18 13:33           ` Daniel Jacobowitz
2007-09-18 14:11             ` Jie Zhang
2007-09-18 14:02           ` Jie Zhang
2007-09-18 14:27             ` Bernd Schmidt
2007-09-18 14:48               ` Jie Zhang
2007-11-27 14:10             ` Bernd Schmidt
2007-11-27 22:40               ` Mark Mitchell
2007-11-27 22:46                 ` Bernd Schmidt
2007-11-27 23:40                   ` Mark Mitchell
2007-11-27 23:48                     ` Bernd Schmidt
2007-11-28  0:19                       ` Mark Mitchell
2007-11-28  0:43                         ` Bernd Schmidt
2007-11-28  0:45                           ` Mark Mitchell
2007-11-28  0:55                             ` Bernd Schmidt
2007-11-28  1:05                               ` Mark Mitchell
2007-11-28  1:14                                 ` Bernd Schmidt
2007-11-28  2:14                                   ` Mark Mitchell
2007-11-28 13:30                                     ` Bernd Schmidt
2007-11-28  1:28                                 ` Joseph S. Myers
2007-11-28  2:07                                   ` Mark Mitchell
2007-11-28  2:40                                     ` Joseph S. Myers
2007-11-28  8:12                                       ` Mark Mitchell
2007-11-28 13:17                                       ` Bernd Schmidt
2007-11-28 11:40                                     ` Hans-Peter Nilsson
2007-11-28 13:06                             ` Richard Sandiford
2007-11-28 14:32                               ` Rask Ingemann Lambertsen
2007-11-28 17:33                               ` Daniel Jacobowitz
2007-11-28 19:49                               ` Mark Mitchell
2007-11-28 21:04                                 ` Richard Sandiford
2007-11-28 22:42                                 ` Rask Ingemann Lambertsen
2007-11-29  6:15                                   ` Mark Mitchell
2007-11-30 19:37                                     ` Rask Ingemann Lambertsen
2007-11-30 19:45                                       ` Mark Mitchell
2007-11-30 22:19                                         ` Rask Ingemann Lambertsen
2007-12-01  9:48                                           ` Richard Sandiford
2007-12-01 11:53                                             ` Rask Ingemann Lambertsen
2007-12-01 12:03                                               ` Rask Ingemann Lambertsen
2007-12-01 13:37                                                 ` Andreas Schwab
2007-12-01 22:35                                                   ` Rask Ingemann Lambertsen
2007-12-02 21:11                                                     ` Mark Mitchell
2007-12-04 14:46                                                     ` Rask Ingemann Lambertsen
2007-11-29 22:59                                 ` Richard Sandiford
2007-11-29 23:18                                   ` Mark Mitchell
2007-11-29 23:33                                     ` Benjamin Kosnik
2007-11-30 16:11                                   ` Rask Ingemann Lambertsen
2007-11-30 16:27                                     ` Mark Mitchell
2007-11-30 22:18                                       ` Rask Ingemann Lambertsen
2007-11-30 17:00                                     ` Richard Sandiford
2007-11-30 18:17                                       ` Rask Ingemann Lambertsen
2007-11-30 20:52                                       ` Mark Mitchell
2007-11-30 21:17                                         ` DJ Delorie
2007-12-01  9:55                                         ` Richard Sandiford
2007-12-02 21:01                                           ` Mark Mitchell
2007-12-03 15:55                                             ` Richard Sandiford
2007-11-30 22:48                                     ` Rask Ingemann Lambertsen
     [not found]                                     ` <20071203092630.N17510@dair.pair.com>
     [not found]                                       ` <87d4tn4v94.fsf@firetop.home>
2007-12-03 18:13                                         ` Rask Ingemann Lambertsen
2007-11-30 18:59                                   ` Rask Ingemann Lambertsen
2007-11-28  1:42                       ` Joseph S. Myers
2007-09-18 13:55 ` Rask Ingemann Lambertsen
2007-09-18 14:19   ` Jie Zhang
2007-09-18 16:09     ` Rask Ingemann Lambertsen
2007-09-18 17:45       ` Rask Ingemann Lambertsen
2007-09-19  3:43         ` Jie Zhang
2007-11-28  1:34 Benjamin Kosnik
2007-11-28  2:04 ` Joseph S. Myers
2007-11-28  3:11   ` Benjamin Kosnik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).