From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert ARIBAUD Date: Wed, 15 May 2013 09:49:15 +0200 Subject: [U-Boot] [PATCH 0/5] Optimize ARM relocation In-Reply-To: <293223900.823433.1368575903550.JavaMail.root@advansee.com> References: <1368561780-19104-1-git-send-email-albert.u.boot@aribaud.net> <20130514221601.1b0e939e@lilith> <293223900.823433.1368575903550.JavaMail.root@advansee.com> Message-ID: <20130515094915.3d434632@lilith> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Beno?t, On Wed, 15 May 2013 01:58:23 +0200 (CEST), Beno?t Th?baudeau wrote: > Hi Albert, > > On Tuesday, May 14, 2013 10:16:01 PM, Albert ARIBAUD wrote: > > On Tue, 14 May 2013 22:02:55 +0200, Albert ARIBAUD > > wrote: > > > > > *** NOTE: this series applies over the 'Factorize > > > ARM relocate_code instances' series. > > > > > > This series optimizes relocation by ensuring ARM > > > binaries only use one type of relocation record, > > > R_ARM_RELATIVE., then optimizing relocation code > > > accordingly. > > > > > > The only known case where relocation records other > > > than R_ARM_RELATIVE are generated is when a reference > > > is made to a symbol defined in the linker script, e.g. > > > __image_copy_start, __image_copy_end, __rel_dyn_start, > > > __rel_dyn_end, and __dynsym_start. > > > > > > Moving the definition of these symbols from the linker > > > scripts into a C module causes their references' types > > > to become R_ARM_RELATIVE. > > > > > > First, arch/arm/lib/bss.c is replaced by a more generic > > > arch/arm/lib/sections.c where all section symbols will > > > be defined. > > > > > > Second, __image_copy_start and __image_copy_end symbols > > > are moved from linker scripts to arch/arm/lib/sections.c > > > > > > Third, __rel_dyn_start, __rel_dyn_end and __synsym_start > > > are moved from linker scripts into arch/arm/lib/sections.c > > > > > > Fourth, a check is added to the build system to ensure > > > that ELF U-Boot binaries only use R_ARM_RELATIVE records. > > > > > > Last, relocate_code is optimized > > > > Hmm, it seems I need to see my work posted on the list to discover how > > I could have done it better... I just noticed that if ARM binaries only > > have R_ARM_RELATIVE record types, then all the .dynsym sections can > > actually be dropped from the binaries. So, if I reorder the series and > > put patch 5/5 first, then I can eliminate patch 3/5, or more to the > > point, replace it with one which eliminates all dynsym stuff from linker > > scripts, further reducing code size. That'll go in V2... > > Indeed. Correction: if I out patch 4/5, not 5/5 -- 4/5 is the patch that ensures only relative relocations are present, and 5/5 depends on previous patches in the series (at least 1/5 and 2/5). So the new order will be 4/5, 1/5, 2/5, amended 3/5, 5/5. > Best regards, > Beno?t Amicalement, -- Albert.