Skip to content

Instantly share code, notes, and snippets.

@mrtheduke
Created May 15, 2017 08:17
Show Gist options
  • Save mrtheduke/92a0f8dc44b9b9a8281b9d952d86c176 to your computer and use it in GitHub Desktop.
Save mrtheduke/92a0f8dc44b9b9a8281b9d952d86c176 to your computer and use it in GitHub Desktop.
Waynes-MacBook-Pro:~ wayne$ git clone https://github.com/espes/xqemu.git
Cloning into 'xqemu'...
remote: Counting objects: 169444, done.
remote: Total 169444 (delta 0), reused 0 (delta 0), pack-reused 169444
Receiving objects: 100% (169444/169444), 67.72 MiB | 1.72 MiB/s, done.
Resolving deltas: 100% (133123/133123), done.
Waynes-MacBook-Pro:~ wayne$ cd xqemu
Waynes-MacBook-Pro:xqemu wayne$ ./configure --cc=clang --enable-opengl --disable-vnc --disable-user --target-list=xbox-softmmu --extra-cflags="-march=native" --enable-debug
ld: unknown option: --verbose
Install prefix /usr/local
BIOS directory /usr/local/share/qemu
binary directory /usr/local/bin
library directory /usr/local/lib
libexec directory /usr/local/libexec
include directory /usr/local/include
config directory /usr/local/etc
local state directory /usr/local/var
Manual directory /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /Users/wayne/xqemu
C compiler clang
Host C compiler cc
C++ compiler c++
Objective-C compiler clang
ARFLAGS rv
CFLAGS -g
QEMU_CFLAGS -m64 -DOS_OBJECT_USE_OBJC=0 -arch x86_64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -march=native -Wno-string-plus-int -Wno-initializer-overrides -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-definition -Wtype-limits -fstack-protector-all -I/usr/local/Cellar/libusb/1.0.21/include/libusb-1.0 -I/usr/local/Cellar/pixman/0.34.0/include/pixman-1
LDFLAGS -m64 -framework CoreFoundation -framework IOKit -arch x86_64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
host CPU x86_64
host big endian no
target list xbox-softmmu
tcg debug enabled yes
gprof enabled no
sparse enabled no
strip binaries no
profiler no
static build no
-Werror enabled no
Cocoa support yes
pixman system
SDL support
GTK support no
curses support yes
curl support yes
mingw32 support no
Audio drivers coreaudio
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support no
xen support no
brlapi support no
bluez support no
Documentation yes
GUEST_BASE yes
PIE no
vde support no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support no
RDMA support no
TCG interpreter no
fdt support no
preadv support no
fdatasync no
madvise yes
posix_madvise yes
sigev_thread_id no
uuid support yes
libcap-ng support no
vhost-net support no
vhost-scsi support no
Trace backend nop
Trace output file trace-<pid>
spice support no (/)
rbd support no
xfsctl support no
nss used no
libusb yes
usb net redir no
OpenGL support yes
libiscsi support no
build guest agent yes
QGA VSS support no
seccomp support no
coroutine backend sigaltstack
coroutine pool yes
GlusterFS support no
virtio-blk-data-plane no
gcov gcov
gcov enabled no
TPM support no
libssh2 support no
TPM passthrough no
QOM debugging yes
vhdx yes
Waynes-MacBook-Pro:xqemu wayne$ make
GEN xbox-softmmu/config-devices.mak
GEN config-all-devices.mak
GEN config-host.h
GEN qemu-options.def
GEN qmp-commands.h
GEN qapi-types.h
GEN qapi-visit.h
GEN trace/generated-events.h
GEN trace/generated-tracers.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN qemu-options.texi
GEN qemu-monitor.texi
GEN qemu-img-cmds.texi
GEN qemu-doc.html
qemu-doc.texi:7: warning: unrecognized encoding name `UTF-8'.
GEN qemu-tech.html
qemu-tech.texi:7: warning: unrecognized encoding name `UTF-8'.
GEN qemu.1
GEN qemu-img.1
GEN qemu-nbd.8
GEN qmp-commands.txt
GEN qapi-types.c
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-commands.h
CC qapi-types.o
GEN qapi-visit.c
CC qapi-visit.o
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
CC qga/commands-posix.o
CC qga/channel-posix.o
GEN qga/qapi-generated/qga-qapi-types.c
CC qga/qapi-generated/qga-qapi-types.o
GEN qga/qapi-generated/qga-qapi-visit.c
CC qga/qapi-generated/qga-qapi-visit.o
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qga/qapi-generated/qga-qmp-marshal.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qmp-input-visitor.o
CC qapi/qmp-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qobject/qint.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qfloat.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC qobject/qerror.o
GEN trace/generated-events.c
CC trace/generated-events.o
CC trace/default.o
CC trace/control.o
GEN trace/generated-tracers.c
CC trace/generated-tracers.o
CC util/osdep.o
CC util/cutils.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/oslib-posix.o
CC util/qemu-thread-posix.o
CC util/event_notifier-posix.o
CC util/qemu-openpty.o
CC util/envlist.o
CC util/path.o
CC util/host-utils.o
CC util/cache-utils.o
CC util/module.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/error.o
CC util/qemu-error.o
CC util/compatfd.o
CC util/iov.o
CC util/aes.o
CC util/qemu-config.o
CC util/qemu-sockets.o
util/qemu-sockets.c:33:18: warning: unused variable 'on'
[-Wunused-const-variable]
static const int on=1, off=0;
^
1 warning generated.
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/hexdump.o
CC util/crc32c.o
CC util/throttle.o
AR libqemuutil.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libqemuutil.a(generated-tracers.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libqemuutil.a(host-utils.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libqemuutil.a(cache-utils.o) has no symbols
CC stubs/arch-query-cpu-def.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/fdset-add-fd.o
CC stubs/fdset-find-fd.o
CC stubs/fdset-get-fd.o
CC stubs/fdset-remove-fd.o
CC stubs/gdbstub.o
CC stubs/get-fd.o
CC stubs/get-vm-name.o
CC stubs/iothread-lock.o
CC stubs/migr-blocker.o
CC stubs/mon-is-qmp.o
CC stubs/mon-printf.o
CC stubs/mon-print-filename.o
CC stubs/mon-protocol-event.o
CC stubs/mon-set-error.o
CC stubs/pci-drive-hot-add.o
CC stubs/reset.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/cpus.o
AR libqemustub.a
LINK qemu-ga
CC qemu-nbd.o
CC async.o
CC thread-pool.o
CC nbd.o
CC block.o
CC blockjob.o
CC main-loop.o
CC iohandler.o
CC qemu-timer.o
CC aio-posix.o
CC qemu-io-cmds.o
CC qemu-coroutine.o
CC qemu-coroutine-lock.o
CC qemu-coroutine-io.o
CC qemu-coroutine-sleep.o
CC coroutine-sigaltstack.o
CC block/raw_bsd.o
CC block/cow.o
CC block/qcow.o
block/qcow.c:108:19: warning: taking address of packed member 'magic' of class
or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.magic);
^~~~~~~~~~~~
block/qcow.c:109:19: warning: taking address of packed member 'version' of class
or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.version);
^~~~~~~~~~~~~~
block/qcow.c:110:19: warning: taking address of packed member
'backing_file_offset' of class or structure 'QCowHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
be64_to_cpus(&header.backing_file_offset);
^~~~~~~~~~~~~~~~~~~~~~~~~~
block/qcow.c:111:19: warning: taking address of packed member
'backing_file_size' of class or structure 'QCowHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
be32_to_cpus(&header.backing_file_size);
^~~~~~~~~~~~~~~~~~~~~~~~
block/qcow.c:112:19: warning: taking address of packed member 'mtime' of class
or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.mtime);
^~~~~~~~~~~~
block/qcow.c:113:19: warning: taking address of packed member 'size' of class or
structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be64_to_cpus(&header.size);
^~~~~~~~~~~
block/qcow.c:114:19: warning: taking address of packed member 'crypt_method' of
class or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.crypt_method);
^~~~~~~~~~~~~~~~~~~
block/qcow.c:115:19: warning: taking address of packed member 'l1_table_offset'
of class or structure 'QCowHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
be64_to_cpus(&header.l1_table_offset);
^~~~~~~~~~~~~~~~~~~~~~
8 warnings generated.
CC block/vdi.o
block/vdi.c:202:19: warning: taking address of packed member 'signature' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->signature);
^~~~~~~~~~~~~~~~~
block/vdi.c:203:19: warning: taking address of packed member 'version' of class
or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->version);
^~~~~~~~~~~~~~~
block/vdi.c:204:19: warning: taking address of packed member 'header_size' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->header_size);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:205:19: warning: taking address of packed member 'image_type' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->image_type);
^~~~~~~~~~~~~~~~~~
block/vdi.c:206:19: warning: taking address of packed member 'image_flags' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->image_flags);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:207:19: warning: taking address of packed member 'offset_bmap' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->offset_bmap);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:208:19: warning: taking address of packed member 'offset_data' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->offset_data);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:209:19: warning: taking address of packed member 'cylinders' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->cylinders);
^~~~~~~~~~~~~~~~~
block/vdi.c:210:19: warning: taking address of packed member 'heads' of class or
structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->heads);
^~~~~~~~~~~~~
block/vdi.c:211:19: warning: taking address of packed member 'sectors' of class
or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->sectors);
^~~~~~~~~~~~~~~
block/vdi.c:212:19: warning: taking address of packed member 'sector_size' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->sector_size);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:213:19: warning: taking address of packed member 'disk_size' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le64_to_cpus(&header->disk_size);
^~~~~~~~~~~~~~~~~
block/vdi.c:214:19: warning: taking address of packed member 'block_size' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->block_size);
^~~~~~~~~~~~~~~~~~
block/vdi.c:215:19: warning: taking address of packed member 'block_extra' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->block_extra);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:216:19: warning: taking address of packed member 'blocks_in_image'
of class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->blocks_in_image);
^~~~~~~~~~~~~~~~~~~~~~~
block/vdi.c:217:19: warning: taking address of packed member 'blocks_allocated'
of class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&header->blocks_allocated);
^~~~~~~~~~~~~~~~~~~~~~~~
block/vdi.c:226:19: warning: taking address of packed member 'signature' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->signature);
^~~~~~~~~~~~~~~~~
block/vdi.c:227:19: warning: taking address of packed member 'version' of class
or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->version);
^~~~~~~~~~~~~~~
block/vdi.c:228:19: warning: taking address of packed member 'header_size' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->header_size);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:229:19: warning: taking address of packed member 'image_type' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->image_type);
^~~~~~~~~~~~~~~~~~
block/vdi.c:230:19: warning: taking address of packed member 'image_flags' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->image_flags);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:231:19: warning: taking address of packed member 'offset_bmap' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->offset_bmap);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:232:19: warning: taking address of packed member 'offset_data' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->offset_data);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:233:19: warning: taking address of packed member 'cylinders' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->cylinders);
^~~~~~~~~~~~~~~~~
block/vdi.c:234:19: warning: taking address of packed member 'heads' of class or
structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->heads);
^~~~~~~~~~~~~
block/vdi.c:235:19: warning: taking address of packed member 'sectors' of class
or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->sectors);
^~~~~~~~~~~~~~~
block/vdi.c:236:19: warning: taking address of packed member 'sector_size' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->sector_size);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:237:19: warning: taking address of packed member 'disk_size' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le64s(&header->disk_size);
^~~~~~~~~~~~~~~~~
block/vdi.c:238:19: warning: taking address of packed member 'block_size' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->block_size);
^~~~~~~~~~~~~~~~~~
block/vdi.c:239:19: warning: taking address of packed member 'block_extra' of
class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->block_extra);
^~~~~~~~~~~~~~~~~~~
block/vdi.c:240:19: warning: taking address of packed member 'blocks_in_image'
of class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->blocks_in_image);
^~~~~~~~~~~~~~~~~~~~~~~
block/vdi.c:241:19: warning: taking address of packed member 'blocks_allocated'
of class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->blocks_allocated);
^~~~~~~~~~~~~~~~~~~~~~~~
block/vdi.c:242:19: warning: taking address of packed member 'blocks_allocated'
of class or structure 'VdiHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&header->blocks_allocated);
^~~~~~~~~~~~~~~~~~~~~~~~
33 warnings generated.
CC block/vmdk.o
CC block/cloop.o
CC block/dmg.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/qcow2.o
block/qcow2.c:110:23: warning: taking address of packed member 'magic' of class
or structure 'QCowExtension' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&ext.magic);
^~~~~~~~~
block/qcow2.c:111:23: warning: taking address of packed member 'len' of class or
structure 'QCowExtension' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&ext.len);
^~~~~~~
block/qcow2.c:466:19: warning: taking address of packed member 'magic' of class
or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.magic);
^~~~~~~~~~~~
block/qcow2.c:467:19: warning: taking address of packed member 'version' of
class or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.version);
^~~~~~~~~~~~~~
block/qcow2.c:468:19: warning: taking address of packed member
'backing_file_offset' of class or structure 'QCowHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
be64_to_cpus(&header.backing_file_offset);
^~~~~~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:469:19: warning: taking address of packed member
'backing_file_size' of class or structure 'QCowHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
be32_to_cpus(&header.backing_file_size);
^~~~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:470:19: warning: taking address of packed member 'size' of class
or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be64_to_cpus(&header.size);
^~~~~~~~~~~
block/qcow2.c:471:19: warning: taking address of packed member 'cluster_bits' of
class or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.cluster_bits);
^~~~~~~~~~~~~~~~~~~
block/qcow2.c:472:19: warning: taking address of packed member 'crypt_method' of
class or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.crypt_method);
^~~~~~~~~~~~~~~~~~~
block/qcow2.c:473:19: warning: taking address of packed member 'l1_table_offset'
of class or structure 'QCowHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
be64_to_cpus(&header.l1_table_offset);
^~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:474:19: warning: taking address of packed member 'l1_size' of
class or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.l1_size);
^~~~~~~~~~~~~~
block/qcow2.c:475:19: warning: taking address of packed member
'refcount_table_offset' of class or structure 'QCowHeader' may result in
an unaligned pointer value [-Waddress-of-packed-member]
be64_to_cpus(&header.refcount_table_offset);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:476:19: warning: taking address of packed member
'refcount_table_clusters' of class or structure 'QCowHeader' may result in
an unaligned pointer value [-Waddress-of-packed-member]
be32_to_cpus(&header.refcount_table_clusters);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:477:19: warning: taking address of packed member
'snapshots_offset' of class or structure 'QCowHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
be64_to_cpus(&header.snapshots_offset);
^~~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:478:19: warning: taking address of packed member 'nb_snapshots' of
class or structure 'QCowHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
be32_to_cpus(&header.nb_snapshots);
^~~~~~~~~~~~~~~~~~~
block/qcow2.c:513:23: warning: taking address of packed member
'incompatible_features' of class or structure 'QCowHeader' may result in
an unaligned pointer value [-Waddress-of-packed-member]
be64_to_cpus(&header.incompatible_features);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:514:23: warning: taking address of packed member
'compatible_features' of class or structure 'QCowHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
be64_to_cpus(&header.compatible_features);
^~~~~~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:515:23: warning: taking address of packed member
'autoclear_features' of class or structure 'QCowHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
be64_to_cpus(&header.autoclear_features);
^~~~~~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:516:23: warning: taking address of packed member 'refcount_order'
of class or structure 'QCowHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
be32_to_cpus(&header.refcount_order);
^~~~~~~~~~~~~~~~~~~~~
block/qcow2.c:517:23: warning: taking address of packed member 'header_length'
of class or structure 'QCowHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
be32_to_cpus(&header.header_length);
^~~~~~~~~~~~~~~~~~~~
20 warnings generated.
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qed.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
In file included from block/vhdx.c:22:
./block/vhdx.h:418:19: warning: taking address of packed member 'data1' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&guid->data1);
^~~~~~~~~~~
./block/vhdx.h:419:19: warning: taking address of packed member 'data2' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le16_to_cpus(&guid->data2);
^~~~~~~~~~~
./block/vhdx.h:420:19: warning: taking address of packed member 'data3' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le16_to_cpus(&guid->data3);
^~~~~~~~~~~
./block/vhdx.h:425:19: warning: taking address of packed member 'data1' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&guid->data1);
^~~~~~~~~~~
./block/vhdx.h:426:19: warning: taking address of packed member 'data2' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le16s(&guid->data2);
^~~~~~~~~~~
./block/vhdx.h:427:19: warning: taking address of packed member 'data3' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le16s(&guid->data3);
^~~~~~~~~~~
block/vhdx.c:734:19: warning: taking address of packed member 'block_size' of
class or structure 'VHDXFileParameters' may result in an unaligned pointer
value [-Waddress-of-packed-member]
le32_to_cpus(&s->params.block_size);
^~~~~~~~~~~~~~~~~~~~
block/vhdx.c:735:19: warning: taking address of packed member 'data_bits' of
class or structure 'VHDXFileParameters' may result in an unaligned pointer
value [-Waddress-of-packed-member]
le32_to_cpus(&s->params.data_bits);
^~~~~~~~~~~~~~~~~~~
block/vhdx.c:1440:23: warning: taking address of packed member 'data_bits' of
class or structure 'VHDXFileParameters' may result in an unaligned pointer
value [-Waddress-of-packed-member]
cpu_to_le32s(&mt_file_params->data_bits);
^~~~~~~~~~~~~~~~~~~~~~~~~
block/vhdx.c:102:21: warning: unused variable 'parent_vhdx_guid'
[-Wunused-const-variable]
static const MSGUID parent_vhdx_guid = { .data1 = 0xb04aefb7,
^
10 warnings generated.
CC block/vhdx-endian.o
In file included from block/vhdx-endian.c:20:
./block/vhdx.h:418:19: warning: taking address of packed member 'data1' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&guid->data1);
^~~~~~~~~~~
./block/vhdx.h:419:19: warning: taking address of packed member 'data2' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le16_to_cpus(&guid->data2);
^~~~~~~~~~~
./block/vhdx.h:420:19: warning: taking address of packed member 'data3' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le16_to_cpus(&guid->data3);
^~~~~~~~~~~
./block/vhdx.h:425:19: warning: taking address of packed member 'data1' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&guid->data1);
^~~~~~~~~~~
./block/vhdx.h:426:19: warning: taking address of packed member 'data2' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le16s(&guid->data2);
^~~~~~~~~~~
./block/vhdx.h:427:19: warning: taking address of packed member 'data3' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le16s(&guid->data3);
^~~~~~~~~~~
block/vhdx-endian.c:39:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
le32_to_cpus(&h->signature);
^~~~~~~~~~~~
block/vhdx-endian.c:40:19: warning: taking address of packed member 'checksum'
of class or structure 'VHDXHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
le32_to_cpus(&h->checksum);
^~~~~~~~~~~
block/vhdx-endian.c:41:19: warning: taking address of packed member
'sequence_number' of class or structure 'VHDXHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
le64_to_cpus(&h->sequence_number);
^~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:47:19: warning: taking address of packed member
'log_version' of class or structure 'VHDXHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
le16_to_cpus(&h->log_version);
^~~~~~~~~~~~~~
block/vhdx-endian.c:48:19: warning: taking address of packed member 'version' of
class or structure 'VHDXHeader' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le16_to_cpus(&h->version);
^~~~~~~~~~
block/vhdx-endian.c:49:19: warning: taking address of packed member 'log_length'
of class or structure 'VHDXHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
le32_to_cpus(&h->log_length);
^~~~~~~~~~~~~
block/vhdx-endian.c:50:19: warning: taking address of packed member 'log_offset'
of class or structure 'VHDXHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
le64_to_cpus(&h->log_offset);
^~~~~~~~~~~~~
block/vhdx-endian.c:84:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXLogDescriptor' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&d->signature);
^~~~~~~~~~~~
block/vhdx-endian.c:85:19: warning: taking address of packed member '' of class
or structure 'VHDXLogDescriptor' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&d->trailing_bytes);
^~~~~~~~~~~~~~~~~
block/vhdx-endian.c:86:19: warning: taking address of packed member '' of class
or structure 'VHDXLogDescriptor' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le64_to_cpus(&d->leading_bytes);
^~~~~~~~~~~~~~~~
block/vhdx-endian.c:87:19: warning: taking address of packed member
'file_offset' of class or structure 'VHDXLogDescriptor' may result in an
unaligned pointer value [-Waddress-of-packed-member]
le64_to_cpus(&d->file_offset);
^~~~~~~~~~~~~~
block/vhdx-endian.c:88:19: warning: taking address of packed member
'sequence_number' of class or structure 'VHDXLogDescriptor' may result in
an unaligned pointer value [-Waddress-of-packed-member]
le64_to_cpus(&d->sequence_number);
^~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:95:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXLogDescriptor' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&d->signature);
^~~~~~~~~~~~
block/vhdx-endian.c:96:19: warning: taking address of packed member '' of class
or structure 'VHDXLogDescriptor' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&d->trailing_bytes);
^~~~~~~~~~~~~~~~~
block/vhdx-endian.c:97:19: warning: taking address of packed member '' of class
or structure 'VHDXLogDescriptor' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le64s(&d->leading_bytes);
^~~~~~~~~~~~~~~~
block/vhdx-endian.c:98:19: warning: taking address of packed member
'file_offset' of class or structure 'VHDXLogDescriptor' may result in an
unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le64s(&d->file_offset);
^~~~~~~~~~~~~~
block/vhdx-endian.c:99:19: warning: taking address of packed member
'sequence_number' of class or structure 'VHDXLogDescriptor' may result in
an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le64s(&d->sequence_number);
^~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:106:19: warning: taking address of packed member
'data_signature' of class or structure 'VHDXLogDataSector' may result in
an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&d->data_signature);
^~~~~~~~~~~~~~~~~
block/vhdx-endian.c:107:19: warning: taking address of packed member
'sequence_high' of class or structure 'VHDXLogDataSector' may result in an
unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&d->sequence_high);
^~~~~~~~~~~~~~~~
block/vhdx-endian.c:108:19: warning: taking address of packed member
'sequence_low' of class or structure 'VHDXLogDataSector' may result in an
unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&d->sequence_low);
^~~~~~~~~~~~~~~
block/vhdx-endian.c:115:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXLogEntryHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&hdr->signature);
^~~~~~~~~~~~~~
block/vhdx-endian.c:116:19: warning: taking address of packed member 'checksum'
of class or structure 'VHDXLogEntryHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&hdr->checksum);
^~~~~~~~~~~~~
block/vhdx-endian.c:117:19: warning: taking address of packed member
'entry_length' of class or structure 'VHDXLogEntryHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
le32_to_cpus(&hdr->entry_length);
^~~~~~~~~~~~~~~~~
block/vhdx-endian.c:118:19: warning: taking address of packed member 'tail' of
class or structure 'VHDXLogEntryHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
le32_to_cpus(&hdr->tail);
^~~~~~~~~
block/vhdx-endian.c:119:19: warning: taking address of packed member
'sequence_number' of class or structure 'VHDXLogEntryHeader' may result in
an unaligned pointer value [-Waddress-of-packed-member]
le64_to_cpus(&hdr->sequence_number);
^~~~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:120:19: warning: taking address of packed member
'descriptor_count' of class or structure 'VHDXLogEntryHeader' may result
in an unaligned pointer value [-Waddress-of-packed-member]
le32_to_cpus(&hdr->descriptor_count);
^~~~~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:122:19: warning: taking address of packed member
'flushed_file_offset' of class or structure 'VHDXLogEntryHeader' may
result in an unaligned pointer value [-Waddress-of-packed-member]
le64_to_cpus(&hdr->flushed_file_offset);
^~~~~~~~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:123:19: warning: taking address of packed member
'last_file_offset' of class or structure 'VHDXLogEntryHeader' may result
in an unaligned pointer value [-Waddress-of-packed-member]
le64_to_cpus(&hdr->last_file_offset);
^~~~~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:130:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXLogEntryHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&hdr->signature);
^~~~~~~~~~~~~~
block/vhdx-endian.c:131:19: warning: taking address of packed member 'checksum'
of class or structure 'VHDXLogEntryHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&hdr->checksum);
^~~~~~~~~~~~~
block/vhdx-endian.c:132:19: warning: taking address of packed member
'entry_length' of class or structure 'VHDXLogEntryHeader' may result in an
unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&hdr->entry_length);
^~~~~~~~~~~~~~~~~
block/vhdx-endian.c:133:19: warning: taking address of packed member 'tail' of
class or structure 'VHDXLogEntryHeader' may result in an unaligned pointer
value [-Waddress-of-packed-member]
cpu_to_le32s(&hdr->tail);
^~~~~~~~~
block/vhdx-endian.c:134:19: warning: taking address of packed member
'sequence_number' of class or structure 'VHDXLogEntryHeader' may result in
an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le64s(&hdr->sequence_number);
^~~~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:135:19: warning: taking address of packed member
'descriptor_count' of class or structure 'VHDXLogEntryHeader' may result
in an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&hdr->descriptor_count);
^~~~~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:137:19: warning: taking address of packed member
'flushed_file_offset' of class or structure 'VHDXLogEntryHeader' may
result in an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le64s(&hdr->flushed_file_offset);
^~~~~~~~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:138:19: warning: taking address of packed member
'last_file_offset' of class or structure 'VHDXLogEntryHeader' may result
in an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le64s(&hdr->last_file_offset);
^~~~~~~~~~~~~~~~~~~~~
block/vhdx-endian.c:147:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXRegionTableHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&hdr->signature);
^~~~~~~~~~~~~~
block/vhdx-endian.c:148:19: warning: taking address of packed member 'checksum'
of class or structure 'VHDXRegionTableHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&hdr->checksum);
^~~~~~~~~~~~~
block/vhdx-endian.c:149:19: warning: taking address of packed member
'entry_count' of class or structure 'VHDXRegionTableHeader' may result in
an unaligned pointer value [-Waddress-of-packed-member]
le32_to_cpus(&hdr->entry_count);
^~~~~~~~~~~~~~~~
block/vhdx-endian.c:156:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXRegionTableHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&hdr->signature);
^~~~~~~~~~~~~~
block/vhdx-endian.c:157:19: warning: taking address of packed member 'checksum'
of class or structure 'VHDXRegionTableHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&hdr->checksum);
^~~~~~~~~~~~~
block/vhdx-endian.c:158:19: warning: taking address of packed member
'entry_count' of class or structure 'VHDXRegionTableHeader' may result in
an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&hdr->entry_count);
^~~~~~~~~~~~~~~~
block/vhdx-endian.c:166:19: warning: taking address of packed member
'file_offset' of class or structure 'VHDXRegionTableEntry' may result in
an unaligned pointer value [-Waddress-of-packed-member]
le64_to_cpus(&e->file_offset);
^~~~~~~~~~~~~~
block/vhdx-endian.c:167:19: warning: taking address of packed member 'length' of
class or structure 'VHDXRegionTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&e->length);
^~~~~~~~~
block/vhdx-endian.c:168:19: warning: taking address of packed member 'data_bits'
of class or structure 'VHDXRegionTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&e->data_bits);
^~~~~~~~~~~~
block/vhdx-endian.c:176:19: warning: taking address of packed member
'file_offset' of class or structure 'VHDXRegionTableEntry' may result in
an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le64s(&e->file_offset);
^~~~~~~~~~~~~~
block/vhdx-endian.c:177:19: warning: taking address of packed member 'length' of
class or structure 'VHDXRegionTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&e->length);
^~~~~~~~~
block/vhdx-endian.c:178:19: warning: taking address of packed member 'data_bits'
of class or structure 'VHDXRegionTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&e->data_bits);
^~~~~~~~~~~~
block/vhdx-endian.c:187:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXMetadataTableHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le64_to_cpus(&hdr->signature);
^~~~~~~~~~~~~~
block/vhdx-endian.c:188:19: warning: taking address of packed member
'entry_count' of class or structure 'VHDXMetadataTableHeader' may result
in an unaligned pointer value [-Waddress-of-packed-member]
le16_to_cpus(&hdr->entry_count);
^~~~~~~~~~~~~~~~
block/vhdx-endian.c:195:19: warning: taking address of packed member 'signature'
of class or structure 'VHDXMetadataTableHeader' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le64s(&hdr->signature);
^~~~~~~~~~~~~~
block/vhdx-endian.c:196:19: warning: taking address of packed member
'entry_count' of class or structure 'VHDXMetadataTableHeader' may result
in an unaligned pointer value [-Waddress-of-packed-member]
cpu_to_le16s(&hdr->entry_count);
^~~~~~~~~~~~~~~~
block/vhdx-endian.c:204:19: warning: taking address of packed member 'offset' of
class or structure 'VHDXMetadataTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&e->offset);
^~~~~~~~~
block/vhdx-endian.c:205:19: warning: taking address of packed member 'length' of
class or structure 'VHDXMetadataTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&e->length);
^~~~~~~~~
block/vhdx-endian.c:206:19: warning: taking address of packed member 'data_bits'
of class or structure 'VHDXMetadataTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
le32_to_cpus(&e->data_bits);
^~~~~~~~~~~~
block/vhdx-endian.c:213:19: warning: taking address of packed member 'offset' of
class or structure 'VHDXMetadataTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&e->offset);
^~~~~~~~~
block/vhdx-endian.c:214:19: warning: taking address of packed member 'length' of
class or structure 'VHDXMetadataTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&e->length);
^~~~~~~~~
block/vhdx-endian.c:215:19: warning: taking address of packed member 'data_bits'
of class or structure 'VHDXMetadataTableEntry' may result in an unaligned
pointer value [-Waddress-of-packed-member]
cpu_to_le32s(&e->data_bits);
^~~~~~~~~~~~
64 warnings generated.
CC block/vhdx-log.o
In file included from block/vhdx-log.c:23:
./block/vhdx.h:418:19: warning: taking address of packed member 'data1' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le32_to_cpus(&guid->data1);
^~~~~~~~~~~
./block/vhdx.h:419:19: warning: taking address of packed member 'data2' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le16_to_cpus(&guid->data2);
^~~~~~~~~~~
./block/vhdx.h:420:19: warning: taking address of packed member 'data3' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
le16_to_cpus(&guid->data3);
^~~~~~~~~~~
./block/vhdx.h:425:19: warning: taking address of packed member 'data1' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&guid->data1);
^~~~~~~~~~~
./block/vhdx.h:426:19: warning: taking address of packed member 'data2' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le16s(&guid->data2);
^~~~~~~~~~~
./block/vhdx.h:427:19: warning: taking address of packed member 'data3' of class
or structure 'MSGUID' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le16s(&guid->data3);
^~~~~~~~~~~
block/vhdx-log.c:786:19: warning: taking address of packed member '' of class or
structure 'VHDXLogDescriptor' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le64s(&desc->leading_bytes);
^~~~~~~~~~~~~~~~~~~
block/vhdx-log.c:790:19: warning: taking address of packed member '' of class or
structure 'VHDXLogDescriptor' may result in an unaligned pointer value
[-Waddress-of-packed-member]
cpu_to_le32s(&desc->trailing_bytes);
^~~~~~~~~~~~~~~~~~~~
8 warnings generated.
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/snapshot.o
CC block/qapi.o
CC block/raw-posix.o
CC block/nbd.o
CC block/sheepdog.o
CC block/curl.o
LINK qemu-nbd
Undefined symbols for architecture x86_64:
"_use_rt_clock", referenced from:
_get_clock in block.o
_get_clock in qemu-timer.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [qemu-nbd] Error 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment