mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-24 04:16:46 +02:00
gcc: move the optimized assembler helpers back into the static libgcc and skip relinking for this arch. due to relocation constraints, the assembler functions cannot be in the shared libgcc and must always be linked in statically
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25952 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
be4aa36f48
commit
0e2d55e3e3
@ -326,9 +326,12 @@ endef
|
||||
|
||||
LIBGCC_A=$(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc_pic.a)
|
||||
LIBGCC_MAP=$(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.map)
|
||||
BUILD_LIBGCC:=$(if $(CONFIG_avr32)$(CONFIG_m68k),,$(PKG_BUILD_DIR)/libgcc_s.so.*)
|
||||
|
||||
LIBGCC_SO=$(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*)
|
||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
BUILD_LIBGCC:=$(if $(CONFIG_avr32)$(CONFIG_m68k)$(CONFIG_powerpc),,$(PKG_BUILD_DIR)/libgcc_s.so.*)
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_LIBGCC),)
|
||||
define Build/Compile/uClibc
|
||||
$(SCRIPT_DIR)/relink-lib.sh \
|
||||
"$(TARGET_CROSS)" \
|
||||
@ -360,14 +363,26 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
-ldl $(BUILD_LIBGCC) \
|
||||
-Wl,-soname=libpthread.so.0
|
||||
endef
|
||||
ifneq ($(BUILD_LIBGCC),)
|
||||
define Build/Compile/libgcc
|
||||
define Build/Compile/libgcc
|
||||
$(SCRIPT_DIR)/relink-lib.sh \
|
||||
"$(TARGET_CROSS)" \
|
||||
"$(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*)" \
|
||||
"$(LIBGCC_SO)" \
|
||||
"$(LIBGCC_A)" \
|
||||
"$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*))" \
|
||||
"$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(LIBGCC_SO))" \
|
||||
-Wl,--version-script=$(LIBGCC_MAP) -Wl,-soname=libgcc_s.so.1
|
||||
endef
|
||||
else
|
||||
define Build/Compile/uClibc
|
||||
$(CP) \
|
||||
$(TOOLCHAIN_DIR)/lib/libuClibc-*.so \
|
||||
$(TOOLCHAIN_DIR)/lib/libcrypt-*.so \
|
||||
$(TOOLCHAIN_DIR)/lib/libm-*.so \
|
||||
$(TOOLCHAIN_DIR)/lib/libpthread-*.so \
|
||||
$(PKG_BUILD_DIR)/
|
||||
endef
|
||||
ifneq ($(LIBGCC_SO),)
|
||||
define Build/Compile/libgcc
|
||||
$(CP) $(LIBGCC_SO) $(PKG_BUILD_DIR)/
|
||||
endef
|
||||
endif
|
||||
endif
|
||||
|
@ -35,18 +35,6 @@
|
||||
/* Determine which dynamic linker to use depending on whether GLIBC or
|
||||
uClibc is the default C library and whether -muclibc or -mglibc has
|
||||
been passed to change the default. */
|
||||
--- a/gcc/config/rs6000/ppc-asm.h
|
||||
+++ b/gcc/config/rs6000/ppc-asm.h
|
||||
@@ -325,8 +325,7 @@
|
||||
FUNC_NAME(name):
|
||||
|
||||
#define HIDDEN_FUNC(name) \
|
||||
- FUNC_START(name) \
|
||||
- .hidden FUNC_NAME(name);
|
||||
+ FUNC_START(name);
|
||||
|
||||
#define FUNC_END(name) \
|
||||
GLUE(.L,name): \
|
||||
--- a/gcc/mkmap-symver.awk
|
||||
+++ b/gcc/mkmap-symver.awk
|
||||
@@ -132,5 +132,5 @@
|
||||
@ -56,14 +44,6 @@
|
||||
- printf ("\n local:\n\t*;\n};\n");
|
||||
+ printf ("\n\t*;\n};\n");
|
||||
}
|
||||
--- a/libgcc/config/rs6000/t-ppccomm
|
||||
+++ b/libgcc/config/rs6000/t-ppccomm
|
||||
@@ -1,4 +1,4 @@
|
||||
-LIB2ADD_ST += crtsavfpr.S crtresfpr.S \
|
||||
+LIB2ADD += crtsavfpr.S crtresfpr.S \
|
||||
crtsavgpr.S crtresgpr.S \
|
||||
crtresxfpr.S crtresxgpr.S \
|
||||
e500crtres32gpr.S \
|
||||
--- a/libgcc/Makefile.in
|
||||
+++ b/libgcc/Makefile.in
|
||||
@@ -265,7 +265,7 @@
|
||||
@ -75,3 +55,14 @@
|
||||
|
||||
ifneq (,$(vis_hide))
|
||||
|
||||
--- a/gcc/config/rs6000/linux.h
|
||||
+++ b/gcc/config/rs6000/linux.h
|
||||
@@ -85,6 +85,8 @@
|
||||
#define USE_LD_AS_NEEDED 1
|
||||
#endif
|
||||
|
||||
+#define LIBGCC_SPEC "%{!static:%{!static-libgcc:-lgcc_s}} -lgcc"
|
||||
+
|
||||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fprintf (stderr, " (PowerPC GNU/Linux)");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user