mirror of
https://git.yoctoproject.org/poky
synced 2026-09-19 00:49:33 +02:00
uclibc_git.bb: Fix compilation on arm when using thumb instruction set
(From OE-Core rev: 7011d80c6cabc304e06237d167143d577fdd2570) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
UCLIBC_EXTRA_CFLAGS is currently added before the OPTIMIZATION flags
|
||||||
|
and OPTIMIZATION is chosen to be Os by default. But in OE we pass the optimisation
|
||||||
|
flags through UCLIBC_EXTRA_CFLAGS but they are not effective since -Os is
|
||||||
|
specified at last. So we need to change the order of these option flags
|
||||||
|
|
||||||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
|
||||||
|
Upstream-Status: Pending
|
||||||
|
|
||||||
|
diff --git a/Rules.mak b/Rules.mak
|
||||||
|
index 65fe47c..eca7f40 100644
|
||||||
|
--- a/Rules.mak
|
||||||
|
+++ b/Rules.mak
|
||||||
|
@@ -585,9 +574,6 @@ CFLAGS := -include $(top_srcdir)include/libc-symbols.h \
|
||||||
|
-nostdinc -I$(top_builddir)include -I$(top_srcdir)include -I. \
|
||||||
|
-I$(top_srcdir)libc/sysdeps/linux \
|
||||||
|
-I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)
|
||||||
|
-ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS)),"")
|
||||||
|
-CFLAGS += $(call qstrip,$(UCLIBC_EXTRA_CFLAGS))
|
||||||
|
-endif
|
||||||
|
|
||||||
|
# We need this to be checked within libc-symbols.h
|
||||||
|
ifneq ($(HAVE_SHARED),y)
|
||||||
|
@@ -633,6 +619,9 @@ LDFLAGS += -Wl,-s
|
||||||
|
else
|
||||||
|
STRIPTOOL := true -Stripping_disabled
|
||||||
|
endif
|
||||||
|
+ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS)),"")
|
||||||
|
+CFLAGS += $(call qstrip,$(UCLIBC_EXTRA_CFLAGS))
|
||||||
|
+endif
|
||||||
|
|
||||||
|
ifeq ($(DOMULTI),y)
|
||||||
|
# we try to compile all sources at once into an object (IMA), but
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
When compiling in thumb mode for arm with -Os gcc gives up since it can not find registers
|
||||||
|
to spill. So we use -O2 option for compiling fork.c It may be addressable is gcc.
|
||||||
|
|
||||||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
|
||||||
|
Upstream-Status: Pending
|
||||||
|
|
||||||
|
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch
|
||||||
|
index 329d8a9..41e3646 100644
|
||||||
|
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch
|
||||||
|
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch
|
||||||
|
@@ -30,3 +30,9 @@ CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
|
||||||
|
# This macro should be alternatively implemented in THUMB
|
||||||
|
# assembly.
|
||||||
|
ASFLAGS-vfork.S = -marm
|
||||||
|
+
|
||||||
|
+# For arm fork.c does not compile with -Os when in compiling
|
||||||
|
+# in thumb1 mode
|
||||||
|
+ifeq ($(COMPILE_IN_THUMB_MODE),y)
|
||||||
|
+CFLAGS-fork.c = -O2
|
||||||
|
+endif
|
||||||
@@ -2,7 +2,7 @@ SRCREV="71d63ed75648da9b0b71afabb9c60aaad792c55c"
|
|||||||
|
|
||||||
require uclibc.inc
|
require uclibc.inc
|
||||||
PV = "0.9.31+0.9.32rc3"
|
PV = "0.9.31+0.9.32rc3"
|
||||||
PR = "${INC_PR}.1"
|
PR = "${INC_PR}.2"
|
||||||
PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc"
|
PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc"
|
||||||
|
|
||||||
#recent versions uclibc require real kernel headers
|
#recent versions uclibc require real kernel headers
|
||||||
@@ -27,5 +27,7 @@ SRC_URI = "git://uclibc.org/uClibc.git;branch=master;protocol=git \
|
|||||||
file://argp-support.patch \
|
file://argp-support.patch \
|
||||||
file://argp-headers.patch \
|
file://argp-headers.patch \
|
||||||
file://remove_attribute_optimize_Os.patch \
|
file://remove_attribute_optimize_Os.patch \
|
||||||
|
file://uclibc-git/append_UCLIBC_EXTRA_CFLAGS.patch \
|
||||||
|
file://compile-arm-fork-with-O2.patch \
|
||||||
"
|
"
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
|
|||||||
Reference in New Issue
Block a user