Introduce target-specific LDFLAGS, the same way we have CFLAGS for the target.
It seems to be helping gcc somewhat into telling the correct endianness to ld that sticks with little endian even when the target is big (eg armeb-unknown-linux-uclibcgnueabi).
There's still work to do, especially finish the gcc part that is not in this commit.
/trunk/scripts/functions | 9 7 2 0 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
2 elf/librtld.os: In function `process_envvars': : undefined reference to `__access'
4 when building glibc-2.3.x on cygwin
7 http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch
8 Basically, make glibc use .oST as suffix for 'object static'
9 instead of .oS, since cygwin has trouble distinguishing .os from .oS
10 (Original patch had .on, but .oST is more mnemonic for 'object static')
12 glibc-linuxthreads-2.3.5 also requires a patch, see
13 ../glibc-linuxthreads-2.3.5/glibc-linuxthreads-2.3.5-cygwin.patch
15 [ forward ported to glibc-2.3.5 by Petr Cvachoucek:
17 Message-ID: <4282FCBA.3040000@unicontrols.cz>
18 Date: Thu, 12 May 2005 08:50:34 +0200
19 From: Petr Cvachoucek <cvachoucek@unicontrols.cz>
20 To: Dan Kegel <dank@kegel.com>
21 CC: crossgcc@sources.redhat.com
22 Subject: Patches to build gcc 3.4.3 / glibc 2.3.5 on cygwin
25 following patches are needed to build gcc-3.4.3/glibc-2.3.5 toolchain
26 on cygwin. Tested to build toolchains for powerpc 604 and 750 targets.
31 http://www.unicontrols.cz
34 diff -aur glibc-2.3.5/Makeconfig glibc-2.3.5-cygwin/Makeconfig
35 --- glibc-2.3.5/Makeconfig 2005-02-16 11:50:19.000000000 +0100
36 +++ glibc-2.3.5-cygwin/Makeconfig 2005-05-11 08:24:51.046875000 +0200
38 # run the linked programs.
39 link-libc = -Wl,-rpath-link=$(rpath-link) \
40 $(common-objpfx)libc.so$(libc.so-version) \
41 - $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib)
42 + $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib)
43 # This is how to find at build-time things that will be installed there.
44 rpath-dirs = math elf dlfcn nss nis rt resolv crypt
47 # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
48 # to pass different flags for each flavor.
49 libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o))
50 -all-object-suffixes := .o .os .op .og .ob .oS
51 +all-object-suffixes := .o .os .op .og .ob .oST
53 CPPFLAGS-.o = $(pic-default)
54 CFLAGS-.o = $(filter %frame-pointer,$(+cflags))
57 ifeq (yes,$(build-shared))
58 # Build special library that contains the static-only routines for libc.
59 -object-suffixes-for-libc += .oS
60 +object-suffixes-for-libc += .oST
62 # Must build the routines as PIC, though, because they can end up in (users')
63 # shared objects. We don't want to use CFLAGS-os because users may, for
64 # example, make that processor-specific.
65 -CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
66 -CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
67 -libtype.oS = lib%_nonshared.a
68 +CFLAGS-.oST = $(CFLAGS-.o) $(PIC-ccflag)
69 +CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
70 +libtype.oST = lib%_nonshared.a
73 # The assembler can generate debug information too.
74 diff -aur glibc-2.3.5/Makerules glibc-2.3.5-cygwin/Makerules
75 --- glibc-2.3.5/Makerules 2004-12-15 19:52:39.000000000 +0100
76 +++ glibc-2.3.5-cygwin/Makerules 2005-05-11 08:25:33.578125000 +0200
78 # Bounded pointer thunks are only built for *.ob
79 elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks))
81 -elide-routines.oS += $(filter-out $(static-only-routines),\
82 +elide-routines.oST += $(filter-out $(static-only-routines),\
83 $(routines) $(aux) $(sysdep_routines)) \
85 elide-routines.os += $(static-only-routines) $(elide-bp-thunks)
87 install: $(inst_libdir)/libc.so
88 $(inst_libdir)/libc.so: $(common-objpfx)format.lds \
89 $(common-objpfx)libc.so$(libc.so-version) \
90 - $(inst_libdir)/$(patsubst %,$(libtype.oS),\
91 + $(inst_libdir)/$(patsubst %,$(libtype.oST),\
92 $(libprefix)$(libc-name)) \
94 (echo '/* GNU ld script';\
96 echo ' the static library, so try that secondarily. */';\
98 echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
99 - '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
100 + '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\
101 ' AS_NEEDED (' $(slibdir)/$(rtld-installed-name) ') )' \
104 diff -aur glibc-2.3.5/extra-lib.mk glibc-2.3.5-cygwin/extra-lib.mk
105 --- glibc-2.3.5/extra-lib.mk 2004-12-02 23:54:47.000000000 +0100
106 +++ glibc-2.3.5-cygwin/extra-lib.mk 2005-05-11 08:27:28.156250000 +0200
109 ifneq (,$($(lib)-static-only-routines))
110 ifneq (,$(filter yesyes%,$(build-shared)$(elf)$($(lib).so-version)))
111 -object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oS)
112 +object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oST)
118 # Add each flavor of library to the lists of things to build and install.
119 install-lib += $(foreach o,$(object-suffixes-$(lib)),$(lib:lib%=$(libtype$o)))
120 -extra-objs += $(foreach o,$(filter-out .os .oS,$(object-suffixes-$(lib))),\
121 +extra-objs += $(foreach o,$(filter-out .os .oST,$(object-suffixes-$(lib))),\
122 $(patsubst %,%$o,$(filter-out \
123 $($(lib)-shared-only-routines),\
124 $(all-$(lib)-routines))))
128 # Use o-iterator.mk to generate a rule for each flavor of library.
129 -ifneq (,$(filter-out .os .oS,$(object-suffixes-$(lib))))
130 +ifneq (,$(filter-out .os .oST,$(object-suffixes-$(lib))))
131 define o-iterator-doit
132 $(objpfx)$(patsubst %,$(libtype$o),$(lib:lib%=%)): \
133 $(patsubst %,$(objpfx)%$o,\
135 $(all-$(lib)-routines))); \
138 -object-suffixes-left = $(filter-out .os .oS,$(object-suffixes-$(lib)))
139 +object-suffixes-left = $(filter-out .os .oST,$(object-suffixes-$(lib)))
140 include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left))
147 -ifneq (,$(filter .oS,$(object-suffixes-$(lib))))
148 -$(objpfx)$(patsubst %,$(libtype.oS),$(lib:lib%=%)): \
149 - $(patsubst %,$(objpfx)%.oS,\
150 +ifneq (,$(filter .oST,$(object-suffixes-$(lib))))
151 +$(objpfx)$(patsubst %,$(libtype.oST),$(lib:lib%=%)): \
152 + $(patsubst %,$(objpfx)%.oST,\
153 $(filter $($(lib)-static-only-routines),\
154 $(all-$(lib)-routines)))
156 diff -aur glibc-2.3.5/nptl/Makefile glibc-2.3.5-cygwin/nptl/Makefile
157 --- glibc-2.3.5/nptl/Makefile 2005-02-16 09:45:56.000000000 +0100
158 +++ glibc-2.3.5-cygwin/nptl/Makefile 2005-05-11 08:26:01.812500000 +0200
161 $(inst_libdir)/libpthread.so: $(common-objpfx)format.lds \
162 $(objpfx)libpthread.so$(libpthread.so-version) \
163 - $(inst_libdir)/$(patsubst %,$(libtype.oS),\
164 + $(inst_libdir)/$(patsubst %,$(libtype.oST),\
165 $(libprefix)pthread) \
167 (echo '/* GNU ld script';\
169 echo ' the static library, so try that secondarily. */';\
171 echo 'GROUP ( $(slibdir)/libpthread.so$(libpthread.so-version)' \
172 - '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)pthread)'\
173 + '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)pthread)'\
177 diff -aur glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile
178 --- glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-16 08:46:14.000000000 +0200
179 +++ glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile 2005-05-11 08:26:25.937500000 +0200
181 ASFLAGS-.op += -Wa,-Av9a
182 ASFLAGS-.og += -Wa,-Av9a
183 ASFLAGS-.ob += -Wa,-Av9a
184 -ASFLAGS-.oS += -Wa,-Av9a
185 +ASFLAGS-.oST += -Wa,-Av9a
187 Signed-off-by: Robert P. J. Day <rpjday@mindspring.com>