diff mbox

[20/20] external-toolchain: add Sourcery CodeBench ARM 2012.03

Message ID d7731ad73ed06ae83273de4ba302bdaa5d791943.1344706801.git.thomas.petazzoni@free-electrons.com
State RFC
Headers show

Commit Message

Thomas Petazzoni Aug. 11, 2012, 5:40 p.m. UTC
From: Fabio Porcedda <fabio.porcedda@gmail.com>

Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 toolchain/toolchain-external/Config.in   |   22 ++++++++++++++++++++++
 toolchain/toolchain-external/ext-tool.mk |    3 +++
 2 files changed, 25 insertions(+)

Comments

Fabio Porcedda Aug. 22, 2012, 8:46 a.m. UTC | #1
I've discovered only today that this toolchain has already the rpc library...
so the test fail because the rpc/rpc.h header it's present.

getting-started.pdf:
A.1.1. Changes in Sourcery CodeBench Lite 2012.03-57
...
RPC library functions. GLIBC has been changed so that programs may
again be built to use its
RPC library functions. The ability to build programs using these
functions had previously been dis-
abled.


IMHO there are two solutions:
a) update this patch to enable the BR2_TOOLCHAIN_HAS_NATIVE_RPC
b) apply as is directly on the next branch and change accordingly the commit:
commit 80f89c34315be739c52935f1b0606dc5531e6eb3
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Sat Aug 11 18:50:42 2012 +0200

    toolchain-external: improve glibc support to test availability of RPC

Let me know which one solution you prefer.

Best regards
Thomas Petazzoni Aug. 22, 2012, 1:51 p.m. UTC | #2
Le Wed, 22 Aug 2012 10:46:49 +0200,
Fabio Porcedda <fabio.porcedda@gmail.com> a écrit :

> I've discovered only today that this toolchain has already the rpc library...
> so the test fail because the rpc/rpc.h header it's present.
> 
> getting-started.pdf:
> A.1.1. Changes in Sourcery CodeBench Lite 2012.03-57
> ...
> RPC library functions. GLIBC has been changed so that programs may
> again be built to use its
> RPC library functions. The ability to build programs using these
> functions had previously been dis-
> abled.

Argh, so they brought back RPC support into glibc... sigh.

> IMHO there are two solutions:
> a) update this patch to enable the BR2_TOOLCHAIN_HAS_NATIVE_RPC
> b) apply as is directly on the next branch and change accordingly the commit:
> commit 80f89c34315be739c52935f1b0606dc5531e6eb3
> Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Date:   Sat Aug 11 18:50:42 2012 +0200
> 
>     toolchain-external: improve glibc support to test availability of RPC
> 
> Let me know which one solution you prefer.

I'm a bit hesitant here. If newer glibc toolchains re-include the RPC
support, is it worth supporting libtirpc and do all the changes I had
proposed? Or should we just give up and say we only support
glibc toolchains that include RPC support? Maybe not nice, since
libtirpc brings quite a few features compared to in-toolchain RPC
support.

Comments from others?

Thomas
Yann E. MORIN Aug. 22, 2012, 2:36 p.m. UTC | #3
Thomas, Fabio, All,

On Wednesday 22 August 2012 15:51:22 Thomas Petazzoni wrote:
> Le Wed, 22 Aug 2012 10:46:49 +0200,
> Fabio Porcedda <fabio.porcedda@gmail.com> a écrit :
> 
> > I've discovered only today that this toolchain has already the rpc library...
> > so the test fail because the rpc/rpc.h header it's present.
> > 
> > getting-started.pdf:
> > A.1.1. Changes in Sourcery CodeBench Lite 2012.03-57
> > ...
> > RPC library functions. GLIBC has been changed so that programs may
> > again be built to use its
> > RPC library functions. The ability to build programs using these
> > functions had previously been dis-
> > abled.
> 
> Argh, so they brought back RPC support into glibc... sigh.

Yes, since the change in maintainership, they've reinstated RPC support:
    http://sourceware.org/git/?p=glibc.git;a=commit;h=021db4be6f1f4189f66feee066a495d49e92b93e

In fact, RPC was not gone. The RPC libraries were still built and
installed, so programs already built would still run, but the headers
were not installed, so no new package could be compiled.

That's just the headers insallation that was reinstated.

> > IMHO there are two solutions:
> > a) update this patch to enable the BR2_TOOLCHAIN_HAS_NATIVE_RPC
> > b) apply as is directly on the next branch and change accordingly the commit:
> > commit 80f89c34315be739c52935f1b0606dc5531e6eb3
> > Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> > Date:   Sat Aug 11 18:50:42 2012 +0200
> > 
> >     toolchain-external: improve glibc support to test availability of RPC
> > 
> > Let me know which one solution you prefer.
> 
> I'm a bit hesitant here. If newer glibc toolchains re-include the RPC
> support, is it worth supporting libtirpc and do all the changes I had
> proposed? Or should we just give up and say we only support
> glibc toolchains that include RPC support? Maybe not nice, since
> libtirpc brings quite a few features compared to in-toolchain RPC
> support.
> 
> Comments from others?

In glibc, RPC is now considered obsolete, and still planned for removal,
albeit no time-line exists AFAIK.

So, although glibc now again installs RPC headers, I think working on
the libtirpc replacement is still the way to go. It's just that it's less
critical for now.

Also, there is currently no provision in crosstool-NG to build glibc/eglibc
with --enable-obsolete-rpc (although that should be easy to add; will do
shortly).

