Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Check supported DF_1_XXX bits
  • Loading branch information
H.J. Lu committed Nov 21, 2012
1 parent 86fe56b commit 7e1be74
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 0 deletions.
15 changes: 15 additions & 0 deletions ChangeLog
@@ -1,3 +1,18 @@
2012-11-21 H.J. Lu <hongjiu.lu@intel.com>

* elf/elf.h (DF_1_NODIRECT): New macro.
(DF_1_IGNMULDEF): Likewise.
(DF_1_NOKSYMS): Likewise.
(DF_1_NOHDR): Likewise.
(DF_1_EDITED): Likewise.
(DF_1_NORELOC): Likewise.
(DF_1_SYMINTPOSE): Likewise.
(DF_1_GLOBAUDIT): Likewise.
(DF_1_SINGLETON): Likewise.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Assert
DT_1_SUPPORTED_MASK bits.
* include/elf.h (DT_1_SUPPORTED_MASK): New macro.

2012-11-20 Carlos O'Donell <carlos_odonell@mentor.com>

* sysdeps/unix/make-syscalls.sh: Document prefixes.
Expand Down
9 changes: 9 additions & 0 deletions elf/elf.h
Expand Up @@ -798,6 +798,15 @@ typedef struct
#define DF_1_ENDFILTEE 0x00004000 /* Filtee terminates filters search. */
#define DF_1_DISPRELDNE 0x00008000 /* Disp reloc applied at build time. */
#define DF_1_DISPRELPND 0x00010000 /* Disp reloc applied at run-time. */
#define DF_1_NODIRECT 0x00020000 /* Object has no-direct binding. */
#define DF_1_IGNMULDEF 0x00040000
#define DF_1_NOKSYMS 0x00080000
#define DF_1_NOHDR 0x00100000
#define DF_1_EDITED 0x00200000 /* Object is modified after built. */
#define DF_1_NORELOC 0x00400000
#define DF_1_SYMINTPOSE 0x00800000 /* Object has individual interposers. */
#define DF_1_GLOBAUDIT 0x01000000 /* Global auditin required. */
#define DF_1_SINGLETON 0x02000000 /* Singleton symbols are used. */

/* Flags for the feature selection in DT_FEATURE_1. */
#define DTF_1_PARINIT 0x00000001
Expand Down
3 changes: 3 additions & 0 deletions elf/get-dynamic-info.h
Expand Up @@ -151,6 +151,9 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
{
l->l_flags_1 = info[VERSYMIDX (DT_FLAGS_1)]->d_un.d_val;

/* Only DT_1_SUPPORTED_MASK bits are allowed. */
assert ((l->l_flags_1 & ~DT_1_SUPPORTED_MASK) == 0);

if (l->l_flags_1 & DF_1_NOW)
info[DT_BIND_NOW] = info[VERSYMIDX (DT_FLAGS_1)];
}
Expand Down
6 changes: 6 additions & 0 deletions include/elf.h
Expand Up @@ -3,4 +3,10 @@
/* Some information which is not meant for the public and therefore not
in <elf.h>. */
# include <dl-dtprocnum.h>
# ifdef DT_1_SUPPORTED_MASK
# error DT_1_SUPPORTED_MASK is defined!
# endif
# define DT_1_SUPPORTED_MASK \
(DF_1_NOW | DF_1_NODELETE | DF_1_INITFIRST | DF_1_NOOPEN \
| DF_1_ORIGIN | DF_1_NODEFLIB)
#endif

0 comments on commit 7e1be74

Please sign in to comment.