|
@@ -12,6 +12,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
LIBGCC=`$CC -print-libgcc-file-name`
|
|
|
|
|
|
echo Finding missing symbols in libc.a ...
|
|
@@ -19,13 +22,13 @@ echo " partial linking..."
|
|
|
rm -f libc.ldr
|
|
|
$LD -r -o libc.ldr ../../lib/crt0.o ../../lib/crti.o ../../lib/crtn.o --whole-archive ../libc.a
|
|
|
|
|
|
-if $NM --undefined-only libc.ldr | grep -v "^main$" | grep -v "^_GLOBAL_OFFSET_TABLE_$" | grep -v "_gp_disp" > sym.need ; then
|
|
|
+if $NM --undefined-only libc.ldr 2>&1 | grep -v "^main$" | grep -v "^_GLOBAL_OFFSET_TABLE_$" | grep -v "_gp_disp" > sym.need ; then
|
|
|
EXIT_WITH_ERROR=0
|
|
|
rm -f obj.need
|
|
|
touch obj.need
|
|
|
for SYM in `cat sym.need | sed -e 's/ U //g'` ; do
|
|
|
- if $NM -s $LIBGCC | grep -q $SYM" in " ; then
|
|
|
- $NM -s $LIBGCC | grep $SYM" in " | cut -d' ' -f3 >> obj.need
|
|
|
+ if $NM -s $LIBGCC 2>&1 | grep -q $SYM" in " ; then
|
|
|
+ $NM -s $LIBGCC 2>&1 | grep $SYM" in " | cut -d' ' -f3 >> obj.need
|
|
|
else
|
|
|
echo Symbol $SYM needed by libc.a but not found in libgcc.a
|
|
|
EXIT_WITH_ERROR=1
|
|
@@ -53,10 +56,10 @@ cmp -s obj.need obj.need.0 ; state=$?
|
|
|
while [ -s obj.need ] && [ $state -ne 0 ] ; do
|
|
|
(cd tmp-gcc && cat ../obj.need | sort | uniq | xargs $LD -r -o ../libgcc.ldr)
|
|
|
cp obj.need obj.need.0
|
|
|
- if $NM --undefined-only libgcc.ldr > sym.need ; then
|
|
|
+ if $NM --undefined-only libgcc.ldr > sym.need 2>&1 ; then
|
|
|
for SYM in `cat sym.need | sed -e 's/ U //g'` ; do
|
|
|
- if $NM -s $LIBGCC | grep -q $SYM" in " ; then
|
|
|
- $NM -s $LIBGCC | grep $SYM" in " | cut -d' ' -f3 >> obj.need
|
|
|
+ if $NM -s $LIBGCC 2>&1 | grep -q $SYM" in " ; then
|
|
|
+ $NM -s $LIBGCC 2>&1 | grep $SYM" in " | cut -d' ' -f3 >> obj.need
|
|
|
fi
|
|
|
done
|
|
|
fi
|