[Buildroot] [PATCH] package/libcap: don't overwrite 'empty' when generating loader.txt
Yann E. MORIN
yann.morin.1998 at free.fr
Tue Aug 24 07:13:11 UTC 2021
Arnout, All,
On 2021-08-24 01:31 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
> Upstream commit [1] introduced an invocation of objcopy to generat
> loader.txt. However, objcopy, if not provided with an output file, will
> overwrite the input file. This is usually harmless because it will be
> identical, but the timestamp is updated. This may cause 'empty' to be
> newer than 'loader.txt', which causes 'loader.txt' and its dependencies
> to be rebuilt during 'make install'
>
> We provide a different set of parameters during 'make install'. In
> particular, we no longer pass in HOST_CONFIGURE_OPTS, so we no longer
> set LDFLAGS. Thus, there is no -Wl,rpath option that is passed in, which
> causes the resulting binaries to have an incorrect RPATH.
>
> Fix this by adding /dev/null as the output file in the objcopy
> invocation.
>
> Patch was sent upstream, but there's no mailing list, just a single
> person.
>
> Fixes: http://autobuild.buildroot.net/results/600/600aff5b839b48db80751cace5fa9670b7a3d698
> (hopefully)
>
> [1] https://git.kernel.org/pub/scm/libs/libcap/libcap.git/commit/?id=efd293947f940180eedd8d0915b124f4aedccc08
>
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
Applied to master, then reverted, then applied to next, thanks.
/me goes grab a third coffee before resuming patch reviews...
Regards,
Yann E. MORIN.
> ---
> Note: I tried updating to v1.2.53 first, but that failed due to [2]
>
> [2] https://bugzilla.kernel.org/show_bug.cgi?id=214023#c16
> ---
> ...don-t-overwrite-empty-when-generatin.patch | 50 +++++++++++++++++++
> 1 file changed, 50 insertions(+)
> create mode 100644 package/libcap/0001-libcap-Makefile-don-t-overwrite-empty-when-generatin.patch
>
> diff --git a/package/libcap/0001-libcap-Makefile-don-t-overwrite-empty-when-generatin.patch b/package/libcap/0001-libcap-Makefile-don-t-overwrite-empty-when-generatin.patch
> new file mode 100644
> index 0000000000..a47a2c788e
> --- /dev/null
> +++ b/package/libcap/0001-libcap-Makefile-don-t-overwrite-empty-when-generatin.patch
> @@ -0,0 +1,50 @@
> +From dc507a812d931c24f1ac98c811fdd29bffa21da9 Mon Sep 17 00:00:00 2001
> +From: "Arnout Vandecappelle (Essensium/Mind)" <arnout at mind.be>
> +Date: Tue, 24 Aug 2021 00:36:40 +0200
> +Subject: [PATCH] libcap/Makefile: don't overwrite 'empty' when generating
> + loader.txt
> +
> +objcopy takes an input file and an output file as arguments. If the
> +output file is left out, the input file will be overwritten.
> +
> +Since the objcopy command used to generate loader.txt only does a
> +dump-section and no filtering, in practice there is no change to empty.
> +However, as a side-effect, its timestamp is updated. The timestamp of
> +empty and of loader.txt will be more or less the same; however,
> +loader.txt is closed just before the output file is closed, so it's
> +possible that the timestamp of loader.txt is just a little bit earlier.
> +If this happens, it causes loader.txt to be rebuilt later, which in turn
> +causes a number of other object files to be rebuilt.
> +
> +Usually that's harmless, but it sometimes causes the rebuild to happen
> +during 'make install'. This is particularly annoying if 'make install'
> +is done as root, since loader.txt becomes owned by root in that case.
> +
> +Fix this by specifying a harmless output file: /dev/null.
> +
> +While we're at it, take in an upstream change that removes the redundant
> +redirect.
> +
> +Fixes: ee3b25c0a877fa74d1aec88f325ac45b09963c82
> +
> +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
> +---
> + libcap/Makefile | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/libcap/Makefile b/libcap/Makefile
> +index 47cf8f4..18e4f4f 100644
> +--- a/libcap/Makefile
> ++++ b/libcap/Makefile
> +@@ -105,7 +105,7 @@ empty: empty.c
> + $(CC) -o $@ $<
> +
> + loader.txt: empty
> +- $(OBJCOPY) --dump-section .interp=/dev/stdout $< > $@
> ++ $(OBJCOPY) --dump-section .interp=$@ $< /dev/null
> +
> + cap_magic.o: execable.h execable.c loader.txt
> + $(CC) $(CFLAGS) $(IPATH) -DLIBRARY_VERSION=\"$(LIBTITLE)-$(VERSION).$(MINOR)\" -DSHARED_LOADER=\"$(shell cat loader.txt)\" -c execable.c -o $@
> +--
> +2.31.1
> +
> --
> 2.31.1
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list