From 8f586b85c3f617ba802e663b4b3b303e06140863 Mon Sep 17 00:00:00 2001 From: Randy Pawell Date: Thu, 4 Dec 2014 00:55:50 +0000 Subject: [PATCH] NetworkPkg: Source fixes and cleanup for ARMGCC compiles - Fix EFI_IPv4_ADDRESS usages to use a macro to copy the structure instead of direct assignment, to avoid runtime alignment errors. - Delete excess local variables that are initialized but otherwise unused. - Add LibraryClasses.ARM & AARCH64 section in NetworkPkg.dsc file, containing a CompilerIntrinsicsLib null-library, required for successful standalone package builds (copied from MdeModulePkg.dsc). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Randy Pawell Reviewed-by: Fu Siyuan Reviewed-by: Ye Ting git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16472 6f19259b-4bc3-4df7-8a09-765794883524 --- NetworkPkg/Dhcp6Dxe/Dhcp6Io.c | 5 +---- NetworkPkg/Ip6Dxe/Ip6Impl.c | 3 +-- NetworkPkg/NetworkPkg.dsc | 11 +++++++++- NetworkPkg/TcpDxe/TcpDispatcher.c | 31 +++++++++++++++++---------- NetworkPkg/TcpDxe/TcpMain.c | 7 +++--- NetworkPkg/TcpDxe/TcpMisc.c | 3 +-- NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c | 3 +-- NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c | 3 +-- 8 files changed, 39 insertions(+), 27 deletions(-) diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c index e0a2b4b15f..b231479525 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c @@ -1,6 +1,7 @@ /** @file Dhcp6 internal functions implementation. + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials @@ -544,7 +545,6 @@ Dhcp6UpdateIaInfo ( ) { EFI_STATUS Status; - EFI_DHCP6_STATE State; UINT8 *Option; UINT8 *IaInnerOpt; UINT16 IaInnerLen; @@ -565,7 +565,6 @@ Dhcp6UpdateIaInfo ( // // See details in the section-18.1.8 of rfc-3315. // - State = Dhcp6Init; Option = Dhcp6SeekIaOption ( Packet->Dhcp6.Option, Packet->Length - sizeof (EFI_DHCP6_HEADER), @@ -2428,14 +2427,12 @@ Dhcp6HandleAdvertiseMsg ( { EFI_STATUS Status; UINT8 *Option; - UINT16 StsCode; BOOLEAN Timeout; ASSERT(Instance->Config); ASSERT(Instance->IaCb.Ia); Timeout = FALSE; - StsCode = Dhcp6StsSuccess; // // If the client does receives a valid reply message that includes a rapid diff --git a/NetworkPkg/Ip6Dxe/Ip6Impl.c b/NetworkPkg/Ip6Dxe/Ip6Impl.c index 621879b1ea..b186c0af20 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Impl.c +++ b/NetworkPkg/Ip6Dxe/Ip6Impl.c @@ -1,6 +1,7 @@ /** @file Implementation of EFI_IP6_PROTOCOL protocol interfaces. + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials @@ -1761,7 +1762,6 @@ EfiIp6Cancel ( ) { IP6_PROTOCOL *IpInstance; - IP6_SERVICE *IpSb; EFI_STATUS Status; EFI_TPL OldTpl; @@ -1770,7 +1770,6 @@ EfiIp6Cancel ( } IpInstance = IP6_INSTANCE_FROM_PROTOCOL (This); - IpSb = IpInstance->Service; OldTpl = gBS->RaiseTPL (TPL_CALLBACK); diff --git a/NetworkPkg/NetworkPkg.dsc b/NetworkPkg/NetworkPkg.dsc index 491abd2b8c..80685dd645 100644 --- a/NetworkPkg/NetworkPkg.dsc +++ b/NetworkPkg/NetworkPkg.dsc @@ -1,6 +1,7 @@ ## @file # UEFI 2.4 Network Module Package for All Architectures # +# (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
# # This program and the accompanying materials @@ -19,7 +20,7 @@ PLATFORM_VERSION = 0.95 DSC_SPECIFICATION = 0x00010005 OUTPUT_DIRECTORY = Build/NetworkPkg - SUPPORTED_ARCHITECTURES = IA32|IPF|X64|EBC|ARM + SUPPORTED_ARCHITECTURES = IA32|IPF|X64|EBC|ARM|AARCH64 BUILD_TARGETS = DEBUG|RELEASE SKUID_IDENTIFIER = DEFAULT @@ -57,6 +58,14 @@ SortLib|ShellPkg/Library/UefiSortLib/UefiSortLib.inf ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf +[LibraryClasses.ARM, LibraryClasses.AARCH64] + # + # It is not possible to prevent ARM compiler calls to generic intrinsic functions. + # This library provides the instrinsic functions generated by a given compiler. + # [LibraryClasses.ARM] and NULL mean link this library into all ARM images. + # + NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf + [PcdsFeatureFlag] gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable|TRUE gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable|TRUE diff --git a/NetworkPkg/TcpDxe/TcpDispatcher.c b/NetworkPkg/TcpDxe/TcpDispatcher.c index 7b3d14dace..d4bc8ace55 100644 --- a/NetworkPkg/TcpDxe/TcpDispatcher.c +++ b/NetworkPkg/TcpDxe/TcpDispatcher.c @@ -1,6 +1,7 @@ /** @file The implementation of a dispatch routine for processing TCP requests. + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials @@ -98,12 +99,12 @@ Tcp4GetMode ( AccessPoint->UseDefaultAddress = Tcb->UseDefaultAddr; - CopyMem (&AccessPoint->StationAddress, &Tcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS)); + IP4_COPY_ADDRESS (&AccessPoint->StationAddress, &Tcb->LocalEnd.Ip); - AccessPoint->SubnetMask = Tcb->SubnetMask; + IP4_COPY_ADDRESS (&AccessPoint->SubnetMask, &Tcb->SubnetMask); AccessPoint->StationPort = NTOHS (Tcb->LocalEnd.Port); - CopyMem (&AccessPoint->RemoteAddress, &Tcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS)); + IP4_COPY_ADDRESS (&AccessPoint->RemoteAddress, &Tcb->RemoteEnd.Ip); AccessPoint->RemotePort = NTOHS (Tcb->RemoteEnd.Port); AccessPoint->ActiveFlag = (BOOLEAN) (Tcb->State != TCP_LISTEN); @@ -239,7 +240,7 @@ TcpBind ( UINT16 *RandomPort; if (IpVersion == IP_VERSION_4) { - CopyMem (&Local, &TcpAp->Tcp4Ap.StationAddress, sizeof (EFI_IPv4_ADDRESS)); + IP4_COPY_ADDRESS (&Local, &TcpAp->Tcp4Ap.StationAddress); Port = &TcpAp->Tcp4Ap.StationPort; RandomPort = &mTcp4RandomPort; } else { @@ -495,12 +496,14 @@ TcpConfigurePcb ( IpCfgData.Ip4CfgData.TypeOfService = CfgData->Tcp4CfgData.TypeOfService; IpCfgData.Ip4CfgData.TimeToLive = CfgData->Tcp4CfgData.TimeToLive; IpCfgData.Ip4CfgData.UseDefaultAddress = CfgData->Tcp4CfgData.AccessPoint.UseDefaultAddress; - IpCfgData.Ip4CfgData.SubnetMask = CfgData->Tcp4CfgData.AccessPoint.SubnetMask; + IP4_COPY_ADDRESS ( + &IpCfgData.Ip4CfgData.SubnetMask, + &CfgData->Tcp4CfgData.AccessPoint.SubnetMask + ); IpCfgData.Ip4CfgData.ReceiveTimeout = (UINT32) (-1); - CopyMem ( + IP4_COPY_ADDRESS ( &IpCfgData.Ip4CfgData.StationAddress, - &CfgData->Tcp4CfgData.AccessPoint.StationAddress, - sizeof (EFI_IPv4_ADDRESS) + &CfgData->Tcp4CfgData.AccessPoint.StationAddress ); } else { @@ -533,8 +536,14 @@ TcpConfigurePcb ( // // Get the default address information if the instance is configured to use default address. // - CfgData->Tcp4CfgData.AccessPoint.StationAddress = IpCfgData.Ip4CfgData.StationAddress; - CfgData->Tcp4CfgData.AccessPoint.SubnetMask = IpCfgData.Ip4CfgData.SubnetMask; + IP4_COPY_ADDRESS ( + &CfgData->Tcp4CfgData.AccessPoint.StationAddress, + &IpCfgData.Ip4CfgData.StationAddress + ); + IP4_COPY_ADDRESS ( + &CfgData->Tcp4CfgData.AccessPoint.SubnetMask, + &IpCfgData.Ip4CfgData.SubnetMask + ); TcpAp = (TCP_ACCESS_POINT *) &CfgData->Tcp4CfgData.AccessPoint; } else { @@ -601,7 +610,7 @@ TcpConfigurePcb ( CopyMem (&Tcb->LocalEnd.Ip, &CfgData->Tcp4CfgData.AccessPoint.StationAddress, sizeof (IP4_ADDR)); Tcb->LocalEnd.Port = HTONS (CfgData->Tcp4CfgData.AccessPoint.StationPort); - Tcb->SubnetMask = CfgData->Tcp4CfgData.AccessPoint.SubnetMask; + IP4_COPY_ADDRESS (&Tcb->SubnetMask, &CfgData->Tcp4CfgData.AccessPoint.SubnetMask); CopyMem (&Tcb->RemoteEnd.Ip, &CfgData->Tcp4CfgData.AccessPoint.RemoteAddress, sizeof (IP4_ADDR)); Tcb->RemoteEnd.Port = HTONS (CfgData->Tcp4CfgData.AccessPoint.RemotePort); diff --git a/NetworkPkg/TcpDxe/TcpMain.c b/NetworkPkg/TcpDxe/TcpMain.c index 3c103444bd..66a09c41ea 100644 --- a/NetworkPkg/TcpDxe/TcpMain.c +++ b/NetworkPkg/TcpDxe/TcpMain.c @@ -1,6 +1,7 @@ /** @file Implementation of EFI_TCP4_PROTOCOL and EFI_TCP6_PROTOCOL. + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
This program and the accompanying materials @@ -229,9 +230,9 @@ Tcp4Routes ( Sock = SOCK_FROM_THIS (This); RouteInfo.DeleteRoute = DeleteRoute; - RouteInfo.SubnetAddress = SubnetAddress; - RouteInfo.SubnetMask = SubnetMask; - RouteInfo.GatewayAddress = GatewayAddress; + IP4_COPY_ADDRESS (&RouteInfo.SubnetAddress, &SubnetAddress); + IP4_COPY_ADDRESS (&RouteInfo.SubnetMask, &SubnetMask); + IP4_COPY_ADDRESS (&RouteInfo.GatewayAddress, &GatewayAddress); return SockRoute (Sock, &RouteInfo); } diff --git a/NetworkPkg/TcpDxe/TcpMisc.c b/NetworkPkg/TcpDxe/TcpMisc.c index 5394f7d1ca..0a4eda37c8 100644 --- a/NetworkPkg/TcpDxe/TcpMisc.c +++ b/NetworkPkg/TcpDxe/TcpMisc.c @@ -1,6 +1,7 @@ /** @file Misc support routines for TCP driver. + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials @@ -428,7 +429,6 @@ TcpInsertTcb ( LIST_ENTRY *Entry; LIST_ENTRY *Head; TCP_CB *Node; - TCP_PROTO_DATA *TcpProto; ASSERT ( (Tcb != NULL) && @@ -466,7 +466,6 @@ TcpInsertTcb ( InsertHeadList (Head, &Tcb->List); - TcpProto = (TCP_PROTO_DATA *) Tcb->Sk->ProtoReserved; return 0; } diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c index b71998b405..111224cea2 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c @@ -1,6 +1,7 @@ /** @file Functions implementation related with DHCPv6 for UefiPxeBc Driver. + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials @@ -664,7 +665,6 @@ PxeBcRequestBootService ( { EFI_PXE_BASE_CODE_UDP_PORT SrcPort; EFI_PXE_BASE_CODE_UDP_PORT DestPort; - EFI_PXE_BASE_CODE_MODE *Mode; EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; EFI_PXE_BASE_CODE_DHCPV6_PACKET *Discover; UINTN DiscoverLen; @@ -682,7 +682,6 @@ PxeBcRequestBootService ( UINT8 *Option; PxeBc = &Private->PxeBc; - Mode = PxeBc->Mode; Request = Private->Dhcp6Request; ProxyOffer = &Private->OfferBuffer[Index].Dhcp6.Packet.Offer; SrcPort = PXEBC_BS_DISCOVER_PORT; diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c index 8ee831f521..92fd1f19df 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c @@ -1,6 +1,7 @@ /** @file Driver Binding functions implementationfor for UefiPxeBc Driver. + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.
This program and the accompanying materials @@ -1400,7 +1401,6 @@ PxeBcStop ( EFI_LOAD_FILE_PROTOCOL *LoadFile; EFI_STATUS Status; EFI_HANDLE NicHandle; - BOOLEAN IsIpv6; PXEBC_PRIVATE_PROTOCOL *Id; Private = NULL; @@ -1408,7 +1408,6 @@ PxeBcStop ( VirtualNic = NULL; LoadFile = NULL; Id = NULL; - IsIpv6 = FALSE; Status = gBS->OpenProtocol ( ControllerHandle, -- 2.39.5