This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [Patch, microblaze]: Add a small Linux BSP


> -----Original Message-----
> From: Michael Eager [mailto:eager@eagerm.com]
> Sent: Friday, 26 July 2013 1:17 pm
> To: Edgar Iglesias
> Cc: David Holsgrove; newlib@sourceware.org; vinschen@redhat.com; Edgar
> Iglesias
> Subject: Re: [Patch, microblaze]: Add a small Linux BSP
> 
> On 07/25/13 19:43, Edgar E. Iglesias wrote:
> > On Fri, Jul 26, 2013 at 04:10:51AM +0200, David Holsgrove wrote:
> >>> -----Original Message-----
> >>> From: Michael Eager [mailto:eager@eagerm.com]
> >>> Sent: Friday, 26 July 2013 11:43 am
> >>> To: newlib@sourceware.org; vinschen@redhat.com; David Holsgrove
> >>> Subject: Re: [Patch, microblaze]: Add a small Linux BSP
> >>>
> >>> On 07/23/13 02:11, Corinna Vinschen wrote:
> >>>> On Jul 23 17:16, David Holsgrove wrote:
> >>>>> On 23 July 2013 17:10, Corinna Vinschen <vinschen@redhat.com> wrote:
> >>>>>> On Jul 23 16:25, David Holsgrove wrote:
> >>>>>>> From: "David Holsgrove" <...>
> >>>>>>>
> >>>>>>> libgloss/ChangeLog
> >>>>>>>
> >>>>>>> 2013-07-23  Edgar E. Iglesias <...>
> >>>>>>>
> >>>>>>>     * microblaze/Makefile.in: Add LINUX_BSP.
> >>>>>>>     * microblaze/elf-gloss-linux.ld: New file.
> >>>>>>>     * microblaze/elf-gloss-linux.specs: Likewise.
> >>>>>>>     * microblaze/linux-crt0.S: Likewise.
> >>>>>>>     * microblaze/linux-inbyte.c: Likewise.
> >>>>>>>     * microblaze/linux-outbyte.c: Likewise.
> >>>>>>>     * microblaze/linux-syscalls-wrap.c: Likewise.
> >>>>>>>     * microblaze/linux-syscalls.S: Likewise.
> >>>>>>>     * microblaze/linux-syscalls.h: Likewise.
> >>>>>>
> >>>>>> Please apply.
> >>>>>>
> >>>>>
> >>>>> Thanks Corinna,
> >>>>>
> >>>>> I don't have write perms on newlib - can I request them, or can you
> >>>>> apply the patch for me?
> >>>>
> >>>> Everything applied.
> >>>
> >>> This patch breaks breaks existing mb-gcc compilations.
> >>>
> >>> Please revert the patch until it can be fixed.
> >>>
> >> Hi Michael,
> >>
> >> Can you provide details regarding the breakage?
> >>
> >> This should be a separate library and not linked in by default - what sort
> >> of compilation errors are you seeing?
> >
>> 
>> libgloss/sbrk.o is being linked into executables instead of
>> libgloss/microblaze/sbrk.o, which results in an unresolved reference to _end.
> 
> Here is a sample test:
> mb-gcc testsuite/gcc.c-torture/execute/strcpy-1.c  -fno-diagnostics-show-caret
> -fdiagnostics-color=never  -w  -O3 -fomit-frame-pointer  -mno-xl-soft-mul
> -mxl-barrel-shift -mcpu=v6.00.a -Wl,-defsym -Wl,_HEAP_SIZE=0x1000000 -Wl,-
> defsym
> -Wl,_STACK_SIZE=0x80000 -L microblaze_0/lib -lxil
> -TLinkScr.ld  -lm   -o strcpy-1.x3
> 
> LinkScr.ld and libxil are from either EDK9.2i or EDK-14.2.
> 
> I don't have the failure log at the moment.
> 

Thanks Michael for the details.

I've managed to recreate the unresolved reference to _end you see with your
testcase, but only by using the linker script you provided to me in the past from
EDK9.2i - when using your LinkScr.ld from EDK-14.2 I don't see any undefs.

The reason for this is that the linker script generated by libgen in XSDK 14.2 (and since
at least XSDK version 13.1 it would appear) includes;

_end = .;

This is why our testing succeed where yours didnât - we were using more modern
versions of XSDK to provide libxil and the linker script - but this is actually just
masking a configuration error.

The patch added in http://sourceware.org/ml/newlib/2013/msg00551.html utilised
the existing libgloss target_makefile_frag to define generic objects to be linked
into libgloss.a - something which has long been missing for microblaze in FSF newlib.

What I didnât see was that even though we made no changes to the sbrk.c compile
stage, the inclusion of libgloss/config/default.mt overrides where sbrk.c came from,
using the generic libgloss/sbrk.c instead of the libgloss/microblaze/sbrk.c copy.

The differences between these two are quite small - and perhaps should be addressed
in a future patch to reduce the amount of microblaze specific variants for you to maintain,
but most importantly _end is used in the generic instead of _heap in the microblaze copy;

  if (!heap_ptr) 
    heap_ptr = (char *)&_end; 
  base = heap_ptr; 
  heap_ptr += nbytes;

  if (!heap_ptr) 
    heap_ptr = (char *)&_heap;  
  base = heap_ptr; 
  heap_ptr += nbytes;

So in summary, the libgloss-linux.a added by the patch in this thread does not cause any
regressions.

The patch added in http://sourceware.org/ml/newlib/2013/msg00551.html should
be amended to ensure microblaze/sbrk.c is used for the moment - I'll provide a patch
to do so now.

We should also establish a common test framework for microblaze targets to avoid
difference such as these in future which can be triggered by varying versions of Xilinx
provided tools.

I donât suppose your dejagnu boards are available through GNU's dejagnu project?
This can be discussed off list, as I believe this thread has already gotten off the topic
of adding this LINUX_BSP.

thanks again,
David

> --
> Michael Eager	 eager@eagercon.com
> 1960 Park Blvd., Palo Alto, CA 94306  650-325-8077




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]