summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/binutils/binutils/nativesdk-relocation.patch
blob: 408f7d18b7693c3a85f419247611dba206c13266 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
We need binutils to look at our ld.so.conf file within the SDK to ensure 
we search the SDK's libdirs as well as those from the host system.

We therefore pass in the directory to the code using a define, then add
it to a section we relocate in a similar way to the way we relocate the
gcc internal paths. This ensures that ld works correctly in our buildtools
tarball.

Standard sysroot relocation doesn't work since we're not in a sysroot, 
we want to use both the host system and SDK libs.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020/1/17
Upstream-Status: Inappropriate [OE specific tweak]

Index: git/ld/Makefile.am
===================================================================
--- git.orig/ld/Makefile.am
+++ git/ld/Makefile.am
@@ -36,7 +36,8 @@ am__skipyacc =
 
 ELF_CLFAGS=-DELF_LIST_OPTIONS=@elf_list_options@ \
 	   -DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
-	   -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@
+	   -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \
+           -DSYSCONFDIR="\"$(sysconfdir)\""
 WARN_CFLAGS = @WARN_CFLAGS@
 NO_WERROR = @NO_WERROR@
 AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
Index: git/ld/Makefile.in
===================================================================
--- git.orig/ld/Makefile.in
+++ git/ld/Makefile.in
@@ -546,7 +546,8 @@ am__skiplex =
 am__skipyacc = 
 ELF_CLFAGS = -DELF_LIST_OPTIONS=@elf_list_options@ \
 	   -DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
-	   -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@
+	   -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \
+           -DSYSCONFDIR="\"$(sysconfdir)\""
 
 AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
 @ENABLE_PLUGINS_FALSE@PLUGIN_C = 
Index: git/ld/emultempl/elf32.em
===================================================================
--- git.orig/ld/emultempl/elf32.em
+++ git/ld/emultempl/elf32.em
@@ -1024,7 +1024,7 @@ gld${EMULATION_NAME}_check_ld_so_conf (c
 
       info.path = NULL;
       info.len = info.alloc = 0;
-      tmppath = concat (ld_sysroot, "${prefix}/etc/ld.so.conf",
+      tmppath = concat (ld_sysconfdir, "/ld.so.conf",
 			(const char *) NULL);
       if (!gld${EMULATION_NAME}_parse_ld_so_conf (&info, tmppath))
 	{
Index: git/ld/ldmain.c
===================================================================
--- git.orig/ld/ldmain.c
+++ git/ld/ldmain.c
@@ -68,6 +68,7 @@ char *program_name;
 
 /* The prefix for system library directories.  */
 const char *ld_sysroot;
+char ld_sysconfdir[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSCONFDIR;
 
 /* The canonical representation of ld_sysroot.  */
 char *ld_canon_sysroot;
Index: git/ld/ldmain.h
===================================================================
--- git.orig/ld/ldmain.h
+++ git/ld/ldmain.h
@@ -23,6 +23,7 @@
 
 extern char *program_name;
 extern const char *ld_sysroot;
+extern char ld_sysconfdir[4096];
 extern char *ld_canon_sysroot;
 extern int ld_canon_sysroot_len;
 extern FILE *saved_script_handle;