[PATCH] [Microblaze]: PIC Data Text Relative

Andrew Sadek andrew.sadek.se@gmail.com
Tue Mar 13 06:10:00 GMT 2018


*Command for running testsuite:*

*make -k check-gcc RUNTESTFLAGS="-v --target_board=microblaze-qemu
CFLAGS_FOR_TARGET='-include /home/andrew/qemu/common.h
-L/home/andrew/qemu/lib -Wl,--start-group,-lxil,-lgcc,-lc,--end-group
-mlittle-endian' "*

*Quick Details:*
1) common.h: Here I define 'STACK_SIZE' with (0x4000) as it's used in some
test cases.
2) -L ..... /lib: it contains libm, libc in little endian since we use
'qemu-system-microblazeel', and libxil which is the libgloss + some
additional features (read, write, inbyte, outbyte) built with Xilinx SDK.

*mb-gcc command example from gcc.log:*

Testing execute/va-arg-15.c,   -O1
doing compile
Executing on host:*
/home/andrew/gcc_workspace/gcc_orig/microblaze-xilinx-elf/build/build-cc-gcc-final/gcc/xgcc
-B/home/andrew/gcc_workspace/gcc_orig/microblaze-xilinx-elf/build/build-cc-gcc-final/gcc/
/home/andrew/gcc_workspace/gcc_orig/microblaze-xilinx-elf/src/gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-15.c
  -include /home/andrew/qemu/common.h -L/home/andrew/qemu/lib
-Wl,--start-group,-lxil,-lgcc,-lc,--end-group -mlittle-endian
-fno-diagnostics-show-caret -fdiagnostics-color=never    -O1  -w
-T/home/andrew/qemu/qemu/microblazeel-softmmu/xilinx.ld  -lm  -o
./va-arg-15.exe    (timeout = 300)*



On Mon, Mar 12, 2018 at 4:30 PM, Michael Eager <eager@eagerm.com> wrote:

> On 03/12/18 06:19, Andrew Sadek wrote:
>
>
>>
>> On Mon, Mar 5, 2018 at 9:21 PM, Michael Eager <eager@eagerm.com <mailto:
>> eager@eagerm.com>> wrote:
>>
>>     On 03/02/2018 08:12 AM, Andrew Sadek wrote:
>>
>>         Hello Michael,
>>
>>         I tried running the whole GCC test suite on the current head
>>         (without my patch) along with 'microblaze-qemu' but I have the
>>         following problems:
>>
>>         1) The test is hanging at 'gcc.c-torture/string-large-1.c' , the
>>         gcc is making a 100% CPU usage and the machine stucks.
>>         I tried compiling the file alone, it generated a couple of
>>         warnings than it hangs.
>>            warning: '__builtin_memchr' specified size 4294967295 exceeds
>>         maximum object size 2147483647 [-Wstringop-overflow=]
>>              vp1 = __builtin_memchr (a, b, SIZE1);
>>
>>         Is it a bug? Is there something wrong with my configuration ?
>>         GCC configured with options :  --with-newlib --enable-threads=no
>>         --disable-shared --with-pkgversion='crosstool-NG
>>         crosstool-ng-1.23.0-280-g01e3290' --enable-__cxa_atexit
>>         --disable-libgomp --disable-libmudflap --disable-libmpx
>>         --disable-libssp --disable-libquadmath
>>         --disable-libquadmath-support --enable-lto
>>         --with-host-libstdcxx='-static-libgcc
>>         -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-target-optspace
>>         --disable-nls --enable-multiarch --enable-languages=c,c++
>>
>>
>>     Your configuration is more complex than my hard-metal target version,
>>     but it looks reasonable.
>>
>>     The problem with string-large-1.c does appear to be a bug.  You can
>>     add a line to the test case which will mark it as known failure for
>> MB:
>>
>>        /* { dg-xfail-if "exceeds maximum" { microblaze-*-* } } */
>>
>>     (I have not tested this, but it should work.  Compare with other
>>     xfail's.)
>>
>>
>> Problem that the whole compile package is invoked with '-w' which
>> inhibits all warnings and overrides ' -Werror' as well as ' -Wfatal-errors'
>> .
>> As a result, the warning message does not appear when running
>> compile.exp. Any suggestions ? Do I remove the '-w' ?
>>
>>
>>
>>         2) For running QEMU, I have no problem with elf execution. But I
>>         do not know how to auto terminate the QEMU itself  as it remains
>>         up even after program execution.
>>         Is there some command to be passed to QEMU in order make system
>>         shut down after program termination with its exit code ?
>>
>>
>>     Yes, this is a problem.  For other targets using QEMU I have added
>> dummy
>>     HLT instructions to terminate QEMU, or used a wrapper around QEMU
>> which
>>     sets breakpoints at exit (or _exit) and stops the simulator when hit.
>>
>>     If you are running Linux on QEMU, instead of using QEMU's built-in gdb
>>     interface you might use the Linux system as the target for the test
>>     suite, running gdbserver on the target.
>>
>>
>> I have finally managed to fully run QEMU with test suite but had to make
>> a local modification in the QEMU code itself.
>> In the translate function, I make a check if "bri 0" is reached which is
>> the '_exit'. Then, abort the QEMU app with the exit code stored in 'r5'.
>>
>
> I've done essentially the same for other targets.
>
> Here are the results below:
>> _Without Patch:_
>> === gcc Summary ===
>>
>> # of expected passes90776
>> # of unexpected failures        1317
>> # of unexpected successes3
>> # of expected failures207
>> # of unresolved testcases115
>> # of unsupported tests2828
>>
>> _With Patch and after adding my test case:_
>> === gcc Summary ===
>>
>> # of expected passes90790
>> # of unexpected failures1317
>> # of unexpected successes3
>> # of expected failures207
>> # of unresolved testcases115
>> # of unsupported tests2828
>>
>
> This appears to be reasonable results.  It appears that there are no
> regressions.
>
> Please send me the mb-gcc command line options for both of these test runs.
>
>
>
>
> --
> Michael Eager    eager@eagerm.com
> 1960 Park Blvd., Palo Alto, CA 94306
>



-- 

Andrew



More information about the Gcc-patches mailing list