In the end, I don not think that your work on libtirpc is still valuable,
because at the very least, it offers some insights on the road to go, and
even provides a good overview of the issues at hand, and how to possibly
solve those.

Regards,
Yann E. MORIN.
Arnout Vandecappelle Aug. 28, 2012, 10:45 p.m. UTC | #4
On 08/22/12 16:36, Yann E. MORIN wrote:
>> >  I'm a bit hesitant here. If newer glibc toolchains re-include the RPC
>> >  support, is it worth supporting libtirpc and do all the changes I had
>> >  proposed? Or should we just give up and say we only support
>> >  glibc toolchains that include RPC support? Maybe not nice, since
>> >  libtirpc brings quite a few features compared to in-toolchain RPC
>> >  support.
>> >
>> >  Comments from others?
> In glibc, RPC is now considered obsolete, and still planned for removal,
> albeit no time-line exists AFAIK.
>
> So, although glibc now again installs RPC headers, I think working on
> the libtirpc replacement is still the way to go. It's just that it's less
> critical for now.
>
> Also, there is currently no provision in crosstool-NG to build glibc/eglibc
> with --enable-obsolete-rpc (although that should be easy to add; will do
> shortly).
>
> In the end, I don not think that your work on libtirpc is still valuable,
                 ^^^^^^^not???
> because at the very least, it offers some insights on the road to go, and
> even provides a good overview of the issues at hand, and how to possibly
> solve those.

  At the very least it is useful to be able to use tirpc instead of uClibc RPC.
And I agree that this patch set is good for the future.  Also, it's in such
a good state already that it would be a real shame to discard it.

  Some of the preparatory patches (1-4, 7-10) can definitely be applied in the
short term, even if libtirpc isn't included.  Especially patch 4 is a good one
to make sure people don't run into the issue anymore with locally installed
external toolchains.

  Regards,
  Arnout
Yann E. MORIN Aug. 29, 2012, 9:37 a.m. UTC | #5
Arnout, Thomas, All,

On Wednesday 29 August 2012 00:45:06 Arnout Vandecappelle wrote:
> On 08/22/12 16:36, Yann E. MORIN wrote:
> >> >  I'm a bit hesitant here. If newer glibc toolchains re-include the RPC
> >> >  support, is it worth supporting libtirpc and do all the changes I had
> >> >  proposed? Or should we just give up and say we only support
> >> >  glibc toolchains that include RPC support? Maybe not nice, since
> >> >  libtirpc brings quite a few features compared to in-toolchain RPC
> >> >  support.
> >> >
> >> >  Comments from others?
> > In the end, I don not think that your work on libtirpc is still valuable,
>                  ^^^^^^^not???

Of course, I meant: I *do* think it is valuable.

Regards,
Yann E. MORIN.
diff mbox

Patch

diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 83be75a..ede1a3b 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -82,6 +82,27 @@  config BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_02
 	  Thumb 2, with the softfp calling convention, and uses the
 	  VFPv3-D16 FPU instructions.
 
+config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203
+	bool "Sourcery CodeBench ARM 2012.03"
+	depends on BR2_arm
+	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+	select BR2_INSTALL_LIBSTDCPP
+	help
+	  Sourcery CodeBench toolchain for the ARM architecture, from
+	  Mentor Graphics. It uses gcc 4.6.3, binutils 2.21.53, glibc
+	  2.15 and gdb 7.2.50, kernel headers 3.2.10. It has support
+	  for the following variants:
+	    - ARMv5TE, little endian, soft-float, glibc
+	      Select ARM926T, ARM10T, XScale or another ARMv5 core
+	      Select BR2_SOFT_FLOAT
+	    - ARMv4T, little endian, soft-float, glibc
+	      Select ARM720T, ARM920T, ARM922T or another ARMv4 core
+	      Select BR2_SOFT_FLOAT
+	    - ARMv7-A, Thumb 2, little endian, soft-float, glibc
+	      Select Cortex-A8, Cortex-A9 or another ARMv7-A core
+	      Select BR2_SOFT_FLOAT
+	      Set BR2_TARGET_OPTIMIZATION to -mthumb
+
 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109
 	bool "Sourcery CodeBench ARM 2011.09"
 	depends on BR2_arm
@@ -678,6 +699,7 @@  config BR2_TOOLCHAIN_EXTERNAL_PREFIX
 	default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201009
 	default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201103
 	default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109
+	default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203
 	default "microblazeel-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2
 	default "microblaze-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2
 	default "mips-linux-gnu"         if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS44
diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk
index 0d4c022..f8a730e 100644
--- a/toolchain/toolchain-external/ext-tool.mk
+++ b/toolchain/toolchain-external/ext-tool.mk
@@ -187,6 +187,9 @@  TOOLCHAIN_EXTERNAL_SOURCE=arm-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gn
 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y)
 TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
 TOOLCHAIN_EXTERNAL_SOURCE=arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
+else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203),y)
+TOOLCHAIN_EXTERNAL_SITE=http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
+TOOLCHAIN_EXTERNAL_SOURCE=arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2012_02),y)
 TOOLCHAIN_EXTERNAL_SITE=http://launchpad.net/linaro-toolchain-binaries/trunk/2012.02/+download/
 TOOLCHAIN_EXTERNAL_SOURCE=gcc-linaro-arm-linux-gnueabi-2012.02-20120222_linux.tar.bz2