Olivier, I have some questions about your patch submission. The majority are inserted, inline, into your quoted message below. Any patch marked '<DVM> Accepted.' has been committed as Reviewed by: Daryl McDaniel <daryl.mcdan...@intel.com>.
The remainder require further discussion. All of my comments are prefixed with <DVM>. <DVM> Were these all "set but not used" warnings? If not, what errors were you seeing and what version of GCC were you using? Daryl McDaniel -----Original Message----- From: Olivier Martin [mailto:olivier.mar...@arm.com] Sent: Wednesday, October 29, 2014 3:01 AM To: Mcdaniel, Daryl Cc: edk2-devel@lists.sourceforge.net; Olivier Martin Subject: [PATCH] StdLib/LibC: Removed/Fixed unused variable to build with GCC Some of the variables are unused that trigger a GCC warning/error. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.mar...@arm.com> --- StdLib/BsdSocketLib/bind.c | 3 +++ StdLib/BsdSocketLib/getnameinfo.c | 8 ++++++-- StdLib/BsdSocketLib/getsockopt.c | 3 +++ StdLib/BsdSocketLib/listen.c | 3 +++ StdLib/BsdSocketLib/poll.c | 3 +++ StdLib/BsdSocketLib/res_comp.c | 4 ++-- StdLib/BsdSocketLib/res_mkupdate.c | 3 +-- StdLib/BsdSocketLib/res_update.c | 4 ---- StdLib/BsdSocketLib/setsockopt.c | 3 +++ StdLib/EfiSocketLib/Ip4.c | 12 ------------ StdLib/EfiSocketLib/Socket.c | 1 + StdLib/EfiSocketLib/Tcp4.c | 4 ---- StdLib/EfiSocketLib/Tcp6.c | 4 ---- StdLib/LibC/Containers/Queues/Fifo.c | 2 -- StdLib/LibC/Uefi/InteractiveIO/IIOutilities.c | 10 ++++++---- StdLib/LibC/Uefi/InteractiveIO/IIOwrite.c | 3 --- StdLib/LibC/Uefi/InteractiveIO/NonCanonRead.c | 3 +-- StdLib/LibC/Uefi/writev.c | 4 ++-- 18 files changed, 34 insertions(+), 43 deletions(-) diff --git a/StdLib/BsdSocketLib/bind.c b/StdLib/BsdSocketLib/bind.c index f544c94..f22fe2f 100644 --- a/StdLib/BsdSocketLib/bind.c +++ b/StdLib/BsdSocketLib/bind.c @@ -65,6 +65,9 @@ bind ( name, namelen, &errno ); + if (EFI_ERROR (Status)) { + errno = -1; + } } <DVM> errno is set in the pfnBind call. Are you seeing that errors occur yet errno doesn't get set? Also, -1 is ERESTART which indicates that a system call needs to be restarted. Are you sure you don't want that instead of one of the other predefined errors? // diff --git a/StdLib/BsdSocketLib/getnameinfo.c b/StdLib/BsdSocketLib/getnameinfo.c index fab3460..0318d93 100644 --- a/StdLib/BsdSocketLib/getnameinfo.c +++ b/StdLib/BsdSocketLib/getnameinfo.c @@ -411,15 +411,19 @@ ip6_sa2str( int flags ) { - unsigned int ifindex; +#if 0 + unsigned int ifindex; const struct in6_addr *a6; +#endif int n; _DIAGASSERT(sa6 != NULL); _DIAGASSERT(buf != NULL); - ifindex = (unsigned int)sa6->sin6_scope_id; +#if 0 + ifindex = (unsigned int)sa6->sin6_scope_id; a6 = &sa6->sin6_addr; +#endif #ifdef NI_NUMERICSCOPE if ((flags & NI_NUMERICSCOPE) != 0) { <DVM> Accepted. diff --git a/StdLib/BsdSocketLib/getsockopt.c b/StdLib/BsdSocketLib/getsockopt.c index 47b7c6f..fdbd6f7 100644 --- a/StdLib/BsdSocketLib/getsockopt.c +++ b/StdLib/BsdSocketLib/getsockopt.c @@ -60,6 +60,9 @@ getsockopt ( option_value, option_len, &errno ); + if (EFI_ERROR (Status)) { + errno = -1; + } } <DVM> Same comment as for bind(). pfnOptionGet() sets errno for all error conditions. It even sets errno to ESUCCESS, 0, if there are no errors. Please let me know if you are seeing getsockopt() failing but errno is not set. // diff --git a/StdLib/BsdSocketLib/listen.c b/StdLib/BsdSocketLib/listen.c index 7c6d5f3..d3060a4 100644 --- a/StdLib/BsdSocketLib/listen.c +++ b/StdLib/BsdSocketLib/listen.c @@ -58,6 +58,9 @@ listen ( Status = pSocketProtocol->pfnListen ( pSocketProtocol, backlog, &errno ); + if (EFI_ERROR (Status)) { + errno = -1; + } } <DVM> Same comments as for bind() and getsockopt(). pfnListen() sets errno. // diff --git a/StdLib/BsdSocketLib/poll.c b/StdLib/BsdSocketLib/poll.c index dc17567..dcc367a 100644 --- a/StdLib/BsdSocketLib/poll.c +++ b/StdLib/BsdSocketLib/poll.c @@ -49,6 +49,9 @@ BslSocketPoll ( Events, &DetectedEvents, &errno ); + if (EFI_ERROR (Status)) { + errno = -1; + } } <DVM> Like bind(), getsockopt(), and listen(), the internal pfnPoll() function sets errno if an error occurs. The only errno value this implementation supports is EINVAL which indicates that a non-socket or invalid fd was passed as the first argument. I noticed a bug in pfnPoll() where errno is not actually set to EINVAL. That will be fixed. // diff --git a/StdLib/BsdSocketLib/res_comp.c b/StdLib/BsdSocketLib/res_comp.c index cddda3e..7b5f2aa 100644 --- a/StdLib/BsdSocketLib/res_comp.c +++ b/StdLib/BsdSocketLib/res_comp.c @@ -168,7 +168,7 @@ res_hnok( const char *dn ) { - int ppch = '\0', pch = PERIOD, ch = *dn++; + int pch = PERIOD, ch = *dn++; while (ch != '\0') { int nch = *dn++; @@ -185,7 +185,7 @@ res_hnok( if (!middlechar(ch)) return (0); } - ppch = pch, pch = ch, ch = nch; + pch = ch, ch = nch; } return (1); } <DVM> Accepted. diff --git a/StdLib/BsdSocketLib/res_mkupdate.c b/StdLib/BsdSocketLib/res_mkupdate.c index 3201f31..1056fc6 100644 --- a/StdLib/BsdSocketLib/res_mkupdate.c +++ b/StdLib/BsdSocketLib/res_mkupdate.c @@ -100,7 +100,7 @@ int res_mkupdate(ns_updrec *rrecp_in, u_char *buf, int buflen) { ns_updrec *rrecp_start = rrecp_in; HEADER *hp; - u_char *cp, *sp1, *sp2, *startp, *endp; + u_char *cp, *sp2, *startp, *endp; int n, i, soanum, multiline; ns_updrec *rrecp; struct in_addr ina; @@ -125,7 +125,6 @@ res_mkupdate(ns_updrec *rrecp_in, u_char *buf, int buflen) { hp->id = htons(++_res.id); hp->opcode = ns_o_update; hp->rcode = NOERROR; - sp1 = buf + 2*INT16SZ; /* save pointer to zocount */ cp = buf + HFIXEDSZ; buflen -= HFIXEDSZ; dpp = dnptrs; <DVM> Accepted diff --git a/StdLib/BsdSocketLib/res_update.c b/StdLib/BsdSocketLib/res_update.c index a01d832..f3ff0ce 100644 --- a/StdLib/BsdSocketLib/res_update.c +++ b/StdLib/BsdSocketLib/res_update.c @@ -120,7 +120,6 @@ res_update(ns_updrec *rrecp_in) { int i, j, k = 0, n, ancount, nscount, arcount, rcode, rdatasize, newgroup, done, myzone, seen_before, numzones = 0; u_int16_t dlen, class, qclass, type, qtype; - u_int32_t ttl; if ((_res.options & RES_INIT) == 0 && res_init() == -1) { h_errno = NETDB_INTERNAL; @@ -302,7 +301,6 @@ res_update(ns_updrec *rrecp_in) { if (cp + INT32SZ + INT16SZ > eom) return (-1); /* continue processing the soa record */ - GETLONG(ttl, cp); GETSHORT(dlen, cp); if (cp + dlen > eom) return (-1); @@ -424,7 +422,6 @@ ans=%d, auth=%d, add=%d, rcode=%d\n", return (-1); GETSHORT(type, cp); GETSHORT(class, cp); - GETLONG(ttl, cp); GETSHORT(dlen, cp); if (cp + dlen > eom) return (-1); @@ -450,7 +447,6 @@ ans=%d, auth=%d, add=%d, rcode=%d\n", return (-1); GETSHORT(type, cp); GETSHORT(class, cp); - GETLONG(ttl, cp); GETSHORT(dlen, cp); if (cp + dlen > eom) return (-1); <DVM> Rejected. While ttl itself isn't used, the GETLONG(ttl, cp); invocations are required in order to advance the cp pointer over the ttl field of the header. diff --git a/StdLib/BsdSocketLib/setsockopt.c b/StdLib/BsdSocketLib/setsockopt.c index 64f3a35..7db7dea 100644 --- a/StdLib/BsdSocketLib/setsockopt.c +++ b/StdLib/BsdSocketLib/setsockopt.c @@ -59,6 +59,9 @@ setsockopt ( option_value, option_len, &errno ); + if (EFI_ERROR (Status)) { + errno = -1; + } } <DVM> Like bind(), etc. pfnOptionSet() sets errno if any error occurs. // diff --git a/StdLib/EfiSocketLib/Ip4.c b/StdLib/EfiSocketLib/Ip4.c index ed71194..46425db 100644 --- a/StdLib/EfiSocketLib/Ip4.c +++ b/StdLib/EfiSocketLib/Ip4.c @@ -242,8 +242,6 @@ EslIp4OptionSet ( ) { BOOLEAN bTrueFalse; - socklen_t LengthInBytes; - UINT8 * pOptionData; EFI_STATUS Status; DBG_ENTER ( ); @@ -257,8 +255,6 @@ EslIp4OptionSet ( // // Determine if the option protocol matches // - LengthInBytes = 0; - pOptionData = NULL; switch ( OptionName ) { default: // @@ -283,12 +279,6 @@ EslIp4OptionSet ( bTrueFalse = FALSE; } pOptionValue = &bTrueFalse; - - // - // Set the option value - // - pOptionData = (UINT8 *)&pSocket->bIncludeHeader; - LengthInBytes = sizeof ( pSocket->bIncludeHeader ); } break; } <DVM> The patch is valid as far as removing two meaningless variables. There is something else wrong with this function, though, since it does nothing other than validate that OptionName is set to IP_HDRINCL. Query submitted to sub-package owner. @@ -653,7 +643,6 @@ EslIp4RxComplete ( ) { size_t LengthInBytes; - ESL_PORT * pPort; ESL_PACKET * pPacket; EFI_IP4_RECEIVE_DATA * pRxData; EFI_STATUS Status; @@ -663,7 +652,6 @@ EslIp4RxComplete ( // // Get the operation status. // - pPort = pIo->pPort; Status = pIo->Token.Ip4Rx.Status; // <DVM> Accepted change to EslIp4RxComplete(). diff --git a/StdLib/EfiSocketLib/Socket.c b/StdLib/EfiSocketLib/Socket.c index d53473e..740602d 100644 --- a/StdLib/EfiSocketLib/Socket.c +++ b/StdLib/EfiSocketLib/Socket.c @@ -4130,6 +4130,7 @@ EslSocketPortCloseComplete ( // Status = EslSocketPortCloseRxDone ( pPort ); DBG_EXIT_STATUS ( Status ); + ASSERT_EFI_ERROR (Status); } <DVM> Query submitted to the sub-package owner. The ASSERT may be superfluous. diff --git a/StdLib/EfiSocketLib/Tcp4.c b/StdLib/EfiSocketLib/Tcp4.c index 7ece38d..0419ee2 100644 --- a/StdLib/EfiSocketLib/Tcp4.c +++ b/StdLib/EfiSocketLib/Tcp4.c @@ -840,7 +840,6 @@ EslTcp4ListenComplete ( EFI_HANDLE ChildHandle; struct sockaddr_in LocalAddress; EFI_TCP4_CONFIG_DATA * pConfigData; - ESL_LAYER * pLayer; ESL_PORT * pNewPort; ESL_SOCKET * pNewSocket; ESL_SOCKET * pSocket; @@ -869,7 +868,6 @@ EslTcp4ListenComplete ( // Allocate a socket for this connection // ChildHandle = NULL; - pLayer = &mEslLayer; Status = EslSocketAllocate ( &ChildHandle, DEBUG_CONNECTION, &pNewSocket ); <DVM> Accepted. @@ -1924,7 +1922,6 @@ EslTcp4TxBuffer ( ESL_PACKET ** ppQueueHead; ESL_PACKET ** ppQueueTail; ESL_PACKET * pPreviousPacket; - ESL_TCP4_CONTEXT * pTcp4; size_t * pTxBytes; EFI_TCP4_TRANSMIT_DATA * pTxData; EFI_STATUS Status; @@ -1951,7 +1948,6 @@ EslTcp4TxBuffer ( // // Determine the queue head // - pTcp4 = &pPort->Context.Tcp4; bUrgent = (BOOLEAN)( 0 != ( Flags & MSG_OOB )); bUrgentQueue = bUrgent && ( !pSocket->bOobInLine ) <DVM> Accepted. diff --git a/StdLib/EfiSocketLib/Tcp6.c b/StdLib/EfiSocketLib/Tcp6.c index 21c4109..77a4a4c 100644 --- a/StdLib/EfiSocketLib/Tcp6.c +++ b/StdLib/EfiSocketLib/Tcp6.c @@ -871,7 +871,6 @@ EslTcp6ListenComplete ( EFI_HANDLE ChildHandle; struct sockaddr_in6 LocalAddress; EFI_TCP6_CONFIG_DATA * pConfigData; - ESL_LAYER * pLayer; ESL_PORT * pNewPort; ESL_SOCKET * pNewSocket; ESL_SOCKET * pSocket; @@ -900,7 +899,6 @@ EslTcp6ListenComplete ( // Allocate a socket for this connection // ChildHandle = NULL; - pLayer = &mEslLayer; Status = EslSocketAllocate ( &ChildHandle, DEBUG_CONNECTION, &pNewSocket ); <DVM> Accepted. @@ -1993,7 +1991,6 @@ EslTcp6TxBuffer ( ESL_PACKET ** ppQueueHead; ESL_PACKET ** ppQueueTail; ESL_PACKET * pPreviousPacket; - ESL_TCP6_CONTEXT * pTcp6; size_t * pTxBytes; EFI_TCP6_TRANSMIT_DATA * pTxData; EFI_STATUS Status; @@ -2020,7 +2017,6 @@ EslTcp6TxBuffer ( // // Determine the queue head // - pTcp6 = &pPort->Context.Tcp6; bUrgent = (BOOLEAN)( 0 != ( Flags & MSG_OOB )); bUrgentQueue = bUrgent && ( !pSocket->bOobInLine ) <DVM> Accepted. diff --git a/StdLib/LibC/Containers/Queues/Fifo.c b/StdLib/LibC/Containers/Queues/Fifo.c index 73254d2..93b62f8 100644 --- a/StdLib/LibC/Containers/Queues/Fifo.c +++ b/StdLib/LibC/Containers/Queues/Fifo.c @@ -278,7 +278,6 @@ FIFO_Dequeue ( { UINTN QPtr; UINT32 RDex; - UINT32 SizeOfElement; UINT32 i; assert(Self != NULL); @@ -289,7 +288,6 @@ FIFO_Dequeue ( } else { RDex = Self->ReadIndex; // Get this FIFO's Read Index - SizeOfElement = Self->ElementSize; // Get size of this FIFO's elements Count = MIN(Count, Self->Count(Self, AsElements)); // Lesser of requested or actual QPtr = (UINTN)Self->Queue + (RDex * Self->ElementSize); // Point to Read location in FIFO <DVM> Replacing all of the "Self->ElementSize" clauses in the function with "SizeOfElement" would be more efficient. diff --git a/StdLib/LibC/Uefi/InteractiveIO/IIOutilities.c b/StdLib/LibC/Uefi/InteractiveIO/IIOutilities.c index 1c978ea..b498d2b 100644 --- a/StdLib/LibC/Uefi/InteractiveIO/IIOutilities.c +++ b/StdLib/LibC/Uefi/InteractiveIO/IIOutilities.c @@ -75,7 +75,7 @@ IIO_GetInChar ( { cIIO *This; cFIFO *InBuf; - EFI_STATUS Status; + size_t Status; ssize_t NumRead; wint_t RetVal; wchar_t InChar; @@ -92,8 +92,10 @@ IIO_GetInChar ( } if(BufCnt > 0) { Status = InBuf->Read(InBuf, &InChar, 1); - --BufCnt; - NumRead = 1; + if (Status > 0) { + --BufCnt; + NumRead = 1; + } } else { NumRead = filp->f_ops->fo_read(filp, &filp->f_offset, sizeof(wchar_t), &InChar); @@ -104,7 +106,7 @@ IIO_GetInChar ( else { RetVal = (wint_t)InChar; } - return InChar; + return RetVal; } /** Get the current cursor position. <DVM> Accepted. diff --git a/StdLib/LibC/Uefi/InteractiveIO/IIOwrite.c b/StdLib/LibC/Uefi/InteractiveIO/IIOwrite.c index 927f4f4..2c5e81d 100644 --- a/StdLib/LibC/Uefi/InteractiveIO/IIOwrite.c +++ b/StdLib/LibC/Uefi/InteractiveIO/IIOwrite.c @@ -63,7 +63,6 @@ IIO_WriteOne(struct __filedes *filp, cFIFO *OBuf, wchar_t InCh) UINT32 CurRow; // Current cursor row on the screen UINT32 PrevColumn; // Previous column. Used to detect wrapping. UINT32 AdjColumn; // Current cursor column on the screen - UINT32 AdjRow; // Current cursor row on the screen RetVal = -1; wcb = wc; @@ -79,7 +78,6 @@ IIO_WriteOne(struct __filedes *filp, cFIFO *OBuf, wchar_t InCh) CurRow = This->CurrentXY.Row; numW = 1; // The majority of characters buffer one character - AdjRow = 0; // Most characters just cause horizontal movement AdjColumn = 0; if(OFlag & OPOST) { /* Perform output processing */ @@ -127,7 +125,6 @@ IIO_WriteOne(struct __filedes *filp, cFIFO *OBuf, wchar_t InCh) numW = 2; CurColumn = 0; } - AdjRow = 1; break; //}} case CHAR_BACKSPACE: //{{ <DVM> Accepted. diff --git a/StdLib/LibC/Uefi/InteractiveIO/NonCanonRead.c b/StdLib/LibC/Uefi/InteractiveIO/NonCanonRead.c index bcae9c8..3b226d1 100644 --- a/StdLib/LibC/Uefi/InteractiveIO/NonCanonRead.c +++ b/StdLib/LibC/Uefi/InteractiveIO/NonCanonRead.c @@ -37,7 +37,6 @@ IIO_NonCanonRead ( cIIO *This; cFIFO *InBuf; struct termios *Termio; - EFI_STATUS Status; ssize_t NumRead; cc_t tioMin; cc_t tioTime; @@ -74,7 +73,7 @@ IIO_NonCanonRead ( if(InBuf->IsEmpty(InBuf)) { NumRead = filp->f_ops->fo_read(filp, &filp->f_offset, sizeof(wchar_t), &InChar); if(NumRead > 0) { - Status = InBuf->Write(InBuf, &InChar, 1); // Buffer the character + InBuf->Write(InBuf, &InChar, 1); // Buffer the character } } // break; <DVM> Accepted. diff --git a/StdLib/LibC/Uefi/writev.c b/StdLib/LibC/Uefi/writev.c index 9cff086..56712c5 100644 --- a/StdLib/LibC/Uefi/writev.c +++ b/StdLib/LibC/Uefi/writev.c @@ -101,7 +101,7 @@ writev( ) { const struct iovec *pVecTmp; - char *pBuf, *pBufTmp; + char *pBuf; size_t TotalBytes, i, ret; // @@ -126,7 +126,7 @@ writev( // Copy vectors to the buffer // - for (pBufTmp = pBuf; iovcnt; iovcnt--) { + for (; iovcnt; iovcnt--) { bcopy(iov->iov_base, pBuf, iov->iov_len); pBuf += iov->iov_len; iov++; <DVM> Accepted. -- 2.1.1 ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel