rev |
line source |
al@21060
|
1 From: Jakub Jelinek <jakub@redhat.com>
|
al@21060
|
2 Subject: [PATCH] Use --push-state --as-needed and --pop-state instead of --as-needed and --no-as-needed for libgcc
|
al@21060
|
3
|
al@21060
|
4 As discussed, using --as-needed and --no-as-needed is dangerous, because
|
al@21060
|
5 it results in --no-as-needed even for libraries after -lgcc_s, even when the
|
al@21060
|
6 default is --as-needed or --as-needed has been specified earlier on the
|
al@21060
|
7 command line.
|
al@21060
|
8
|
al@21060
|
9 If the linker supports --push-state/--pop-state, we should IMHO use it.
|
al@21060
|
10
|
al@21060
|
11 2018-04-11 Jakub Jelinek <jakub@redhat.com>
|
al@21060
|
12
|
al@21060
|
13 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
|
al@21060
|
14 --push-state --as-needed and --pop-state instead of --as-needed and
|
al@21060
|
15 --no-as-needed if ld supports it.
|
al@21060
|
16 * configure: Regenerated.
|
al@21060
|
17
|
al@21060
|
18 Index: b/gcc/configure.ac
|
al@21060
|
19 ===================================================================
|
al@21060
|
20 --- a/gcc/configure.ac
|
al@21060
|
21 +++ b/gcc/configure.ac
|
al@21060
|
22 @@ -5518,11 +5518,21 @@ if test $in_tree_ld = yes ; then
|
al@21060
|
23 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
|
al@21060
|
24 && test $in_tree_ld_is_elf = yes; then
|
al@21060
|
25 gcc_cv_ld_as_needed=yes
|
al@21060
|
26 + if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
|
al@21060
|
27 + gcc_cv_ld_as_needed_option='--push-state --as-needed'
|
al@21060
|
28 + gcc_cv_ld_no_as_needed_option='--pop-state'
|
al@21060
|
29 + fi
|
al@21060
|
30 fi
|
al@21060
|
31 elif test x$gcc_cv_ld != x; then
|
al@21060
|
32 # Check if linker supports --as-needed and --no-as-needed options
|
al@21060
|
33 if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
|
al@21060
|
34 gcc_cv_ld_as_needed=yes
|
al@21060
|
35 + if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null; then
|
al@21060
|
36 + if $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null; then
|
al@21060
|
37 + gcc_cv_ld_as_needed_option='--push-state --as-needed'
|
al@21060
|
38 + gcc_cv_ld_no_as_needed_option='--pop-state'
|
al@21060
|
39 + fi
|
al@21060
|
40 + fi
|
al@21060
|
41 fi
|
al@21060
|
42 case "$target:$gnu_ld" in
|
al@21060
|
43 *-*-solaris2*:no)
|