From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Hellstrom Date: Wed, 19 Oct 2011 11:05:22 +0200 Subject: [U-Boot] sparc and .udiv/.rem/.urem/.umul/etc... link errors In-Reply-To: <201110131144.53907.vapier@gentoo.org> References: <201110130133.52490.vapier@gentoo.org> <4E96A527.9090806@gaisler.com> <201110131144.53907.vapier@gentoo.org> Message-ID: <4E9E92D2.9070601@gaisler.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 10/13/2011 05:44 PM, Mike Frysinger wrote: > On Thursday 13 October 2011 04:45:27 Daniel Hellstrom wrote: >> On 10/13/2011 07:33 AM, Mike Frysinger wrote: >>> it seems that these symbols are usually implemented in the C library on >>> sparc systems, but under u-boot, we don't have that luxury. Linux >>> itself simply imports the relevant asm files from glibc into their lib >>> subdir. without these, building u-boot for sparc targets with sparc >>> linux compilers fail. any desire to make this work ? or just continue >>> to force everyone to install a dedicated sparc-elf compiler ? >> The .udiv/.rem ... functions are implemented by libgcc > that is target dependent > >> Sparc-linux toolchains will generate ELF binaries for Linux, that is not >> what we want? > the file format is fine, but the supplementary libgcc for sparc-linux targets > does not include these symbols. it relies on the C library to provide them. > > glibc sparc system: > $ readelf -s /lib/libc.so.6 | grep '[.]u' > 1231: 000f41e0 20 FUNC GLOBAL DEFAULT 10 .urem@@GLIBC_2.0 > 1369: 000f41a0 12 FUNC GLOBAL DEFAULT 10 .udiv@@GLIBC_2.0 > 1557: 000f4160 20 FUNC GLOBAL DEFAULT 10 .umul@@GLIBC_2.0 > > and if you look at gcc's source tree in gcc/config/sparc/t-*, you'll see that > these libgcc routines are included for elf and leon targets, but not linux. > > so whenever i build u-boot using a sparc-linux-gnu cross-compiler, it fails to > link due to missing these symbols. if i use sparc-elf, it links fine. > Ok I see. I'm not a GCC guru, but my sparc-linux- toolchain (built with crosstool-ng) has a libgcc.a in lib/gcc/sparc-leon-linux-gnu/4.4.2 which includes the .mul/.div functions. I guess that is not the sparc-linux target but sparc-leon-linux though. Could we use 'sparc-linux-gcc -print-libgcc-file-name' in u-boot? Daniel