aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--elf/dl-sysdep.c5
-rw-r--r--elf/elf.h8
3 files changed, 17 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index a2f8d1b78f..0ff613c6f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -130,6 +130,13 @@
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+2010-01-07 Roland McGrath <roland@redhat.com>
+
+ * elf/elf.h (PN_XNUM): New macro.
+
+ * elf/dl-sysdep.c (_dl_important_hwcaps): Use NT_GNU_HWCAP instead of
+ literal 2.
+
2010-01-06 Ulrich Drepper <drepper@redhat.com>
* dirent/dirent.h: Fix typo in feature selection macro use.
diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c
index 5700272f10..49c5dfb27d 100644
--- a/elf/dl-sysdep.c
+++ b/elf/dl-sysdep.c
@@ -1,5 +1,6 @@
/* Operating system support for run-time dynamic linker. Generic Unix version.
- Copyright (C) 1995-1998, 2000-2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998,2000-2008,2009,2010
+ 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
@@ -390,7 +391,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
while ((ElfW(Addr)) (note + 1) - start < phdr[i].p_memsz)
{
#define ROUND(len) (((len) + sizeof (ElfW(Word)) - 1) & -sizeof (ElfW(Word)))
- if (note->type == 2
+ if (note->type == NT_GNU_HWCAP
&& note->vendorlen == sizeof "GNU"
&& !memcmp ((note + 1), "GNU", sizeof "GNU")
&& note->datalen > 2 * sizeof (ElfW(Word)) + 2)
diff --git a/elf/elf.h b/elf/elf.h
index c772ff41ad..1bc8ef3489 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -1,5 +1,5 @@
/* This file defines standard ELF types, structures, and macros.
- Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009
+ Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -558,6 +558,12 @@ typedef struct
Elf64_Xword p_align; /* Segment alignment */
} Elf64_Phdr;
+/* Special value for e_phnum. This indicates that the real number of
+ program headers is too large to fit into e_phnum. Instead the real
+ value is in the field sh_info of section 0. */
+
+#define PN_XNUM 0xffff
+
/* Legal values for p_type (segment type). */
#define PT_NULL 0 /* Program header table entry unused */