Skip to contentSkip to conversation

examples: select libgcc for non-default architecture

PATCH New Alexey Brodkin 4 participants 4 messages May 16, 2014 – May 23, 2014 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 examples: select libgcc for non-default architecture

In case of multilib-enabled toolchains if default architecture differ from the one examples are being built for linker will fail to link example object files with libgcc of another (non-compatible) architecture.

Interesting enough for years in main Makefile we used CFLAGS/c_flags for this but not for examples.

So fixing it now.

Cc Masahiro Yamada <[email protected]>
Cc Tom Rini <[email protected]>
Cc Wolfgang Denx <[email protected]>

---
In v3 we export PLATFORM_LIBGCC from the main Makefile and use it for examples

---
 Makefile                     | 1 +
 examples/standalone/Makefile | 4 +---
 2 files changed, 2 insertions(+), 3 deletions(-)
Makefile +1 -0
index ff38a43..fd4e176 100644
@@ -696,6 +696,7 @@ PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`
 endif
 PLATFORM_LIBS += $(PLATFORM_LIBGCC)
 export PLATFORM_LIBS
+export PLATFORM_LIBGCC
 
 # Special flags for CPP when processing the linker script.
 # Pass the version down so we can handle backwards compatibility
examples/standalone/Makefile +1 -3
index 9ab5446..2dacba2 100644
@@ -38,8 +38,6 @@ targets += $(patsubst $(obj)/%,%,$(LIB)) $(COBJS) $(LIBOBJS-y)
 LIBOBJS	:= $(addprefix $(obj)/,$(LIBOBJS-y))
 ELF	:= $(addprefix $(obj)/,$(ELF))
 
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
 # For PowerPC there's no need to compile standalone applications as a
 # relocatable executable.  The relocation data is not needed, and
 # also causes the entry point of the standalone application to be
@@ -63,7 +61,7 @@ $(LIB):	$(LIBOBJS) FORCE
 
 quiet_cmd_link_elf = LD      $@
       cmd_link_elf = $(LD) $(LDFLAGS) -g -Ttext $(CONFIG_STANDALONE_LOAD_ADDR) \
-		     -o $@ -e $(SYM_PREFIX)$(@F) $< $(LIB) -L$(gcclibdir) -lgcc
+		     -o $@ -e $(SYM_PREFIX)$(@F) $< $(LIB) $(PLATFORM_LIBGCC)
 
 $(ELF): $(obj)/%: $(obj)/%.o $(LIB) FORCE
 	$(call if_changed,link_elf)
Signature · 1 line
1.9.0
#1 lore raw

PATCH v3 1/1 examples: select libgcc for non-default architecture

Dear Alexey Brodkin,

Quoted 9 lines · In message <[email protected]> you wrote:

In case of multilib-enabled toolchains if default architecture differ from the one examples are being built for linker will fail to link example object files with libgcc of another (non-compatible) architecture.

Interesting enough for years in main Makefile we used CFLAGS/c_flags for this but not for examples.

So fixing it now.

Quoted 8 lines
Cc Masahiro Yamada <[email protected]>
Cc Tom Rini <[email protected]>
Cc Wolfgang Denx <[email protected]>

---
In v3 we export PLATFORM_LIBGCC from the main Makefile and use it for examples

Thanks!

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Pull the wool over your own eyes!"                - J.R. "Bob" Dobbs
#2 lore raw

PATCH v3 1/1 examples: select libgcc for non-default architecture

In reply to Alexey Brodkin

Hi Alexey,

Quoted 7 lines · On Fri, 16 May 2014 12:54:17 +0400 Alexey Brodkin…

In case of multilib-enabled toolchains if default architecture differ from the one examples are being built for linker will fail to link example object files with libgcc of another (non-compatible) architecture.

Interesting enough for years in main Makefile we used CFLAGS/c_flags for this but not for examples.

Quoted 7 lines

So fixing it now.

Cc Masahiro Yamada <[email protected]>
Cc Tom Rini <[email protected]>
Cc Wolfgang Denx <[email protected]>

I did build test on some boards with/without CONFIG_USE_PRIVATE_LIBGCC and I worked as expected.

So, you can have my

Thanks!

Best Regards
Masahiro Yamada

#3 lore raw

PATCH v3 1/1 examples: select libgcc for non-default architecture

In reply to Alexey Brodkin
Quoted 9 lines · Alexey Brodkin

In case of multilib-enabled toolchains if default architecture differ from the one examples are being built for linker will fail to link example object files with libgcc of another (non-compatible) architecture.

Interesting enough for years in main Makefile we used CFLAGS/c_flags for this but not for examples.

So fixing it now.

Quoted 7 lines

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140523/0e4e02e7/attachment.pgp>