public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: rewrite lib/g77.exp
@ 2001-10-28  5:44 Kaveh R. Ghazi
  2001-10-28  9:37 ` Geoff Keating
  0 siblings, 1 reply; 33+ messages in thread
From: Kaveh R. Ghazi @ 2001-10-28  5:44 UTC (permalink / raw)
  To: geoffk; +Cc: gcc-patches

 > 2001-10-23  Geoffrey Keating  <geoffk@redhat.com>
 > 
 > 	    * lib/g77.exp: Rewrite based on lib/g++.exp.

Geoff,

Your patch seems to cause every test to fail on sparc-sun-solaris2.7.
All tests yield this error:

 > collect2: ld returned 1 exit status
 > compiler exited with status 1
 > output is:
 > /usr/ccs/bin/ld: illegal option -- -
 > usage: ld [-abc:d:e:f:h:il:mo:p:rstu:z:B:D:F:GI:L:M:N:P:Q:R:S:VY:] file(s)
 > [...]

(I'm using native as/ld.)

When I revert your g77.exp patch I get only 9 failures.

		--Kaveh
--
Kaveh R. Ghazi			Engagement Manager / Project Services
ghazi@caip.rutgers.edu		Qwest Internet Solutions

^ permalink raw reply	[flat|nested] 33+ messages in thread
* Re: rewrite lib/g77.exp
@ 2001-11-13 15:03 Kaveh R. Ghazi
  2001-11-14 15:45 ` Alexandre Oliva
  0 siblings, 1 reply; 33+ messages in thread
From: Kaveh R. Ghazi @ 2001-11-13 15:03 UTC (permalink / raw)
  To: aoliva, geoffk; +Cc: gcc-patches

 > From: Alexandre Oliva <aoliva@redhat.com>
 > 
 > On Oct 29, 2001, Geoff Keating <geoffk@geoffk.org> wrote:
 > 
 > > "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu> writes:
 > >> > From: Geoff Keating <geoffk@geoffk.org>
 > 
 > >> > I'm sure the problem is with the second of these lines:
 > >> > 
 > >> > 	  if [file exists "${gccpath}/libf2c/.libs/libg2c.so"] {
 > >> > 	      append flags "-Wl,--rpath-link,${rootme} "
 > >> > 	      append ld_library_path ":${gccpath}/libf2c/.libs"
 > >> > 	  }
 > >> > 
 > >> > which is GNU ld specific; it aims to ensure that the just-built
 > >> > libgcc_s.so is linked against.  Can you propose a substitute for it
 > >> > that works with both Solaris ld and GNU ld?
 > >> 
 > >> 
 > >> What's wrong with:
 > >> 
 > >> > append ld_library_path ":${rootme}"
 > >> 
 > >> like in g++.exp?
 > 
 > > It's not enough.  (You can see that g77.exp does in fact have that line.)
 > 
 > > It's possible this is a linker bug.
 > 
 > I recall a number of dynamic loaders will disregard LD_LIBRARY_PATH
 > when looking for dependencies of shared libraries.  This is one of the
 > reasons why I recommend using libtool for libgcc: then libtool will
 > know how to arrange for libg2c.la to find libgcc_s.so in the build
 > tree, and then, after they're installed, the installed copy of
 > libg2c.so will find libgcc_s.so in the install tree.

So can you help get the testsuite to use libtool so that this problem
is resolved?  You knew I was going to ask you, right? :-)

--
Kaveh R. Ghazi			Engagement Manager / Project Services
ghazi@caip.rutgers.edu		Qwest Internet Solutions

^ permalink raw reply	[flat|nested] 33+ messages in thread
* Re: rewrite lib/g77.exp
@ 2001-10-28 16:51 Kaveh R. Ghazi
       [not found] ` <jm3d42qic9.fsf@geoffk.org>
  0 siblings, 1 reply; 33+ messages in thread
From: Kaveh R. Ghazi @ 2001-10-28 16:51 UTC (permalink / raw)
  To: geoffk; +Cc: gcc-patches

 > From: Geoff Keating <geoffk@geoffk.org>
 > 
 > "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu> writes:
 > 
 > >  > 2001-10-23  Geoffrey Keating  <geoffk@redhat.com>
 > >  > 
 > >  > 	    * lib/g77.exp: Rewrite based on lib/g++.exp.
 > > 
 > > Geoff,
 > > 
 > > Your patch seems to cause every test to fail on sparc-sun-solaris2.7.
 > > All tests yield this error:
 > > 
 > >  > collect2: ld returned 1 exit status
 > >  > compiler exited with status 1
 > >  > output is:
 > >  > /usr/ccs/bin/ld: illegal option -- -
 > >  > usage: ld [-abc:d:e:f:h:il:mo:p:rstu:z:B:D:F:GI:L:M:N:P:Q:R:S:VY:] file(s)
 > >  > [...]
 > > 
 > > (I'm using native as/ld.)
 > > 
 > > When I revert your g77.exp patch I get only 9 failures.
 > 
 > Yes.
 > 
 > I'm sure the problem is with the second of these lines:
 > 
 > 	  if [file exists "${gccpath}/libf2c/.libs/libg2c.so"] {
 > 	      append flags "-Wl,--rpath-link,${rootme} "
 > 	      append ld_library_path ":${gccpath}/libf2c/.libs"
 > 	  }
 > 
 > which is GNU ld specific; it aims to ensure that the just-built
 > libgcc_s.so is linked against.  Can you propose a substitute for it
 > that works with both Solaris ld and GNU ld?


What's wrong with:

 > append ld_library_path ":${rootme}"

like in g++.exp?

		--Kaveh

--
Kaveh R. Ghazi			Engagement Manager / Project Services
ghazi@caip.rutgers.edu		Qwest Internet Solutions

^ permalink raw reply	[flat|nested] 33+ messages in thread
* rewrite lib/g77.exp
@ 2001-10-23 13:42 Geoffrey Keating
  2001-10-23 13:57 ` Joseph S. Myers
  0 siblings, 1 reply; 33+ messages in thread
