Prior to the split, "the clients" used tools/xenstored/Makefile.common whose
clean rule includes *.o whereas after the split, the removal of *.o was lost
by virtule of not including Makefile.common any more.
This is the bug behind the following build error:
make[2]: Entering directory '/local/xen.git/tools/xs-clients'
gcc xenstore_client.o (snip)
/usr/bin/ld: xenstore_client.o: relocation R_X86_64_32S against `.rodata' 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
make[2]: *** [Makefile:35: xenstore] Error 1
which was caused by `make clean` not properly cleaning the tree as I was
swapping between various build containers.
Switch to a plain single-colon clean rule.
Fixes: 5c293058b130 ("tools/xenstore: move xenstored sources into dedicated directory")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Juergen Gross <jgross@suse.com>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
For 4.19. It's a minor build system corner case, but is also very safe too.
Ultimately it needs backporting to 4.18 too.
---
tools/xs-clients/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/xs-clients/Makefile b/tools/xs-clients/Makefile
index 4e78d365e0df..5415c441920a 100644
--- a/tools/xs-clients/Makefile
+++ b/tools/xs-clients/Makefile
@@ -38,8 +38,8 @@ xenstore-control: xenstore_control.o
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ $(APPEND_LDFLAGS)
.PHONY: clean
-clean::
- $(RM) $(TARGETS) $(DEPS_RM)
+clean:
+ $(RM) *.o $(TARGETS) $(DEPS_RM)
.PHONY: distclean
distclean: clean
--
2.39.2
On Wed, 2024-07-03 at 23:36 +0100, Andrew Cooper wrote:
> Prior to the split, "the clients" used
> tools/xenstored/Makefile.common whose
> clean rule includes *.o whereas after the split, the removal of *.o
> was lost
> by virtule of not including Makefile.common any more.
>
> This is the bug behind the following build error:
>
> make[2]: Entering directory '/local/xen.git/tools/xs-clients'
> gcc xenstore_client.o (snip)
> /usr/bin/ld: xenstore_client.o: relocation R_X86_64_32S against
> `.rodata' 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
> make[2]: *** [Makefile:35: xenstore] Error 1
>
> which was caused by `make clean` not properly cleaning the tree as I
> was
> swapping between various build containers.
>
> Switch to a plain single-colon clean rule.
>
> Fixes: 5c293058b130 ("tools/xenstore: move xenstored sources into
> dedicated directory")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Juergen Gross <jgross@suse.com>
> CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>
> For 4.19. It's a minor build system corner case, but is also very
> safe too.
Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
~ Oleksii
>
> Ultimately it needs backporting to 4.18 too.
> ---
> tools/xs-clients/Makefile | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/xs-clients/Makefile b/tools/xs-clients/Makefile
> index 4e78d365e0df..5415c441920a 100644
> --- a/tools/xs-clients/Makefile
> +++ b/tools/xs-clients/Makefile
> @@ -38,8 +38,8 @@ xenstore-control: xenstore_control.o
> $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ $(APPEND_LDFLAGS)
>
> .PHONY: clean
> -clean::
> - $(RM) $(TARGETS) $(DEPS_RM)
> +clean:
> + $(RM) *.o $(TARGETS) $(DEPS_RM)
>
> .PHONY: distclean
> distclean: clean
On 04.07.24 00:36, Andrew Cooper wrote:
> Prior to the split, "the clients" used tools/xenstored/Makefile.common whose
> clean rule includes *.o whereas after the split, the removal of *.o was lost
> by virtule of not including Makefile.common any more.
>
> This is the bug behind the following build error:
>
> make[2]: Entering directory '/local/xen.git/tools/xs-clients'
> gcc xenstore_client.o (snip)
> /usr/bin/ld: xenstore_client.o: relocation R_X86_64_32S against `.rodata' 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
> make[2]: *** [Makefile:35: xenstore] Error 1
>
> which was caused by `make clean` not properly cleaning the tree as I was
> swapping between various build containers.
>
> Switch to a plain single-colon clean rule.
>
> Fixes: 5c293058b130 ("tools/xenstore: move xenstored sources into dedicated directory")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Juergen
© 2016 - 2026 Red Hat, Inc.