diff mbox series

selftests: mptcp: extend CFLAGS to keep options from environment

Message ID 7abc701da9df39c2d6cd15bc3cf9e6cee445cb96.1737621162.git.jstancek@redhat.com (mailing list archive)
State New
Headers show
Series selftests: mptcp: extend CFLAGS to keep options from environment | expand

Commit Message

Jan Stancek Jan. 23, 2025, 8:35 a.m. UTC
Package build environments like Fedora rpmbuild introduced hardening
options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
and LDFLAGS.

mptcp Makefile currently overrides CFLAGS but not LDFLAGS, which leads
to a mismatch and build failure, for example:
  make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/mptcp/mptcp_sockopt] Error 1
  /usr/bin/ld: /tmp/ccqyMVdb.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIE
  /usr/bin/ld: failed to set dynamic section sizes: bad value
  collect2: error: ld returned 1 exit status

Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
 tools/testing/selftests/net/mptcp/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Hangbin Liu Jan. 23, 2025, 8:39 a.m. UTC | #1
On Thu, Jan 23, 2025 at 09:35:42AM +0100, Jan Stancek wrote:
> Package build environments like Fedora rpmbuild introduced hardening
> options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
> and LDFLAGS.
> 
> mptcp Makefile currently overrides CFLAGS but not LDFLAGS, which leads
> to a mismatch and build failure, for example:
>   make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/mptcp/mptcp_sockopt] Error 1
>   /usr/bin/ld: /tmp/ccqyMVdb.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIE
>   /usr/bin/ld: failed to set dynamic section sizes: bad value
>   collect2: error: ld returned 1 exit status
> 
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> ---
>  tools/testing/selftests/net/mptcp/Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
> index 8e3fc05a5397..9706bc73809f 100644
> --- a/tools/testing/selftests/net/mptcp/Makefile
> +++ b/tools/testing/selftests/net/mptcp/Makefile
> @@ -2,7 +2,7 @@
>  
>  top_srcdir = ../../../../..
>  
> -CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
> +CFLAGS +=  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
>  
>  TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \
>  	      simult_flows.sh mptcp_sockopt.sh userspace_pm.sh
> -- 
> 2.43.0
> 

Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
Hangbin Liu Jan. 23, 2025, 8:43 a.m. UTC | #2
On Thu, Jan 23, 2025 at 08:39:53AM +0000, Hangbin Liu wrote:
> On Thu, Jan 23, 2025 at 09:35:42AM +0100, Jan Stancek wrote:
> > Package build environments like Fedora rpmbuild introduced hardening
> > options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
> > and LDFLAGS.
> > 
> > mptcp Makefile currently overrides CFLAGS but not LDFLAGS, which leads
> > to a mismatch and build failure, for example:
> >   make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/mptcp/mptcp_sockopt] Error 1
> >   /usr/bin/ld: /tmp/ccqyMVdb.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIE
> >   /usr/bin/ld: failed to set dynamic section sizes: bad value
> >   collect2: error: ld returned 1 exit status
> > 
> > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > ---
> >  tools/testing/selftests/net/mptcp/Makefile | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
> > index 8e3fc05a5397..9706bc73809f 100644
> > --- a/tools/testing/selftests/net/mptcp/Makefile
> > +++ b/tools/testing/selftests/net/mptcp/Makefile
> > @@ -2,7 +2,7 @@
> >  
> >  top_srcdir = ../../../../..
> >  
> > -CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
> > +CFLAGS +=  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
> >  
> >  TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \
> >  	      simult_flows.sh mptcp_sockopt.sh userspace_pm.sh
> > -- 
> > 2.43.0
> > 
> 
> Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>

Hmm, net-next is closed. Not sure if we can target this to net since it fixes
the build errors.

Thanks
Hangbin
Matthieu Baerts Jan. 23, 2025, 10:26 a.m. UTC | #3
Hi Jan, Hangbin,

(-cc <eliang@kernel.org>: wrong address apparently)

On 23/01/2025 09:43, Hangbin Liu wrote:
> On Thu, Jan 23, 2025 at 08:39:53AM +0000, Hangbin Liu wrote:
>> On Thu, Jan 23, 2025 at 09:35:42AM +0100, Jan Stancek wrote:
>>> Package build environments like Fedora rpmbuild introduced hardening
>>> options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
>>> and LDFLAGS.
>>>
>>> mptcp Makefile currently overrides CFLAGS but not LDFLAGS, which leads
>>> to a mismatch and build failure, for example:
>>>   make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/mptcp/mptcp_sockopt] Error 1
>>>   /usr/bin/ld: /tmp/ccqyMVdb.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIE
>>>   /usr/bin/ld: failed to set dynamic section sizes: bad value
>>>   collect2: error: ld returned 1 exit status
>>>
>>> Signed-off-by: Jan Stancek <jstancek@redhat.com>
>>> ---
>>>  tools/testing/selftests/net/mptcp/Makefile | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
>>> index 8e3fc05a5397..9706bc73809f 100644
>>> --- a/tools/testing/selftests/net/mptcp/Makefile
>>> +++ b/tools/testing/selftests/net/mptcp/Makefile
>>> @@ -2,7 +2,7 @@
>>>  
>>>  top_srcdir = ../../../../..
>>>  
>>> -CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
>>> +CFLAGS +=  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)