From: Geoffrey Keating @ 2001-10-23 13:42 UTC (permalink / raw)
  To: gcc-patches

x86-linux native test runs were experiencing a number of failures on a
machine where gcc 3.0 was not installed, because libgcc_s.so was
not being found.  (Of course, this is even worse when gcc 3.0 _was_
installed, because it meant that the wrong libgcc_s.so was being
tested.)

I also encountered other problems.  So, I rewrote g77.exp to make it
more like g++.exp, and fixed this bug on the way.

I've just included the new g77.exp below directly because the diff is
not very helpful.

Tested on x86-linux, both with 'make check-g77' in the gcc/ directory,
and 'make check-gcc' in the toplevel directory; I'll also check
powerpc-eabisim before committing.

-- 
Geoff Keating <geoffk@redhat.com>

2001-10-23  Geoffrey Keating  <geoffk@redhat.com>

	* lib/g77.exp: Rewrite based on lib/g++.exp.

===File ~/co/egcs-mainline/gcc/gcc/testsuite/lib/g77.exp====
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# This file was written by Rob Savoye (rob@cygnus.com)
# Many modifications by Jeffrey Wheat (cassidy@cygnus.com)
# With modifications by Mike Stump <mrs@cygnus.com>.

#
# g77 support library routines
#
load_lib prune.exp
load_lib gcc-defs.exp

#
# G77_UNDER_TEST is the compiler under test.
#


set gpp_compile_options ""


#
# g77_version -- extract and print the version number of the compiler
#

proc g77_version { } {
    global G77_UNDER_TEST
    
    g77_init

    # ignore any arguments after the command
    set compiler [lindex $G77_UNDER_TEST 0]
    
    # verify that the compiler exists
    if { [is_remote host] || [which $compiler] != 0 } then {
	set tmp [remote_exec host "$compiler -v"]
	set status [lindex $tmp 0];
	set output [lindex $tmp 1];
	regexp "version.*$" $output version
	if { $status == 0 && [info exists version] } then {
	    if [is_remote host] {
		clone_output "$compiler $version\n"
	    } else {
		clone_output "[which $compiler] $version\n"
	    }
	} else {
	    clone_output "Couldn't determine version of [which $compiler]\n"
	}
    } else {
	# compiler does not exist (this should have already been detected)
	warning "$compiler does not exist"
    }
}

#
# g77_link_flags -- provide new version of g77_link_flags
# (originally from libgloss.exp) which knows about the gcc tree structure
#

proc g77_link_flags { paths } {
    global rootme
    global srcdir
    global ld_library_path

    set gccpath ${paths}
    set libio_dir ""
    set flags ""
    set ld_library_path "."

    if { $gccpath != "" } {
      if [file exists "${gccpath}/libf2c/.libs/libg2c.a"] {
          append flags "-L${gccpath}/libf2c/.libs "
	  if [file exists "${gccpath}/libf2c/.libs/libg2c.so"] {
	      append flags "-Wl,--rpath-link,${rootme} "
	      append ld_library_path ":${gccpath}/libf2c/.libs"
	  }
      }
      if [file exists "${gccpath}/libf2c/libfrtbegin.a"] {
          append flags "-L${gccpath}/libf2c "
      }
      if [file exists "${gccpath}/libiberty/libiberty.a"] {
          append flags "-L${gccpath}/libiberty "
      }
      append ld_library_path ":${rootme}"
    }
    return "$flags"
}

#
# g77_init -- called at the start of each subdir of tests
#

