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

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?

Here is a new version of the patch.  This version allows for using IBM's xlc compiler.

Ok to commit?

-=# Paul #=-

2005-04-12  Paul Gilliam  <pgilliam@us.ibm.com>

	* lib/gdb.exp (gdb_compile) (gdb_compile_shlib)(NEW): Add infrustructure for building and
	using shared libraries

Index: lib/gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.59
diff -c -3 -p -r1.59 gdb.exp
*** lib/gdb.exp	6 Apr 2005 21:38:48 -0000	1.59
--- lib/gdb.exp	11 Apr 2005 22:10:07 -0000
*************** proc gdb_compile {source dest type optio
*** 1335,1340 ****
--- 1335,1369 ----
      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]";
*************** proc gdb_compile_pthreads {source dest t
*** 1405,1410 ****
--- 1434,1497 ----
      }
  }
  
+ # 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-12 18:25 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         ` Paul Gilliam [this message]
2005-04-14 19:07           ` [patch] add testsuite infrastructure to deal with shared libraries (now supports IBM's xlc compiler) Daniel Jacobowitz

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=200504121123.27555.pgilliam@us.ibm.com \
    --to=pgilliam@us.ibm.com \
    --cc=drow@false.org \
    --cc=gdb-patches@sources.redhat.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