trivial patches pull request (20190206)
- acpi: remove unused functions/variables - tests: remove useless architecture checks - some typo fixes and documentation update - flash_cfi02: fix memory leak -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJcf6loAAoJEPMMOL0/L748mXUP/1m4TMqyu1RqxBLVGYJTXs/t LcrIvIJmhtLndO2XgAUUxWC9zLsTWhLDJ93yY4QmkYy6N1WhTbhMmKj0VwKNDq+9 87nbY/VQMSp8Tjx/rGO8LSA0F7F3gemhdl5UFySfY3sg8AkNV94qo4XZ+KNnkz7p ZFzaN/3T14AUXSLlaEhXCZyR0d5D0R4UjeOaqrJLal+IqfaUrmCGR6+RGAHKkKss lzEwj9S6WG96YvRxfKJ4ozQ4TpaqPwN9svVCdd2kQN5zLjjTIXB9J1i6NudQm5n3 AXn3uaHX77kEkoptydaaoWgEDcotoEfokaywE/R+FvrWArUK9IyekuBCgq8b9i1V MQLc07+kQBhdEtip04d7G/QNPpk4L4zzXgr+iQSuVclkW2tTT1xid+Tdf7S4e3xL tBc9WVdqbEd5JhDIurrSeJcquUCOCMFBCe8xqDm0aOdHowRn7c9nemDT+3r0Q4cc iVzzqTKbgUlSla/TzLcaaCoAtZfCvsvt9Slv5yRkMLnyN+WfXJt0fNXwPEUs08hP C7fhk8xSWJk8TRwaY0X4jlG0myq3RueaP8xNcOLj1xld/VTKQM1h09chbfDmLESz vylJlwTqL8MXF6/2Yi8byuIJw9mxkma7CfTK6mEAPfpyHzWfvmBWK26j1+V1LnFo Ay/tOt4QtyMare7K0d+b =ODNS -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-pull-request' into staging trivial patches pull request (20190206) - acpi: remove unused functions/variables - tests: remove useless architecture checks - some typo fixes and documentation update - flash_cfi02: fix memory leak # gpg: Signature made Wed 06 Mar 2019 11:05:12 GMT # gpg: using RSA key F30C38BD3F2FBE3C # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full] # gpg: aka "Laurent Vivier <laurent@vivier.eu>" [full] # gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full] # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C * remotes/vivier2/tags/trivial-branch-pull-request: thunk: fix of malloc to g_new hostmem-file: simplify ifdef-s in file_backend_memory_alloc() build: Correct explanation of unnest-vars example bswap: Fix accessors syntax in comment doc: fix typos for documents in tree block/pflash_cfi02: Fix memory leak and potential use-after-free hw/acpi: remove unnecessary variable acpi_table_builtin hw/acpi: remove unused function acpi_table_add_builtin() hw/i386/pc.c: remove unused function pc_acpi_init() tests: Remove (mostly) useless architecture checks Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
9b748c5e06
@ -41,10 +41,12 @@ struct HostMemoryBackendFile {
|
||||
static void
|
||||
file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
|
||||
{
|
||||
#ifndef CONFIG_POSIX
|
||||
error_setg(errp, "backend '%s' not supported on this host",
|
||||
object_get_typename(OBJECT(backend)));
|
||||
#else
|
||||
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(backend);
|
||||
#ifdef CONFIG_POSIX
|
||||
gchar *name;
|
||||
#endif
|
||||
|
||||
if (!backend->size) {
|
||||
error_setg(errp, "can't create backend with size 0");
|
||||
@ -54,9 +56,6 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
|
||||
error_setg(errp, "mem-path property not set");
|
||||
return;
|
||||
}
|
||||
#ifndef CONFIG_POSIX
|
||||
error_setg(errp, "-mem-path not supported on this host");
|
||||
#else
|
||||
backend->force_prealloc = mem_prealloc;
|
||||
name = host_memory_backend_get_name(backend);
|
||||
memory_region_init_ram_from_file(&backend->mr, OBJECT(backend),
|
||||
|
@ -102,7 +102,7 @@ to make sure the state of VM in Secondary side is always consistent with VM in
|
||||
Primary side.
|
||||
|
||||
COLO Proxy:
|
||||
Delivers packets to Primary and Seconday, and then compare the responses from
|
||||
Delivers packets to Primary and Secondary, and then compare the responses from
|
||||
both side. Then decide whether to start a checkpoint according to some rules.
|
||||
Please refer to docs/colo-proxy.txt for more information.
|
||||
|
||||
|
@ -97,7 +97,7 @@ References
|
||||
AMD Memory Encryption whitepaper:
|
||||
http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf
|
||||
|
||||
Secure Encrypted Virutualization Key Management:
|
||||
Secure Encrypted Virtualization Key Management:
|
||||
[1] http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf
|
||||
|
||||
KVM Forum slides:
|
||||
|
@ -99,7 +99,7 @@ Links to other resources
|
||||
https://gitlab.fel.cvut.cz/canbus/qemu-canbus
|
||||
(3) RTEMS page describing project
|
||||
https://devel.rtems.org/wiki/Developer/Simulators/QEMU/CANEmulation
|
||||
(4) RTLWS 2015 article about the projevt and its use with CANopen emulation
|
||||
(4) RTLWS 2015 article about the project and its use with CANopen emulation
|
||||
http://rtime.felk.cvut.cz/publications/public/rtlws2015-qemu-can.pdf
|
||||
Slides
|
||||
http://rtime.felk.cvut.cz/publications/public/rtlws2015-qemu-can-slides.pdf
|
||||
|
@ -41,7 +41,7 @@ Below is a COLO proxy ascii figure:
|
||||
| | +------------------------------------------------------+ | | | |
|
||||
|netfilter| | | | | | netfilter | | |
|
||||
| +----------+ +----------------------------+ | | | +-----------------------------------------------------------+ |
|
||||
| | | | | | out | | | | | | filter excute order | |
|
||||
| | | | | | out | | | | | | filter execute order | |
|
||||
| | | | +-----------------------------+ | | | | | | +-------------------> | |
|
||||
| | | | | | | | | | | | | | TCP | |
|
||||
| | +-----+--+-+ +-----v----+ +-----v----+ |pri +----+----+sec| | | | +------------+ +---+----+---v+rewriter++ +------------+ | |
|
||||
@ -53,7 +53,7 @@ Below is a COLO proxy ascii figure:
|
||||
| | | tx | rx rx | | | | | tx all | rx | |
|
||||
| | | | | | | | +-----------------------------------------------------------+ |
|
||||
| | | +--------------+ | | | | | |
|
||||
| | | filter excute order | | | | | | |
|
||||
| | | filter execute order | | | | | | |
|
||||
| | | +----------------> | | | +--------------------------------------------------------+ |
|
||||
| +-----------------------------------------+ | | |
|
||||
| | | | | |
|
||||
@ -92,7 +92,7 @@ but do nothing, just pass to next filter.
|
||||
|
||||
Redirect Server Filter --> COLO-Compare
|
||||
COLO-compare receive primary guest packet then
|
||||
waiting scondary redirect packet to compare it.
|
||||
waiting secondary redirect packet to compare it.
|
||||
If packet same,send queued primary packet and clear
|
||||
queued secondary packet, Otherwise send primary packet
|
||||
and do checkpoint.
|
||||
|
@ -137,6 +137,6 @@ From the 'qmp-shell', invoke the QMP ``device_del`` command::
|
||||
vCPU hot-unplug requires guest cooperation; so the ``device_del``
|
||||
command above does not guarantee vCPU removal -- it's a "request to
|
||||
unplug". At this point, the guest will get a System Control
|
||||
Interupt (SCI) and calls the ACPI handler for the affected vCPU
|
||||
Interrupt (SCI) and calls the ACPI handler for the affected vCPU
|
||||
device. Then the guest kernel will bring the vCPU offline and tell
|
||||
QEMU to unplug it.
|
||||
|
@ -55,7 +55,7 @@ value can improve the I/O performance significantly.
|
||||
|
||||
The refcount blocks
|
||||
-------------------
|
||||
The qcow2 format also mantains a reference count for each cluster.
|
||||
The qcow2 format also maintains a reference count for each cluster.
|
||||
Reference counts are used for cluster allocation and internal
|
||||
snapshots. The data is stored in a two-level structure similar to the
|
||||
L1/L2 tables described above.
|
||||
|
@ -632,7 +632,7 @@ qemu-system-i386 -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
|
||||
@end example
|
||||
|
||||
|
||||
Howto set up a simple iSCSI target on loopback and accessing it via QEMU:
|
||||
How to set up a simple iSCSI target on loopback and access it via QEMU:
|
||||
@example
|
||||
This example shows how to set up an iSCSI target with one CDROM and one DISK
|
||||
using the Linux STGT software target. This target is available on Red Hat based
|
||||
|
@ -49,7 +49,7 @@ live migration safe.
|
||||
The information that follows provides recommendations for configuring
|
||||
CPU models on x86 hosts. The goals are to maximise performance, while
|
||||
protecting guest OS against various CPU hardware flaws, and optionally
|
||||
enabling live migration between hosts with hetergeneous CPU models.
|
||||
enabling live migration between hosts with heterogeneous CPU models.
|
||||
|
||||
@menu
|
||||
* preferred_cpu_models_intel_x86:: Preferred CPU models for Intel x86 hosts
|
||||
@ -287,7 +287,7 @@ Must be explicitly turned on for all AMD CPU models.
|
||||
This provides higher performance than virt-ssbd so should be
|
||||
exposed to guests whenever available in the host. virt-ssbd
|
||||
should none the less also be exposed for maximum guest
|
||||
compatability as some kernels only know about virt-ssbd.
|
||||
compatibility as some kernels only know about virt-ssbd.
|
||||
|
||||
|
||||
@item @code{amd-no-ssb}
|
||||
@ -296,7 +296,7 @@ Recommended to indicate the host is not vulnerable CVE-2018-3639
|
||||
|
||||
Not included by default in any AMD CPU model.
|
||||
|
||||
Future hardware genarations of CPU will not be vulnerable to
|
||||
Future hardware generations of CPU will not be vulnerable to
|
||||
CVE-2018-3639, and thus the guest should be told not to enable
|
||||
its mitigations, by exposing amd-no-ssb. This is mutually
|
||||
exclusive with virt-ssbd and amd-ssbd.
|
||||
@ -451,7 +451,7 @@ MIPS64 Processor (Release 6, 2014)
|
||||
|
||||
@item @code{Loongson-2F}
|
||||
|
||||
MIPS64 Processor (Longsoon 2, 2008)
|
||||
MIPS64 Processor (Loongson 2, 2008)
|
||||
|
||||
|
||||
@item @code{Loongson-2E}
|
||||
|
@ -30,7 +30,7 @@ of the significantly lower latency and higher throughput over TCP/IP. This is
|
||||
because the RDMA I/O architecture reduces the number of interrupts and
|
||||
data copies by bypassing the host networking stack. In particular, a TCP-based
|
||||
migration, under certain types of memory-bound workloads, may take a more
|
||||
unpredicatable amount of time to complete the migration if the amount of
|
||||
unpredictable amount of time to complete the migration if the amount of
|
||||
memory tracked during each live migration iteration round cannot keep pace
|
||||
with the rate of dirty memory produced by the workload.
|
||||
|
||||
@ -408,7 +408,7 @@ socket is broken during a non-RDMA based migration.
|
||||
TODO:
|
||||
=====
|
||||
1. Currently, 'ulimit -l' mlock() limits as well as cgroups swap limits
|
||||
are not compatible with infinband memory pinning and will result in
|
||||
are not compatible with infiniband memory pinning and will result in
|
||||
an aborted migration (but with the source VM left unaffected).
|
||||
2. Use of the recent /proc/<pid>/pagemap would likely speed up
|
||||
the use of KSM and ballooning while using RDMA.
|
||||
|
@ -290,7 +290,7 @@ E.g., '-serial stdio' in record mode, and '-serial null' in replay mode.
|
||||
Replay log format
|
||||
-----------------
|
||||
|
||||
Record/replay log consits of the header and the sequence of execution
|
||||
Record/replay log consists of the header and the sequence of execution
|
||||
events. The header includes 4-byte replay version id and 8-byte reserved
|
||||
field. Version is updated every time replay log format changes to prevent
|
||||
using replay log created by another build of qemu.
|
||||
|
@ -671,7 +671,7 @@ These are the steps:
|
||||
-> IOMMU Hardware Support
|
||||
select S390 AP IOMMU Support
|
||||
-> VFIO Non-Privileged userspace driver framework
|
||||
-> Mediated device driver frramework
|
||||
-> Mediated device driver framework
|
||||
-> VFIO driver for Mediated devices
|
||||
-> I/O subsystem
|
||||
-> VFIO support for AP devices
|
||||
|
@ -307,14 +307,6 @@ out:
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
|
||||
static bool acpi_table_builtin = false;
|
||||
|
||||
void acpi_table_add_builtin(const QemuOpts *opts, Error **errp)
|
||||
{
|
||||
acpi_table_builtin = true;
|
||||
acpi_table_add(opts, errp);
|
||||
}
|
||||
|
||||
unsigned acpi_table_len(void *current)
|
||||
{
|
||||
struct acpi_table_header *hdr = current - sizeof(hdr->_length);
|
||||
@ -330,7 +322,7 @@ void *acpi_table_hdr(void *h)
|
||||
|
||||
uint8_t *acpi_table_first(void)
|
||||
{
|
||||
if (acpi_table_builtin || !acpi_tables) {
|
||||
if (!acpi_tables) {
|
||||
return NULL;
|
||||
}
|
||||
return acpi_table_hdr(acpi_tables + ACPI_TABLE_PFX_SIZE);
|
||||
|
@ -84,7 +84,7 @@ struct pflash_t {
|
||||
uint16_t unlock_addr0;
|
||||
uint16_t unlock_addr1;
|
||||
uint8_t cfi_table[0x52];
|
||||
QEMUTimer *timer;
|
||||
QEMUTimer timer;
|
||||
/* The device replicates the flash memory across its memory space. Emulate
|
||||
* that by having a container (.mem) filled with an array of aliases
|
||||
* (.mem_mappings) pointing to the flash memory (.orig_mem).
|
||||
@ -429,7 +429,7 @@ static void pflash_write (pflash_t *pfl, hwaddr offset,
|
||||
}
|
||||
pfl->status = 0x00;
|
||||
/* Let's wait 5 seconds before chip erase is done */
|
||||
timer_mod(pfl->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +
|
||||
timer_mod(&pfl->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +
|
||||
(NANOSECONDS_PER_SECOND * 5));
|
||||
break;
|
||||
case 0x30:
|
||||
@ -444,7 +444,7 @@ static void pflash_write (pflash_t *pfl, hwaddr offset,
|
||||
}
|
||||
pfl->status = 0x00;
|
||||
/* Let's wait 1/2 second before sector erase is done */
|
||||
timer_mod(pfl->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +
|
||||
timer_mod(&pfl->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +
|
||||
(NANOSECONDS_PER_SECOND / 2));
|
||||
break;
|
||||
default:
|
||||
@ -596,7 +596,7 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp)
|
||||
pfl->rom_mode = 1;
|
||||
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &pfl->mem);
|
||||
|
||||
pfl->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, pflash_timer, pfl);
|
||||
timer_init_ns(&pfl->timer, QEMU_CLOCK_VIRTUAL, pflash_timer, pfl);
|
||||
pfl->wcycle = 0;
|
||||
pfl->cmd = 0;
|
||||
pfl->status = 0;
|
||||
@ -695,11 +695,18 @@ static Property pflash_cfi02_properties[] = {
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
static void pflash_cfi02_unrealize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
pflash_t *pfl = CFI_PFLASH02(dev);
|
||||
timer_del(&pfl->timer);
|
||||
}
|
||||
|
||||
static void pflash_cfi02_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
dc->realize = pflash_cfi02_realize;
|
||||
dc->unrealize = pflash_cfi02_unrealize;
|
||||
dc->props = pflash_cfi02_properties;
|
||||
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
|
||||
}
|
||||
|
27
hw/i386/pc.c
27
hw/i386/pc.c
@ -1688,33 +1688,6 @@ void pc_pci_as_mapping_init(Object *owner, MemoryRegion *system_memory,
|
||||
pci_address_space, -1);
|
||||
}
|
||||
|
||||
void pc_acpi_init(const char *default_dsdt)
|
||||
{
|
||||
char *filename;
|
||||
|
||||
if (acpi_tables != NULL) {
|
||||
/* manually set via -acpitable, leave it alone */
|
||||
return;
|
||||
}
|
||||
|
||||
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, default_dsdt);
|
||||
if (filename == NULL) {
|
||||
warn_report("failed to find %s", default_dsdt);
|
||||
} else {
|
||||
QemuOpts *opts = qemu_opts_create(qemu_find_opts("acpi"), NULL, 0,
|
||||
&error_abort);
|
||||
Error *err = NULL;
|
||||
|
||||
qemu_opt_set(opts, "file", filename, &error_abort);
|
||||
|
||||
acpi_table_add_builtin(opts, &err);
|
||||
if (err) {
|
||||
warn_reportf_err(err, "failed to load %s: ", filename);
|
||||
}
|
||||
g_free(filename);
|
||||
}
|
||||
}
|
||||
|
||||
void xen_load_linux(PCMachineState *pcms)
|
||||
{
|
||||
int i;
|
||||
|
@ -190,7 +190,6 @@ uint8_t *acpi_table_first(void);
|
||||
uint8_t *acpi_table_next(uint8_t *current);
|
||||
unsigned acpi_table_len(void *current);
|
||||
void acpi_table_add(const QemuOpts *opts, Error **errp);
|
||||
void acpi_table_add_builtin(const QemuOpts *opts, Error **errp);
|
||||
|
||||
typedef struct AcpiSlicOem AcpiSlicOem;
|
||||
struct AcpiSlicOem {
|
||||
|
@ -189,7 +189,6 @@ void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
|
||||
|
||||
void pc_cpus_init(PCMachineState *pcms);
|
||||
void pc_hot_add_cpu(const int64_t id, Error **errp);
|
||||
void pc_acpi_init(const char *default_dsdt);
|
||||
|
||||
void pc_guest_info_init(PCMachineState *pcms);
|
||||
|
||||
|
@ -255,9 +255,9 @@ typedef union {
|
||||
/*
|
||||
* the generic syntax is:
|
||||
*
|
||||
* load: ld{type}{sign}{size}{endian}_p(ptr)
|
||||
* load: ld{type}{sign}{size}_{endian}_p(ptr)
|
||||
*
|
||||
* store: st{type}{size}{endian}_p(ptr, val)
|
||||
* store: st{type}{size}_{endian}_p(ptr, val)
|
||||
*
|
||||
* Note there are small differences with the softmmu access API!
|
||||
*
|
||||
@ -293,10 +293,10 @@ typedef union {
|
||||
*
|
||||
* For cases where the size to be used is not fixed at compile time,
|
||||
* there are
|
||||
* stn{endian}_p(ptr, sz, val)
|
||||
* stn_{endian}_p(ptr, sz, val)
|
||||
* which stores @val to @ptr as an @endian-order number @sz bytes in size
|
||||
* and
|
||||
* ldn{endian}_p(ptr, sz)
|
||||
* ldn_{endian}_p(ptr, sz)
|
||||
* which loads @sz bytes from @ptr as an unsigned @endian-order number
|
||||
* and returns it in a uint64_t.
|
||||
*/
|
||||
|
@ -327,7 +327,7 @@ endef
|
||||
# ../water/ice.mo-libs = -licemaker
|
||||
# ../water/ice.mo-objs = ../water/ice1.o ../water/ice2.o
|
||||
#
|
||||
# Note that 'hot' didn't include 'season/' in the input, so 'summer.o' is not
|
||||
# Note that 'hot' didn't include 'water/' in the input, so 'steam.o' is not
|
||||
# included.
|
||||
#
|
||||
define unnest-vars
|
||||
|
@ -548,16 +548,9 @@ static void fuzz_registers(void)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *arch = qtest_get_arch();
|
||||
int fd;
|
||||
int ret;
|
||||
|
||||
/* Check architecture */
|
||||
if (strcmp(arch, "i386") && strcmp(arch, "x86_64")) {
|
||||
g_test_message("Skipping test for non-x86\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Create a temporary raw image */
|
||||
fd = mkstemp(test_image);
|
||||
g_assert(fd >= 0);
|
||||
|
@ -1009,16 +1009,9 @@ static void test_cdrom_dma(void)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *arch = qtest_get_arch();
|
||||
int fd;
|
||||
int ret;
|
||||
|
||||
/* Check architecture */
|
||||
if (strcmp(arch, "i386") && strcmp(arch, "x86_64")) {
|
||||
g_test_message("Skipping test for non-x86\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Create temporary blkdebug instructions */
|
||||
fd = mkstemp(debug_path);
|
||||
g_assert(fd >= 0);
|
||||
|
@ -400,15 +400,8 @@ static void open_socket(void)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *arch = qtest_get_arch();
|
||||
int ret;
|
||||
|
||||
/* Check architecture */
|
||||
if (strcmp(arch, "i386") && strcmp(arch, "x86_64")) {
|
||||
g_test_message("Skipping test for non-x86\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
open_socket();
|
||||
|
||||
/* Run the tests */
|
||||
|
@ -263,16 +263,9 @@ static void test_enable_irq(void)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *arch = qtest_get_arch();
|
||||
char *cmdline;
|
||||
int ret;
|
||||
|
||||
/* Check architecture */
|
||||
if (strcmp(arch, "i386") && strcmp(arch, "x86_64")) {
|
||||
g_test_message("Skipping test for non-x86\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Run the tests */
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
|
||||
|
2
thunk.c
2
thunk.c
@ -89,7 +89,7 @@ void thunk_register_struct(int id, const char *name, const argtype *types)
|
||||
for(i = 0;i < 2; i++) {
|
||||
offset = 0;
|
||||
max_align = 1;
|
||||
se->field_offsets[i] = malloc(nb_fields * sizeof(int));
|
||||
se->field_offsets[i] = g_new(int, nb_fields);
|
||||
type_ptr = se->field_types;
|
||||
for(j = 0;j < nb_fields; j++) {
|
||||
size = thunk_type_size(type_ptr, i);
|
||||
|
Loading…
x
Reference in New Issue
Block a user