diff options
author | Oliver Smith <osmith@sysmocom.de> | 2021-02-02 13:07:30 +0100 |
---|---|---|
committer | Oliver Smith <osmith@sysmocom.de> | 2021-02-02 13:17:32 +0100 |
commit | d4998abd4632d82d598f11b5d4775d364ec36416 (patch) | |
tree | ef42c3aa46610cb09ff8c22beaa3a79bf6c21fbd | |
parent | ed11cc8385353de33c82093d2e33579d8c7a30d0 (diff) |
xua_msg: fix gcc 4 + -std=gnu11 errorosmith/wip
Fix 'error: initializer element is not constant' with debian 8's gcc
4.9.2, triggered by XUA_HDR. Create a new _XUA_HDR without the type cast,
and use it inside of const struct definitions (xua_test.c). The new
macro is needed, because removing the type cast from the original
XUA_HDR would break other uses.
Related: OS#5004
Change-Id: I890432ee976043d012b01023f7dd2cfecf79d115
-rw-r--r-- | include/osmocom/sigtran/xua_msg.h | 5 | ||||
-rw-r--r-- | tests/xua/xua_test.c | 22 |
2 files changed, 15 insertions, 12 deletions
diff --git a/include/osmocom/sigtran/xua_msg.h b/include/osmocom/sigtran/xua_msg.h index e912e02..749d158 100644 --- a/include/osmocom/sigtran/xua_msg.h +++ b/include/osmocom/sigtran/xua_msg.h @@ -22,7 +22,10 @@ #include <osmocom/core/linuxlist.h> #include <osmocom/sigtran/mtp_sap.h> -#define XUA_HDR(class, type) ((struct xua_common_hdr) { .spare = 0, .msg_class = (class), .msg_type = (type) }) +/* GCC-4 errors with 'initializer element is not constant' if using XUA_HDR + * inside a const struct (OS#5004) */ +#define _XUA_HDR(class, type) { .spare = 0, .msg_class = (class), .msg_type = (type) } +#define XUA_HDR(class, type) ((struct xua_common_hdr) _XUA_HDR(class, type)) struct msgb; struct osmo_sccp_addr; diff --git a/tests/xua/xua_test.c b/tests/xua/xua_test.c index 77daa56..4f2c96c 100644 --- a/tests/xua/xua_test.c +++ b/tests/xua/xua_test.c @@ -384,7 +384,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-RESET", .sccp = PANDSIZ(bssmap_reset), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), + .hdr = _XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), .parts = { PARTU32(SUA_IEI_PROTO_CLASS, &sua_proto_class0), PARTARR(SUA_IEI_DEST_ADDR, sua_addr_ssn_bssmap), @@ -395,7 +395,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-RESET-ACK", .sccp = PANDSIZ(bssmap_reset_ack), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), + .hdr = _XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), .parts = { PARTU32(SUA_IEI_PROTO_CLASS, &sua_proto_class0), PARTARR(SUA_IEI_DEST_ADDR, sua_addr_ssn_bssmap_pc1), @@ -406,7 +406,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-PAGING", .sccp = PANDSIZ(bssmap_paging), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), + .hdr = _XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), .parts = { PARTU32(SUA_IEI_PROTO_CLASS, &sua_proto_class0), PARTARR(SUA_IEI_DEST_ADDR, sua_addr_ssn_bssmap_pc1), @@ -417,7 +417,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-UDT", .sccp = PANDSIZ(bssmap_udt), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), + .hdr = _XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), .parts = { PARTU32(SUA_IEI_PROTO_CLASS, &sua_proto_class0), PARTARR(SUA_IEI_DEST_ADDR, sua_addr_ssn_bssmap), @@ -428,7 +428,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-CR", .sccp = PANDSIZ(bssmap_cr), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CO, SUA_CO_CORE), + .hdr = _XUA_HDR(SUA_MSGC_CO, SUA_CO_CORE), .parts = { PARTU32(SUA_IEI_PROTO_CLASS, &sua_proto_class2), PARTU32(SUA_IEI_SRC_REF, &sua_loc_ref_bsc), @@ -439,7 +439,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-CC", .sccp = PANDSIZ(bssmap_cc), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CO, SUA_CO_COAK), + .hdr = _XUA_HDR(SUA_MSGC_CO, SUA_CO_COAK), .parts = { PARTU32(SUA_IEI_PROTO_CLASS, &sua_proto_class2), PARTU32(SUA_IEI_SRC_REF, &sua_loc_ref_msc), @@ -450,7 +450,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-DTAP", .sccp = PANDSIZ(bssmap_dtap), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CO, SUA_CO_CODT), + .hdr = _XUA_HDR(SUA_MSGC_CO, SUA_CO_CODT), .parts = { PARTU32(SUA_IEI_SRC_REF, &sua_loc_ref_msc), }, @@ -459,7 +459,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-CLEAR", .sccp = PANDSIZ(bssmap_clear), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CO, SUA_CO_CODT), + .hdr = _XUA_HDR(SUA_MSGC_CO, SUA_CO_CODT), .parts = { PARTU32(SUA_IEI_SRC_REF, &sua_loc_ref_msc), }, @@ -468,7 +468,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-RELEASED", .sccp = PANDSIZ(bssmap_released), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CO, SUA_CO_RELRE), + .hdr = _XUA_HDR(SUA_MSGC_CO, SUA_CO_RELRE), .parts = { PARTU32(SUA_IEI_DEST_REF, &sua_loc_ref_msc), PARTU32(SUA_IEI_SRC_REF, &sua_loc_ref_bsc), @@ -479,7 +479,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "BSSMAP-RELEASE_COMPLETE", .sccp = PANDSIZ(bssmap_release_complete), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CO, SUA_CO_RELCO), + .hdr = _XUA_HDR(SUA_MSGC_CO, SUA_CO_RELCO), .parts = { PARTU32(SUA_IEI_DEST_REF, &sua_loc_ref_bsc), PARTU32(SUA_IEI_SRC_REF, &sua_loc_ref_msc), @@ -489,7 +489,7 @@ static const struct sccp2sua_testcase sccp2sua_testcases[] = { .name = "TCAP", .sccp = PANDSIZ(tcap_global_title), .sua = { - .hdr = XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), + .hdr = _XUA_HDR(SUA_MSGC_CL, SUA_CL_CLDT), .parts = { }, }, |