mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-13 20:33:33 +08:00
Add and use check_lto_shared_available
2014-01-09 Vidya Praveen <vidyapraveen@arm.com> * lib/ld-lib.exp (check_lto_shared_available): New check. * ld-plugin/lto.exp: Use check_lto_shared_available.
This commit is contained in:
parent
09bf66a8e8
commit
92c09111f3
@ -1,3 +1,8 @@
|
||||
2014-01-09 Vidya Praveen <vidyapraveen@arm.com>
|
||||
|
||||
* lib/ld-lib.exp (check_lto_shared_available): New check.
|
||||
* ld-plugin/lto.exp: Use check_lto_shared_available.
|
||||
|
||||
2014-01-08 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/14207
|
||||
|
@ -300,8 +300,7 @@ set lto_run_elf_tests {
|
||||
run_cc_link_tests $lto_link_tests
|
||||
|
||||
# Restrict these to ELF targets that support shared libs and PIC.
|
||||
if { [is_elf_format]
|
||||
&& [run_host_cmd_yesno $CC "-shared -fPIC $srcdir/$subdir/dummy.c -o tmpdir/t.so"] } {
|
||||
if { [is_elf_format] && [check_lto_shared_available] } {
|
||||
run_cc_link_tests $lto_link_elf_tests
|
||||
set testname "PR ld/15146 (2)"
|
||||
set exec_output [run_host_cmd "$CC" "$gcc_gas_flag $gcc_ld_flag -O2 -flto -fuse-linker-plugin -Wl,-rpath-link,. -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed tmpdir/pr15146d.o tmpdir/pr15146c.so"]
|
||||
|
@ -1679,6 +1679,45 @@ proc check_lto_available { } {
|
||||
return $lto_available_saved
|
||||
}
|
||||
|
||||
# Returns true if the target compiler supports LTO and -shared
|
||||
proc check_lto_shared_available { } {
|
||||
global lto_shared_available_saved
|
||||
global CC
|
||||
|
||||
set flags ""
|
||||
|
||||
if [board_info [target_info name] exists cflags] {
|
||||
append flags " [board_info [target_info name] cflags]"
|
||||
}
|
||||
|
||||
if [board_info [target_info name] exists ldflags] {
|
||||
append flags " [board_info [target_info name] ldflags]"
|
||||
}
|
||||
|
||||
if {![info exists lto_shared_available_saved]} {
|
||||
# Check if gcc supports -flto -fuse-linker-plugin -shared
|
||||
if { [which $CC] == 0 } {
|
||||
set lto_shared_available_saved 0
|
||||
return 0
|
||||
}
|
||||
set basename "lto_shared"
|
||||
set src ${basename}[pid].c
|
||||
set output ${basename}[pid].so
|
||||
set f [open $src "w"]
|
||||
puts $f ""
|
||||
close $f
|
||||
set status [remote_exec host $CC "$flags -shared -fPIC -B[pwd]/tmpdir/ld/ -flto -fuse-linker-plugin $src -o $output"]
|
||||
if { [lindex $status 0] == 0 } {
|
||||
set lto_shared_available_saved 1
|
||||
} else {
|
||||
set lto_shared_available_saved 0
|
||||
}
|
||||
file delete $src
|
||||
file delete $output
|
||||
}
|
||||
return $lto_shared_available_saved
|
||||
}
|
||||
|
||||
# Check if the assembler supports CFI statements.
|
||||
|
||||
proc check_as_cfi { } {
|
||||
|
Loading…
Reference in New Issue
Block a user