Patchwork [01/29,AARCH64] Fix utmp struct for compatibility reasons.

login
register
mail settings
Submitter Andrew Pinski
Date Oct. 27, 2014, 7:59 a.m.
Message ID <1414396793-9005-2-git-send-email-apinski@cavium.com>
Download mbox | patch
Permalink /patch/3402/
State New
Headers show

Comments

Andrew Pinski - Oct. 27, 2014, 7:59 a.m.
NOTE This is an ABI change for AARCH64.
If you have some AARCH32 and AARCH64 applications and they both use
utmp, one of them will fail due to the use of time_t inside the
utmp binary format.

This fixes the problem by setting __WORDSIZE_TIME64_COMPAT32.

* sysdeps/aarch64/bits/wordsize.h: New file.
---
 sysdeps/aarch64/bits/wordsize.h |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)
 create mode 100644 sysdeps/aarch64/bits/wordsize.h
Joseph Myers - Oct. 27, 2014, 5:57 p.m.
On Mon, 27 Oct 2014, Andrew Pinski wrote:

> NOTE This is an ABI change for AARCH64.

Shouldn't that imply symbol version changes for affected functions (I'm 
not sure how much compat functions at the old versions could do, given 
there's a file format change involved here, but it still seems prudent to 
avoid binaries expecting the new format running the libc built for the old 
format), and warnings in NEWS?
Andreas Schwab - Oct. 27, 2014, 9:18 p.m.
"Joseph S. Myers" <joseph@codesourcery.com> writes:

> On Mon, 27 Oct 2014, Andrew Pinski wrote:
>
>> NOTE This is an ABI change for AARCH64.
>
> Shouldn't that imply symbol version changes for affected functions (I'm 
> not sure how much compat functions at the old versions could do, given 
> there's a file format change involved here, but it still seems prudent to 
> avoid binaries expecting the new format running the libc built for the old 
> format), and warnings in NEWS?

IIRC we already had such a migration in 2002.

Andreas.

Patch

diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h
new file mode 100644
index 0000000..3ecccaa
--- /dev/null
+++ b/sysdeps/aarch64/bits/wordsize.h
@@ -0,0 +1,26 @@ 
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#define __WORDSIZE	64
+
+/* LP64 ABI has a 64bit time_t.
+   This allows aarch32 and AARCH64 applications
+   both access utmp. */
+#define __WORDSIZE_TIME64_COMPAT32	1
+
+/* LP64 use the 64bit system call interface. */
+#define __SYSCALL_WORDSIZE 64