summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@mips.com>2018-07-05 18:06:43 +0100
committerMaciej W. Rozycki <macro@mips.com>2018-07-05 18:06:43 +0100
commit9449a295ad7e30f3a787421cb22aaa475f950549 (patch)
treedc51ac41c40921f14229dd25cb3d98bb0141d4cf
parentd6da5cb6a8e0e8a9ce92b7d951a254cf325248d7 (diff)
libc-abis: Define ABSOLUTE ABI [BZ #19818][BZ #23307]
Define a new ABSOLUTE ABI for static linker's use with EI_ABIVERSION where correct absolute (SHN_ABS) symbol run-time load semantics is required. This way it can be ensured at static link time that a program or DSO will not suffer from previous semantics where absolute symbols were relocated by the base address, or symbols whose `st_value' is zero silently ignored leading to a confusing "undefined symbol" error message at load time, and instead "ELF file ABI version invalid" is printed with old dynamic loaders, making it clear that there is an ABI version incompatibility. [BZ #19818] [BZ #23307] * libc-abis (ABSOLUTE): New ABI. * sysdeps/unix/sysv/linux/mips/libc-abis (ABSOLUTE): New ABI. * NEWS: Mention the new ABI. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
-rw-r--r--ChangeLog8
-rw-r--r--NEWS7
-rw-r--r--libc-abis2
-rw-r--r--sysdeps/unix/sysv/linux/mips/libc-abis2
4 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 27927257ce..d134e1f29d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2018-07-05 Maciej W. Rozycki <macro@mips.com>
+
+ [BZ #19818]
+ [BZ #23307]
+ * libc-abis (ABSOLUTE): New ABI.
+ * sysdeps/unix/sysv/linux/mips/libc-abis (ABSOLUTE): New ABI.
+ * NEWS: Mention the new ABI.
+
2018-07-05 Florian Weimer <fweimer@redhat.com>
[BZ # 17662]
diff --git a/NEWS b/NEWS
index 5d253910b5..716d11cda1 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,13 @@ Version 2.28
Major new features:
+* The GNU C Library now has correct support for ABSOLUTE symbols
+ (SHN_ABS-relative symbols). Previously such ABSOLUTE symbols were
+ relocated incorrectly or in some cases discarded. The GNU linker can
+ make use of the newer semantics, but it must communicate it to the
+ dynamic loader by setting the ELF file's identification (EI_ABIVERSION
+ field) to indicate such support is required.
+
* Unicode 11.0.0 Support: Character encoding, character type info, and
transliteration tables are all updated to Unicode 11.0.0, using
generator scripts contributed by Mike FABIAN (Red Hat).
diff --git a/libc-abis b/libc-abis
index 8668e49d88..e702f6ae24 100644
--- a/libc-abis
+++ b/libc-abis
@@ -46,3 +46,5 @@ IFUNC powerpc64-*-linux*
IFUNC powerpc-*-linux*
IFUNC sparc64-*-linux*
IFUNC sparc-*-linux*
+# Absolute (SHN_ABS) symbols working correctly.
+ABSOLUTE
diff --git a/sysdeps/unix/sysv/linux/mips/libc-abis b/sysdeps/unix/sysv/linux/mips/libc-abis
index 14ff60322a..eaea558720 100644
--- a/sysdeps/unix/sysv/linux/mips/libc-abis
+++ b/sysdeps/unix/sysv/linux/mips/libc-abis
@@ -14,3 +14,5 @@ UNIQUE
#
# MIPS O32 FP64
MIPS_O32_FP64 mips*-*-linux*
+# Absolute (SHN_ABS) symbols working correctly.
+ABSOLUTE