diff options
author | Kai Kang <kai.kang@windriver.com> | 2015-08-26 17:05:48 +0800 |
---|---|---|
committer | Joe MacDonald <joe_macdonald@mentor.com> | 2015-09-14 14:48:17 -0400 |
commit | 9b20fb3f8ca6d22cfb22dd5d9454f13e47224d7a (patch) | |
tree | cdf4523a702863ee6beb32262d13e54fc91d9532 | |
parent | 43188cd97418e1456abd564a4464beadbdb3f345 (diff) | |
download | meta-openembedded-9b20fb3f8ca6d22cfb22dd5d9454f13e47224d7a.tar.gz |
opensaf: fix build errors with gcc 5
Backport patches from upstream to fix opensaf build failures with gcc 5.
Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
3 files changed, 146 insertions, 0 deletions
diff --git a/meta-networking/recipes-daemons/opensaf/opensaf/Fix_GCC_5.1.0_compiler_warning.patch b/meta-networking/recipes-daemons/opensaf/opensaf/Fix_GCC_5.1.0_compiler_warning.patch new file mode 100644 index 000000000..860d61245 --- /dev/null +++ b/meta-networking/recipes-daemons/opensaf/opensaf/Fix_GCC_5.1.0_compiler_warning.patch | |||
@@ -0,0 +1,64 @@ | |||
1 | Upstream-Status: Backport | ||
2 | |||
3 | Signed-off-by: Kai Kang <kai.kang@windriver.com> | ||
4 | --- | ||
5 | # HG changeset patch | ||
6 | # User Anders Widell <anders.widell@ericsson.com> | ||
7 | # Date 1431081180 -7200 | ||
8 | # Fri May 08 12:33:00 2015 +0200 | ||
9 | # Branch opensaf-4.5.x | ||
10 | # Node ID ee74d1846cadf5c237f420279610968216e3bbe0 | ||
11 | # Parent 32079e2039d2a31c1adfbe7eef2e6ee8a2e25810 | ||
12 | amf: Fix GCC 5.1.0 compiler warning [#1340] | ||
13 | |||
14 | The following warning was fixed by replacing the case statement with an if | ||
15 | statement: | ||
16 | |||
17 | susm.cc: In function 'uint32_t avnd_evt_avd_su_pres_evh(AVND_CB*, AVND_EVT*)': | ||
18 | susm.cc:1237:26: error: switch condition has type bool [-Werror=switch-bool] | ||
19 | switch (info->term_state) { | ||
20 | ^ | ||
21 | |||
22 | diff -r 32079e2039d2 -r ee74d1846cad osaf/services/saf/amf/amfnd/susm.cc | ||
23 | --- a/osaf/services/saf/amf/amfnd/susm.cc Fri May 08 12:10:55 2015 +0530 | ||
24 | +++ b/osaf/services/saf/amf/amfnd/susm.cc Fri May 08 12:33:00 2015 +0200 | ||
25 | @@ -1234,8 +1234,7 @@ | ||
26 | goto done; | ||
27 | } | ||
28 | |||
29 | - switch (info->term_state) { | ||
30 | - case true: /* => terminate the su */ | ||
31 | + if (info->term_state) { /* => terminate the su */ | ||
32 | /* Stop saAmfSGSuRestartProb timer if started */ | ||
33 | if (su->su_err_esc_level == AVND_ERR_ESC_LEVEL_1) { | ||
34 | tmr_su_err_esc_stop(cb, su); | ||
35 | @@ -1269,9 +1268,7 @@ | ||
36 | if (NCSCC_RC_SUCCESS != rc) | ||
37 | goto done; | ||
38 | } | ||
39 | - break; | ||
40 | - | ||
41 | - case false: /* => instantiate the su */ | ||
42 | + } else { /* => instantiate the su */ | ||
43 | TRACE("SU term state is set to false"); | ||
44 | /* Reset admn term operation flag */ | ||
45 | m_AVND_SU_ADMN_TERM_RESET(su); | ||
46 | @@ -1299,7 +1296,7 @@ | ||
47 | /* Will transition to instantiation-failed when instantiated */ | ||
48 | LOG_ER("'%s':FAILED", __FUNCTION__); | ||
49 | rc = NCSCC_RC_FAILURE; | ||
50 | - break; | ||
51 | + goto done; | ||
52 | } | ||
53 | /* trigger su instantiation for pi su */ | ||
54 | if (m_AVND_SU_IS_PREINSTANTIABLE(su)) { | ||
55 | @@ -1315,8 +1312,7 @@ | ||
56 | } else | ||
57 | osafassert(0); | ||
58 | } | ||
59 | - break; | ||
60 | - } /* switch */ | ||
61 | + } | ||
62 | |||
63 | done: | ||
64 | TRACE_LEAVE2("%u", rc); | ||
diff --git a/meta-networking/recipes-daemons/opensaf/opensaf/Revert_imma_client_node_replyPending_to_unsigned_char.patch b/meta-networking/recipes-daemons/opensaf/opensaf/Revert_imma_client_node_replyPending_to_unsigned_char.patch new file mode 100644 index 000000000..68d051e3c --- /dev/null +++ b/meta-networking/recipes-daemons/opensaf/opensaf/Revert_imma_client_node_replyPending_to_unsigned_char.patch | |||
@@ -0,0 +1,80 @@ | |||
1 | Upstream-Status: Backport | ||
2 | |||
3 | Signed-off-by: Kai Kang <kai.kang@windriver.com> | ||
4 | --- | ||
5 | # HG changeset patch | ||
6 | # User Anders Bjornerstedt <anders.bjornerstedt@ericsson.com> | ||
7 | # Date 1430120883 -7200 | ||
8 | # Mon Apr 27 09:48:03 2015 +0200 | ||
9 | # Branch opensaf-4.6.x | ||
10 | # Node ID 97eb2e7b29bbe0aacee0ad9b13cf84f1a4d5d9b0 | ||
11 | # Parent 60b2136fcadf82f653b43ba1b5790f6dc3be3161 | ||
12 | immsv: Revert imma_client_node->replyPending to unsigned char [#1341] | ||
13 | |||
14 | |||
15 | The member imma_client_node->replyPending was in OpenSAF4.1 and earlier | ||
16 | defined as 'uns8', i.e. a byte. But this member is a counter and not a boolean. | ||
17 | The uns8 type was often used as a proxy for a boolean type in OpenSAF 4.1 and | ||
18 | earlier. This was before 'bool' was available as a first class type for gcc. | ||
19 | At some point in OpenSAF 4.2 the bool C type became available in gcc. There | ||
20 | was then a general sweep across all services to change the use of uns8 to bool. | ||
21 | The replyPending member was swept along in this change, but code actually | ||
22 | still increments and decrements the value, which makes no sense for a boolean | ||
23 | type. | ||
24 | |||
25 | The intent of the replyPending member is to keep track of outstanding | ||
26 | replies on requests from imma library to immnd server using the handle. | ||
27 | This so that a restart of the local IMMND will result in the handle being | ||
28 | marked as 'exposed' and not resurrected. | ||
29 | An IMMND restart will mean that any unreplied requests will have lost | ||
30 | their replies. This violates the interface contract from the imm service | ||
31 | side towards the client using the handle and so the handle must not be | ||
32 | allowed to get resurrected. Instead the handle must be marked as exposed. | ||
33 | The client will then get an ERR_BAD_HANDLE from either saImmOxDispatch | ||
34 | (failed active resurrect) or from the next syncronous downcall made after | ||
35 | IMMND went down (failed reactive resurrect). | ||
36 | |||
37 | For syncronous requests, the count will only go from 0 to 1 and back to 0 on | ||
38 | reply. This ticket does not affect syncronous requests. For asyncronous | ||
39 | requests it is possible for the client to invoke more than one request, | ||
40 | before entering poll to receive replies. For asyncronous requests the | ||
41 | replyPending member must work as a counter and not a boolean. The effect | ||
42 | of being a boolean is that a handle may get resurrected when there is | ||
43 | still asyncronous requests unreplied to, i.e. the replies would get silently | ||
44 | lost. | ||
45 | |||
46 | This changeset restores the type of the repliesPending member to unsigned char. | ||
47 | |||
48 | diff -r 60b2136fcadf -r 97eb2e7b29bb osaf/libs/agents/saf/imma/imma_cb.h | ||
49 | --- a/osaf/libs/agents/saf/imma/imma_cb.h Fri Apr 24 14:40:09 2015 +0200 | ||
50 | +++ b/osaf/libs/agents/saf/imma/imma_cb.h Mon Apr 27 09:48:03 2015 +0200 | ||
51 | @@ -50,13 +50,13 @@ | ||
52 | SaUint32T mImplementerId; /*Only used for OI.*/ | ||
53 | SaImmOiImplementerNameT mImplementerName; /* needed for active resurrect*/ | ||
54 | SaUint32T syncr_timeout;/* Timeout on syncr downcalls, dflt 10s, or setenv IMMA_SYNCR_TIMEOUT */ | ||
55 | + unsigned char replyPending; /* Syncronous or asyncronous call made towards IMMND */ | ||
56 | bool isOm; /*If true => then this is an OM client */ | ||
57 | bool stale; /*Loss of connection with immnd | ||
58 | will set this to true for the | ||
59 | connection. A resurrect can remove it.*/ | ||
60 | bool exposed; /* Exposed => stale is irreversible */ | ||
61 | bool selObjUsable; /* Active resurrect possible for this client */ | ||
62 | - bool replyPending; /* Syncronous or asyncronous call made towards IMMND */ | ||
63 | bool isPbe; /* True => This is the PBE-OI */ | ||
64 | bool isImmA2b; /* Version A.02.11 */ | ||
65 | bool isImmA2bCbk; /* Version A.02.11 callback*/ | ||
66 | diff -r 60b2136fcadf -r 97eb2e7b29bb osaf/libs/agents/saf/imma/imma_proc.c | ||
67 | --- a/osaf/libs/agents/saf/imma/imma_proc.c Fri Apr 24 14:40:09 2015 +0200 | ||
68 | +++ b/osaf/libs/agents/saf/imma/imma_proc.c Mon Apr 27 09:48:03 2015 +0200 | ||
69 | @@ -3346,7 +3346,10 @@ | ||
70 | cl_node->handle); | ||
71 | } | ||
72 | } else { | ||
73 | - /* Reaching 255 is sticky. */ | ||
74 | + /* Decrementing from zero implies a bug in the library logic. | ||
75 | + The real count has been lost. Set the value to 255. This does not | ||
76 | + disturb current function, but makes the handle not resurrectable in | ||
77 | + case of iMMND restart while handle is still open. */ | ||
78 | TRACE_3("Will not decrement zero pending reply count for handle %llx", | ||
79 | cl_node->handle); | ||
80 | cl_node->replyPending = 0xff; | ||
diff --git a/meta-networking/recipes-daemons/opensaf/opensaf_4.6.0.bb b/meta-networking/recipes-daemons/opensaf/opensaf_4.6.0.bb index 83cb1be94..28f4c006d 100644 --- a/meta-networking/recipes-daemons/opensaf/opensaf_4.6.0.bb +++ b/meta-networking/recipes-daemons/opensaf/opensaf_4.6.0.bb | |||
@@ -18,6 +18,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/releases/${BPN}-${PV}.tar.gz \ | |||
18 | file://plmcd.service \ | 18 | file://plmcd.service \ |
19 | file://plmcboot.service \ | 19 | file://plmcboot.service \ |
20 | file://0001-plmcd-error-fix.patch \ | 20 | file://0001-plmcd-error-fix.patch \ |
21 | file://Revert_imma_client_node_replyPending_to_unsigned_char.patch \ | ||
22 | file://Fix_GCC_5.1.0_compiler_warning.patch \ | ||
21 | " | 23 | " |
22 | 24 | ||
23 | SRC_URI[md5sum] = "a1ceddb517c0972aa7e899b092d7f464" | 25 | SRC_URI[md5sum] = "a1ceddb517c0972aa7e899b092d7f464" |