1*eb8dc403SDave Cobbleyfuse: Fix linking issues with gold linker
2*eb8dc403SDave Cobbley
3*eb8dc403SDave Cobbleyfuse has problems when linking with gold since it uses version
4*eb8dc403SDave Cobbleyscripts in a way thats so perticular to bfd ld
5*eb8dc403SDave Cobbley
6*eb8dc403SDave Cobbley/home/kraj/work/angstrom/build/tmp-angstrom_2010_x-eglibc/sysroots/x86_64-linux/usr/libexec/armv5te-angstrom-linux-gnueabi/gcc/arm-angstro
7*eb8dc403SDave Cobbleyerror: symbol __fuse_exited has undefined version
8*eb8dc403SDave Cobbley| collect2: ld returned 1 exit status
9*eb8dc403SDave Cobbley| make[1]: *** [libfuse.la] Error 1
10*eb8dc403SDave Cobbley| make[1]: *** Waiting for unfinished jobs....
11*eb8dc403SDave Cobbley
12*eb8dc403SDave CobbleyFor more details
13*eb8dc403SDave Cobbley
14*eb8dc403SDave Cobbleyhttp://blog.flameeyes.eu/2011/06/01/gold-readiness-obstacle-2-base-versioning
15*eb8dc403SDave Cobbleyhttp://sources.redhat.com/bugzilla/show_bug.cgi?id=10861
16*eb8dc403SDave Cobbleyhttp://comments.gmane.org/gmane.comp.file-systems.fuse.devel/9524
17*eb8dc403SDave Cobbleyhttp://www.airs.com/blog/archives/300
18*eb8dc403SDave Cobbley
19*eb8dc403SDave CobbleyUpstream-Status: Pending
20*eb8dc403SDave CobbleySigned-off-by: Khem Raj <raj.khem@gmail.com>
21*eb8dc403SDave CobbleySigned-off-by: Koen Kooi <koen@dominion.thruhere.net>
22*eb8dc403SDave CobbleySigned-off-by: Hongxu Jia <hongxu.jia@windriver.com>
23*eb8dc403SDave Cobbley---
24*eb8dc403SDave Cobbley lib/fuse.c             | 10 +++++-----
25*eb8dc403SDave Cobbley lib/fuse_mt.c          |  2 +-
26*eb8dc403SDave Cobbley lib/fuse_versionscript |  3 +++
27*eb8dc403SDave Cobbley lib/helper.c           |  6 +++---
28*eb8dc403SDave Cobbley 4 files changed, 12 insertions(+), 9 deletions(-)
29*eb8dc403SDave Cobbley
30*eb8dc403SDave Cobbleydiff --git a/lib/fuse.c b/lib/fuse.c
31*eb8dc403SDave Cobbleyindex 067d0dc..6d27711 100644
32*eb8dc403SDave Cobbley--- a/lib/fuse.c
33*eb8dc403SDave Cobbley+++ b/lib/fuse.c
34*eb8dc403SDave Cobbley@@ -4873,11 +4873,11 @@ struct fuse *fuse_new_compat1(int fd, int flags,
35*eb8dc403SDave Cobbley 				      11);
36*eb8dc403SDave Cobbley }
37*eb8dc403SDave Cobbley
38*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_exited,__fuse_exited@");
39*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@");
40*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@");
41*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@");
42*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@");
43*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_exited,__fuse_exited@FUSE_UNVERSIONED");
44*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@FUSE_UNVERSIONED");
45*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@FUSE_UNVERSIONED");
46*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@FUSE_UNVERSIONED");
47*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@FUSE_UNVERSIONED");
48*eb8dc403SDave Cobbley FUSE_SYMVER(".symver fuse_new_compat22,fuse_new@FUSE_2.2");
49*eb8dc403SDave Cobbley
50*eb8dc403SDave Cobbley #endif /* __FreeBSD__ || __NetBSD__  */
51*eb8dc403SDave Cobbleydiff --git a/lib/fuse_mt.c b/lib/fuse_mt.c
52*eb8dc403SDave Cobbleyindex f6dbe71..fd5ac23 100644
53*eb8dc403SDave Cobbley--- a/lib/fuse_mt.c
54*eb8dc403SDave Cobbley+++ b/lib/fuse_mt.c
55*eb8dc403SDave Cobbley@@ -119,4 +119,4 @@ int fuse_loop_mt(struct fuse *f)
56*eb8dc403SDave Cobbley 	return res;
57*eb8dc403SDave Cobbley }
58*eb8dc403SDave Cobbley
59*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_loop_mt_proc,__fuse_loop_mt@");
60*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_loop_mt_proc,__fuse_loop_mt@FUSE_UNVERSIONED");
61*eb8dc403SDave Cobbleydiff --git a/lib/fuse_versionscript b/lib/fuse_versionscript
62*eb8dc403SDave Cobbleyindex 8d91887..de16ab2 100644
63*eb8dc403SDave Cobbley--- a/lib/fuse_versionscript
64*eb8dc403SDave Cobbley+++ b/lib/fuse_versionscript
65*eb8dc403SDave Cobbley@@ -1,3 +1,6 @@
66*eb8dc403SDave Cobbley+FUSE_UNVERSIONED {
67*eb8dc403SDave Cobbley+};
68*eb8dc403SDave Cobbley+
69*eb8dc403SDave Cobbley FUSE_2.2 {
70*eb8dc403SDave Cobbley 	global:
71*eb8dc403SDave Cobbley 		fuse_destroy;
72*eb8dc403SDave Cobbleydiff --git a/lib/helper.c b/lib/helper.c
73*eb8dc403SDave Cobbleyindex b644012..c5349bf 100644
74*eb8dc403SDave Cobbley--- a/lib/helper.c
75*eb8dc403SDave Cobbley+++ b/lib/helper.c
76*eb8dc403SDave Cobbley@@ -436,10 +436,10 @@ int fuse_mount_compat1(const char *mountpoint, const char *args[])
77*eb8dc403SDave Cobbley 	return fuse_mount_compat22(mountpoint, NULL);
78*eb8dc403SDave Cobbley }
79*eb8dc403SDave Cobbley
80*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@");
81*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@FUSE_UNVERSIONED");
82*eb8dc403SDave Cobbley FUSE_SYMVER(".symver fuse_setup_compat22,fuse_setup@FUSE_2.2");
83*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@");
84*eb8dc403SDave Cobbley-FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@");
85*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@FUSE_UNVERSIONED");
86*eb8dc403SDave Cobbley+FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@FUSE_UNVERSIONED");
87*eb8dc403SDave Cobbley FUSE_SYMVER(".symver fuse_main_real_compat22,fuse_main_real@FUSE_2.2");
88*eb8dc403SDave Cobbley
89*eb8dc403SDave Cobbley #endif /* __FreeBSD__ || __NetBSD__ */
90*eb8dc403SDave Cobbley--
91*eb8dc403SDave Cobbley1.8.1.2
92*eb8dc403SDave Cobbley
93