On Sat, Jan 3, 2015 at 4:24 AM, Cyd Haselton <chaselton@xxxxxxxxx> wrote: > On Fri, Jan 2, 2015 at 5:55 AM, Andrew Haley <aph@xxxxxxxxxx> wrote: >> On 01/02/2015 11:48 AM, Cyd Haselton wrote: >>> On Fri, Jan 2, 2015 at 4:38 AM, Andrew Haley <aph@xxxxxxxxxx> 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 Crap...I missed a command. The corrected series of commands...post-libgcc-object-build... is at the end of this email. Again, please let me know which of the commands I should run...or if ishould run all of them...sooner rather than later. Having both build dirs on device seriously limits other tasks I can perform. In the command below, '*.o'is a placeholder for a huge list of objects in the arm-linux-androideabi/libgcc tree # Early copyback; see "all" above for the rationale. The # early copy is necessary so that the gcc -B options find # the right startup files when linking shared libgcc. /android_root/system/bin/sh ../../../gcc-4.9.2/libgcc/../mkinstalldirs ../.././gcc parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"; \ for file in $parts; do \ rm -f ../.././gcc/$file; \ /bin/install -c -m 644 $file ../.././gcc/; \ case $file in \ *.a) \ /usr/gcc-4.9.2/bin/ranlib ../.././gcc/$file ;; \ esac; \ done sed -e 's/__PFX__/__/g' \ -e 's/__FIXPTPFX__/__gnu_/g' < ../../../gcc-4.9.2/libgcc/libgcc-std.ver.in > libgcc-std.ver { /bld/gcc/builddir-4.9/./gcc/nm -pg *.o 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