diff options
author | Nick Clifton <nickc@redhat.com> | 2007-11-20 15:08:25 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2007-11-20 15:08:25 +0000 |
commit | 430a16a51d442dd9c7f91631388815d54c70481f (patch) | |
tree | 55b2da5727325f2f8c2600aac85cd4d119e4db05 /ld/testsuite/lib | |
parent | 2207132da48e8347055233edd8cc6b8abffdd0a0 (diff) | |
download | gdb-430a16a51d442dd9c7f91631388815d54c70481f.zip gdb-430a16a51d442dd9c7f91631388815d54c70481f.tar.gz gdb-430a16a51d442dd9c7f91631388815d54c70481f.tar.bz2 |
* elflink.c (elf_link_output_extsym): Weaken assertion: if --gc-section is set, there may be no TLS segment.
* lib/ld-lib.exp (check_gc_sections_available): New proc, based on the version in gcc/testsuite/lib/target-supports.exp.
* ld-elf/eld.exp: Use check_gc_sections_available.
Diffstat (limited to 'ld/testsuite/lib')
-rw-r--r-- | ld/testsuite/lib/ld-lib.exp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp index 456e9fd..f326478 100644 --- a/ld/testsuite/lib/ld-lib.exp +++ b/ld/testsuite/lib/ld-lib.exp @@ -1535,3 +1535,45 @@ proc run_cc_link_tests { ldtests } { } } } + +# Returns true if --gc-sections is supported on the target. + +proc check_gc_sections_available { } { + global gc_sections_available_saved + global ld + + if {![info exists gc_sections_available_saved]} { + # Some targets don't support gc-sections despite whatever's + # advertised by ld's options. + if { [istarget alpha*-*-*] + || [istarget ia64-*-*] } { + set gc_sections_available_saved 0 + return 0 + } + + # elf2flt uses -q (--emit-relocs), which is incompatible with + # --gc-sections. + if { [board_info target exists ldflags] + && [regexp " -elf2flt\[ =\]" " [board_info target ldflags] "] } { + set gc_sections_available_saved 0 + return 0 + } + + # VxWorks kernel modules are relocatable objects linked with -r, + # while RTP executables are linked with -q (--emit-relocs). + # Both of these options are incompatible with --gc-sections. + if { [istarget *-*-vxworks*] } { + set gc_sections_available_saved 0 + return 0 + } + + # Check if the ld used by gcc supports --gc-sections. + set ld_output [remote_exec host $ld "--help"] + if { [ string first "--gc-sections" $ld_output ] >= 0 } { + set gc_sections_available_saved 1 + } else { + set gc_sections_available_saved 0 + } + } + return $gc_sections_available_saved +} |