aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/target.exp50
-rw-r--r--testsuite/runtest.libs/target.test32
2 files changed, 52 insertions, 30 deletions
diff --git a/lib/target.exp b/lib/target.exp
index 30f6eb3..36ae639 100644
--- a/lib/target.exp
+++ b/lib/target.exp
@@ -598,11 +598,12 @@ proc default_target_compile {source destfile type options} {
}
if { $type eq "executable" } {
+ set extra_ldflags ""
if {[board_info $dest exists ldflags]} {
- append add_flags " [board_info $dest ldflags]"
+ append extra_ldflags " [board_info $dest ldflags]"
}
if { $compiler_type eq "c++" } {
- append add_flags " [g++_link_flags]"
+ append extra_ldflags " [g++_link_flags]"
}
if {[isnative]} {
# This is a lose.
@@ -610,16 +611,23 @@ proc default_target_compile {source destfile type options} {
if { $tmp ne "" } {
if {[regexp ".*solaris2.*" $target_triplet]} {
# Solaris 2
- append add_flags " -R$tool_root_dir/libstdc++"
+ append extra_ldflags " -R$tool_root_dir/libstdc++"
} elseif {[regexp ".*(osf|irix5|linux).*" $target_triplet]} {
# OSF/1 or IRIX 5
- append add_flags " -Wl,-rpath,$tool_root_dir/libstdc++"
+ append extra_ldflags " -Wl,-rpath,$tool_root_dir/libstdc++"
} elseif {[regexp ".*hppa.*" $target_triplet]} {
# HP-UX
- append add_flags " -Wl,-a,shared_archive"
+ append extra_ldflags " -Wl,-a,shared_archive"
}
}
}
+ if { $extra_ldflags ne "" } {
+ if { $compiler_type eq "ada" } {
+ append add_flags " -largs $extra_ldflags -margs"
+ } else {
+ append add_flags " $extra_ldflags"
+ }
+ }
}
if {![info exists ldscript]} {
@@ -641,17 +649,17 @@ proc default_target_compile {source destfile type options} {
}
if { $type eq "executable" } {
- append add_flags " $ldflags"
+ set extra_ldflags "$ldflags"
foreach x $libs {
if {[file exists $x]} {
append source " $x"
} else {
- append add_flags " $x"
+ append extra_ldflags " $x"
}
}
if {[board_info $dest exists libs]} {
- append add_flags " [board_info $dest libs]"
+ append extra_ldflags " [board_info $dest libs]"
}
# This probably isn't such a good idea, but it avoids nasty
@@ -660,25 +668,39 @@ proc default_target_compile {source destfile type options} {
# library is linked in by the linker script, so this must be before
# the linker script.
if {[board_info $dest exists mathlib]} {
- append add_flags " [board_info $dest mathlib]"
+ append extra_ldflags " [board_info $dest mathlib]"
} else {
- append add_flags " -lm"
+ append extra_ldflags " -lm"
}
# This must be added here.
- append add_flags " $ldscript"
+ append extra_ldflags " $ldscript"
if {[board_info $dest exists remote_link]} {
# Relink option.
- append add_flags " -Wl,-r"
+ append extra_ldflags " -Wl,-r"
}
if {[board_info $dest exists output_format]} {
- append add_flags " -Wl,-oformat,[board_info $dest output_format]"
+ append extra_ldflags " -Wl,-oformat,[board_info $dest \
+ output_format]"
+ }
+ if { $extra_ldflags ne "" } {
+ if { $compiler_type eq "ada" } {
+ append add_flags " -largs $extra_ldflags -margs"
+ } else {
+ append add_flags " $extra_ldflags"
+ }
}
}
if {[board_info $dest exists multilib_flags]} {
- set add_flags "[board_info $dest multilib_flags] $add_flags"
+ set multilib_flags [board_info $dest multilib_flags]
+ if { $compiler_type eq "ada" } {
+ set add_flags "$multilib_flags -largs $multilib_flags -margs\
+ $add_flags"
+ } else {
+ set add_flags "$multilib_flags $add_flags"
+ }
}
verbose "doing compile"
diff --git a/testsuite/runtest.libs/target.test b/testsuite/runtest.libs/target.test
index 11d32ba..9f1ad51 100644
--- a/testsuite/runtest.libs/target.test
+++ b/testsuite/runtest.libs/target.test
@@ -681,8 +681,8 @@ eval_tests compile_test {
"find_gcc" ! {}
"find_gnatmake" ! {}
"remote_exec host" U
- { 2 {m68k-unknown-aout-gnatmake foo.adb -midp -fada
- -E -I/usr/gnemul/idp/include} }
+ { 2 {m68k-unknown-aout-gnatmake foo.adb -midp -largs -midp -margs
+ -fada -E -I/usr/gnemul/idp/include} }
}
}
{ "compile Ada to assembly with target compiler"
@@ -691,8 +691,8 @@ eval_tests compile_test {
"find_gcc" ! {}
"find_gnatmake" ! {}
"remote_exec host" U
- { 2 {m68k-unknown-aout-gnatmake foo.adb -midp -fada
- -S -I/usr/gnemul/idp/include -o foo.s} }
+ { 2 {m68k-unknown-aout-gnatmake foo.adb -midp -largs -midp -margs
+ -fada -S -I/usr/gnemul/idp/include -o foo.s} }
}
}
{ "compile Ada to object with target compiler"
@@ -701,7 +701,7 @@ eval_tests compile_test {
"find_gcc" ! {}
"find_gnatmake" ! {}
"remote_exec host" U
- { 2 {m68k-unknown-aout-gnatmake -midp -fada
+ { 2 {m68k-unknown-aout-gnatmake -midp -largs -midp -margs -fada
-c -I/usr/gnemul/idp/include
-o foo.o foo.adb} }
}
@@ -712,9 +712,9 @@ eval_tests compile_test {
"find_gcc" ! {}
"find_gnatmake" ! {}
"remote_exec host" U
- { 2 {m68k-unknown-aout-gnatmake foo.adb -midp -fada
- -I/usr/gnemul/idp/include -L/usr/gnemul/idp/lib
- -lidpsup -lm_idp -Tidp.ld -o foo} }
+ { 2 {m68k-unknown-aout-gnatmake foo.adb -midp -largs -midp -margs
+ -fada -I/usr/gnemul/idp/include -largs -L/usr/gnemul/idp/lib
+ -margs -largs -lidpsup -lm_idp -Tidp.ld -margs -o foo} }
}
}
@@ -727,7 +727,7 @@ eval_tests compile_test {
"find_gcc" ! {}
"find_gnatmake" ! {}
"remote_exec host" U
- { 2 {target-gnatmake foo.adb -midp -fada
+ { 2 {target-gnatmake foo.adb -midp -largs -midp -margs -fada
-E -I/usr/gnemul/idp/include} }
}
}
@@ -737,7 +737,7 @@ eval_tests compile_test {
"find_gcc" ! {}
"find_gnatmake" ! {}
"remote_exec host" U
- { 2 {target-gnatmake foo.adb -midp -fada
+ { 2 {target-gnatmake foo.adb -midp -largs -midp -margs -fada
-S -I/usr/gnemul/idp/include -o foo.s} }
}
}
@@ -747,7 +747,7 @@ eval_tests compile_test {
"find_gcc" ! {}
"find_gnatmake" ! {}
"remote_exec host" U
- { 2 {target-gnatmake -midp -fada
+ { 2 {target-gnatmake -midp -largs -midp -margs -fada
-c -I/usr/gnemul/idp/include
-o foo.o foo.adb} }
}
@@ -758,9 +758,9 @@ eval_tests compile_test {
"find_gcc" ! {}
"find_gnatmake" ! {}
"remote_exec host" U
- { 2 {target-gnatmake foo.adb -midp -fada
- -I/usr/gnemul/idp/include -L/usr/gnemul/idp/lib
- -lidpsup -lm_idp -Tidp.ld -o foo} }
+ { 2 {target-gnatmake foo.adb -midp -largs -midp -margs -fada
+ -I/usr/gnemul/idp/include -largs -L/usr/gnemul/idp/lib -margs
+ -largs -lidpsup -lm_idp -Tidp.ld -margs -o foo} }
}
}
{ "clean up GNATMAKE_FOR_TARGET"
@@ -773,7 +773,7 @@ eval_tests compile_test {
} }
check_calls {
"remote_exec host" U
- { 2 {found-gnatmake foo.adb -lm -Tmvme.ld -o foo} }
+ { 2 {found-gnatmake foo.adb -largs -lm -Tmvme.ld -margs -o foo} }
}
}
{ "override destination to host and compile and link Ada with host-gnatmake"
@@ -782,7 +782,7 @@ eval_tests compile_test {
} }
check_calls {
"remote_exec host" U
- { 2 {host-gnatmake foo.adb -lm -Tmvme.ld -o foo} }
+ { 2 {host-gnatmake foo.adb -largs -lm -Tmvme.ld -margs -o foo} }
}
}