proc g77_init { args } {
    global subdir
    global gpp_initialized
    global base_dir
    global tmpdir
    global libdir
    global gluefile wrap_flags;
    global objdir srcdir
    global ALWAYS_G77FLAGS
    global TOOL_EXECUTABLE TOOL_OPTIONS
    global G77_UNDER_TEST
    global TESTING_IN_BUILD_TREE

    if ![info exists G77_UNDER_TEST] then {
	if [info exists TOOL_EXECUTABLE] {
	    set G77_UNDER_TEST $TOOL_EXECUTABLE;
	} else {
	    if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } {
		set G77_UNDER_TEST [transform g77]
	    } else {
		set G77_UNDER_TEST [findfile $base_dir/../g77 "$base_dir/../g77 -B$base_dir/../" [findfile $base_dir/g77 "$base_dir/g77 -B$base_dir/" [transform g77]]]
	    }
	}
    }

    if ![is_remote host] {
	if { [which $G77_UNDER_TEST] == 0 } then {
	    perror "G77_UNDER_TEST ($G77_UNDER_TEST) does not exist"
	    exit 1
	}
    }
    if ![info exists tmpdir] {
	set tmpdir "/tmp"
    }

    if [info exists gluefile] {
	unset gluefile
    }

    if { [target_info needs_status_wrapper] != "" } {
	set gluefile ${tmpdir}/testglue.o;
	set result [build_wrapper $gluefile];
	if { $result != "" } {
	    set gluefile [lindex $result 0];
	    set wrap_flags [lindex $result 1];
	} else {
	    unset gluefile
	}
    }

    set ALWAYS_G77FLAGS ""

    if ![is_remote host] {
	if [info exists TOOL_OPTIONS] {
	    lappend ALWAYS_G77FLAGS "ldflags=[g77_link_flags [get_multilibs ${TOOL_OPTIONS}] ]";
	} else {
	    lappend ALWAYS_G77FLAGS "ldflags=[g77_link_flags [get_multilibs] ]";
	}
    }

    if [info exists TOOL_OPTIONS] {
	lappend ALWAYS_G77FLAGS "additional_flags=$TOOL_OPTIONS";
    }

    verbose -log "ALWAYS_G77FLAGS set to $ALWAYS_G77FLAGS"

    verbose "g77 is initialized" 3
}

#
# g77_target_compile -- compile a source file
#

proc g77_target_compile { source dest type options } {
    global tmpdir;
    global gluefile wrap_flags
    global ALWAYS_G77FLAGS;
    global G77_UNDER_TEST;

    if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
	lappend options "libs=${gluefile}"
	lappend options "ldflags=${wrap_flags}"
    }

    lappend options "compiler=$G77_UNDER_TEST";

    set options [concat "$ALWAYS_G77FLAGS" $options];

    return [target_compile $source $dest $type $options]
}

#
# g77_set_ld_library_path --
# On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
# called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH
# (for the 64-bit ABI).  The right way to do this would be to modify
# unix.exp -- but that's not an option since it's part of DejaGNU
# proper, so we do it here, by trickery.  We really only need to do 
# this on IRIX, but it shouldn't hurt to do it anywhere else.
#

proc ${tool}_set_ld_library_path { name element op } {
  setenv LD_LIBRARYN32_PATH [getenv LD_LIBRARY_PATH]
  setenv LD_LIBRARY64_PATH [getenv LD_LIBRARY_PATH]
}

trace variable env(LD_LIBRARY_PATH) w ${tool}_set_ld_library_path
============================================================

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

end of thread, other threads:[~2001-11-27  6:44 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-28  5:44 rewrite lib/g77.exp Kaveh R. Ghazi
2001-10-28  9:37 ` Geoff Keating
2001-10-28  9:56   ` Franz Sirl
     [not found]   ` <REFOR1kDTM9wGmAf0Mj00001d53@eforward1.enom.com>
2001-10-28 10:10     ` Geoff Keating
2001-10-28 10:19       ` Franz Sirl
  -- strict thread matches above, loose matches on Subject: below --
2001-11-13 15:03 Kaveh R. Ghazi
2001-11-14 15:45 ` Alexandre Oliva
2001-11-14 16:42   ` Geoff Keating
2001-11-14 17:05     ` Alexandre Oliva
2001-11-14 17:18       ` Geoff Keating
2001-11-14 17:24         ` Alexandre Oliva
2001-11-15 18:36           ` Geoff Keating
2001-11-16 12:45             ` Alexandre Oliva
2001-11-26 22:44               ` Alexandre Oliva
2001-11-26 13:09             ` Geoff Keating
2001-11-24 23:46           ` Alexandre Oliva
2001-11-24 23:27         ` Geoff Keating
2001-11-24 22:38       ` Alexandre Oliva
2001-11-24 22:15     ` Geoff Keating
2001-11-14 16:55   ` Zack Weinberg
2001-11-14 17:05     ` Alexandre Oliva
2001-11-14 17:14       ` Zack Weinberg
2001-11-14 17:20         ` Alexandre Oliva
2001-11-24 23:44           ` Alexandre Oliva
2001-11-24 22:49         ` Zack Weinberg
2001-11-24 22:28       ` Alexandre Oliva
2001-11-24 22:23     ` Zack Weinberg
2001-11-24 19:55   ` Alexandre Oliva
2001-10-28 16:51 Kaveh R. Ghazi
     [not found] ` <jm3d42qic9.fsf@geoffk.org>
2001-11-13 15:03   ` Alexandre Oliva
2001-10-23 13:42 Geoffrey Keating
2001-10-23 13:57 ` Joseph S. Myers
2001-10-23 14:40   ` Geoff Keating

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).