From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Date: Tue, 18 Aug 2009 13:50:01 -0500 Subject: [U-Boot] [PATCH] ARM: compiler options cleanup - improve tool chain support In-Reply-To: <1250507849-31660-1-git-send-email-wd@denx.de> References: <1250507849-31660-1-git-send-email-wd@denx.de> Message-ID: <4A8AF7D9.7070201@windriver.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Wolfgang Denk wrote: > For some time there have been repeated reports about build problems > with some ARM (cross) tool chains. Especially issues about > (in)compatibility with the tool chain provided runtime support > library libgcc.a caused to add and support a private implementation > of such runtime support code in U-Boot. A closer look at the code > indicated that some of these issues are actually home-made. This > patch attempts to clean up some of the most obvious problems and make > building of U-Boot with different tool chains easier: > > - Even though all ARM systems basicy used the same compiler options > to select a specific ABI from the tool chain, the code for this was > distributed over all cpu/*/config.mk files. We move this one level > up into lib_arm/config.mk instead. > > - So far, we only checked if "-mapcs-32" was supported by the tool > chain; if yes, this was used, if not, "-mabi=apcs-gnu" was > selected, no matter if the tool chain actually understood this > option. There was no support for EABI conformant tool chains. > This patch implements the following logic: > > 1) If the tool chain supports > "-mabi=aapcs-linux -mno-thumb-interwork" > we use these options (EABI conformant tool chain). > 2) Otherwise, we check first if > "-mapcs-32" > is supported, and then check for > "-mabi=apcs-gnu" > If one test succeeds, we use the first found option. > 3) In case 2), we also test if "-mno-thumb-interwork", and use > this if the test succeeds. [For "-mabi=aapcs-linux" we set > "-mno-thumb-interwork" mandatorily.] > > This way we use a similar logic for the compile options as the > Linux kenrel does. > > - Some EABI conformant tool chains cause external references to > utility functions like raise(); such functions are provided in the > new file lib_arm/eabi_compat.c > > Note that lib_arm/config.mk gets parsed several times, so we must > make sure to add eabi_compat.o only once to the linker list. > > Signed-off-by: Wolfgang Denk > Cc: Jean-Christophe PLAGNIOL-VILLARD > Cc: Dirk Behme > Cc: Magnus Lilja > Cc: Tom Rix > Cc: Prafulla Wadaskar > > MAKEALL arm with CodeSourcery's arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu and this patch differ from USE_PRIVATE_LIBGCC=yes ./MAKEALL arm only in these targets actux1 actux2 actux3 actux4 ixdp425 ixdpg425 pdnb3 scpu trab As already mentioned already by http://lists.denx.de/pipermail/u-boot/2009-August/058838.html Tested-by : Tom Rix