Patchwork wvstreams: Build bundled argp library with -fPIC

login
register
mail settings
Submitter Markos Chandras
Date June 5, 2013, 2:02 p.m.
Message ID <1370440956-8000-1-git-send-email-markos.chandras@gmail.com>
Download mbox | patch
Permalink /patch/249071/
State Superseded
Headers show

Comments

Markos Chandras - June 5, 2013, 2:02 p.m.
From: Markos Chandras <markos.chandras@imgtec.com>

Fixes linking problems on MIPS.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
---
 package/wvstreams/wvstreams-0006-argp-fpic.patch | 28 ++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 package/wvstreams/wvstreams-0006-argp-fpic.patch
Markos Chandras - June 6, 2013, 1:09 p.m.
On 5 June 2013 15:02, Markos Chandras <markos.chandras@gmail.com> wrote:
> From: Markos Chandras <markos.chandras@imgtec.com>
>
> Fixes linking problems on MIPS.
>
> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
> ---
>  package/wvstreams/wvstreams-0006-argp-fpic.patch | 28 ++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
>  create mode 100644 package/wvstreams/wvstreams-0006-argp-fpic.patch
>
> diff --git a/package/wvstreams/wvstreams-0006-argp-fpic.patch b/package/wvstreams/wvstreams-0006-argp-fpic.patch
> new file mode 100644
> index 0000000..b4cf1d2
> --- /dev/null
> +++ b/package/wvstreams/wvstreams-0006-argp-fpic.patch
> @@ -0,0 +1,28 @@
> +Build argp object files with -fPIC.
> +
> +The argp bundled dependency is linked to the libwvutils.so shared library.
> +MIPS will refuce to link a non-PIC library with a shared one.
> +
> +We fix this problem by building the argp source files using -fPIC since
> +the libargp static library will only be used to link to libwvutils.so
> +as instructed by the following rule in the root Makefile:
> +
> +ifeq ($(USE_WVSTREAMS_ARGP),1)
> +  utils/wvargs.o-CPPFLAGS += -Iargp
> +  libwvutils.so-LIBS += -Largp -largp
> +
> +Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
> +
> +Index: wvstreams-4.6.1/argp/Makefile.in
> +===================================================================
> +--- wvstreams-4.6.1.orig/argp/Makefile.in
> ++++ wvstreams-4.6.1/argp/Makefile.in
> +@@ -137,7 +137,7 @@ AUTOMAKE = @AUTOMAKE@
> + AWK = @AWK@
> + CC = @CC@
> + CCDEPMODE = @CCDEPMODE@
> +-CFLAGS = @CFLAGS@
> ++CFLAGS = @CFLAGS@ -fPIC
> + CPP = @CPP@
> + CPPFLAGS = @CPPFLAGS@
> + CYGPATH_W = @CYGPATH_W@
> --
> 1.8.2.1
>
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

Hi all,

After the relevant discussion in the bzip2 static/shared lib patch, I
believe this patch is safe to be applied as is, since the argp static
library is only a dependency for the shared libwvutils.so. In my
opinion, it is fine to build argp with -fPIC since it's only going to
be used
in a shared library.

