[Feature][task-view-998]merge P56U10 version

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: Id05b15148bef69d7b4642d18cc40564e5ef0c9a0
diff --git a/ap/libc/glibc/glibc-2.23/bits/typesizes.h b/ap/libc/glibc/glibc-2.23/bits/typesizes.h
index a8c4904..53047b8 100755
--- a/ap/libc/glibc/glibc-2.23/bits/typesizes.h
+++ b/ap/libc/glibc/glibc-2.23/bits/typesizes.h
@@ -47,7 +47,7 @@
 #define	__FSWORD_T_TYPE		__SWORD_TYPE
 #define	__ID_T_TYPE		__U32_TYPE
 #define __CLOCK_T_TYPE		__SLONGWORD_TYPE
-#define __TIME_T_TYPE		__ULONGWORD_TYPE
+#define __TIME_T_TYPE		__SLONGWORD_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
diff --git a/ap/libc/glibc/glibc-2.23/sysdeps/unix/sysv/linux/adjtime.c b/ap/libc/glibc/glibc-2.23/sysdeps/unix/sysv/linux/adjtime.c
index d37cfa1..555d82f 100755
--- a/ap/libc/glibc/glibc-2.23/sysdeps/unix/sysv/linux/adjtime.c
+++ b/ap/libc/glibc/glibc-2.23/sysdeps/unix/sysv/linux/adjtime.c
@@ -58,11 +58,11 @@
       struct TIMEVAL tmp;
 
       /* We will do some check here. */
-      tmp.tv_sec = (signed long)itv->tv_sec + itv->tv_usec / 1000000L;
+      tmp.tv_sec = itv->tv_sec + itv->tv_usec / 1000000L;
       tmp.tv_usec = itv->tv_usec % 1000000L;
-      if ((signed long)tmp.tv_sec > (signed long)MAX_SEC || (signed long)tmp.tv_sec < (signed long)MIN_SEC)
+      if (tmp.tv_sec > MAX_SEC || tmp.tv_sec < MIN_SEC)
 	return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
-      tntx.offset = tmp.tv_usec + (signed long)tmp.tv_sec * 1000000L;
+      tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L;
       tntx.modes = ADJ_OFFSET_SINGLESHOT;
     }
   else
diff --git a/ap/libc/glibc/glibc-2.23/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/ap/libc/glibc/glibc-2.23/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
index 9b7265f..c31bba2 100755
--- a/ap/libc/glibc/glibc-2.23/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
+++ b/ap/libc/glibc/glibc-2.23/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
@@ -48,7 +48,7 @@
 #define	__FSWORD_T_TYPE		__SWORD_TYPE
 #define	__ID_T_TYPE		__U32_TYPE
 #define __CLOCK_T_TYPE		__SLONGWORD_TYPE
-#define __TIME_T_TYPE		__ULONGWORD_TYPE
+#define __TIME_T_TYPE		__SLONGWORD_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
diff --git a/ap/libc/glibc/glibc-2.23/time/offtime.c b/ap/libc/glibc/glibc-2.23/time/offtime.c
index 42ef7d5..b540b2f 100644
--- a/ap/libc/glibc/glibc-2.23/time/offtime.c
+++ b/ap/libc/glibc/glibc-2.23/time/offtime.c
@@ -28,7 +28,7 @@
 int
 __offtime (const time_t *t, long int offset, struct tm *tp)
 {
-  long long days, rem, y;
+  time_t days, rem, y;
   const unsigned short int *ip;
 
   days = *t / SECS_PER_DAY;
@@ -60,7 +60,7 @@
   while (days < 0 || days >= (__isleap (y) ? 366 : 365))
     {
       /* Guess a corrected year, assuming 365 days per year.  */
-      long long yg = y + days / 365 - (days % 365 < 0);
+      time_t yg = y + days / 365 - (days % 365 < 0);
 
       /* Adjust DAYS and Y to match the guessed year.  */
       days -= ((yg - y) * 365
diff --git a/ap/libc/glibc/glibc-2.23/time/tzfile.c b/ap/libc/glibc/glibc-2.23/time/tzfile.c
index d38e5a3..9049878 100755
--- a/ap/libc/glibc/glibc-2.23/time/tzfile.c
+++ b/ap/libc/glibc/glibc-2.23/time/tzfile.c
@@ -648,7 +648,7 @@
       __tzname[0] = NULL;
       __tzname[1] = NULL;
 
-      if (__glibc_unlikely (num_transitions == 0))
+      if (__glibc_unlikely (num_transitions == 0 || timer < transitions[0]))
 	{
 	  /* TIMER is before any transition (or there are no transitions).
 	     Choose the first non-DST type