Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: Paul Gilliam <pgilliam@us.ibm.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [patch] add testsuite infrastructure to deal with shared libraries (now supports IBM's xlc compiler)
Date: Thu, 14 Apr 2005 19:07:00 -0000	[thread overview]
Message-ID: <20050414190658.GC26377@nevyn.them.org> (raw)
In-Reply-To: <200504121123.27555.pgilliam@us.ibm.com>

On Tue, Apr 12, 2005 at 10:23:27AM -0800, Paul Gilliam wrote:
> On Wednesday 06 April 2005 10:49, Paul Gilliam wrote:
> > This patch is a slightly tweeked version of a part of this patch:
> > 	http://sources.redhat.com/ml/gdb-patches/2004-11/msg00538.html
> > 
> > The first part of the patch modifies 'gdb_compile' to add platform-specific options to
> > 'target_compile' if a shared library was specified using "shlib=librarypath" in the options
> > argument to 'gdb_compile'.
> > 
> > The second part of the patch adds the new proc 'gdb_compile_shlib' which is used to 
> > build shared libraries in platform-specific ways.
> > 
> > The tweek is to use 'test_compile_info' instead of $gcc_compiled.
> > 
> > -=# Paul #=-
> > PS: How do I indicate in the change log that this is really the work of  Daniel Jacobowitz?

By listing more than one name in the changelog, like this.  You haven't
got the knack of GNU changelogs quite down yet...

2005-04-14  Paul Gilliam  <pgilliam@us.ibm.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* lib/gdb.exp (gdb_compile): Handle shlib=.
	(gdb_compile_shlib): New function.

> +        set link_options options

That ought to be $options.  Note that this is my bug from the original
posting.

I'm checking in the attached, which includes that and a formatting fix.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

2005-04-14  Paul Gilliam  <pgilliam@us.ibm.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* lib/gdb.exp (gdb_compile): Handle shlib=.
	(gdb_compile_shlib): New function.

Index: lib/gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.60
diff -u -p -r1.60 gdb.exp
--- lib/gdb.exp	12 Apr 2005 20:14:35 -0000	1.60
+++ lib/gdb.exp	14 Apr 2005 19:05:24 -0000
@@ -1335,6 +1335,35 @@ proc gdb_compile {source dest type optio
     global gdb_wrapper_flags;
     global gdb_wrapper_initialized;
 
+     # Add platform-specific options if a shared library was specified using
+     # "shlib=librarypath" in OPTIONS.
+     set new_options ""
+     set shlib_found 0
+     foreach opt $options {
+        if [regexp {^shlib=(.*)} $opt dummy_var shlib_name] {
+            if [test_compiler_info "xlc-*"] {
+               # IBM xlc compiler doesn't accept shared library named other  
+               # than .so: use "-Wl," to bypass this
+               lappend source "-Wl,$shlib_name"
+            } else {
+               lappend source $shlib_name
+            }
+            if {$shlib_found == 0} {
+                set shlib_found 1
+                if { ([test_compiler_info "gcc-*"]
+                      &&  ([istarget "powerpc*-*-aix*"]
+                        || [istarget "rs6000*-*-aix*"] )) } {
+                    lappend options "additional_flags=-L${objdir}/${subdir}"
+                } elseif { [istarget "mips-sgi-irix*"] } {
+                    lappend options "additional_flags=-rpath ${objdir}/${subdir}"
+                }
+            }
+        } else {
+            lappend new_options $opt
+        }
+     }
+     set options $new_options
+
     if [target_info exists gdb_stub] {
 	set options2 { "additional_flags=-Dusestubs" }
 	lappend options "libs=[target_info gdb_stub]";
@@ -1405,6 +1434,63 @@ proc gdb_compile_pthreads {source dest t
     }
 }
 
+# Build a shared library from SOURCES.  You must use get_compiler_info
+# first.
+
+proc gdb_compile_shlib {sources dest options} {
+    set obj_options $options
+
+    switch -glob [test_compiler_info] {
+        "xlc-*" {
+            lappend obj_options "additional_flags=-qpic"
+        }
+        "gcc-*" {
+            if { !([istarget "powerpc*-*-aix*"]
+                   || [istarget "rs6000*-*-aix*"]) } {
+                lappend obj_options "additional_flags=-fpic"
+            }
+        }
+        default {
+            switch -glob [istarget] {
+                "hppa*-hp-hpux*" {
+                    lappend obj_options "additional_flags=+z"
+                }
+                "mips-sgi-irix*" {
+                    # Disable SGI compiler's implicit -Dsgi
+                    lappend obj_options "additional_flags=-Usgi"
+                } 
+                default {
+                    # don't know what the compiler is...
+                }
+            }
+        }
+    }
+
+    set outdir [file dirname $dest]
+    set objects ""
+    foreach source $sources {
+       set sourcebase [file tail $source]
+       if {[gdb_compile $source "${outdir}/${sourcebase}.o" object $obj_options] != ""} {
+           return -1
+       }
+       lappend objects ${outdir}/${sourcebase}.o
+    }
+
+    if [istarget "hppa*-*-hpux*"] {
+       remote_exec build "ld -b ${objects} -o ${dest}"
+    } else {
+       set link_options $options
+       if [test_compiler_info "xlc-*"] {
+          lappend link_options "additional_flags=-qmkshrobj"
+       } else {
+          lappend link_options "additional_flags=-shared"
+       }
+       if {[gdb_compile "${objects}" "${dest}" executable $link_options] != ""} {
+           return -1
+       }
+    }
+}
+
 # This is just like gdb_compile_pthreads, above, except that we always add the
 # objc library for compiling Objective-C programs
 proc gdb_compile_objc {source dest type options} {


      reply	other threads:[~2005-04-14 19:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-01 22:43 [patch] Allow compilation by IBM's xlc compiler Paul Gilliam
2005-04-01 22:45 ` Daniel Jacobowitz
2005-04-01 23:07   ` Paul Gilliam
2005-04-01 23:13     ` Daniel Jacobowitz
2005-04-06 17:52       ` [patch] add testsuite infrastructure to deal with shared libraries Paul Gilliam
2005-04-12 18:25         ` [patch] add testsuite infrastructure to deal with shared libraries (now supports IBM's xlc compiler) Paul Gilliam
2005-04-14 19:07           ` Daniel Jacobowitz [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050414190658.GC26377@nevyn.them.org \
    --to=drow@false.org \
    --cc=gdb-patches@sources.redhat.com \
    --cc=pgilliam@us.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox