summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.5.1.inc2
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch33
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.5.1/fedora/gcc45-no-add-needed.patch52
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-cross.inc4
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-runtime.inc16
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-sdk.inc2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-initial.inc2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-intermediate.inc35
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-package-runtime.inc8
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc_4.5.1.bb2
-rw-r--r--meta/recipes-devtools/gcc/libgcc_4.5.1.bb46
23 files changed, 184 insertions, 42 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1.inc b/meta/recipes-devtools/gcc/gcc-4.5.1.inc
index 3edc4d43dc..6c600c1896 100644
--- a/meta/recipes-devtools/gcc/gcc-4.5.1.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.5.1.inc
@@ -30,6 +30,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://fedora/gcc43-rh341221.patch;striplevel=0 \
file://fedora/gcc43-java-debug-iface-type.patch;striplevel=0 \
file://fedora/gcc43-i386-libgomp.patch;striplevel=0 \
+ file://fedora/gcc45-no-add-needed.patch;striplevel=0 \
file://103-uclibc-conf-noupstream.patch \
file://200-uclibc-locale.patch \
file://203-uclibc-locale-no__x.patch;striplevel=1 \
@@ -54,6 +55,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://optional_libstdc.patch \
file://disable_relax_pic_calls_flag.patch \
file://gcc-poison-parameters.patch \
+ file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
"
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch b/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
new file mode 100644
index 0000000000..9ae01c3fc7
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
@@ -0,0 +1,33 @@
+# by default c++ include directories are not relative to "--sysroot"
+# which brings one trouble when using the toolchain in an environment
+# where the build directory generating that toolchain doesn't exist,
+# e.g. in sstate, machine specific sysroot and relocatable SDK
+# toolchain. This patch now enables c++ include paths under sysroot.
+# This way it's enough as long as "--sysroot" is correctly enabled
+# in the new environment.
+#
+# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-12-30
+
+diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
+index 5024f48..9b47d1c 100644
+--- a/gcc/cppdefault.c
++++ b/gcc/cppdefault.c
+@@ -48,15 +48,15 @@ const struct default_include cpp_include_defaults[]
+ = {
+ #ifdef GPLUSPLUS_INCLUDE_DIR
+ /* Pick up GNU C++ generic include files. */
+- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
+ #endif
+ #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
+ /* Pick up GNU C++ target-dependent include files. */
+- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 },
++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 1, 1 },
+ #endif
+ #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
+ /* Pick up GNU C++ backward and deprecated include files. */
+- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
+ #endif
+ #ifdef LOCAL_INCLUDE_DIR
+ /* /usr/local/include comes before the fixincluded header files. */
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1/fedora/gcc45-no-add-needed.patch b/meta/recipes-devtools/gcc/gcc-4.5.1/fedora/gcc45-no-add-needed.patch
new file mode 100644
index 0000000000..23704d3b71
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.5.1/fedora/gcc45-no-add-needed.patch
@@ -0,0 +1,52 @@
+2010-02-08 Roland McGrath <roland@redhat.com>
+
+ * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
+ linker.
+ * config/linux.h (LINK_EH_SPEC): Likewise.
+ * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+ * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/alpha/elf.h.~1~
++++ gcc/config/alpha/elf.h
+@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu
+ I imagine that other systems will catch up. In the meantime, it
+ doesn't harm to make sure that the data exists to be used later. */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+
+ /* A C statement (sans semicolon) to output to the stdio stream STREAM
+--- gcc/config/ia64/linux.h.~1~
++++ gcc/config/ia64/linux.h
+@@ -58,7 +58,7 @@ do { \
+ Signalize that because we have fde-glibc, we don't need all C shared libs
+ linked against -lgcc_s. */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+
+ #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
+
+--- gcc/config/linux.h.~1~
++++ gcc/config/linux.h
+@@ -89,7 +89,7 @@ see the files COPYING3 and COPYING.RUNTI
+ } while (0)
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+
+ /* Define this so we can compile MS code for use with WINE. */
+--- gcc/config/rs6000/sysv4.h.~1~
++++ gcc/config/rs6000/sysv4.h
+@@ -917,7 +917,7 @@ SVR4_ASM_SPEC \
+ %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}"
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
diff --git a/meta/recipes-devtools/gcc/gcc-configure-cross.inc b/meta/recipes-devtools/gcc/gcc-configure-cross.inc
index 3da92e24a1..346d1640d1 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-cross.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-cross.inc
@@ -5,7 +5,7 @@ USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}'
EXTRA_OECONF += " --enable-poison-system-directories "
EXTRA_OECONF_PATHS = "--with-local-prefix=${STAGING_DIR_TARGET}${target_exec_prefix} \
- --with-gxx-include-dir=${STAGING_DIR_TARGET}/${target_includedir}/c++ \
+ --with-gxx-include-dir=${target_includedir}/c++ \
--with-sysroot=${STAGING_DIR_TARGET} \
--with-build-sysroot=${STAGING_DIR_TARGET}"
@@ -20,5 +20,3 @@ do_compile_prepend () {
LIBGCCS_VAR = "-lgcc_s"
LIBGCCS_VAR_avr32 = ""
-
-do_package_write_ipk[depends] += "virtual/libc:do_package"
diff --git a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
index f9ad61d129..6cc11e2ffe 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
@@ -31,28 +31,14 @@ do_compile () {
}
do_install () {
- target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
-
- # Install libgcc from our gcc-cross saved data
- install -d ${D}${base_libdir} ${D}${libdir}
- cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
-
for d in ${RUNTIMETARGET}; do
cd ${B}/$d/
oe_runmake 'DESTDIR=${D}' install
done
-
- # Move libgcc_s into /lib
- mkdir -p ${D}${base_libdir}
- if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
- mv ${D}${libdir}/nof/libgcc* ${D}${base_libdir}
- else
- mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
- fi
}
INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++ libgcc"
PROVIDES = "virtual/${TARGET_PREFIX}compilerlibs"
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/gcc/gcc-configure-sdk.inc b/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
index 0eb33adda8..756e74e48d 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
@@ -5,7 +5,7 @@ USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}'
USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibcgnueabi", "no", "", d )}'
EXTRA_OECONF_PATHS = "--with-local-prefix=${SDKPATH}/sysroots/${TARGET_SYS}${target_exec_prefix} \
- --with-gxx-include-dir=${SDKPATH}/sysroots/${TARGET_SYS}${target_includedir}/c++ \
+ --with-gxx-include-dir=${target_includedir}/c++ \
--with-build-time-tools=${STAGING_DIR_NATIVE}${prefix_native}/${TARGET_SYS}/bin \
--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS} \
--with-build-sysroot=${STAGING_DIR_TARGET}"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
index 98e239d92c..3eea4bcafe 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
@@ -5,7 +5,7 @@ require gcc-cross-canadian.inc
require gcc-configure-sdk.inc
require gcc-package-sdk.inc
-PR = "r1"
+PR = "r3"
DEPENDS += "gmp-nativesdk mpfr-nativesdk libmpc-nativesdk elfutils-nativesdk"
RDEPENDS_${PN} += "mpfr-nativesdk libmpc-nativesdk elfutils-nativesdk"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-initial.inc b/meta/recipes-devtools/gcc/gcc-cross-initial.inc
index f582de9843..4e2e343936 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-initial.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross-initial.inc
@@ -2,6 +2,8 @@ DEPENDS = "virtual/${TARGET_PREFIX}binutils gettext-native ${NATIVEDEPS}"
PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial"
PACKAGES = ""
+CROSS_TARGET_SYS_DIR_append = ".${PN}"
+
# This is intended to be a -very- basic config
# sysroot is needed in case we use libc-initial
EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \
diff --git a/meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb
index 081b7d60fb..28ac1abe18 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-initial_4.3.3.bb
@@ -1,5 +1,5 @@
require gcc-cross_${PV}.bb
require gcc-cross-initial.inc
-PR = "r4"
+PR = "r5"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
index e3aea8b356..b2c257d9d4 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
@@ -1,5 +1,5 @@
require gcc-cross_${PV}.bb
require gcc-cross-initial.inc
-PR = "r0"
+PR = "r2"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
index 72a42411b1..2e5283d691 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
@@ -3,6 +3,8 @@ DEPENDS += "virtual/${TARGET_PREFIX}libc-initial gettext-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc-intermediate"
PACKAGES = ""
+CROSS_TARGET_SYS_DIR_append = ".${PN}"
+
# This is intended to be a -very- basic config
# sysroot is needed in case we use libc-initial
EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \
@@ -12,11 +14,14 @@ EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \
--enable-languages=c \
${OPTSPACE} \
--program-prefix=${TARGET_PREFIX} \
- --with-sysroot=${STAGING_DIR_TARGET} \
- --with-build-sysroot=${STAGING_DIR_TARGET} \
+ --with-sysroot=${STAGING_DIR_TCBOOTSTRAP} \
+ --with-build-sysroot=${STAGING_DIR_TCBOOTSTRAP} \
${EXTRA_OECONF_INTERMEDIATE} \
${@get_gcc_fpu_setting(bb, d)}"
+do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_HOST} ${SYSROOT_DESTDIR}/${STAGING_DIR_TARGET}/${target_base_libdir}"
+do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_HOST} ${STAGING_DIR_TCBOOTSTRAP}/${target_base_libdir}"
+
do_compile () {
oe_runmake
}
@@ -25,4 +30,30 @@ do_install () {
oe_runmake 'DESTDIR=${D}' install
install -d ${D}${target_base_libdir}/
mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* ${D}${target_base_libdir}/
+
+ # We don't really need this (here shares/ contains man/, info/, locale/).
+ rm -rf ${D}${datadir}/
+
+ # We use libiberty from binutils
+ rm -f ${D}${exec_prefix}/lib/lib/libiberty.a
+
+ # Insert symlinks into libexec so when tools without a prefix are searched for, the correct ones are
+ # found. These need to be relative paths so they work in different locations.
+ dest=${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/
+ install -d $dest
+ for t in ar as ld nm objcopy objdump ranlib strip g77 gcc cpp gfortran; do
+ ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t $dest$t
+ done
+}
+
+#
+# Override the default sysroot staging copy since this won't look like a target system
+#
+sysroot_stage_all() {
+ sysroot_stage_dir ${D} ${SYSROOT_DESTDIR}
+ install -d ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_base_libdir}/
+ install -d ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_libdir}/
+ mv ${SYSROOT_DESTDIR}${target_base_libdir}/* ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_base_libdir}/ || true
+ mv ${SYSROOT_DESTDIR}${target_libdir}/* ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_libdir}/ || true
}
+
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb
index 9a30cb5119..a8473b0ebe 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.3.3.bb
@@ -1,4 +1,4 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
-PR = "r4"
+PR = "r5"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
index 4cabe0eb4b..e65d5df671 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
@@ -1,4 +1,4 @@
require gcc-cross_${PV}.bb
require gcc-cross-intermediate.inc
-PR = "r0"
+PR = "r3"
diff --git a/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
index 445869d1f5..399cdf9296 100644
--- a/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r2"
require gcc-${PV}.inc
require gcc-cross4.inc
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb
index 5daa31b888..b42de471da 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.3.3.bb
@@ -1,3 +1,3 @@
require gcc-cross-initial_${PV}.bb
require gcc-crosssdk-initial.inc
-PR = "r5"
+PR = "r6"
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
index 22cb4904b7..240caf56f7 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
@@ -1,4 +1,4 @@
require gcc-cross-initial_${PV}.bb
require gcc-crosssdk-initial.inc
-PR = "r0"
+PR = "r2"
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
index ba42ca0e5c..a6653ddfcc 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
@@ -1,4 +1,4 @@
require gcc-cross-intermediate_${PV}.bb
require gcc-crosssdk-intermediate.inc
-PR = "r0"
+PR = "r2"
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
index 6f0a5406d0..129e8d31a4 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
@@ -1,4 +1,4 @@
require gcc-cross_${PV}.bb
require gcc-crosssdk.inc
-PR = "r0"
+PR = "r2"
diff --git a/meta/recipes-devtools/gcc/gcc-package-runtime.inc b/meta/recipes-devtools/gcc/gcc-package-runtime.inc
index 40a9ed0d70..e8c901131e 100644
--- a/meta/recipes-devtools/gcc/gcc-package-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-package-runtime.inc
@@ -1,6 +1,4 @@
PACKAGES = "\
- libgcc \
- libgcc-dev \
libstdc++ \
libstdc++-precompile-dev \
libstdc++-dev \
@@ -14,12 +12,6 @@ PACKAGES = "\
libmudflap-dev \
"
-FILES_libgcc = "${base_libdir}/libgcc*.so.*"
-FILES_libgcc-dev = " \
- ${base_libdir}/libgcc*.so \
- ${libdir}/${TARGET_SYS}/${BINV}/crt* \
- ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
-
FILES_libg2c = "${target_libdir}/libg2c.so.*"
FILES_libg2c-dev = "\
${libdir}/libg2c.so \
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
index 6b375f323a..99f927a8f3 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
@@ -1,4 +1,4 @@
-PR = "r17"
+PR = "r18"
require gcc-${PV}.inc
require gcc-configure-runtime.inc
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
index 4d2302d35b..093f9bf963 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r2"
require gcc-${PV}.inc
require gcc-configure-runtime.inc
diff --git a/meta/recipes-devtools/gcc/gcc_4.5.1.bb b/meta/recipes-devtools/gcc/gcc_4.5.1.bb
index 81c1fa9c2d..919d4b0938 100644
--- a/meta/recipes-devtools/gcc/gcc_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc_4.5.1.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r2"
require gcc-${PV}.inc
require gcc-configure-target.inc
require gcc-package-target.inc
diff --git a/meta/recipes-devtools/gcc/libgcc_4.5.1.bb b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
new file mode 100644
index 0000000000..b6cf2685e5
--- /dev/null
+++ b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
@@ -0,0 +1,46 @@
+require gcc-${PV}.inc
+
+PR = "r0"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+
+PACKAGES = "\
+ ${PN} \
+ ${PN}-dev \
+ "
+
+FILES_${PN} = "${base_libdir}/libgcc*.so.*"
+FILES_${PN}-dev = " \
+ ${base_libdir}/libgcc*.so \
+ ${libdir}/${TARGET_SYS}/${BINV}/crt* \
+ ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
+
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install () {
+ target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
+
+ # Install libgcc from our gcc-cross saved data
+ install -d ${D}${base_libdir} ${D}${libdir}
+ cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
+
+ # Move libgcc_s into /lib
+ mkdir -p ${D}${base_libdir}
+ if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
+ mv ${D}${libdir}/nof/libgcc* ${D}${base_libdir}
+ else
+ mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
+ fi
+}
+
+do_package_write_ipk[depends] += "virtual/libc:do_package"
+do_package_write_deb[depends] += "virtual/libc:do_package"
+do_package_write_rpm[depends] += "virtual/libc:do_package"
+
+BBCLASSEXTEND = "nativesdk"
+