* [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions
@ 2019-04-08 8:32 Pawel Wieczorkiewicz
2019-04-08 8:32 ` [livepatch-build-tools 2/4] livepatch-gcc: Ignore built_in.o and prelink.o object files Pawel Wieczorkiewicz
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Pawel Wieczorkiewicz @ 2019-04-08 8:32 UTC (permalink / raw)
To: xen-devel; +Cc: mpohlack, ross.lagerwall, Pawel Wieczorkiewicz, konrad.wilk
Xen build system may enforce particular gcc version (e.g. gcc72).
Make sure the livepatch-gcc script accepts all input toolchain gcc
commands with or without version specified.
Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
Reviewed-by: Martin Mazein <amazein@amazon.de>
Reviewed-by: Bjoern Doebel <doebel@amazon.de>
---
livepatch-gcc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/livepatch-gcc b/livepatch-gcc
index 634157a..617f865 100755
--- a/livepatch-gcc
+++ b/livepatch-gcc
@@ -25,7 +25,8 @@ shift
declare -a args=("$@")
keep=no
-if [[ "$TOOLCHAINCMD" = "gcc" ]] ; then
+declare -r GCC_RE='gcc.*'
+if [[ "$TOOLCHAINCMD" =~ $GCC_RE ]] ; then
while [ "$#" -gt 0 ]; do
if [ "$1" = "-o" ]; then
obj=$2
--
2.16.5
Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrer: Christian Schlaeger, Ralf Herbrich
Ust-ID: DE 289 237 879
Eingetragen am Amtsgericht Charlottenburg HRB 149173 B
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 12+ messages in thread* [livepatch-build-tools 2/4] livepatch-gcc: Ignore built_in.o and prelink.o object files 2019-04-08 8:32 [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions Pawel Wieczorkiewicz @ 2019-04-08 8:32 ` Pawel Wieczorkiewicz 2019-04-29 12:27 ` Ross Lagerwall 2019-04-08 8:32 ` [livepatch-build-tools 3/4] livepatch-build: Do not follow every symlink for patch file Pawel Wieczorkiewicz ` (2 subsequent siblings) 3 siblings, 1 reply; 12+ messages in thread From: Pawel Wieczorkiewicz @ 2019-04-08 8:32 UTC (permalink / raw) To: xen-devel; +Cc: mpohlack, ross.lagerwall, Pawel Wieczorkiewicz, konrad.wilk Do not copy over the built_in.o and prelink.o object files when they get rebuilt as they are used for transient linking by Xen's build system. Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> Reviewed-by: Martin Pohlack <mpohlack@amazon.de> Reviewed-by: Petre Eftime <epetre@amazon.com> --- livepatch-gcc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/livepatch-gcc b/livepatch-gcc index 617f865..01e4b8c 100755 --- a/livepatch-gcc +++ b/livepatch-gcc @@ -35,6 +35,8 @@ if [[ "$TOOLCHAINCMD" =~ $GCC_RE ]] ; then version.o|\ debug.o|\ *.xen-syms.*.o|\ + built_in.o|\ + prelink.o|\ .*.o) break ;; -- 2.16.5 Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrer: Christian Schlaeger, Ralf Herbrich Ust-ID: DE 289 237 879 Eingetragen am Amtsgericht Charlottenburg HRB 149173 B _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [livepatch-build-tools 2/4] livepatch-gcc: Ignore built_in.o and prelink.o object files 2019-04-08 8:32 ` [livepatch-build-tools 2/4] livepatch-gcc: Ignore built_in.o and prelink.o object files Pawel Wieczorkiewicz @ 2019-04-29 12:27 ` Ross Lagerwall 0 siblings, 0 replies; 12+ messages in thread From: Ross Lagerwall @ 2019-04-29 12:27 UTC (permalink / raw) To: Pawel Wieczorkiewicz, xen-devel; +Cc: mpohlack, konrad.wilk On 4/8/19 9:32 AM, Pawel Wieczorkiewicz wrote: > Do not copy over the built_in.o and prelink.o object files when they > get rebuilt as they are used for transient linking by Xen's build > system. > > Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> > Reviewed-by: Martin Pohlack <mpohlack@amazon.de> > Reviewed-by: Petre Eftime <epetre@amazon.com> Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* [livepatch-build-tools 3/4] livepatch-build: Do not follow every symlink for patch file 2019-04-08 8:32 [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions Pawel Wieczorkiewicz 2019-04-08 8:32 ` [livepatch-build-tools 2/4] livepatch-gcc: Ignore built_in.o and prelink.o object files Pawel Wieczorkiewicz @ 2019-04-08 8:32 ` Pawel Wieczorkiewicz 2019-04-29 12:40 ` Ross Lagerwall 2019-04-08 8:32 ` [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files Pawel Wieczorkiewicz 2019-04-29 12:27 ` [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions Ross Lagerwall 3 siblings, 1 reply; 12+ messages in thread From: Pawel Wieczorkiewicz @ 2019-04-08 8:32 UTC (permalink / raw) To: xen-devel; +Cc: mpohlack, ross.lagerwall, Pawel Wieczorkiewicz, konrad.wilk In some build systems symlinks might be used for patch file names to point from target directories to actual patches. Following those symlinks breaks naming convention as the resulting built modules would be named after the actual hardlink insteads of the symlink. Livepatch-build obtains hotpatch name from the patch file, so it should not canonicalize the file path resolving all the symlinks to not lose the original symlink name. Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> Reviewed-by: Martin Pohlack <mpohlack@amazon.de> Reviewed-by: Bjoern Doebel <doebel@amazon.de> Reviewed-by: Norbert Manthey <nmanthey@amazon.de> --- livepatch-build | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/livepatch-build b/livepatch-build index c057fa1..796838c 100755 --- a/livepatch-build +++ b/livepatch-build @@ -265,7 +265,9 @@ done [ -z "$DEPENDS" ] && die "Build-id dependency not given" SRCDIR="$(readlink -m -- "$srcarg")" -PATCHFILE="$(readlink -m -- "$patcharg")" +# We need an absolute path because we move around, but we need to +# retain the name of the symlink (= realpath -s) +PATCHFILE="$(readlink -f "$(dirname "$patcharg")")/$(basename "$patcharg")" CONFIGFILE="$(readlink -m -- "$configarg")" OUTPUT="$(readlink -m -- "$outputarg")" -- 2.16.5 Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrer: Christian Schlaeger, Ralf Herbrich Ust-ID: DE 289 237 879 Eingetragen am Amtsgericht Charlottenburg HRB 149173 B _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [livepatch-build-tools 3/4] livepatch-build: Do not follow every symlink for patch file 2019-04-08 8:32 ` [livepatch-build-tools 3/4] livepatch-build: Do not follow every symlink for patch file Pawel Wieczorkiewicz @ 2019-04-29 12:40 ` Ross Lagerwall 2019-04-29 15:24 ` Wieczorkiewicz, Pawel 0 siblings, 1 reply; 12+ messages in thread From: Ross Lagerwall @ 2019-04-29 12:40 UTC (permalink / raw) To: Pawel Wieczorkiewicz, xen-devel; +Cc: mpohlack, konrad.wilk On 4/8/19 9:32 AM, Pawel Wieczorkiewicz wrote: > In some build systems symlinks might be used for patch file names > to point from target directories to actual patches. Following those > symlinks breaks naming convention as the resulting built modules > would be named after the actual hardlink insteads of the symlink. > > Livepatch-build obtains hotpatch name from the patch file, so it > should not canonicalize the file path resolving all the symlinks to > not lose the original symlink name. > > Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> > Reviewed-by: Martin Pohlack <mpohlack@amazon.de> > Reviewed-by: Bjoern Doebel <doebel@amazon.de> > Reviewed-by: Norbert Manthey <nmanthey@amazon.de> > --- > livepatch-build | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/livepatch-build b/livepatch-build > index c057fa1..796838c 100755 > --- a/livepatch-build > +++ b/livepatch-build > @@ -265,7 +265,9 @@ done > [ -z "$DEPENDS" ] && die "Build-id dependency not given" > > SRCDIR="$(readlink -m -- "$srcarg")" > -PATCHFILE="$(readlink -m -- "$patcharg")" > +# We need an absolute path because we move around, but we need to > +# retain the name of the symlink (= realpath -s) > +PATCHFILE="$(readlink -f "$(dirname "$patcharg")")/$(basename "$patcharg")" > CONFIGFILE="$(readlink -m -- "$configarg")" > OUTPUT="$(readlink -m -- "$outputarg")" > > This works, but would it not be simpler to just pass $patcharg into make_patch_name()? -- Ross Lagerwall _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [livepatch-build-tools 3/4] livepatch-build: Do not follow every symlink for patch file 2019-04-29 12:40 ` Ross Lagerwall @ 2019-04-29 15:24 ` Wieczorkiewicz, Pawel 0 siblings, 0 replies; 12+ messages in thread From: Wieczorkiewicz, Pawel @ 2019-04-29 15:24 UTC (permalink / raw) To: Ross Lagerwall Cc: Pohlack, Martin, Wieczorkiewicz, Pawel, konrad.wilk@oracle.com, xen-devel@lists.xen.org > On 29. Apr 2019, at 14:40, Ross Lagerwall <ross.lagerwall@citrix.com> wrote: > > On 4/8/19 9:32 AM, Pawel Wieczorkiewicz wrote: >> In some build systems symlinks might be used for patch file names >> to point from target directories to actual patches. Following those >> symlinks breaks naming convention as the resulting built modules >> would be named after the actual hardlink insteads of the symlink. >> Livepatch-build obtains hotpatch name from the patch file, so it >> should not canonicalize the file path resolving all the symlinks to >> not lose the original symlink name. >> Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> >> Reviewed-by: Martin Pohlack <mpohlack@amazon.de> >> Reviewed-by: Bjoern Doebel <doebel@amazon.de> >> Reviewed-by: Norbert Manthey <nmanthey@amazon.de> >> --- >> livepatch-build | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> diff --git a/livepatch-build b/livepatch-build >> index c057fa1..796838c 100755 >> --- a/livepatch-build >> +++ b/livepatch-build >> @@ -265,7 +265,9 @@ done >> [ -z "$DEPENDS" ] && die "Build-id dependency not given" >> SRCDIR="$(readlink -m -- "$srcarg")" >> -PATCHFILE="$(readlink -m -- "$patcharg")" >> +# We need an absolute path because we move around, but we need to >> +# retain the name of the symlink (= realpath -s) >> +PATCHFILE="$(readlink -f "$(dirname "$patcharg")")/$(basename "$patcharg")" >> CONFIGFILE="$(readlink -m -- "$configarg")" >> OUTPUT="$(readlink -m -- "$outputarg")" >> > > This works, but would it not be simpler to just pass $patcharg into make_patch_name()? > No strong opinion here, but the readlink change felt less invasive (no changes to the existing semantics). Thank you for looking into this. > -- > Ross Lagerwall > Best Regards, Pawel Wieczorkiewicz Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrer: Christian Schlaeger, Ralf Herbrich Ust-ID: DE 289 237 879 Eingetragen am Amtsgericht Charlottenburg HRB 149173 B _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files 2019-04-08 8:32 [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions Pawel Wieczorkiewicz 2019-04-08 8:32 ` [livepatch-build-tools 2/4] livepatch-gcc: Ignore built_in.o and prelink.o object files Pawel Wieczorkiewicz 2019-04-08 8:32 ` [livepatch-build-tools 3/4] livepatch-build: Do not follow every symlink for patch file Pawel Wieczorkiewicz @ 2019-04-08 8:32 ` Pawel Wieczorkiewicz 2019-04-29 12:53 ` Andrew Cooper 2019-04-29 13:53 ` Ross Lagerwall 2019-04-29 12:27 ` [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions Ross Lagerwall 3 siblings, 2 replies; 12+ messages in thread From: Pawel Wieczorkiewicz @ 2019-04-08 8:32 UTC (permalink / raw) To: xen-devel; +Cc: mpohlack, ross.lagerwall, Pawel Wieczorkiewicz, konrad.wilk Up to now the livepatch-build ignores newly created object files. When patch applies new .c file and augments its Makefile to build it the resulting object file is not taken into account for final linking step. Such newly created object files can be detected by comparing patched/ and original/ directories and copied over to the output directory for the final linking step. Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> Reviewed-by: Andra-Irina Paraschiv <andraprs@amazon.com> Reviewed-by: Bjoern Doebel <doebel@amazon.de> Reviewed-by: Norbert Manthey <nmanthey@amazon.de> --- livepatch-build | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/livepatch-build b/livepatch-build index 796838c..b43730c 100755 --- a/livepatch-build +++ b/livepatch-build @@ -146,6 +146,12 @@ function create_patch() fi done + NEW_FILES=$(comm -23 <(find patched -type f -name '*.o' | cut -f2- -d'/' | sort -u) <(find original -type f -name '*.o' | cut -f2- -d'/' | sort -u)) + for i in $NEW_FILES; do + cp "patched/$i" "output/$i" + CHANGED=1 + done + if [[ $ERROR -ne 0 ]]; then die "$ERROR error(s) encountered" fi -- 2.16.5 Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrer: Christian Schlaeger, Ralf Herbrich Ust-ID: DE 289 237 879 Eingetragen am Amtsgericht Charlottenburg HRB 149173 B _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files 2019-04-08 8:32 ` [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files Pawel Wieczorkiewicz @ 2019-04-29 12:53 ` Andrew Cooper 2019-04-29 13:53 ` Ross Lagerwall 2019-04-29 13:53 ` Ross Lagerwall 1 sibling, 1 reply; 12+ messages in thread From: Andrew Cooper @ 2019-04-29 12:53 UTC (permalink / raw) To: Pawel Wieczorkiewicz, xen-devel; +Cc: mpohlack, ross.lagerwall, konrad.wilk On 08/04/2019 09:32, Pawel Wieczorkiewicz wrote: > Up to now the livepatch-build ignores newly created object files. > When patch applies new .c file and augments its Makefile to build it > the resulting object file is not taken into account for final linking > step. > > Such newly created object files can be detected by comparing patched/ > and original/ directories and copied over to the output directory for > the final linking step. > > Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> > Reviewed-by: Andra-Irina Paraschiv <andraprs@amazon.com> > Reviewed-by: Bjoern Doebel <doebel@amazon.de> > Reviewed-by: Norbert Manthey <nmanthey@amazon.de> This looks to resolve: https://xenproject.atlassian.net/browse/XEN-90 (I think?) ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files 2019-04-29 12:53 ` Andrew Cooper @ 2019-04-29 13:53 ` Ross Lagerwall 0 siblings, 0 replies; 12+ messages in thread From: Ross Lagerwall @ 2019-04-29 13:53 UTC (permalink / raw) To: Andrew Cooper, Pawel Wieczorkiewicz, xen-devel; +Cc: mpohlack, konrad.wilk On 4/29/19 1:53 PM, Andrew Cooper wrote: > On 08/04/2019 09:32, Pawel Wieczorkiewicz wrote: >> Up to now the livepatch-build ignores newly created object files. >> When patch applies new .c file and augments its Makefile to build it >> the resulting object file is not taken into account for final linking >> step. >> >> Such newly created object files can be detected by comparing patched/ >> and original/ directories and copied over to the output directory for >> the final linking step. >> >> Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> >> Reviewed-by: Andra-Irina Paraschiv <andraprs@amazon.com> >> Reviewed-by: Bjoern Doebel <doebel@amazon.de> >> Reviewed-by: Norbert Manthey <nmanthey@amazon.de> > > This looks to resolve: > > https://xenproject.atlassian.net/browse/XEN-90 > > (I think?) > Yes, I expect it would. -- Ross Lagerwall _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files 2019-04-08 8:32 ` [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files Pawel Wieczorkiewicz 2019-04-29 12:53 ` Andrew Cooper @ 2019-04-29 13:53 ` Ross Lagerwall 2019-04-29 15:43 ` Wieczorkiewicz, Pawel 1 sibling, 1 reply; 12+ messages in thread From: Ross Lagerwall @ 2019-04-29 13:53 UTC (permalink / raw) To: Pawel Wieczorkiewicz, xen-devel; +Cc: mpohlack, konrad.wilk On 4/8/19 9:32 AM, Pawel Wieczorkiewicz wrote: > Up to now the livepatch-build ignores newly created object files. > When patch applies new .c file and augments its Makefile to build it > the resulting object file is not taken into account for final linking > step. > > Such newly created object files can be detected by comparing patched/ > and original/ directories and copied over to the output directory for > the final linking step. > > Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> > Reviewed-by: Andra-Irina Paraschiv <andraprs@amazon.com> > Reviewed-by: Bjoern Doebel <doebel@amazon.de> > Reviewed-by: Norbert Manthey <nmanthey@amazon.de> > --- > livepatch-build | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/livepatch-build b/livepatch-build > index 796838c..b43730c 100755 > --- a/livepatch-build > +++ b/livepatch-build > @@ -146,6 +146,12 @@ function create_patch() > fi > done > > + NEW_FILES=$(comm -23 <(find patched -type f -name '*.o' | cut -f2- -d'/' | sort -u) <(find original -type f -name '*.o' | cut -f2- -d'/' | sort -u)) The paths should be `patched/xen` and `original/xen` so that only hypervisor changes are processed. It is done this way earlier (see FILES="$(find xen ...)"). Since process substitution creates a subshell, it might be simpler to do <(cd patched/xen && find . ...) and then drop the `cut`. Also, the `-u` argument to sort seems unnecessary. > + for i in $NEW_FILES; do > + cp "patched/$i" "output/$i" > + CHANGED=1 > + done If the live patch for whatever reason has no "patched" object files and only "new" object files, then it is not going to do anything useful since nothing will use the new functions. This should fail to build with an error. E.g. set NEW=1 above and then later check for CHANGED=0 && NEW=1. Previously all object files that were linked into the livepatch were from the output of create-diff-object. This change just includes the newly built object files directly. I wonder if there are any issues or subtle differences when doing this? A couple of differences off the top of my head: 1) The object file will include _everything_ (e.g. potentially unused functions) while create-diff-object generally only includes the minimum that is needed. 2) Hooks and ignored functions/sections in the new object file would not be processed at all. The was previously a patch on xen-devel which took a different approach (https://lists.xenproject.org/archives/html/xen-devel/2017-06/msg03532.html). Perhaps you could look at it and see which approach would be better? Thanks, -- Ross Lagerwall _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files 2019-04-29 13:53 ` Ross Lagerwall @ 2019-04-29 15:43 ` Wieczorkiewicz, Pawel 0 siblings, 0 replies; 12+ messages in thread From: Wieczorkiewicz, Pawel @ 2019-04-29 15:43 UTC (permalink / raw) To: Ross Lagerwall Cc: Pohlack, Martin, Wieczorkiewicz, Pawel, konrad.wilk@oracle.com, xen-devel@lists.xen.org > On 29. Apr 2019, at 15:53, Ross Lagerwall <ross.lagerwall@citrix.com> wrote: > > On 4/8/19 9:32 AM, Pawel Wieczorkiewicz wrote: >> Up to now the livepatch-build ignores newly created object files. >> When patch applies new .c file and augments its Makefile to build it >> the resulting object file is not taken into account for final linking >> step. >> Such newly created object files can be detected by comparing patched/ >> and original/ directories and copied over to the output directory for >> the final linking step. >> Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> >> Reviewed-by: Andra-Irina Paraschiv <andraprs@amazon.com> >> Reviewed-by: Bjoern Doebel <doebel@amazon.de> >> Reviewed-by: Norbert Manthey <nmanthey@amazon.de> >> --- >> livepatch-build | 6 ++++++ >> 1 file changed, 6 insertions(+) >> diff --git a/livepatch-build b/livepatch-build >> index 796838c..b43730c 100755 >> --- a/livepatch-build >> +++ b/livepatch-build >> @@ -146,6 +146,12 @@ function create_patch() >> fi >> done >> + NEW_FILES=$(comm -23 <(find patched -type f -name '*.o' | cut -f2- -d'/' | sort -u) <(find original -type f -name '*.o' | cut -f2- -d'/' | sort -u)) > > The paths should be `patched/xen` and `original/xen` so that only hypervisor changes are processed. It is done this way earlier (see FILES="$(find xen ...)"). ACK. Will fix. > > Since process substitution creates a subshell, it might be simpler to do <(cd patched/xen && find . ...) and then drop the `cut`. Also, the `-u` argument to sort seems unnecessary. ACK. Will fix. The -u for sort is just my paranoia. > >> + for i in $NEW_FILES; do >> + cp "patched/$i" "output/$i" >> + CHANGED=1 >> + done > > If the live patch for whatever reason has no "patched" object files and only "new" object files, then it is not going to do anything useful since nothing will use the new functions. This should fail to build with an error. E.g. set NEW=1 above and then later check for CHANGED=0 && NEW=1. > I disagree here. Inline assembly patching can use new functions even without having any "patched" objects. Also hotpatch modules with hooks (functionality I will send upstream soon) can use the "new" objects provided functionality for various reasons (re-registrating a callback for instance, or some testing related activities). > Previously all object files that were linked into the livepatch were from the output of create-diff-object. This change just includes the newly built object files directly. I wonder if there are any issues or subtle differences when doing this? A couple of differences off the top of my head: > > 1) The object file will include _everything_ (e.g. potentially unused functions) while create-diff-object generally only includes the minimum that is needed. Yes, that’s right. When a patch defines new files (and thereby new object files) it should do it wisely. > > 2) Hooks and ignored functions/sections in the new object file would not be processed at all. Not sure I follow the point here, but hooks and functions properly defined in new object files will be processed and used during link time. I have a test hotpatch that does that. > > The was previously a patch on xen-devel which took a different approach (https://lists.xenproject.org/archives/html/xen-devel/2017-06/msg03532.html). Perhaps you could look at it and see which approach would be better? Taking a look. Thanks. > > Thanks, > -- > Ross Lagerwall > > Best Regards, Pawel Wieczorkiewicz Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrer: Christian Schlaeger, Ralf Herbrich Ust-ID: DE 289 237 879 Eingetragen am Amtsgericht Charlottenburg HRB 149173 B _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions 2019-04-08 8:32 [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions Pawel Wieczorkiewicz ` (2 preceding siblings ...) 2019-04-08 8:32 ` [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files Pawel Wieczorkiewicz @ 2019-04-29 12:27 ` Ross Lagerwall 3 siblings, 0 replies; 12+ messages in thread From: Ross Lagerwall @ 2019-04-29 12:27 UTC (permalink / raw) To: Pawel Wieczorkiewicz, xen-devel; +Cc: mpohlack, konrad.wilk On 4/8/19 9:32 AM, Pawel Wieczorkiewicz wrote: > Xen build system may enforce particular gcc version (e.g. gcc72). > Make sure the livepatch-gcc script accepts all input toolchain gcc > commands with or without version specified. > > Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de> > Reviewed-by: Martin Mazein <amazein@amazon.de> > Reviewed-by: Bjoern Doebel <doebel@amazon.de> Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2019-04-29 15:43 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-04-08 8:32 [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions Pawel Wieczorkiewicz 2019-04-08 8:32 ` [livepatch-build-tools 2/4] livepatch-gcc: Ignore built_in.o and prelink.o object files Pawel Wieczorkiewicz 2019-04-29 12:27 ` Ross Lagerwall 2019-04-08 8:32 ` [livepatch-build-tools 3/4] livepatch-build: Do not follow every symlink for patch file Pawel Wieczorkiewicz 2019-04-29 12:40 ` Ross Lagerwall 2019-04-29 15:24 ` Wieczorkiewicz, Pawel 2019-04-08 8:32 ` [livepatch-build-tools 4/4] livepatch-build: Handle newly created object files Pawel Wieczorkiewicz 2019-04-29 12:53 ` Andrew Cooper 2019-04-29 13:53 ` Ross Lagerwall 2019-04-29 13:53 ` Ross Lagerwall 2019-04-29 15:43 ` Wieczorkiewicz, Pawel 2019-04-29 12:27 ` [livepatch-build-tools 1/4] livepatch-gcc: Allow toolchain command with versions Ross Lagerwall
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).