--
Regards,
Markos Chandras
Markos Chandras - June 12, 2013, 8:22 a.m.
On 6 June 2013 14:09, Markos Chandras <markos.chandras@gmail.com> wrote:
> On 5 June 2013 15:02, Markos Chandras <markos.chandras@gmail.com> wrote:
>> From: Markos Chandras <markos.chandras@imgtec.com>
>>
>> Fixes linking problems on MIPS.
>>
>> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
>> ---
>>  package/wvstreams/wvstreams-0006-argp-fpic.patch | 28 ++++++++++++++++++++++++
>>  1 file changed, 28 insertions(+)
>>  create mode 100644 package/wvstreams/wvstreams-0006-argp-fpic.patch
>>
>> diff --git a/package/wvstreams/wvstreams-0006-argp-fpic.patch b/package/wvstreams/wvstreams-0006-argp-fpic.patch
>> new file mode 100644
>> index 0000000..b4cf1d2
>> --- /dev/null
>> +++ b/package/wvstreams/wvstreams-0006-argp-fpic.patch
>> @@ -0,0 +1,28 @@
>> +Build argp object files with -fPIC.
>> +
>> +The argp bundled dependency is linked to the libwvutils.so shared library.
>> +MIPS will refuce to link a non-PIC library with a shared one.
>> +
>> +We fix this problem by building the argp source files using -fPIC since
>> +the libargp static library will only be used to link to libwvutils.so
>> +as instructed by the following rule in the root Makefile:
>> +
>> +ifeq ($(USE_WVSTREAMS_ARGP),1)
>> +  utils/wvargs.o-CPPFLAGS += -Iargp
>> +  libwvutils.so-LIBS += -Largp -largp
>> +
>> +Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
>> +
>> +Index: wvstreams-4.6.1/argp/Makefile.in
>> +===================================================================
>> +--- wvstreams-4.6.1.orig/argp/Makefile.in
>> ++++ wvstreams-4.6.1/argp/Makefile.in
>> +@@ -137,7 +137,7 @@ AUTOMAKE = @AUTOMAKE@
>> + AWK = @AWK@
>> + CC = @CC@
>> + CCDEPMODE = @CCDEPMODE@
>> +-CFLAGS = @CFLAGS@
>> ++CFLAGS = @CFLAGS@ -fPIC
>> + CPP = @CPP@
>> + CPPFLAGS = @CPPFLAGS@
>> + CYGPATH_W = @CYGPATH_W@
>> --
>> 1.8.2.1
>>
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot@busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
> Hi all,
>
> After the relevant discussion in the bzip2 static/shared lib patch, I
> believe this patch is safe to be applied as is, since the argp static
> library is only a dependency for the shared libwvutils.so. In my
> opinion, it is fine to build argp with -fPIC since it's only going to
> be used
> in a shared library.
>
> --
> Regards,
> Markos Chandras

Hi,

ping? :)

--
Regards,
Markos Chandras
Markos Chandras - June 19, 2013, 8:23 a.m.
On 12 June 2013 09:22, Markos Chandras <markos.chandras@gmail.com> wrote:
> On 6 June 2013 14:09, Markos Chandras <markos.chandras@gmail.com> wrote:
>> On 5 June 2013 15:02, Markos Chandras <markos.chandras@gmail.com> wrote:
>>> From: Markos Chandras <markos.chandras@imgtec.com>
>>>
>>> Fixes linking problems on MIPS.
>>>
>>> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
>>> ---
>>>  package/wvstreams/wvstreams-0006-argp-fpic.patch | 28 ++++++++++++++++++++++++
>>>  1 file changed, 28 insertions(+)
>>>  create mode 100644 package/wvstreams/wvstreams-0006-argp-fpic.patch
>>>
>>> diff --git a/package/wvstreams/wvstreams-0006-argp-fpic.patch b/package/wvstreams/wvstreams-0006-argp-fpic.patch
>>> new file mode 100644
>>> index 0000000..b4cf1d2
>>> --- /dev/null
>>> +++ b/package/wvstreams/wvstreams-0006-argp-fpic.patch
>>> @@ -0,0 +1,28 @@
>>> +Build argp object files with -fPIC.
>>> +
>>> +The argp bundled dependency is linked to the libwvutils.so shared library.
>>> +MIPS will refuce to link a non-PIC library with a shared one.
>>> +
>>> +We fix this problem by building the argp source files using -fPIC since
>>> +the libargp static library will only be used to link to libwvutils.so
>>> +as instructed by the following rule in the root Makefile:
>>> +
>>> +ifeq ($(USE_WVSTREAMS_ARGP),1)
>>> +  utils/wvargs.o-CPPFLAGS += -Iargp
>>> +  libwvutils.so-LIBS += -Largp -largp
>>> +
>>> +Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
>>> +
>>> +Index: wvstreams-4.6.1/argp/Makefile.in
>>> +===================================================================
>>> +--- wvstreams-4.6.1.orig/argp/Makefile.in
>>> ++++ wvstreams-4.6.1/argp/Makefile.in
>>> +@@ -137,7 +137,7 @@ AUTOMAKE = @AUTOMAKE@
>>> + AWK = @AWK@
>>> + CC = @CC@
>>> + CCDEPMODE = @CCDEPMODE@
>>> +-CFLAGS = @CFLAGS@
>>> ++CFLAGS = @CFLAGS@ -fPIC
>>> + CPP = @CPP@
>>> + CPPFLAGS = @CPPFLAGS@
>>> + CYGPATH_W = @CYGPATH_W@
>>> --
>>> 1.8.2.1
>>>
>>>
>>> _______________________________________________
>>> buildroot mailing list
>>> buildroot@busybox.net
>>> http://lists.busybox.net/mailman/listinfo/buildroot
>>
>> Hi all,
>>
>> After the relevant discussion in the bzip2 static/shared lib patch, I
>> believe this patch is safe to be applied as is, since the argp static
>> library is only a dependency for the shared libwvutils.so. In my
>> opinion, it is fine to build argp with -fPIC since it's only going to
>> be used
>> in a shared library.
>>
>> --
>> Regards,
>> Markos Chandras
>
> Hi,
>
> ping? :)
>
> --
> Regards,
> Markos Chandras

