Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Mike Frysinger <vapier@gentoo.org>
To: gdb-patches@sourceware.org
Cc: toolchain-devel@blackfin.uclinux.org
Subject: [PATCH] sim: tests: support .S/.c files
Date: Mon, 14 Mar 2011 21:23:00 -0000	[thread overview]
Message-ID: <1300136769-5921-1-git-send-email-vapier@gentoo.org> (raw)
In-Reply-To: <1300057848-2316-1-git-send-email-vapier@gentoo.org>

Rather than requiring all sim tests to be preprocessed .s files, add
support for .S and .c files so we can easily write code using a higher
level language like C.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>

2011-03-14  Mike Frysinger  <vapier@gentoo.org>

	* sim-defs.exp: Support cc tag in test files.
	(run_sim_test): Support global_cc_options in boards files.  Convert
	assembler options into compiler options (c_as_options) with -Wa.
	Convert linker options into compiler options (c_ld_options) with -Wl.
	Compile .c and .S files into .x programs.
---
 sim/testsuite/lib/sim-defs.exp |   48 ++++++++++++++++++++++++++++++++-------
 1 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/sim/testsuite/lib/sim-defs.exp b/sim/testsuite/lib/sim-defs.exp
index 1e65817..c8093a2 100644
--- a/sim/testsuite/lib/sim-defs.exp
+++ b/sim/testsuite/lib/sim-defs.exp
@@ -169,6 +169,7 @@ proc sim_run { prog sim_opts prog_opts redir options } {
 # mach: [all | machine names]
 # as[(mach-list)]: <assembler options>
 # ld[(mach-list)]: <linker options>
+# cc[(mach-list)]: <compiler options>
 # sim[(mach-list)]: <simulator options>
 # progopts: <arguments to the program being simulated>
 # output: program output pattern to match with string-match
@@ -190,6 +191,7 @@ proc run_sim_test { name requested_machs } {
     global cpu_option
     global global_as_options
     global global_ld_options
+    global global_cc_options
     global global_sim_options
 
     if [string match "*/*" $name] {
@@ -207,6 +209,7 @@ proc run_sim_test { name requested_machs } {
     # Clear default options
     set opts(as) ""
     set opts(ld) ""
+    set opts(cc) ""
     set opts(progopts) ""
     set opts(sim) ""
     set opts(output) ""
@@ -222,6 +225,9 @@ proc run_sim_test { name requested_machs } {
     if ![info exists global_ld_options] {
         set global_ld_options ""
     }
+    if ![info exists global_cc_options] {
+        set global_cc_options ""
+    }
     if ![info exists global_sim_options] {
         set global_sim_options ""
     }
@@ -234,6 +240,9 @@ proc run_sim_test { name requested_machs } {
 	if [info exists opts(ld,$m)] {
 	    unset opts(ld,$m)
 	}
+	if [info exists opts(cc,$m)] {
+	    unset opts(cc,$m)
+	}
 	if [info exists opts(sim,$m)] {
 	    unset opts(sim,$m)
 	}
@@ -310,23 +319,44 @@ proc run_sim_test { name requested_machs } {
 	if [info exists cpu_option] {
 	    set as_options "$as_options $cpu_option=$mach"
 	}
-	set comp_output [target_assemble $sourcefile ${name}.o "$as_options $global_as_options"]
-
-	if ![string match "" $comp_output] {
-	    verbose -log "$comp_output" 3
-	    fail "$mach $testname (assembling)"
-	    continue
-	}
+	regsub {(^ *| +)([^ ]+)} "$as_options $global_as_options" { -Wa,\2} c_as_options
 
 	if ![info exists opts(ld,$mach)] {
 	    set opts(ld,$mach) $opts(ld)
 	}
+	regsub {(^ *| +)([^ ]+)} "$opts(ld,$mach) $global_ld_options" { -Wl,\2} c_ld_options
+
+	if ![info exists opts(cc,$mach)] {
+	    set opts(cc,$mach) $opts(cc)
+	}
+
+	if [string match "*.c" $sourcefile] {
+	    set comp_output [target_compile $sourcefile ${name}.x "executable" \
+		[list "incdir=$srcdir/$subdir" "additional_flags=$c_as_options $c_ld_options $opts(cc,$mach) $global_cc_options"]]
+	    set method "compiling/linking"
+	} else {
+	    if [string match "*.S" $sourcefile] {
+		set comp_output [target_compile $sourcefile ${name}.o "object" \
+		    [list "incdir=$srcdir/$subdir" "additional_flags=$c_as_options"]]
+		set method "compiling"
+	    } else {
+		set comp_output [target_assemble $sourcefile ${name}.o "$as_options $global_as_options"]
+		set method "assembling"
+	    }
+
+	    if ![string match "" $comp_output] {
+		verbose -log "$comp_output" 3
+		fail "$mach $testname (${method})"
+		continue
+	    }
 
-	set comp_output [target_link ${name}.o ${name}.x "$opts(ld,$mach) $global_ld_options"]
+	    set comp_output [target_link ${name}.o ${name}.x "$opts(ld,$mach) $global_ld_options"]
+	    set method "linking"
+	}
 
 	if ![string match "" $comp_output] {
 	    verbose -log "$comp_output" 3
-	    fail "$mach $testname (linking)"
+	    fail "$mach $testname (${method})"
 	    continue
 	}
 
-- 
1.7.4.1


  parent reply	other threads:[~2011-03-14 21:06 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-14  8:20 [PATCH] sim: tests: support .S files Mike Frysinger
2011-03-14 12:32 ` Pedro Alves
2011-03-14 21:06   ` Mike Frysinger
2011-03-14 21:23 ` Mike Frysinger [this message]
2011-03-23 10:40   ` [PATCH] sim: tests: support .S/.c files Mike Frysinger
2011-03-23 17:02   ` Joel Brobecker
2011-03-23 18:50     ` Mike Frysinger
2011-03-24  5:38     ` Mike Frysinger
2011-03-29  3:06   ` Mike Frysinger
2011-05-14 17:48   ` Mike Frysinger
2011-05-16 18:37     ` Joel Brobecker
2011-05-16 18:49       ` Mike Frysinger

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=1300136769-5921-1-git-send-email-vapier@gentoo.org \
    --to=vapier@gentoo.org \
    --cc=gdb-patches@sourceware.org \
    --cc=toolchain-devel@blackfin.uclinux.org \
    /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