mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-02 11:05:22 +00:00
test: fix build errors with gcc 4.7.0 and -O0
When building on Fedora 17 (which uses gcc 4.7.0) with -O0 in CFLAGS, three of the tests failed to compile. cputest.c and qemuxml2argvtest.c had non-static structs defined inside the macro that was being repeatedly invoked. Due to some so-far unidentified change in gcc, the stack space used by variables defined inside { } is not recovered/re-used when the block ends, so all these structs have become additive (this is the same problem worked around in commitcf57d345b
). Fortunately, these two files could be fixed with a single line addition of "static" to the struct definition in the macro. virnettlscontexttest.c was a bit different, though. The problem structs in the do/while loop of macros had non-constant initializers, so it took a bit more work and piecemeal initialization instead of member initialization to get things to be happy. In an ideal world, none of these changes should be necessary, but not knowing how long it will be until the gcc regressions are fixed, and since the code is just as correct after this patch as before, it makes sense to fix libvirt's build for -O0 while also reporting the gcc problem. (cherry picked from commit06a1a45cef
)
This commit is contained in:
parent
3506eb7a7b
commit
cc8b3237c5
@ -512,7 +512,7 @@ mymain(void)
|
||||
#define DO_TEST(arch, api, name, host, cpu, \
|
||||
models, nmodels, preferred, result) \
|
||||
do { \
|
||||
struct data data = { \
|
||||
static struct data data = { \
|
||||
arch, api, host, cpu, models, \
|
||||
models == NULL ? NULL : #models, \
|
||||
nmodels, preferred, result \
|
||||
|
@ -314,7 +314,7 @@ mymain(void)
|
||||
# define DO_TEST_FULL(name, migrateFrom, migrateFd, \
|
||||
expectError, expectFailure, ...) \
|
||||
do { \
|
||||
struct testInfo info = { \
|
||||
static struct testInfo info = { \
|
||||
name, NULL, migrateFrom, migrateFd, \
|
||||
expectError, expectFailure \
|
||||
}; \
|
||||
|
@ -749,31 +749,47 @@ mymain(void)
|
||||
if (virFileWriteStr(keyfile, PRIVATE_KEY, 0600) < 0)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
# define DO_CTX_TEST(isServer, caReq, certReq, expectFail) \
|
||||
# define DO_CTX_TEST(_isServer, _caReq, _certReq, _expectFail) \
|
||||
do { \
|
||||
struct testTLSContextData data = { \
|
||||
isServer, caReq, certReq, expectFail, \
|
||||
}; \
|
||||
static struct testTLSContextData data; \
|
||||
data.isServer = _isServer; \
|
||||
data.careq = _caReq; \
|
||||
data.certreq = _certReq; \
|
||||
data.expectFail = _expectFail; \
|
||||
if (virtTestRun("TLS Context", 1, testTLSContextInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_SESS_TEST(caReq, serverReq, clientReq, expectServerFail, expectClientFail, hostname, wildcards) \
|
||||
# define DO_SESS_TEST(_caReq, _serverReq, _clientReq, _expectServerFail,\
|
||||
_expectClientFail, _hostname, _wildcards) \
|
||||
do { \
|
||||
struct testTLSSessionData data = { \
|
||||
caReq, { 0 }, serverReq, clientReq, \
|
||||
expectServerFail, expectClientFail, hostname, wildcards \
|
||||
}; \
|
||||
static struct testTLSSessionData data; \
|
||||
static struct testTLSCertReq other; \
|
||||
data.careq = _caReq; \
|
||||
data.othercareq = other; \
|
||||
data.serverreq = _serverReq; \
|
||||
data.clientreq = _clientReq; \
|
||||
data.expectServerFail = _expectServerFail; \
|
||||
data.expectClientFail = _expectClientFail; \
|
||||
data.hostname = _hostname; \
|
||||
data.wildcards = _wildcards; \
|
||||
if (virtTestRun("TLS Session", 1, testTLSSessionInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_SESS_TEST_EXT(caReq, othercaReq, serverReq, clientReq, expectServerFail, expectClientFail, hostname, wildcards) \
|
||||
# define DO_SESS_TEST_EXT(_caReq, _othercaReq, _serverReq, _clientReq, \
|
||||
_expectServerFail, _expectClientFail, \
|
||||
_hostname, _wildcards) \
|
||||
do { \
|
||||
struct testTLSSessionData data = { \
|
||||
caReq, othercaReq, serverReq, clientReq, \
|
||||
expectServerFail, expectClientFail, hostname, wildcards \
|
||||
}; \
|
||||
static struct testTLSSessionData data; \
|
||||
data.careq = _caReq; \
|
||||
data.othercareq = _othercaReq; \
|
||||
data.serverreq = _serverReq; \
|
||||
data.clientreq = _clientReq; \
|
||||
data.expectServerFail = _expectServerFail; \
|
||||
data.expectClientFail = _expectClientFail; \
|
||||
data.hostname = _hostname; \
|
||||
data.wildcards = _wildcards; \
|
||||
if (virtTestRun("TLS Session", 1, testTLSSessionInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
Loading…
Reference in New Issue
Block a user