Hello,

any comments on this patch?

--
Regards,
Markos Chandras
Peter Korsgaard - June 20, 2013, 8 a.m.
>>>>> "Markos" == Markos Chandras <markos.chandras@gmail.com> writes:

 Markos> From: Markos Chandras <markos.chandras@imgtec.com>
 Markos> Fixes linking problems on MIPS.

 Markos> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
 Markos> ---
 Markos>  package/wvstreams/wvstreams-0006-argp-fpic.patch | 28 ++++++++++++++++++++++++
 Markos>  1 file changed, 28 insertions(+)
 Markos>  create mode 100644 package/wvstreams/wvstreams-0006-argp-fpic.patch

 Markos> diff --git a/package/wvstreams/wvstreams-0006-argp-fpic.patch b/package/wvstreams/wvstreams-0006-argp-fpic.patch
 Markos> new file mode 100644
 Markos> index 0000000..b4cf1d2
 Markos> --- /dev/null
 Markos> +++ b/package/wvstreams/wvstreams-0006-argp-fpic.patch
 Markos> @@ -0,0 +1,28 @@
 Markos> +Build argp object files with -fPIC.
 Markos> +
 Markos> +The argp bundled dependency is linked to the libwvutils.so shared library.
 Markos> +MIPS will refuce to link a non-PIC library with a shared one.
 Markos> +
 Markos> +We fix this problem by building the argp source files using -fPIC since
 Markos> +the libargp static library will only be used to link to libwvutils.so
 Markos> +as instructed by the following rule in the root Makefile:
 Markos> +
 Markos> +ifeq ($(USE_WVSTREAMS_ARGP),1)
 Markos> +  utils/wvargs.o-CPPFLAGS += -Iargp
 Markos> +  libwvutils.so-LIBS += -Largp -largp
 Markos> +
 Markos> +Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
 Markos> +
 Markos> +Index: wvstreams-4.6.1/argp/Makefile.in
 Markos> +===================================================================
 Markos> +--- wvstreams-4.6.1.orig/argp/Makefile.in
 Markos> ++++ wvstreams-4.6.1/argp/Makefile.in
 Markos> +@@ -137,7 +137,7 @@ AUTOMAKE = @AUTOMAKE@
 Markos> + AWK = @AWK@
 Markos> + CC = @CC@
 Markos> + CCDEPMODE = @CCDEPMODE@
 Markos> +-CFLAGS = @CFLAGS@
 Markos> ++CFLAGS = @CFLAGS@ -fPIC

How about when wvstreams is built as a static library
(BR2_PREFER_STATIC_LIB)?

