gcc: backport libgcc_pic changes to older gcc4 versions, install the libgcc map file...
[openwrt.git] / toolchain / gcc / patches / 4.2.4 / 820-libgcc_pic.patch
1 --- a/gcc/mklibgcc.in
2 +++ b/gcc/mklibgcc.in
3 @@ -214,6 +214,7 @@ for ml in $MULTILIBS; do
4    flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
5    shlib_slibdir_qual=
6    libgcc_a=$dir/libgcc.a
7 +  libgcc_pic_a=$dir/libgcc_pic.a
8    libgcov_a=$dir/libgcov.a
9    libgcc_eh_a=
10    libgcc_s_so=
11 @@ -320,6 +321,7 @@ for ml in $MULTILIBS; do
12          -c '$(srcdir)/libgcc2.c' -o $out
13  
14        echo $libgcc_a: $out
15 +      echo $libgcc_pic_a: $outS
16        echo $libgcc_s_so: $outS
17        if [ "$SHLIB_MKMAP" ]; then
18          echo libgcc/${dir}/libgcc.map: $outS
19 @@ -355,6 +357,7 @@ for ml in $MULTILIBS; do
20          -fexceptions -fnon-call-exceptions -c '$(srcdir)/libgcc2.c' -o $out
21  
22        echo $libgcc_a: $out
23 +      echo $libgcc_pic_a: $outS
24        echo $libgcc_s_so: $outS
25        if [ "$SHLIB_MKMAP" ]; then
26          echo libgcc/${dir}/libgcc.map: $outS
27 @@ -397,6 +400,7 @@ for ml in $MULTILIBS; do
28                       '$(vis_hide)' -c $fpbit -o $out
29                   
30                   echo $libgcc_a: $out
31 +                 echo $libgcc_pic_a: $outS
32                   echo $libgcc_s_so: $outS
33                   if [ "$SHLIB_MKMAP" ]; then
34                       echo libgcc/${dir}/libgcc.map: $outS
35 @@ -502,6 +506,7 @@ for ml in $MULTILIBS; do
36        esac
37  
38        echo $libgcc_a: $out
39 +      echo $libgcc_pic_a: $outS
40        echo $libgcc_s_so: $outS
41        if [ "$SHLIB_MKMAP" ]; then
42         echo libgcc/${dir}/libgcc.map: $outS
43 @@ -621,6 +626,7 @@ for ml in $MULTILIBS; do
44         *)   echo "Unhandled extension: $file">&2; exit 1 ;;
45        esac
46  
47 +      echo $libgcc_pic_a: $outS
48        echo $libgcc_s_so: $outS
49        if [ "$SHLIB_MKMAP" ]; then
50         echo libgcc/${dir}/libgcc.map: $outS
51 @@ -793,6 +799,13 @@ EOF
52    echo "all: $libgcc_a"
53  
54    echo ""
55 +  echo "$libgcc_pic_a: stmp-dirs"
56 +  echo "       -rm -f $libgcc_pic_a"
57 +  echo '       $(AR_CREATE_FOR_TARGET)' $libgcc_pic_a '$(objects)'
58 +  echo '       $(RANLIB_FOR_TARGET)' $libgcc_pic_a
59 +  echo "all: $libgcc_pic_a"
60 +
61 +  echo ""
62    echo "$libgcov_a: stmp-dirs"
63    echo "       -rm -f $libgcov_a"
64    echo '       $(AR_CREATE_FOR_TARGET)' $libgcov_a '$(objects)'
65 @@ -894,6 +907,10 @@ for ml in $MULTILIBS; do
66      echo '     chmod 644'  ${ldir}/libgcc_eh.a
67      echo '     $(RANLIB_FOR_TARGET)' ${ldir}/libgcc_eh.a
68  
69 +    echo '     $(INSTALL_DATA)' ${dir}/libgcc_pic.a ${mapfile} ${ldir}/
70 +    echo '     chmod 644'  ${ldir}/libgcc_pic.a
71 +    echo '     $(RANLIB_FOR_TARGET)' ${ldir}/libgcc_pic.a
72 +
73      shlib_slibdir_qual=
74      os_multilib_dir=`$GCC_FOR_TARGET $flags --print-multi-os-directory`
75      if [ "$os_multilib_dir" != . ]; then