Android Native GCC 4.9.2 Build Fails at Dynamic libgcc
Cyd Haselton
chaselton@gmail.com
Sat Jan 3 10:24:00 GMT 2015
On Fri, Jan 2, 2015 at 5:55 AM, Andrew Haley <aph@redhat.com> wrote:
> On 01/02/2015 11:48 AM, Cyd Haselton wrote:
>> On Fri, Jan 2, 2015 at 4:38 AM, Andrew Haley <aph@redhat.com> wrote:
>>> On 01/02/2015 10:32 AM, Cyd Haselton wrote:
>>>
>>> Okay, so if the commands are identical you need to run them by hand in
>>> the correct directory to see what is different. if the command which
>>> failed in 4.9 is exactly the same as the command which succeeded
>>> in 4.8 its input files must be different, and in particular dlopen()
>>> must be defined in one of the input files or the user of dlopen()
>>> must not be there in 4.8.
>>>
>> Thanks to the inability to write to extednal storage there is not much
>> space to work with on my android device. Keeping both the 4.8.4 and
>> the 4.9.2 builds plus the build GCC on device eats up nearly all of
>> it.
>
> Sure, but it never even occurred to me that having gone this far you'd
> delete the build tree! That's the problem with trying to debug
> problems like this by mail. If you can login to the device then you
> can copy a tree from it, I would have thought.
>
>> That being said...
>>
>> I still have the build logs and therefore the commands for the libgcc
>> link, but the list of input files is huge. I can review them, but if I
>> need to post them here should I use a link to a file or just copy and
>> paste everything?
>
> Neither. Sorry, I think you need to be able to run the commands by
> hand. I can't think of any other way: we really need to be able to
> compare the working and non-working trees.
>
> Andrew.
4.8.4 build to libgcc is complete. There's a small problem...there are
a number of commands run after the libgcc objects are build but before
they are linked. Simply running the last command throws a lot of
"multiple definition" errors so i'm pasting the series of commands
here MINUS the huge list of objects. Which one of these should I run
manually?
cat libgcc-std.ver ../../../gcc-4.8.4/libgcc/config/libgcc-glibc.ver
../../../gcc-4.8.4/libgcc/config/arm/libgcc-bpabi.ver \
| sed -e '/^[ ]*#/d' \
-e 's/^%\(if\|else\|elif\|endif\|define\)/#\1/' \
| /bld/gcc/builddir-4.8/./gcc/xgcc -B/bld/gcc/builddir-4.8/./gcc/
-B/usr/gcc-4.8.4/arm-linux-androideabi/bin/
-B/usr/gcc-4.8.4/arm-linux-androideabi/lib/ -isystem
/usr/gcc-4.8.4/arm-linux-androideabi/include -isystem
/usr/gcc-4.8.4/arm-linux-androideabi/sys-include
--sysroot=/usr/gcc-4.8.4/sysroot -g -O2 -Wall -O -mandroid -mbionic
-O2 -g -O2 -Wall -O -mandroid -mbionic -DIN_GCC -W -Wall
-Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes
-Wmissing-prototypes -Wold-style-definition -isystem ./include
-fPIC -fno-inline -g -DIN_LIBGCC2 -fbuilding-libgcc
-fno-stack-protector -fPIC -fno-inline -I. -I. -I../.././gcc
-I../../../gcc-4.8.4/libgcc -I../../../gcc-4.8.4/libgcc/.
-I../../../gcc-4.8.4/libgcc/../gcc
-I../../../gcc-4.8.4/libgcc/../include -DHAVE_CC_TLS -E
-xassembler-with-cpp -; \
} | gawk -f ../../../gcc-4.8.4/libgcc/mkmap-symver.awk > tmp-libgcc.map
mv tmp-libgcc.map libgcc.map
# @multilib_flags@ is still needed because this may use
# /bld/gcc/builddir-4.8/./gcc/xgcc -B/bld/gcc/builddir-4.8/./gcc/
-B/usr/gcc-4.8.4/arm-linux-androideabi/bin/
-B/usr/gcc-4.8.4/arm-linux-androideabi/lib/ -isystem
/usr/gcc-4.8.4/arm-linux-androideabi/include -isystem
/usr/gcc-4.8.4/arm-linux-androideabi/sys-include
--sysroot=/usr/gcc-4.8.4/sysroot and -O2 -g -O2 -Wall -O -mandroid
-mbionic -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
-Wold-style-definition -isystem ./include -fPIC -fno-inline -g
-DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector directly.
# @multilib_dir@ is not really necessary, but sometimes it has
# more uses than just a directory name.
/android_root/system/bin/sh ../../../gcc-4.8.4/libgcc/../mkinstalldirs .
/bld/gcc/builddir-4.8/./gcc/xgcc -B/bld/gcc/builddir-4.8/./gcc/
-B/usr/gcc-4.8.4/arm-linux-androideabi/bin/
-B/usr/gcc-4.8.4/arm-linux-androideabi/lib/ -isystem
/usr/gcc-4.8.4/arm-linux-androideabi/include -isystem
/usr/gcc-4.8.4/arm-linux-androideabi/sys-include
--sysroot=/usr/gcc-4.8.4/sysroot -O2 -g -O2 -Wall -O -mandroid
-mbionic -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
-Wold-style-definition -isystem ./include -fPIC -fno-inline -g
-DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -shared
-nodefaultlibs -Wl,--soname=libgcc_s.so.1
-Wl,--version-script=libgcc.map -o ./libgcc_s.so.1.tmp -g -O2 -Wall -O
-mandroid -mbionic -B./ *.o libgcc.a -lc && rm -f ./libgcc_s.so && if
[ -f ./libgcc_s.so.1 ]; then mv -f ./libgcc_s.so.1
./libgcc_s.so.1.backup; else true; fi && mv ./libgcc_s.so.1.tmp
./libgcc_s.so.1 && (echo "/* GNU ld script"; echo " Use the shared
library, but some functions are only in"; echo " the static library.
*/"; echo "GROUP ( libgcc_s.so.1 -lgcc )" ) > ./libgcc_s.so
More information about the Gcc-help
mailing list