Makefile.in is a generated file, so you should rather fix Makefile.am
and set WVSTREAMS_AUTORECONF = YES, but wouldn't it just be simpler to
just add CFLAGS="$(TARGET_CFLAGS) -fPIC" to WVSTREAMS_CONF_ENV when
building in the !BR2_PREFER_STATIC_LIB case?
Markos Chandras - June 20, 2013, 9:05 a.m.
On 20 June 2013 09:00, Peter Korsgaard <jacmet@uclibc.org> wrote:
>>>>>> "Markos" == Markos Chandras <markos.chandras@gmail.com> writes:
>
>  Markos> From: Markos Chandras <markos.chandras@imgtec.com>
>  Markos> Fixes linking problems on MIPS.
>
>  Markos> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
>  Markos> ---
>  Markos>  package/wvstreams/wvstreams-0006-argp-fpic.patch | 28 ++++++++++++++++++++++++
>  Markos>  1 file changed, 28 insertions(+)
>  Markos>  create mode 100644 package/wvstreams/wvstreams-0006-argp-fpic.patch
>
>  Markos> diff --git a/package/wvstreams/wvstreams-0006-argp-fpic.patch b/package/wvstreams/wvstreams-0006-argp-fpic.patch
>  Markos> new file mode 100644
>  Markos> index 0000000..b4cf1d2
>  Markos> --- /dev/null
>  Markos> +++ b/package/wvstreams/wvstreams-0006-argp-fpic.patch
>  Markos> @@ -0,0 +1,28 @@
>  Markos> +Build argp object files with -fPIC.
>  Markos> +
>  Markos> +The argp bundled dependency is linked to the libwvutils.so shared library.
>  Markos> +MIPS will refuce to link a non-PIC library with a shared one.
>  Markos> +
>  Markos> +We fix this problem by building the argp source files using -fPIC since
>  Markos> +the libargp static library will only be used to link to libwvutils.so
>  Markos> +as instructed by the following rule in the root Makefile:
>  Markos> +
>  Markos> +ifeq ($(USE_WVSTREAMS_ARGP),1)
>  Markos> +  utils/wvargs.o-CPPFLAGS += -Iargp
>  Markos> +  libwvutils.so-LIBS += -Largp -largp
>  Markos> +
>  Markos> +Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
>  Markos> +
>  Markos> +Index: wvstreams-4.6.1/argp/Makefile.in
>  Markos> +===================================================================
>  Markos> +--- wvstreams-4.6.1.orig/argp/Makefile.in
>  Markos> ++++ wvstreams-4.6.1/argp/Makefile.in
>  Markos> +@@ -137,7 +137,7 @@ AUTOMAKE = @AUTOMAKE@
>  Markos> + AWK = @AWK@
>  Markos> + CC = @CC@
>  Markos> + CCDEPMODE = @CCDEPMODE@
>  Markos> +-CFLAGS = @CFLAGS@
>  Markos> ++CFLAGS = @CFLAGS@ -fPIC
>
> How about when wvstreams is built as a static library
> (BR2_PREFER_STATIC_LIB)?
>
> Makefile.in is a generated file, so you should rather fix Makefile.am
> and set WVSTREAMS_AUTORECONF = YES, but wouldn't it just be simpler to
> just add CFLAGS="$(TARGET_CFLAGS) -fPIC" to WVSTREAMS_CONF_ENV when
> building in the !BR2_PREFER_STATIC_LIB case?
>
> --
> Bye, Peter Korsgaard

Hi Peter,

Yes modifying the CFLAGS is simpler. I will do that.

--
Regards,
Markos Chandras

Patch

diff --git a/package/wvstreams/wvstreams-0006-argp-fpic.patch b/package/wvstreams/wvstreams-0006-argp-fpic.patch
new file mode 100644
index 0000000..b4cf1d2
--- /dev/null
+++ b/package/wvstreams/wvstreams-0006-argp-fpic.patch
@@ -0,0 +1,28 @@ 
+Build argp object files with -fPIC.
+
+The argp bundled dependency is linked to the libwvutils.so shared library.
+MIPS will refuce to link a non-PIC library with a shared one.
+
+We fix this problem by building the argp source files using -fPIC since
+the libargp static library will only be used to link to libwvutils.so
+as instructed by the following rule in the root Makefile:
+
+ifeq ($(USE_WVSTREAMS_ARGP),1)
+  utils/wvargs.o-CPPFLAGS += -Iargp
+  libwvutils.so-LIBS += -Largp -largp
+
+Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
+
+Index: wvstreams-4.6.1/argp/Makefile.in
+===================================================================
+--- wvstreams-4.6.1.orig/argp/Makefile.in
++++ wvstreams-4.6.1/argp/Makefile.in
+@@ -137,7 +137,7 @@ AUTOMAKE = @AUTOMAKE@
+ AWK = @AWK@
+ CC = @CC@
+ CCDEPMODE = @CCDEPMODE@
+-CFLAGS = @CFLAGS@
++CFLAGS = @CFLAGS@ -fPIC
+ CPP = @CPP@
+ CPPFLAGS = @CPPFLAGS@
+ CYGPATH_W = @CYGPATH_W@