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 /meta-networking | |
| 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>
Diffstat (limited to 'meta-networking')
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 0000000000..860d612451 --- /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 0000000000..68d051e3c5 --- /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 83cb1be94d..28f4c006da 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" |
