1
This pullreq has:
1
Squashed in a trivial fix for 32-bit hosts:
2
* two arm bug fixes which fix some "Linux fails to boot" bugs
3
* a docs typo-fixing patch
4
* a couple of compile failure/warning issues
5
2
6
I think they're all pretty safe and worth having in rc3.
3
--- a/target/arm/mve_helper.c
4
+++ b/target/arm/mve_helper.c
5
@@ -XXX,XX +XXX,XX @@ DO_LDAV(vmlsldavxsw, 4, int32_t, true, +=, -=)
6
acc = EVENACC(acc, TO128(n[H##ESIZE(e + 1 * XCHG)] * \
7
m[H##ESIZE(e)])); \
8
} \
9
- acc = int128_add(acc, 1 << 7); \
10
+ acc = int128_add(acc, int128_make64(1 << 7)); \
11
} \
12
} \
13
mve_advance_vpt(env); \
7
14
8
thanks
9
-- PMM
15
-- PMM
10
16
11
The following changes since commit a6b1c53e79d08a99a28cc3e67a3e1a7c34102d6b:
17
The following changes since commit 53f306f316549d20c76886903181413d20842423:
12
18
13
Merge tag 'linux-user-for-7.1-pull-request' of https://gitlab.com/laurent_vivier/qemu into staging (2022-08-10 10:26:57 -0700)
19
Merge remote-tracking branch 'remotes/ehabkost-gl/tags/x86-next-pull-request' into staging (2021-06-21 11:26:04 +0100)
14
20
15
are available in the Git repository at:
21
are available in the Git repository at:
16
22
17
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20220812
23
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20210624
18
24
19
for you to fetch changes up to 4311682ea8293f720730f260e8a7601117d79e65:
25
for you to fetch changes up to 90a76c6316cfe6416fc33814a838fb3928f746ee:
20
26
21
cutils: Add missing dyld(3) include on macOS (2022-08-12 11:33:52 +0100)
27
docs/system: arm: Add nRF boards description (2021-06-24 14:58:48 +0100)
22
28
23
----------------------------------------------------------------
29
----------------------------------------------------------------
24
target-arm queue:
30
target-arm queue:
25
* Don't report Statistical Profiling Extension in ID registers
31
* Don't require 'virt' board to be compiled in for ACPI GHES code
26
* virt ACPI tables: Present the GICR structure properly for GICv4
32
* docs: Document which architecture extensions we emulate
27
* Fix some typos in documentation
33
* Fix bugs in M-profile FPCXT_NS accesses
28
* tests/unit: fix a -Wformat-truncation warning
34
* First slice of MVE patches
29
* cutils: Add missing dyld(3) include on macOS
35
* Implement MTE3
36
* docs/system: arm: Add nRF boards description
30
37
31
----------------------------------------------------------------
38
----------------------------------------------------------------
32
Marc-André Lureau (1):
39
Alexandre Iooss (1):
33
tests/unit: fix a -Wformat-truncation warning
40
docs/system: arm: Add nRF boards description
34
41
35
Peter Maydell (1):
42
Peter Collingbourne (1):
36
target/arm: Don't report Statistical Profiling Extension in ID registers
43
target/arm: Implement MTE3
37
44
38
Philippe Mathieu-Daudé (1):
45
Peter Maydell (55):
39
cutils: Add missing dyld(3) include on macOS
46
hw/acpi: Provide stub version of acpi_ghes_record_errors()
47
hw/acpi: Provide function acpi_ghes_present()
48
target/arm: Use acpi_ghes_present() to see if we report ACPI memory errors
49
docs/system/arm: Document which architecture extensions we emulate
50
target/arm/translate-vfp.c: Whitespace fixes
51
target/arm: Handle FPU being disabled in FPCXT_NS accesses
52
target/arm: Don't NOCP fault for FPCXT_NS accesses
53
target/arm: Handle writeback in VLDR/VSTR sysreg with no memory access
54
target/arm: Factor FP context update code out into helper function
55
target/arm: Split vfp_access_check() into A and M versions
56
target/arm: Handle FPU check for FPCXT_NS insns via vfp_access_check_m()
57
target/arm: Implement MVE VLDR/VSTR (non-widening forms)
58
target/arm: Implement widening/narrowing MVE VLDR/VSTR insns
59
target/arm: Implement MVE VCLZ
60
target/arm: Implement MVE VCLS
61
target/arm: Implement MVE VREV16, VREV32, VREV64
62
target/arm: Implement MVE VMVN (register)
63
target/arm: Implement MVE VABS
64
target/arm: Implement MVE VNEG
65
tcg: Make gen_dup_i32/i64() public as tcg_gen_dup_i32/i64
66
target/arm: Implement MVE VDUP
67
target/arm: Implement MVE VAND, VBIC, VORR, VORN, VEOR
68
target/arm: Implement MVE VADD, VSUB, VMUL
69
target/arm: Implement MVE VMULH
70
target/arm: Implement MVE VRMULH
71
target/arm: Implement MVE VMAX, VMIN
72
target/arm: Implement MVE VABD
73
target/arm: Implement MVE VHADD, VHSUB
74
target/arm: Implement MVE VMULL
75
target/arm: Implement MVE VMLALDAV
76
target/arm: Implement MVE VMLSLDAV
77
target/arm: Implement MVE VRMLALDAVH, VRMLSLDAVH
78
target/arm: Implement MVE VADD (scalar)
79
target/arm: Implement MVE VSUB, VMUL (scalar)
80
target/arm: Implement MVE VHADD, VHSUB (scalar)
81
target/arm: Implement MVE VBRSR
82
target/arm: Implement MVE VPST
83
target/arm: Implement MVE VQADD and VQSUB
84
target/arm: Implement MVE VQDMULH and VQRDMULH (scalar)
85
target/arm: Implement MVE VQDMULL scalar
86
target/arm: Implement MVE VQDMULH, VQRDMULH (vector)
87
target/arm: Implement MVE VQADD, VQSUB (vector)
88
target/arm: Implement MVE VQSHL (vector)
89
target/arm: Implement MVE VQRSHL
90
target/arm: Implement MVE VSHL insn
91
target/arm: Implement MVE VRSHL
92
target/arm: Implement MVE VQDMLADH and VQRDMLADH
93
target/arm: Implement MVE VQDMLSDH and VQRDMLSDH
94
target/arm: Implement MVE VQDMULL (vector)
95
target/arm: Implement MVE VRHADD
96
target/arm: Implement MVE VADC, VSBC
97
target/arm: Implement MVE VCADD
98
target/arm: Implement MVE VHCADD
99
target/arm: Implement MVE VADDV
100
target/arm: Make VMOV scalar <-> gpreg beatwise for MVE
40
101
41
Stefan Weil (1):
102
docs/system/arm/emulation.rst | 103 ++++
42
Fix some typos in documentation (most of them found by codespell)
103
docs/system/arm/nrf.rst | 51 ++
104
docs/system/target-arm.rst | 7 +
105
include/hw/acpi/ghes.h | 9 +
106
include/tcg/tcg-op.h | 8 +
107
include/tcg/tcg.h | 1 -
108
target/arm/helper-mve.h | 357 +++++++++++++
109
target/arm/helper.h | 2 +
110
target/arm/internals.h | 11 +
111
target/arm/translate-a32.h | 3 +
112
target/arm/translate.h | 10 +
113
target/arm/m-nocp.decode | 24 +
114
target/arm/mve.decode | 240 +++++++++
115
target/arm/vfp.decode | 14 -
116
hw/acpi/ghes-stub.c | 22 +
117
hw/acpi/ghes.c | 17 +
118
target/arm/cpu64.c | 2 +-
119
target/arm/kvm64.c | 6 +-
120
target/arm/mte_helper.c | 82 +--
121
target/arm/mve_helper.c | 1160 +++++++++++++++++++++++++++++++++++++++++
122
target/arm/translate-m-nocp.c | 550 +++++++++++++++++++
123
target/arm/translate-mve.c | 759 +++++++++++++++++++++++++++
124
target/arm/translate-vfp.c | 741 +++++++-------------------
125
tcg/tcg-op-gvec.c | 20 +-
126
MAINTAINERS | 1 +
127
hw/acpi/meson.build | 6 +-
128
target/arm/meson.build | 1 +
129
27 files changed, 3578 insertions(+), 629 deletions(-)
130
create mode 100644 docs/system/arm/emulation.rst
131
create mode 100644 docs/system/arm/nrf.rst
132
create mode 100644 target/arm/helper-mve.h
133
create mode 100644 hw/acpi/ghes-stub.c
134
create mode 100644 target/arm/mve_helper.c
43
135
44
Zenghui Yu (1):
45
hw/arm/virt-acpi-build: Present the GICR structure properly for GICv4
46
47
docs/about/deprecated.rst | 2 +-
48
docs/specs/acpi_erst.rst | 4 ++--
49
docs/system/devices/canokey.rst | 8 ++++----
50
docs/system/devices/cxl.rst | 12 ++++++------
51
hw/arm/virt-acpi-build.c | 4 ++--
52
target/arm/cpu.c | 11 +++++++++++
53
tests/unit/test-qobject-input-visitor.c | 3 +--
54
util/cutils.c | 4 ++++
55
util/oslib-posix.c | 4 ----
56
9 files changed, 31 insertions(+), 21 deletions(-)
57
diff view generated by jsdifflib
Deleted patch
1
The newly added neoverse-n1 CPU has ID register values which indicate
2
the presence of the Statistical Profiling Extension, because the real
3
hardware has this feature. QEMU's TCG emulation does not yet
4
implement SPE, though (not even as a minimal stub implementation), so
5
guests will crash if they try to use it because the SPE system
6
registers don't exist.
7
1
8
Force ID_AA64DFR0_EL1.PMSVer to 0 in CPU realize for TCG, so that
9
we don't advertise to the guest a feature that doesn't exist.
10
11
(We could alternatively do this by editing the value that
12
aarch64_neoverse_n1_initfn() sets for this ID register, but
13
suppressing the field in realize means we won't re-introduce this bug
14
when we add other CPUs that have SPE in hardware, such as the
15
Neoverse-V1.)
16
17
An example of a non-booting guest is current mainline Linux (5.19),
18
when booting in EL2 on the virt board (ie with -machine
19
virtualization=on).
20
21
Reported-by: Zenghui Yu <yuzenghui@huawei.com>
22
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
23
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
24
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
25
Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
26
Message-id: 20220811131127.947334-1-peter.maydell@linaro.org
27
---
28
target/arm/cpu.c | 11 +++++++++++
29
1 file changed, 11 insertions(+)
30
31
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
32
index XXXXXXX..XXXXXXX 100644
33
--- a/target/arm/cpu.c
34
+++ b/target/arm/cpu.c
35
@@ -XXX,XX +XXX,XX @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
36
}
37
#endif
38
39
+ if (tcg_enabled()) {
40
+ /*
41
+ * Don't report the Statistical Profiling Extension in the ID
42
+ * registers, because TCG doesn't implement it yet (not even a
43
+ * minimal stub version) and guests will fall over when they
44
+ * try to access the non-existent system registers for it.
45
+ */
46
+ cpu->isar.id_aa64dfr0 =
47
+ FIELD_DP64(cpu->isar.id_aa64dfr0, ID_AA64DFR0, PMSVER, 0);
48
+ }
49
+
50
/* MPU can be configured out of a PMSA CPU either by setting has-mpu
51
* to false or by setting pmsav7-dregion to 0.
52
*/
53
--
54
2.25.1
55
56
diff view generated by jsdifflib
Deleted patch
1
From: Stefan Weil <sw@weilnetz.de>
2
1
3
Signed-off-by: Stefan Weil <sw@weilnetz.de>
4
Reviewed-by: Hongren (Zenithal) Zheng <i@zenithal.me>
5
Message-id: 20220812075642.1200578-1-sw@weilnetz.de
6
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
8
---
9
docs/about/deprecated.rst | 2 +-
10
docs/specs/acpi_erst.rst | 4 ++--
11
docs/system/devices/canokey.rst | 8 ++++----
12
docs/system/devices/cxl.rst | 12 ++++++------
13
4 files changed, 13 insertions(+), 13 deletions(-)
14
15
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
16
index XXXXXXX..XXXXXXX 100644
17
--- a/docs/about/deprecated.rst
18
+++ b/docs/about/deprecated.rst
19
@@ -XXX,XX +XXX,XX @@ by using ``-machine graphics=off``.
20
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
21
22
In QEMU versions 6.1, 6.2 and 7.0, the ``nvme-ns`` generates an EUI-64
23
-identifer that is not globally unique. If an EUI-64 identifer is required, the
24
+identifier that is not globally unique. If an EUI-64 identifier is required, the
25
user must set it explicitly using the ``nvme-ns`` device parameter ``eui64``.
26
27
``-device nvme,use-intel-id=on|off`` (since 7.1)
28
diff --git a/docs/specs/acpi_erst.rst b/docs/specs/acpi_erst.rst
29
index XXXXXXX..XXXXXXX 100644
30
--- a/docs/specs/acpi_erst.rst
31
+++ b/docs/specs/acpi_erst.rst
32
@@ -XXX,XX +XXX,XX @@ Slot 0 contains a backend storage header that identifies the contents
33
as ERST and also facilitates efficient access to the records.
34
Depending upon the size of the backend storage, additional slots will
35
be designated to be a part of the slot 0 header. For example, at 8KiB,
36
-the slot 0 header can accomodate 1021 records. Thus a storage size
37
+the slot 0 header can accommodate 1021 records. Thus a storage size
38
of 8MiB (8KiB * 1024) requires an additional slot for use by the
39
header. In this scenario, slot 0 and slot 1 form the backend storage
40
header, and records can be stored starting at slot 2.
41
@@ -XXX,XX +XXX,XX @@ References
42
[2] "Unified Extensible Firmware Interface Specification",
43
version 2.1, October 2008.
44
45
-[3] "Windows Hardware Error Architecture", specfically
46
+[3] "Windows Hardware Error Architecture", specifically
47
"Error Record Persistence Mechanism".
48
diff --git a/docs/system/devices/canokey.rst b/docs/system/devices/canokey.rst
49
index XXXXXXX..XXXXXXX 100644
50
--- a/docs/system/devices/canokey.rst
51
+++ b/docs/system/devices/canokey.rst
52
@@ -XXX,XX +XXX,XX @@ With the same software configuration as a hardware key,
53
the guest OS can use all the functionalities of a secure key as if
54
there was actually an hardware key plugged in.
55
56
-CanoKey QEMU provides much convenience for debuging:
57
+CanoKey QEMU provides much convenience for debugging:
58
59
-* libcanokey-qemu supports debuging output thus developers can
60
+* libcanokey-qemu supports debugging output thus developers can
61
inspect what happens inside a secure key
62
* CanoKey QEMU supports trace event thus event
63
* QEMU USB stack supports pcap thus USB packet between the guest
64
@@ -XXX,XX +XXX,XX @@ and find CanoKey QEMU there:
65
66
You may setup the key as guided in [6]_. The console for the key is at [7]_.
67
68
-Debuging
69
-========
70
+Debugging
71
+=========
72
73
CanoKey QEMU consists of two parts, ``libcanokey-qemu.so`` and ``canokey.c``,
74
the latter of which resides in QEMU. The former provides core functionality
75
diff --git a/docs/system/devices/cxl.rst b/docs/system/devices/cxl.rst
76
index XXXXXXX..XXXXXXX 100644
77
--- a/docs/system/devices/cxl.rst
78
+++ b/docs/system/devices/cxl.rst
79
@@ -XXX,XX +XXX,XX @@ CXL Fixed Memory Windows (CFMW)
80
A CFMW consists of a particular range of Host Physical Address space
81
which is routed to particular CXL Host Bridges. At time of generic
82
software initialization it will have a particularly interleaving
83
-configuration and associated Quality of Serice Throtling Group (QTG).
84
+configuration and associated Quality of Service Throttling Group (QTG).
85
This information is available to system software, when making
86
decisions about how to configure interleave across available CXL
87
memory devices. It is provide as CFMW Structures (CFMWS) in
88
@@ -XXX,XX +XXX,XX @@ specification defined register interface called CXL Host Bridge
89
Component Registers (CHBCR). The location of this CHBCR MMIO
90
space is described to system software via a CXL Host Bridge
91
Structure (CHBS) in the CEDT ACPI table. The actual interfaces
92
-are identical to those used for other parts of the CXL heirarchy
93
+are identical to those used for other parts of the CXL hierarchy
94
as CXL Component Registers in PCI BARs.
95
96
Interfaces provided include:
97
@@ -XXX,XX +XXX,XX @@ CXL Memory Devices - Type 3
98
~~~~~~~~~~~~~~~~~~~~~~~~~~~
99
CXL type 3 devices use a PCI class code and are intended to be supported
100
by a generic operating system driver. They have HDM decoders
101
-though in these EP devices, the decoder is reponsible not for
102
+though in these EP devices, the decoder is responsible not for
103
routing but for translation of the incoming host physical address (HPA)
104
into a Device Physical Address (DPA).
105
106
@@ -XXX,XX +XXX,XX @@ Notes:
107
ranges of the system physical address map. Each CFMW has
108
particular interleave setup across the CXL Host Bridges (HB)
109
CFMW0 provides uninterleaved access to HB0, CFW2 provides
110
- uninterleaved acess to HB1. CFW1 provides interleaved memory access
111
+ uninterleaved access to HB1. CFW1 provides interleaved memory access
112
across HB0 and HB1.
113
114
(2) **Two CXL Host Bridges**. Each of these has 2 CXL Root Ports and
115
@@ -XXX,XX +XXX,XX @@ Example topology involving a switch::
116
---------------------------------------------------
117
| Switch 0 USP as PCI 0d:00.0 |
118
| USP has HDM decoder which direct traffic to |
119
- | appropiate downstream port |
120
+ | appropriate downstream port |
121
| Switch BUS appears as 0e |
122
|x__________________________________________________|
123
| | | |
124
@@ -XXX,XX +XXX,XX @@ An example of 4 devices below a switch suitable for 1, 2 or 4 way interleave::
125
Kernel Configuration Options
126
----------------------------
127
128
-In Linux 5.18 the followings options are necessary to make use of
129
+In Linux 5.18 the following options are necessary to make use of
130
OS management of CXL memory devices as described here.
131
132
* CONFIG_CXL_BUS
133
--
134
2.25.1
diff view generated by jsdifflib
Deleted patch
1
From: Marc-André Lureau <marcandre.lureau@redhat.com>
2
1
3
../tests/test-qobject-input-visitor.c: In function ‘test_visitor_in_list’:
4
../tests/test-qobject-input-visitor.c:454:49: warning: ‘%d’ directive output may be truncated writing between 1 and 10 bytes into a region of size 6 [-Wformat-truncation=]
5
454 | snprintf(string, sizeof(string), "string%d", i);
6
| ^~
7
../tests/test-qobject-input-visitor.c:454:42: note: directive argument in the range [0, 2147483606]
8
454 | snprintf(string, sizeof(string), "string%d", i);
9
| ^~~~~~~~~~
10
../tests/test-qobject-input-visitor.c:454:9: note: ‘snprintf’ output between 8 and 17 bytes into a destination of size 12
11
454 | snprintf(string, sizeof(string), "string%d", i);
12
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13
14
Rather than trying to be clever, since this is called 3 times during
15
tests, let's simply use g_strdup_printf().
16
17
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
18
Reviewed-by: Markus Armbruster <armbru@redhat.com>
19
Message-id: 20220810121513.1356081-1-marcandre.lureau@redhat.com
20
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
21
[PMM: fixed commit message typos]
22
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
23
---
24
tests/unit/test-qobject-input-visitor.c | 3 +--
25
1 file changed, 1 insertion(+), 2 deletions(-)
26
27
diff --git a/tests/unit/test-qobject-input-visitor.c b/tests/unit/test-qobject-input-visitor.c
28
index XXXXXXX..XXXXXXX 100644
29
--- a/tests/unit/test-qobject-input-visitor.c
30
+++ b/tests/unit/test-qobject-input-visitor.c
31
@@ -XXX,XX +XXX,XX @@ static void test_visitor_in_list(TestInputVisitorData *data,
32
g_assert(head != NULL);
33
34
for (i = 0, item = head; item; item = item->next, i++) {
35
- char string[12];
36
+ g_autofree char *string = g_strdup_printf("string%d", i);
37
38
- snprintf(string, sizeof(string), "string%d", i);
39
g_assert_cmpstr(item->value->string, ==, string);
40
g_assert_cmpint(item->value->integer, ==, 42 + i);
41
}
42
--
43
2.25.1
44
45
diff view generated by jsdifflib
Deleted patch
1
From: Zenghui Yu <yuzenghui@huawei.com>
2
1
3
With the introduction of the new TCG GICv4, build_madt() is badly broken
4
as we do not present any GIC Redistributor structure in MADT for GICv4
5
guests, so that they have no idea about where the Redistributor
6
register frames are. This fixes a Linux guest crash at boot time with
7
ACPI enabled and '-machine gic-version=4'.
8
9
While at it, let's convert the remaining hard coded gic_version into
10
enumeration VIRT_GIC_VERSION_2 for consistency.
11
12
Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
13
Message-id: 20220812022018.1069-1-yuzenghui@huawei.com
14
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
16
---
17
hw/arm/virt-acpi-build.c | 4 ++--
18
1 file changed, 2 insertions(+), 2 deletions(-)
19
20
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
21
index XXXXXXX..XXXXXXX 100644
22
--- a/hw/arm/virt-acpi-build.c
23
+++ b/hw/arm/virt-acpi-build.c
24
@@ -XXX,XX +XXX,XX @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
25
uint32_t pmu_interrupt = arm_feature(&armcpu->env, ARM_FEATURE_PMU) ?
26
PPI(VIRTUAL_PMU_IRQ) : 0;
27
28
- if (vms->gic_version == 2) {
29
+ if (vms->gic_version == VIRT_GIC_VERSION_2) {
30
physical_base_address = memmap[VIRT_GIC_CPU].base;
31
gicv = memmap[VIRT_GIC_VCPU].base;
32
gich = memmap[VIRT_GIC_HYP].base;
33
@@ -XXX,XX +XXX,XX @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
34
build_append_int_noprefix(table_data, armcpu->mp_affinity, 8);
35
}
36
37
- if (vms->gic_version == 3) {
38
+ if (vms->gic_version != VIRT_GIC_VERSION_2) {
39
build_append_gicr(table_data, memmap[VIRT_GIC_REDIST].base,
40
memmap[VIRT_GIC_REDIST].size);
41
if (virt_gicv3_redist_region_count(vms) == 2) {
42
--
43
2.25.1
diff view generated by jsdifflib
Deleted patch
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
1
3
Commit 06680b15b4 moved qemu_*_exec_dir() to cutils but forgot
4
to move the macOS dyld(3) include, resulting in the following
5
error (when building with Homebrew GCC on macOS Monterey 12.4):
6
7
[313/1197] Compiling C object libqemuutil.a.p/util_cutils.c.o
8
FAILED: libqemuutil.a.p/util_cutils.c.o
9
../../util/cutils.c:1039:13: error: implicit declaration of function '_NSGetExecutablePath' [-Werror=implicit-function-declaration]
10
1039 | if (_NSGetExecutablePath(fpath, &len) == 0) {
11
| ^~~~~~~~~~~~~~~~~~~~
12
../../util/cutils.c:1039:13: error: nested extern declaration of '_NSGetExecutablePath' [-Werror=nested-externs]
13
14
Fix by moving the include line to cutils.
15
16
Fixes: 06680b15b4 ("include: move qemu_*_exec_dir() to cutils")
17
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
18
Message-id: 20220809222046.30812-1-f4bug@amsat.org
19
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
20
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
21
---
22
util/cutils.c | 4 ++++
23
util/oslib-posix.c | 4 ----
24
2 files changed, 4 insertions(+), 4 deletions(-)
25
26
diff --git a/util/cutils.c b/util/cutils.c
27
index XXXXXXX..XXXXXXX 100644
28
--- a/util/cutils.c
29
+++ b/util/cutils.c
30
@@ -XXX,XX +XXX,XX @@
31
#include <kernel/image.h>
32
#endif
33
34
+#ifdef __APPLE__
35
+#include <mach-o/dyld.h>
36
+#endif
37
+
38
#ifdef G_OS_WIN32
39
#include <pathcch.h>
40
#include <wchar.h>
41
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
42
index XXXXXXX..XXXXXXX 100644
43
--- a/util/oslib-posix.c
44
+++ b/util/oslib-posix.c
45
@@ -XXX,XX +XXX,XX @@
46
#include <lwp.h>
47
#endif
48
49
-#ifdef __APPLE__
50
-#include <mach-o/dyld.h>
51
-#endif
52
-
53
#include "qemu/mmap-alloc.h"
54
55
#ifdef CONFIG_DEBUG_STACK_USAGE
56
--
57
2.25.1
58
59
diff view generated by jsdifflib