mirror of
				https://github.com/cjdelisle/openwrt.git
				synced 2025-10-28 12:45:47 +00:00 
			
		
		
		
	All patches automatically refreshed. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18600 Signed-off-by: Robert Marko <robimarko@gmail.com>
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From dda6b050cd74a352670787a294596a9c56c21327 Mon Sep 17 00:00:00 2001
 | |
| From: Yousong Zhou <yszhou4tech@gmail.com>
 | |
| Date: Fri, 4 May 2018 18:20:53 +0800
 | |
| Subject: [PATCH] gotools: fix compilation when making cross compiler
 | |
| 
 | |
| libgo is "the runtime support library for the Go programming language.
 | |
| This library is intended for use with the Go frontend."
 | |
| 
 | |
| gccgo will link target files with libgo.so which depends on libgcc_s.so.1, but
 | |
| the linker will complain that it cannot find it.  That's because shared libgcc
 | |
| is not present in the install directory yet.  libgo.so was made without problem
 | |
| because gcc will emit -lgcc_s when compiled with -shared option.  When gotools
 | |
| were being made, it was supplied with -static-libgcc thus no link option was
 | |
| provided.  Check LIBGO in gcc/go/gcc-spec.c for how gccgo make a builtin spec
 | |
| for linking with libgo.so
 | |
| 
 | |
| - GccgoCrossCompilation, https://github.com/golang/go/wiki/GccgoCrossCompilation
 | |
| - Cross-building instructions, http://www.eglibc.org/archives/patches/msg00078.html
 | |
| 
 | |
| When 3-pass GCC compilation is used, shared libgcc runtime libraries will be
 | |
| available after gcc pass2 completed and will meet the gotools link requirement
 | |
| at gcc pass3
 | |
| ---
 | |
|  gotools/Makefile.am | 4 +++-
 | |
|  gotools/Makefile.in | 4 +++-
 | |
|  2 files changed, 6 insertions(+), 2 deletions(-)
 | |
| 
 | |
| --- a/gotools/Makefile.am
 | |
| +++ b/gotools/Makefile.am
 | |
| @@ -26,6 +26,7 @@ PWD_COMMAND = $${PWDCMD-pwd}
 | |
|  STAMP = echo timestamp >
 | |
|  
 | |
|  libgodir = ../$(target_noncanonical)/libgo
 | |
| +libgccdir = ../$(target_noncanonical)/libgcc
 | |
|  LIBGODEP = $(libgodir)/libgo.la
 | |
|  
 | |
|  LIBGOTOOL = $(libgodir)/libgotool.a
 | |
| @@ -41,7 +42,8 @@ GOCFLAGS = $(CFLAGS_FOR_TARGET)
 | |
|  GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
 | |
|  
 | |
|  AM_GOCFLAGS = -I $(libgodir)
 | |
| -AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
 | |
| +AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs \
 | |
| +	-L $(libgccdir) -L $(libgccdir)/.libs -lgcc_s
 | |
|  GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
 | |
|  
 | |
|  libgosrcdir = $(srcdir)/../libgo/go
 | |
| --- a/gotools/Makefile.in
 | |
| +++ b/gotools/Makefile.in
 | |
| @@ -337,6 +337,7 @@ mkinstalldirs = $(SHELL) $(toplevel_srcd
 | |
|  PWD_COMMAND = $${PWDCMD-pwd}
 | |
|  STAMP = echo timestamp >
 | |
|  libgodir = ../$(target_noncanonical)/libgo
 | |
| +libgccdir = ../$(target_noncanonical)/libgcc
 | |
|  LIBGODEP = $(libgodir)/libgo.la
 | |
|  LIBGOTOOL = $(libgodir)/libgotool.a
 | |
|  @NATIVE_FALSE@GOCOMPILER = $(GOC)
 | |
| @@ -346,7 +347,8 @@ LIBGOTOOL = $(libgodir)/libgotool.a
 | |
|  GOCFLAGS = $(CFLAGS_FOR_TARGET)
 | |
|  GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
 | |
|  AM_GOCFLAGS = -I $(libgodir)
 | |
| -AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
 | |
| +AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs \
 | |
| +	-L $(libgccdir) -L $(libgccdir)/.libs -lgcc_s
 | |
|  GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
 | |
|  libgosrcdir = $(srcdir)/../libgo/go
 | |
|  cmdsrcdir = $(libgosrcdir)/cmd
 |