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] |
Sorry, this is the patch, and please ignore the previous. Thanks > -----Original Message----- > From: newlib-owner@sourceware.org [mailto:newlib-owner@sourceware.org] On > Behalf Of Bin Cheng > Sent: Tuesday, January 17, 2012 11:53 AM > To: Matthew Gretton-Dann > Cc: newlib@sources.redhat.com > Subject: RE: [PATCH, ARM/libgloss]fix compilation error in linux-crt0.c when > '-ffunction-sections' is specified > > Hi Matt & all, > Thanks for reminding, here is the new patch. Please review. > > Thanks-chengbin > > > -----Original Message----- > > From: Matthew Gretton-Dann > > Sent: Monday, January 16, 2012 6:50 PM > > To: Bin Cheng > > Cc: newlib@sources.redhat.com > > Subject: Re: [PATCH, ARM/libgloss]fix compilation error in > > linux-crt0.c > when > > '-ffunction-sections' is specified > > > > On Mon, Jan 16, 2012 at 06:51:51AM +0000, Bin Cheng wrote: > > > Hi, > > > Currently libgloss/arm/linux-crt0.c uses adr to get the address of > > > _start_thumb function. > > > It breaks the compilation when '-ffunction-sections' is specified, > > > of > which > > > we want to > > > take advantage to decrease code size in binary. > > > > > > Here is a patch fix this issue. > > > I have compiled newlib/libgloss for various processor with or > > > without "-ffunction-sections" > > > successfully, Is it OK? > > > > > > Thanks > > > > > > > > > 2012-01-16 Bin Cheng <bin.cheng@arm.com> > > > > > > libgloss/ > > > * arm/linux-crt0.c: Use ldr instead of adr to get address of > > > _start_thumb. > > > > > Index: libgloss/arm/linux-crt0.c > > > =================================================================== > > > RCS file: /cvs/src/src/libgloss/arm/linux-crt0.c,v > > > retrieving revision 1.3 > > > diff -u -a -r1.3 linux-crt0.c > > > --- libgloss/arm/linux-crt0.c 13 Jul 2011 15:06:21 -0000 1.3 > > > +++ libgloss/arm/linux-crt0.c 12 Jan 2012 09:56:28 -0000 > > > @@ -18,7 +18,7 @@ > > > ".global _start\n" > > > ".type _start, %function\n" > > > "_start:\n" > > > - "\tadr r0, _start_thumb+1\n" > > > + "\tldr r0, =_start_thumb\n" > > > "\tbx r0\n" > > > ".size _start, .-_start\n"); > > > > > > > This causes an implicit literal pool entry to be generated, which will > > be generated in an arbitrary location decided by the linker (as there > > is no .ltorg directive). This is probably best avoided in libgloss. > > > > Better would be something like: > > > > _start: > > ldr r0, .LC0 > > bx r0 > > LC0: .word _start_thumb > > .size _start .-_start > > > > Thanks, > > > > Matt > > > > > > -- > > Matthew Gretton-Dann > > Principal Engineer, PD Software, ARM Ltd.
Attachment:
arm-function-section-20120117.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |