src: add G_GNUC_NO_INLINE annotations for mocked symbols

We should prevent inlining of symbols from the driver .so files that are
mocked, as well as those in the main libvirt.so

This isn't fixing any currently known problem, just trying to prevent
future issues.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2020-08-04 15:17:07 +01:00
parent e960bedee9
commit ba6d9264c6
8 changed files with 10 additions and 10 deletions

View File

@ -59,7 +59,7 @@ def scan_overrides(filename):
m = re.search(r'''^\w+\s*(?:\*\s*)?(\w+)\(''', line)
if m is not None:
name = m.group(1)
if name.startswith("vir"):
if name.startswith("vir") or name.startswith("qemu") or name.startswith("libxl"):
mocked[name] = "%s:%d" % (filename, lineno)

View File

@ -39,7 +39,7 @@
* by libvirt for Xen, and cannot be used for a persistent network name. */
#define LIBXL_GENERATED_PREFIX_XEN "vif"
bool libxlCapsHasPVUSB(void);
bool libxlCapsHasPVUSB(void) G_GNUC_NO_INLINE;
virCapsPtr
libxlMakeCapabilities(libxl_ctx *ctx);

View File

@ -82,7 +82,7 @@ int qemuBuildTLSx509BackendProps(const char *tlspath,
/* Open a UNIX socket for chardev FD passing */
int
qemuOpenChrChardevUNIXSocket(const virDomainChrSourceDef *dev);
qemuOpenChrChardevUNIXSocket(const virDomainChrSourceDef *dev) G_GNUC_NO_INLINE;
/* Generate '-device' string for chardev device */
int
@ -254,4 +254,4 @@ qemuBuildTPMOpenBackendFDs(const char *tpmdev,
int *tpmfd,
int *cancelfd)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
ATTRIBUTE_NONNULL(4);
ATTRIBUTE_NONNULL(4) G_GNUC_NO_INLINE;

View File

@ -151,7 +151,7 @@ int qemuDomainSetVcpuInternal(virQEMUDriverPtr driver,
virBitmapPtr vcpus,
bool state);
unsigned long long qemuDomainGetUnplugTimeout(virDomainObjPtr vm);
unsigned long long qemuDomainGetUnplugTimeout(virDomainObjPtr vm) G_GNUC_NO_INLINE;
int qemuHotplugAttachDBusVMState(virQEMUDriverPtr driver,
virDomainObjPtr vm,

View File

@ -54,7 +54,7 @@ int qemuInterfaceBridgeConnect(virDomainDefPtr def,
int qemuInterfaceOpenVhostNet(virDomainDefPtr def,
virDomainNetDefPtr net,
int *vhostfd,
size_t *vhostfdSize);
size_t *vhostfdSize) G_GNUC_NO_INLINE;
qemuSlirpPtr qemuInterfacePrepareSlirp(virQEMUDriverPtr driver,
virDomainNetDefPtr net);

View File

@ -408,7 +408,7 @@ int qemuMonitorSetLink(qemuMonitorPtr mon,
/* These APIs are for use by the internal Text/JSON monitor impl code only */
char *qemuMonitorNextCommandID(qemuMonitorPtr mon);
int qemuMonitorSend(qemuMonitorPtr mon,
qemuMonitorMessagePtr msg);
qemuMonitorMessagePtr msg) G_GNUC_NO_INLINE;
virJSONValuePtr qemuMonitorGetOptions(qemuMonitorPtr mon)
ATTRIBUTE_NONNULL(1);
void qemuMonitorSetOptions(qemuMonitorPtr mon, virJSONValuePtr options)

View File

@ -30,7 +30,7 @@
int qemuMonitorJSONIOProcessLine(qemuMonitorPtr mon,
const char *line,
qemuMonitorMessagePtr msg);
qemuMonitorMessagePtr msg) G_GNUC_NO_INLINE;
int qemuMonitorJSONIOProcess(qemuMonitorPtr mon,
const char *data,

View File

@ -203,9 +203,9 @@ int qemuProcessRefreshDisks(virQEMUDriverPtr driver,
virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob);
int qemuProcessStartManagedPRDaemon(virDomainObjPtr vm);
int qemuProcessStartManagedPRDaemon(virDomainObjPtr vm) G_GNUC_NO_INLINE;
void qemuProcessKillManagedPRDaemon(virDomainObjPtr vm);
void qemuProcessKillManagedPRDaemon(virDomainObjPtr vm) G_GNUC_NO_INLINE;
typedef struct _qemuProcessQMP qemuProcessQMP;
typedef qemuProcessQMP *qemuProcessQMPPtr;