diff options
-rw-r--r-- | lib/target.exp | 50 | ||||
-rw-r--r-- | testsuite/runtest.libs/target.test | 32 |
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} } } } |