diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2017-06-15 14:14:50 +0200 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2017-06-15 19:40:32 +0200 |
commit | d65648473d1bfc779e16cd3cbf140a8ba0fed16c (patch) | |
tree | 0d683ac85faf6908475396774a48c327fd55e318 | |
parent | b58aebe71e0b4863db1b7fd3e942e36303257f3a (diff) | |
download | elfutils-d65648473d1bfc779e16cd3cbf140a8ba0fed16c.tar.gz |
Support EM_PPC machine flags
This fixes the elflint self test when the compiler is configured for PIE
default.
Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
-rw-r--r-- | backends/ChangeLog | 5 | ||||
-rw-r--r-- | backends/ppc_init.c | 1 | ||||
-rw-r--r-- | backends/ppc_symbol.c | 10 |
3 files changed, 16 insertions, 0 deletions
diff --git a/backends/ChangeLog b/backends/ChangeLog index f0d29f62..c5f61e85 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,8 @@ +2017-06-15 Andreas Schwab <schwab@linux-m68k.org> + + * ppc_symbol.c (ppc_machine_flag_check): New function. + * ppc_init.c (ppc_init): Hook it. + 2017-05-30 Mark Wielaard <mark@klomp.org> * ppc64_unwind.c: New file. diff --git a/backends/ppc_init.c b/backends/ppc_init.c index c3e3ca36..aea9f2d7 100644 --- a/backends/ppc_init.c +++ b/backends/ppc_init.c @@ -53,6 +53,7 @@ ppc_init (Elf *elf __attribute__ ((unused)), eh->name = "PowerPC"; ppc_init_reloc (eh); HOOK (eh, reloc_simple_type); + HOOK (eh, machine_flag_check); HOOK (eh, dynamic_tag_name); HOOK (eh, dynamic_tag_check); HOOK (eh, check_special_symbol); diff --git a/backends/ppc_symbol.c b/backends/ppc_symbol.c index 1273c1d2..4b32003a 100644 --- a/backends/ppc_symbol.c +++ b/backends/ppc_symbol.c @@ -57,6 +57,16 @@ ppc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) } +/* Check whether machine flags are valid. */ +bool +ppc_machine_flag_check (GElf_Word flags) +{ + return ((flags &~ (EF_PPC_EMB + | EF_PPC_RELOCATABLE + | EF_PPC_RELOCATABLE_LIB)) == 0); +} + + const char * ppc_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), size_t len __attribute__ ((unused))) |