Hi Maxim, Still didn't build. The problem as far as I see, is "libgcc" since it should done in later steps(according to the reference) and it fails to build but when use all-gcc target, it didn't build libgcc so not a problem in this case. But "make" tries to build libgcc and failed.
The steps I did are: 946 2016-11-25 17:26:18 export PATH=~/asn/install-4.8.2/bin:$PATH # to add binutil to the path 947 2016-11-25 17:26:29 rm -rf * 949 2016-11-25 17:26:42 ../gcc-4.8.2/configure -C --prefix=/xx/asn/install-4.8.2 --target=mips-linux --enable-languages=c,c++ --disable-multilib --enable-libsanitizer 951 2016-11-25 17:26:57 make -j12 Of course, have a tweak in configure.tgt. >From configure log, ASAN wasn't filtered out but didn't get built. *** This configuration is not supported in the following subdirectories: target-libitm gnattools target-libada target-libgfortran target-libgo target-libffi target-libbacktrace target-zlib target-libjava target-libobjc target-boehm-gc (Any other directories should still work fine.) BTW, what did you mean by "rebuild GCC from the scratch"? Since use a separate build directory, step 1 and 2 in your reply would suffice. Anything missed or you meant something different? Many thanks Kit Many thanks, Kit https://kitpark.slack.com/ ------ Sorry for a terse reply or typo as sent from a mobile. 2016-11-25 16:32 GMT+00:00 Maxim Ostapenko <chefm...@gmail.com>: > > 25 Ноя 2016 г. 20:23 пользователь "Park Kit" <keiteep...@gmail.com> > написал: > > > > Hi Maxim, > > Hi > > > > > Really appreciated for the link which works for me when follows exactly. > However, I am seeing two differences from you when trying to build ASAN: > > > > 1. Used the same glibc version but no error on a machine I use. > > 2. When either use a libsanitizer/configure.tgt tweak or > --enable-libsanitizer, "make all-gcc" doesn't build "libsanitizer > > Try to do "make -j12" instead of "make all-gcc". If that doesn't work, > rebuild GCC from the scratch: > > 1) rm -rf * > 2) configure ... > 3) make -j12 > > Make sure you added 'mips-linux' entry in configure.tgt. > > > > > May need to look into Makefile.in and need to figure out. Will updated > on that and many thanks again. > > > > Kit > > > > > > Many thanks, > > Kit > > https://kitpark.slack.com/ > > ------ > > Sorry for a terse reply or typo as sent from a mobile. > > > > 2016-11-24 7:59 GMT+00:00 Maxim Ostapenko <chefm...@gmail.com>: > >> > >> Hi, > >> > >> вторник, 22 ноября 2016 г., 17:48:21 UTC+3 пользователь Park Kit > написал: > >>> > >>> Hi Sagar, Maxim, > >>> > >>> Appreciated for your try and comments. > >>> > >>> @Sagar, your steps are bit different from what I followed so will give > it a try to build. This confirms at least ASAN works for cross-compile on > MIPS and which is great. > >>> > >>> @Maxim, you're right on 2) and that's what I did. Have you used the > buildroot to build cross-compile GCC on MIPS or used GCC package only? What > version have you used? Would you mind showing command lines to configure > and to build it? > >> > >> > >> Yes, I've used cross buildroot. It can be quite simply built manually, > I've used this pretty nice instruction: http://preshing.com/20141119/ > how-to-build-a-gcc-cross-compiler/. > >> The components I used: > >> * current trunk GCC > >> * current trunk binutils > >> * current trunk Linux headers > >> * Glibc 2.20 > >> > >> The only difference I've needed is a local patch for Glibc (I used > 2.20) to fix build error (the patch is attached). > >> > >> I'm also attaching the patch I used to enable ASan in GCC for MIPS (you > can apply it on step 7). > >> > >> Once you've built toolchain, you can simple test: > >> > >> $ mips-linux-gcc -fsanitize=address <gcc_tree_location>/gcc/ > testsuite/c-c++-common/asan/heap-overflow-1.c -fstack-protector > >> $ qemu-mips -L $SYSROOT -R 0 ./a.out > >> > >> ================================================================= > >> ==9453==ERROR: AddressSanitizer: heap-buffer-overflow on address > 0x42c007ba at pc 0x00400a94 bp 0x407ffca0 sp 0x407ffcc8 > >> READ of size 1 at 0x42c007ba thread T0 > >> #0 0x400a8c (/home/max/build/mips/gcc/a.out+0x400a8c) > >> #1 0x40e5a36c (/opt/cross/mips//mips-linux/lib/libc.so.6+0x1936c) > >> > >> 0x42c007ba is located 0 bytes to the right of 10-byte region > [0x42c007b0,0x42c007ba) > >> allocated by thread T0 here: > >> #0 0x4093fe9c (/opt/cross/mips//mips-linux/ > lib/libasan.so.4+0x107e9c) > >> #1 0x4009e4 (/home/max/build/mips/gcc/a.out+0x4009e4) > >> #2 0x40e5a36c (/opt/cross/mips//mips-linux/lib/libc.so.6+0x1936c) > >> > >> SUMMARY: AddressSanitizer: heap-buffer-overflow > (/home/max/build/mips/gcc/a.out+0x400a8c) > >> Shadow bytes around the buggy address: > >> 0x130200a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> 0x130200b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> 0x130200c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> 0x130200d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> 0x130200e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> =>0x130200f0: fa fa fa fa fa fa 00[02]fa fa fa fa fa fa fa fa > >> 0x13020100: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> 0x13020110: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> 0x13020120: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> 0x13020130: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> 0x13020140: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >> Shadow byte legend (one shadow byte represents 8 application bytes): > >> Addressable: 00 > >> Partially addressable: 01 02 03 04 05 06 07 > >> Heap left redzone: fa > >> Freed heap region: fd > >> Stack left redzone: f1 > >> Stack mid redzone: f2 > >> Stack right redzone: f3 > >> Stack after return: f5 > >> Stack use after scope: f8 > >> Global redzone: f9 > >> Global init order: f6 > >> Poisoned by user: f7 > >> Container overflow: fc > >> Array cookie: ac > >> Intra object redzone: bb > >> ASan internal: fe > >> Left alloca redzone: ca > >> Right alloca redzone: cb > >> ==9453==ABORTING > >> > >> Note that I've added -fstack-protector flag to avoid "cc1: warning: > -fsanitize=address and -fsanitize=kernel-address are not supported for this > target" error on compilation step. This is weird, but for some reason GCC > folks use this flag to control FRAME_GROWS_DOWNWARD macro om MIPS. > >> GCC's ASan doesn't support targets with FRAME_GROWS_DOWNWARD == 0 so I > just added -fstack-protector as a workaround. > >> > >> > >>> > >>> > >>> Keep you posted on further tries. Many thanks > >>> Kit > >>> > >>> 2016년 11월 19일 토요일 오전 11시 19분 34초 UTC, sagar....@imgtec.com 님의 말: > >>>> > >>>> Hi Park, > >>>> > >>>> Following are the steps for building LLVM and compiler-rt for target > MIPS (Host=x86, Target=MIPS): > >>>> Install prerequisites with "sudo apt-get install cmake ninja-build > gcc-5-mipsel-linux-gnu g++-5-mipsel-linux-gnu gcc-5-multilib-mipsel-linux-gnu > g++-5-multilib-mipsel-linux-gnu binutils-mipsel-linux-gnu > libgcc1-mipsel-cross libstdc++6-mipsel-cross" > >>>> Checkout llvm. > >>>> Checkout clang in /llvm/tools/ > >>>> Build LLVM cross compiler which targets MIPS. > >>>> Run "cmake -G Ninja ../llvm -DCMAKE_INSTALL_PREFIX=<path-to-install-dir> > -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<install-dir> > -DLLVM_DEFAULT_TARGET_TRIPLE=mipsel-linux-gnu -DLLVM_TARGET_ARCH=Mips > -DLLVM_TARGETS_TO_BUILD=Mips" in a build directory. > >>>> Run "ninja; ninja install" > >>>> Checkout compiler-rt > >>>> Build compiler-rt in a separate build directory using the just built > llvm cross compiler. > >>>> Run "cmake -G Ninja ../compiler-rt/ -DCMAKE_C_COMPILER=<path-to- > where-llvm-was-installed>/bin/clang -DCMAKE_CXX_COMPILER=<path-to- > where-llvm-was-installed>/bin/clang++ -DCMAKE_BUILD_TYPE=Release > -DLLVM_CONFIG_PATH=<path-to-where-llvm-was-installed>//bin/llvm-config > -DCOMPILER_RT_INSTALL_PATH=<path-to-where-llvm-was-installed>//lib/clang/4.0.0 > -DCMAKE_C_FLAGS="-I/usr/mipsel-linux-gnu/include/ > -Wl,-L/usr/mipsel-linux-gnu/lib/" > -DCMAKE_CXX_FLAGS="-I/usr/mipsel-linux-gnu/include/ > -Wl,-L/usr/mipsel-linux-gnu/lib/"" in a separate build directory. > >>>> Run "ninja; ninja install" > >>>> You can also use the GCC cross tool chain instead of the just built > LLVM cross tool chain to build the compiler-rt sources. > >>>> > >>>> Running a simple test from the ASAN test suite: > >>>> > >>>> $ <path-to-where-llvm-was-installed>/bin/clang -fsanitize=address > -Wl,--dynamic-linker=/usr/mipsel-linux-gnu/lib/ld.so.1 use-after-free.cc > >>>> > >>>> $ qemu-mipsel -cpu 74Kf -E LD_LIBRARY_PATH=/usr/mipsel-linux-gnu/lib/ > a.out > >>>> ================================================================= > >>>> ==1487==ERROR: AddressSanitizer: heap-use-after-free on address > 0x74d007b5 at pc 0x0052d518 bp 0x76fff5c0 sp 0x76fff5e4 > >>>> READ of size 1 at 0x74d007b5 thread T0 > >>>> #0 0x52d510 (/home/slt/Tests/a.out+0x52d510) > >>>> #1 0x76535bd4 (/usr/mipsel-linux-gnu/lib/libc.so.6+0x19bd4) > >>>> > >>>> 0x74d007b5 is located 5 bytes inside of 10-byte region > [0x74d007b0,0x74d007ba) > >>>> freed by thread T0 here: > >>>> #0 0x4f4124 (/home/slt/Tests/a.out+0x4f4124) > >>>> #1 0x52d4a8 (/home/slt/Tests/a.out+0x52d4a8) > >>>> #2 0x76535bd4 (/usr/mipsel-linux-gnu/lib/libc.so.6+0x19bd4) > >>>> > >>>> previously allocated by thread T0 here: > >>>> #0 0x4f4580 (/home/slt/Tests/a.out+0x4f4580) > >>>> #1 0x52d498 (/home/slt/Tests/a.out+0x52d498) > >>>> #2 0x76535bd4 (/usr/mipsel-linux-gnu/lib/libc.so.6+0x19bd4) > >>>> > >>>> SUMMARY: AddressSanitizer: heap-use-after-free > >>>> (/home/slt/Tests/a.out+0x52d510) > > >>>> Shadow bytes around the buggy address: > >>>> 0x194400a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> 0x194400b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> 0x194400c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> 0x194400d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> 0x194400e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> =>0x194400f0: fa fa fa fa fa fa[fd]fd fa fa fa fa fa fa fa fa > >>>> 0x19440100: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> 0x19440110: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> 0x19440120: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> 0x19440130: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> 0x19440140: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa > >>>> Shadow byte legend (one shadow byte represents 8 application bytes): > >>>> Addressable: 00 > >>>> Partially addressable: 01 02 03 04 05 06 07 > >>>> Heap left redzone: fa > >>>> Freed heap region: fd > >>>> Stack left redzone: f1 > >>>> Stack mid redzone: f2 > >>>> Stack right redzone: f3 > >>>> Stack after return: f5 > >>>> Stack use after scope: f8 > >>>> Global redzone: f9 > >>>> Global init order: f6 > >>>> Poisoned by user: f7 > >>>> Container overflow: fc > >>>> Array cookie: ac > >>>> Intra object redzone: bb > >>>> ASan internal: fe > >>>> Left alloca redzone: ca > >>>> Right alloca redzone: cb > >>>> ==1487==ABORTING > >>>> > >>>> To cross build a complete LLVM toolchain which will run on MIPS and > target to MIPS (Host=MIPS, Target=MIPS): > >>>> Install prerequisites with "sudo apt-get install cmake ninja-build > gcc-5-mipsel-linux-gnu g++-5-mipsel-linux-gnu gcc-5-multilib-mipsel-linux-gnu > g++-5-multilib-mipsel-linux-gnu binutils-mipsel-linux-gnu > libgcc1-mipsel-cross libstdc++6-mipsel-cross" > >>>> Checkout llvm > >>>> Checkout clang in /llvm/tools/ > >>>> Checkout compiler-rt in /llvm/projects/ > >>>> Run "cmake -G Ninja ../llvm -DCMAKE_INSTALL_PREFIX=<path-to-install-dir> > -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True > -DLLVM_TABLEGEN=<path-to-host-bin>/llvm-tblgen > -DCLANG_TABLEGEN=<path-to-host-bin>/clang-tblgen > -DLLVM_HOST_TRIPLE=mipsel-linux-gnu > -DLLVM_DEFAULT_TARGET_TRIPLE=mipsel-linux-gnu > -DLLVM_TARGET_ARCH=Mips -DLLVM_TARGETS_TO_BUILD=Mips > -DCMAKE_C_COMPILER="/usr/bin/mipsel-linux-gnu-gcc-5" > -DCMAKE_CXX_COMPILER="/usr/bin/mipsel-linux-gnu-g++-5" > -DCMAKE_ASM_COMPILER="/usr/bin/mipsel-linux-gnu-gcc-5" > -DCMAKE_C_FLAGS="-mips32 -mabi=32" -DCMAKE_CXX_FLAGS="-mips32 -mabi=32"" in > a build directory. > >>>> Run "ninja; ninja install" > >>>> > >>>> But "ninja install" does not copy the sanitizer runtime libs in the > install directory. So you will have to copy them to the install directory > manually. > >>>> > >>>> > >>>> Regarding GCC's ASAN support for MIPS, as Maxim said we will have to > add support for it following the steps he mentioned. > >>>> > >>>> > >>>> Regards, > >>>> > >>>> Sagar > >>>> > >>>> > >>>> > >>>> On Wednesday, November 16, 2016 at 1:13:06 PM UTC+5:30, Park Kit > wrote: > >>>>> > >>>>> Hi Sagar, > >>>>> > >>>>> Many thanks for a reply. Although I am seeking to have GCC cross > compile working, it would be great to know that ASAN builds for mips on > clang. > >>>>> > >>>>> Looking forward to good news on that. > >>>>> > >>>>> Many thanks > >>>>> Kit > >>>>> > >>>>> 2016년 11월 15일 화요일 오후 6시 56분 48초 UTC, sagar....@imgtec.com 님의 말: > >>>>>> > >>>>>> Hi Park, > >>>>>> > >>>>>> Sorry for the delay. > >>>>>> > >>>>>> In order to run ASAN on mips, we always did a native build of > compiler-rt on a real mips hardware. We never tried the cross build of > compiler-rt. > >>>>>> > >>>>>> However, since you need the cross build, I will give it a try and > get back to you as soon as I get success. > >>>>>> > >>>>>> Regards, > >>>>>> Sagar > >>>>>> > >>>>>> On Tuesday, November 15, 2016 at 1:59:15 PM UTC+5:30, Park Kit > wrote: > >>>>>>> > >>>>>>> Hi all, > >>>>>>> > >>>>>>> Could anyone please give me some pointers to try? > >>>>>>> > >>>>>>> 2016년 10월 15일 토요일 오전 1시 21분 6초 UTC+1, kcc 님의 말: > >>>>>>>> > >>>>>>>> Sagar, Simon, > >>>>>>>> Could you please consult on ASAN for MIPS? > >>>>>>>> > >>>>>>>> On Fri, Oct 14, 2016 at 3:04 PM, Park Kit <keite...@gmail.com> > wrote: > >>>>>>>>> > >>>>>>>>> Correction. ASN means ASAN of course. :-) > >>>>>>>>> > >>>>>>>>> -- > >>>>>>>>> You received this message because you are subscribed to the > Google Groups "address-sanitizer" group. > >>>>>>>>> To unsubscribe from this group and stop receiving emails from > it, send an email to address-saniti...@googlegroups.com. > >>>>>>>>> For more options, visit https://groups.google.com/d/optout. > >>>>>>>> > >>>>>>>> > >> -- > >> You received this message because you are subscribed to a topic in the > Google Groups "address-sanitizer" group. > >> To unsubscribe from this topic, visit https://groups.google.com/d/ > topic/address-sanitizer/A5iPCUDa7YM/unsubscribe. > >> To unsubscribe from this group and all its topics, send an email to > address-sanitizer+unsubscr...@googlegroups.com. > >> > >> For more options, visit https://groups.google.com/d/optout. > > > > > -- You received this message because you are subscribed to the Google Groups "address-sanitizer" group. To unsubscribe from this group and stop receiving emails from it, send an email to address-sanitizer+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.