Thank you for the fix, it looks good to me too:

Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>

>>>  
>>>  TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \
>>>  	      simult_flows.sh mptcp_sockopt.sh userspace_pm.sh
>>> -- 
>>> 2.43.0
>>>
>>
>> Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
> 
> Hmm, net-next is closed. Not sure if we can target this to net since it fixes
> the build errors.

I think this should target -net. It should then have a Fixes tag (and cc
Stable). Not sure if we need to backport that all along. Maybe enough to
use the following one, because I see it fixed the same issue in net and
tcp_ao:

Fixes: cc937dad85ae ("selftests: centralize -D_GNU_SOURCE= to CFLAGS in
lib.mk")

BTW, I guess you will need the same fix in
tools/testing/selftests/net/lib/Makefile and
tools/testing/selftests/net/openvswitch/Makefile.

@Jan: Do you mind fixing them too please? Also, please next time add the
target in the subject, e.g. [PATCH net], see:

  https://docs.kernel.org/process/maintainer-netdev.html

@Netdev maintainers: this can be applied directly in -net, no need to go
through the MPTCP tree first. But it can if you prefer me adding the
Fixes tag.

Cheers,
Matt
Jan Stancek Jan. 23, 2025, 10:44 a.m. UTC | #4
On Thu, Jan 23, 2025 at 11:26 AM Matthieu Baerts <matttbe@kernel.org> wrote:
>
> Hi Jan, Hangbin,
>
> (-cc <eliang@kernel.org>: wrong address apparently)
>
> On 23/01/2025 09:43, Hangbin Liu wrote:
> > On Thu, Jan 23, 2025 at 08:39:53AM +0000, Hangbin Liu wrote:
> >> On Thu, Jan 23, 2025 at 09:35:42AM +0100, Jan Stancek wrote:
> >>> Package build environments like Fedora rpmbuild introduced hardening
> >>> options (e.g. -pie -Wl,-z,now) by passing a -spec option to CFLAGS
> >>> and LDFLAGS.
> >>>
> >>> mptcp Makefile currently overrides CFLAGS but not LDFLAGS, which leads
> >>> to a mismatch and build failure, for example:
> >>>   make[1]: *** [../../lib.mk:222: tools/testing/selftests/net/mptcp/mptcp_sockopt] Error 1
> >>>   /usr/bin/ld: /tmp/ccqyMVdb.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIE
> >>>   /usr/bin/ld: failed to set dynamic section sizes: bad value
> >>>   collect2: error: ld returned 1 exit status
> >>>
> >>> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> >>> ---
> >>>  tools/testing/selftests/net/mptcp/Makefile | 2 +-
> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
> >>> index 8e3fc05a5397..9706bc73809f 100644
> >>> --- a/tools/testing/selftests/net/mptcp/Makefile
> >>> +++ b/tools/testing/selftests/net/mptcp/Makefile
> >>> @@ -2,7 +2,7 @@
> >>>
> >>>  top_srcdir = ../../../../..
> >>>
> >>> -CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
> >>> +CFLAGS +=  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
>
> Thank you for the fix, it looks good to me too:
>
> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
>
> >>>
> >>>  TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \
> >>>           simult_flows.sh mptcp_sockopt.sh userspace_pm.sh
> >>> --
> >>> 2.43.0
> >>>
> >>
> >> Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
> >
> > Hmm, net-next is closed. Not sure if we can target this to net since it fixes
> > the build errors.
>
> I think this should target -net. It should then have a Fixes tag (and cc
> Stable). Not sure if we need to backport that all along. Maybe enough to
> use the following one, because I see it fixed the same issue in net and
> tcp_ao:
>
> Fixes: cc937dad85ae ("selftests: centralize -D_GNU_SOURCE= to CFLAGS in
> lib.mk")
>
> BTW, I guess you will need the same fix in
> tools/testing/selftests/net/lib/Makefile and
> tools/testing/selftests/net/openvswitch/Makefile.
>
> @Jan: Do you mind fixing them too please? Also, please next time add the
> target in the subject, e.g. [PATCH net], see:

Will do.

Regards,
Jan

>
>   https://docs.kernel.org/process/maintainer-netdev.html
>
> @Netdev maintainers: this can be applied directly in -net, no need to go
> through the MPTCP tree first. But it can if you prefer me adding the
> Fixes tag.
>
> Cheers,
> Matt
> --
> Sponsored by the NGI0 Core fund.
>
diff mbox series

Patch

diff --git a/tools/testing/selftests/net/mptcp/Makefile b/tools/testing/selftests/net/mptcp/Makefile
index 8e3fc05a5397..9706bc73809f 100644
--- a/tools/testing/selftests/net/mptcp/Makefile
+++ b/tools/testing/selftests/net/mptcp/Makefile
@@ -2,7 +2,7 @@ 
 
 top_srcdir = ../../../../..
 
-CFLAGS =  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
+CFLAGS +=  -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
 
 TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \
 	      simult_flows.sh mptcp_sockopt.sh userspace_pm.sh