Message ID | 20190517023924.1686-3-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | Add qemu_getrandom and ARMv8.5-RNG etc | expand |
On Thu, May 16, 2019 at 07:39:01PM -0700, Richard Henderson wrote: > For user-only, we require only the random number bits of the > crypto subsystem. Rename crypto-aes-obj-y to crypto-user-obj-y, > and add the random number objects, plus init.o to handle any > extra stuff the crypto library requires. If you pull in my authz patch first: https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg04863.html then we can just kill crypto-aes-obj-y entirely, and make linux-user reference crypto-obj-y as normal. My patch avoids pulling in PAM, and your previous patch takes care of the static linking problem. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On 5/21/19 11:04 AM, Daniel P. Berrangé wrote: > On Thu, May 16, 2019 at 07:39:01PM -0700, Richard Henderson wrote: >> For user-only, we require only the random number bits of the >> crypto subsystem. Rename crypto-aes-obj-y to crypto-user-obj-y, >> and add the random number objects, plus init.o to handle any >> extra stuff the crypto library requires. > > If you pull in my authz patch first: > > https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg04863.html > > then we can just kill crypto-aes-obj-y entirely, and make > linux-user reference crypto-obj-y as normal. My patch avoids > pulling in PAM, and your previous patch takes care of the > static linking problem. You would think so, wouldn't you. And yet, not. CC authz/base.o /home/rth/qemu/qemu/authz/base.c:23:10: fatal error: trace.h: No such file or directory #include "trace.h" ^~~~~~~~~ compilation terminated. We're missing some dependency somewhere, and I have no idea what's missing. This for ../qemu/configure --static --disable-system --disable-tools I have a working configuration here in v8. Can we please leave the bikeshed unpainted for the moment and you can adjust the makefiles as you see fit afterward? Otherwise, I'll pass the entire series off to you and leave it at that. r~
On Wed, May 22, 2019 at 06:52:45AM -0400, Richard Henderson wrote: > On 5/21/19 11:04 AM, Daniel P. Berrangé wrote: > > On Thu, May 16, 2019 at 07:39:01PM -0700, Richard Henderson wrote: > >> For user-only, we require only the random number bits of the > >> crypto subsystem. Rename crypto-aes-obj-y to crypto-user-obj-y, > >> and add the random number objects, plus init.o to handle any > >> extra stuff the crypto library requires. > > > > If you pull in my authz patch first: > > > > https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg04863.html > > > > then we can just kill crypto-aes-obj-y entirely, and make > > linux-user reference crypto-obj-y as normal. My patch avoids > > pulling in PAM, and your previous patch takes care of the > > static linking problem. > > You would think so, wouldn't you. And yet, not. > > CC authz/base.o > /home/rth/qemu/qemu/authz/base.c:23:10: fatal error: trace.h: No such file or > directory > #include "trace.h" > ^~~~~~~~~ > compilation terminated. > > We're missing some dependency somewhere, and I have no idea what's missing. > > This for > > ../qemu/configure --static --disable-system --disable-tools > > I have a working configuration here in v8. Can we please leave the bikeshed > unpainted for the moment and you can adjust the makefiles as you see fit afterward? Yep, ok. I'll be away on holiday for a while so don't have time to look into it now. So lets get this merged as is & I'll investigate further when I come back. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On Thu, May 16, 2019 at 07:39:01PM -0700, Richard Henderson wrote: > For user-only, we require only the random number bits of the > crypto subsystem. Rename crypto-aes-obj-y to crypto-user-obj-y, > and add the random number objects, plus init.o to handle any > extra stuff the crypto library requires. > > Move the crypto libraries from libs_softmmu and libs_tools to > LIBS, so that they are universally used. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > Makefile | 4 ++-- > Makefile.objs | 2 +- > Makefile.target | 4 ++-- > configure | 9 +++------ > crypto/Makefile.objs | 11 ++++++----- > 5 files changed, 14 insertions(+), 16 deletions(-) Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On 5/22/19 6:56 AM, Daniel P. Berrangé wrote: >> I have a working configuration here in v8. Can we please leave the bikeshed >> unpainted for the moment and you can adjust the makefiles as you see fit afterward? > > Yep, ok. I'll be away on holiday for a while so don't have time to look > into it now. So lets get this merged as is & I'll investigate further > when I come back. Thanks. r~
On 22/05/2019 12:56, Daniel P. Berrangé wrote: > On Wed, May 22, 2019 at 06:52:45AM -0400, Richard Henderson wrote: >> On 5/21/19 11:04 AM, Daniel P. Berrangé wrote: >>> On Thu, May 16, 2019 at 07:39:01PM -0700, Richard Henderson wrote: >>>> For user-only, we require only the random number bits of the >>>> crypto subsystem. Rename crypto-aes-obj-y to crypto-user-obj-y, >>>> and add the random number objects, plus init.o to handle any >>>> extra stuff the crypto library requires. >>> >>> If you pull in my authz patch first: >>> >>> https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg04863.html >>> >>> then we can just kill crypto-aes-obj-y entirely, and make >>> linux-user reference crypto-obj-y as normal. My patch avoids >>> pulling in PAM, and your previous patch takes care of the >>> static linking problem. >> >> You would think so, wouldn't you. And yet, not. >> >> CC authz/base.o >> /home/rth/qemu/qemu/authz/base.c:23:10: fatal error: trace.h: No such file or >> directory >> #include "trace.h" >> ^~~~~~~~~ >> compilation terminated. >> >> We're missing some dependency somewhere, and I have no idea what's missing. >> >> This for >> >> ../qemu/configure --static --disable-system --disable-tools >> >> I have a working configuration here in v8. Can we please leave the bikeshed >> unpainted for the moment and you can adjust the makefiles as you see fit afterward? > > Yep, ok. I'll be away on holiday for a while so don't have time to look > into it now. So lets get this merged as is & I'll investigate further > when I come back. I thin in Makefile.objs: trace-events-subdirs += authz should be moved out of "ifeq ($(CONFIG_BLOCK),y)". Thanks, Laurent
diff --git a/Makefile b/Makefile index 66d5c65156..8419d759e0 100644 --- a/Makefile +++ b/Makefile @@ -410,7 +410,7 @@ dummy := $(call unnest-vars,, \ block-obj-y \ block-obj-m \ crypto-obj-y \ - crypto-aes-obj-y \ + crypto-user-obj-y \ qom-obj-y \ io-obj-y \ common-obj-y \ @@ -483,7 +483,7 @@ subdir-slirp: .git-submodule-status $(call quiet-command,$(MAKE) -C $(SRC_PATH)/slirp BUILD_DIR="$(BUILD_DIR)/slirp" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)") $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \ - $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY)) + $(qom-obj-y) $(crypto-user-obj-$(CONFIG_USER_ONLY)) ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS)) # Only keep -O and -g cflags diff --git a/Makefile.objs b/Makefile.objs index cf065de5ed..84fa83ba21 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -25,7 +25,7 @@ block-obj-m = block/ # crypto-obj-y is code used by both qemu system emulation and qemu-img crypto-obj-y = crypto/ -crypto-aes-obj-y = crypto/ +crypto-user-obj-y = crypto/ ####################################################################### # qom-obj-y is code used by both qemu system emulation and qemu-img diff --git a/Makefile.target b/Makefile.target index ae02495951..bde256436b 100644 --- a/Makefile.target +++ b/Makefile.target @@ -180,7 +180,7 @@ dummy := $(call unnest-vars,.., \ block-obj-m \ chardev-obj-y \ crypto-obj-y \ - crypto-aes-obj-y \ + crypto-user-obj-y \ qom-obj-y \ io-obj-y \ common-obj-y \ @@ -189,7 +189,7 @@ all-obj-y += $(common-obj-y) all-obj-y += $(qom-obj-y) all-obj-$(CONFIG_SOFTMMU) += $(authz-obj-y) all-obj-$(CONFIG_SOFTMMU) += $(block-obj-y) $(chardev-obj-y) -all-obj-$(CONFIG_USER_ONLY) += $(crypto-aes-obj-y) +all-obj-$(CONFIG_USER_ONLY) += $(crypto-user-obj-y) all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y) all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y) diff --git a/configure b/configure index f8345368bf..03e71ef7b6 100755 --- a/configure +++ b/configure @@ -2792,8 +2792,7 @@ if test "$gnutls" != "no"; then # At least ubuntu 18.04 ships only shared libraries. write_c_skeleton if compile_prog "" "$gnutls_libs" ; then - libs_softmmu="$gnutls_libs $libs_softmmu" - libs_tools="$gnutls_libs $libs_tools" + LIBS="$gnutls_libs $LIBS" QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" pass="yes" fi @@ -2864,8 +2863,7 @@ if test "$nettle" != "no"; then # Link test to make sure the given libraries work (e.g for static). write_c_skeleton if compile_prog "" "$nettle_libs" ; then - libs_softmmu="$nettle_libs $libs_softmmu" - libs_tools="$nettle_libs $libs_tools" + LIBS="$nettle_libs $LIBS" QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags" if test -z "$gcrypt"; then gcrypt="no" @@ -2896,8 +2894,7 @@ if test "$gcrypt" != "no"; then # Link test to make sure the given libraries work (e.g for static). write_c_skeleton if compile_prog "" "$gcrypt_libs" ; then - libs_softmmu="$gcrypt_libs $libs_softmmu" - libs_tools="$gcrypt_libs $libs_tools" + LIBS="$gcrypt_libs $LIBS" QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags" pass="yes" fi diff --git a/crypto/Makefile.objs b/crypto/Makefile.objs index 256c9aca1f..7fe2fa9da2 100644 --- a/crypto/Makefile.objs +++ b/crypto/Makefile.objs @@ -19,9 +19,10 @@ crypto-obj-y += tlscredspsk.o crypto-obj-y += tlscredsx509.o crypto-obj-y += tlssession.o crypto-obj-y += secret.o -crypto-obj-$(CONFIG_GCRYPT) += random-gcrypt.o -crypto-obj-$(if $(CONFIG_GCRYPT),n,$(CONFIG_GNUTLS)) += random-gnutls.o -crypto-obj-$(if $(CONFIG_GCRYPT),n,$(if $(CONFIG_GNUTLS),n,y)) += random-platform.o +crypto-rng-obj-$(CONFIG_GCRYPT) += random-gcrypt.o +crypto-rng-obj-$(if $(CONFIG_GCRYPT),n,$(CONFIG_GNUTLS)) += random-gnutls.o +crypto-rng-obj-$(if $(CONFIG_GCRYPT),n,$(if $(CONFIG_GNUTLS),n,y)) += random-platform.o +crypto-obj-y += $(crypto-rng-obj-y) crypto-obj-y += pbkdf.o crypto-obj-$(CONFIG_NETTLE) += pbkdf-nettle.o crypto-obj-$(if $(CONFIG_NETTLE),n,$(CONFIG_GCRYPT)) += pbkdf-gcrypt.o @@ -35,7 +36,7 @@ crypto-obj-y += block.o crypto-obj-y += block-qcow.o crypto-obj-y += block-luks.o -# Let the userspace emulators avoid linking gnutls/etc -crypto-aes-obj-y = aes.o +# Let the userspace emulators avoid linking stuff they won't use. +crypto-user-obj-y = aes.o $(crypto-rng-obj-y) init.o stub-obj-y += pbkdf-stub.o
For user-only, we require only the random number bits of the crypto subsystem. Rename crypto-aes-obj-y to crypto-user-obj-y, and add the random number objects, plus init.o to handle any extra stuff the crypto library requires. Move the crypto libraries from libs_softmmu and libs_tools to LIBS, so that they are universally used. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- Makefile | 4 ++-- Makefile.objs | 2 +- Makefile.target | 4 ++-- configure | 9 +++------ crypto/Makefile.objs | 11 ++++++----- 5 files changed, 14 insertions(+), 16 deletions(-) -- 2.17.1