diff options
author | Mark Wielaard <mark@klomp.org> | 2017-08-03 12:37:37 +0200 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2017-08-03 14:21:08 +0200 |
commit | 766df1e15c1e8f8bc9890e7538eb2ef15a6516dc (patch) | |
tree | 45ae9d0ac821a15fbb9336909671e18efc15f6e8 /libebl | |
parent | 13c3e00ba629586ae42c316ae4ed6c3f04282a82 (diff) | |
parent | 54ba4ce2973113d8f4315d4fc90e16a9b4476ea6 (diff) | |
download | elfutils-766df1e15c1e8f8bc9890e7538eb2ef15a6516dc.tar.gz |
Merge tag 'elfutils-0.170' into mjw/RH-DTSdts-0.170
elfutils 0.170 release
Conflicts:
libcpu/Makefile.am
libdw/Makefile.am
tests/Makefile.am
Diffstat (limited to 'libebl')
-rw-r--r-- | libebl/ChangeLog | 13 | ||||
-rw-r--r-- | libebl/Makefile.am | 5 | ||||
-rw-r--r-- | libebl/ebl-hooks.h | 5 | ||||
-rw-r--r-- | libebl/ebl_data_marker_symbol.c | 44 | ||||
-rw-r--r-- | libebl/eblcorenotetypename.c | 1 | ||||
-rw-r--r-- | libebl/eblopenbackend.c | 11 | ||||
-rw-r--r-- | libebl/libebl.h | 6 |
7 files changed, 80 insertions, 5 deletions
diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 506915ba..334bf224 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,16 @@ +2017-07-19 Gustavo Romero <gromero@linux.vnet.ibm.com> + + * eblcorenotetypename.c: Add ppc64 HTM SPRs note as known type. + +2017-07-20 Mark Wielaard <mark@klomp.org> + + * Makefile.am (gen_SOURCES): Add ebl_data_marker_symbol.c. + * ebl-hooks.h (data_marker_symbol): New hook. + * ebl_data_marker_symbol.c: New file. + * eblopenbackend.c (default_data_marker_symbol): New function. + (fill_defaults): Add default_data_marker_symbol. + * libebl.h (ebl_data_marker_symbol): New function. + 2017-04-20 Ulf Hermann <ulf.hermann@qt.io> * libebl.h: Use __pure_attribute__. diff --git a/libebl/Makefile.am b/libebl/Makefile.am index 7034b61c..6d5b07f6 100644 --- a/libebl/Makefile.am +++ b/libebl/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to create Makefile.in ## -## Copyright (C) 2000-2010, 2013, 2016 Red Hat, Inc. +## Copyright (C) 2000-2010, 2013, 2016, 2017 Red Hat, Inc. ## This file is part of elfutils. ## ## This file is free software; you can redistribute it and/or modify @@ -53,7 +53,8 @@ gen_SOURCES = eblopenbackend.c eblclosebackend.c \ eblsysvhashentrysize.c eblauxvinfo.c eblcheckobjattr.c \ ebl_check_special_section.c ebl_syscall_abi.c eblabicfi.c \ eblstother.c eblinitreg.c ebldwarftoregno.c eblnormalizepc.c \ - eblunwind.c eblresolvesym.c eblcheckreloctargettype.c + eblunwind.c eblresolvesym.c eblcheckreloctargettype.c \ + ebl_data_marker_symbol.c libebl_a_CFLAGS = -fvisibility=hidden $(AM_CFLAGS) libebl_a_SOURCES = $(gen_SOURCES) diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h index b7253748..f3a0e64a 100644 --- a/libebl/ebl-hooks.h +++ b/libebl/ebl-hooks.h @@ -1,5 +1,5 @@ /* Backend hook signatures internal interface for libebl. - Copyright (C) 2000-2011, 2013, 2014, 2016 Red Hat, Inc. + Copyright (C) 2000-2011, 2013, 2014, 2016, 2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -121,6 +121,9 @@ bool EBLHOOK(relative_reloc_p) (int); bool EBLHOOK(check_special_symbol) (Elf *, GElf_Ehdr *, const GElf_Sym *, const char *, const GElf_Shdr *); +/* Check if this is a data marker symbol. e.g. '$d' symbols for ARM. */ +bool EBLHOOK(data_marker_symbol) (const GElf_Sym *sym, const char *sname); + /* Check whether only valid bits are set on the st_other symbol flag. Standard ST_VISIBILITY have already been masked off. */ bool EBLHOOK(check_st_other_bits) (unsigned char st_other); diff --git a/libebl/ebl_data_marker_symbol.c b/libebl/ebl_data_marker_symbol.c new file mode 100644 index 00000000..922d7203 --- /dev/null +++ b/libebl/ebl_data_marker_symbol.c @@ -0,0 +1,44 @@ +/* Check whether a symbol is a special data marker. + Copyright (C) 2017 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils 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 + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <inttypes.h> +#include <libeblP.h> + + +bool +ebl_data_marker_symbol (Ebl *ebl, const GElf_Sym *sym, const char *sname) +{ + if (ebl == NULL) + return false; + + return ebl->data_marker_symbol (sym, sname); +} diff --git a/libebl/eblcorenotetypename.c b/libebl/eblcorenotetypename.c index fa81dbec..d3a56fa9 100644 --- a/libebl/eblcorenotetypename.c +++ b/libebl/eblcorenotetypename.c @@ -75,6 +75,7 @@ ebl_core_note_type_name (Ebl *ebl, uint32_t type, char *buf, size_t len) KNOWNSTYPE (PPC_VMX); KNOWNSTYPE (PPC_SPE); KNOWNSTYPE (PPC_VSX); + KNOWNSTYPE (PPC_TM_SPR); KNOWNSTYPE (386_TLS); KNOWNSTYPE (386_IOPERM); KNOWNSTYPE (X86_XSTATE); diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index 8630053e..1728115c 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -1,5 +1,5 @@ /* Generate ELF backend handle. - Copyright (C) 2000-2016 Red Hat, Inc. + Copyright (C) 2000-2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -192,6 +192,7 @@ static bool default_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, const GElf_Sym *sym, const char *name, const GElf_Shdr *destshdr); +static bool default_data_marker_symbol (const GElf_Sym *sym, const char *sname); static bool default_check_st_other_bits (unsigned char st_other); static bool default_check_special_section (Ebl *, int, const GElf_Shdr *, const char *); @@ -243,6 +244,7 @@ fill_defaults (Ebl *result) result->none_reloc_p = default_none_reloc_p; result->relative_reloc_p = default_relative_reloc_p; result->check_special_symbol = default_check_special_symbol; + result->data_marker_symbol = default_data_marker_symbol; result->check_st_other_bits = default_check_st_other_bits; result->bss_plt_p = default_bss_plt_p; result->return_value_location = default_return_value_location; @@ -648,6 +650,13 @@ default_check_special_symbol (Elf *elf __attribute__ ((unused)), } static bool +default_data_marker_symbol (const GElf_Sym *sym __attribute__ ((unused)), + const char *sname __attribute__ ((unused))) +{ + return false; +} + +static bool default_check_st_other_bits (unsigned char st_other __attribute__ ((unused))) { return false; diff --git a/libebl/libebl.h b/libebl/libebl.h index 87896e4a..882bdb99 100644 --- a/libebl/libebl.h +++ b/libebl/libebl.h @@ -1,5 +1,5 @@ /* Interface for libebl. - Copyright (C) 2000-2010, 2013, 2014, 2015, 2016 Red Hat, Inc. + Copyright (C) 2000-2010, 2013, 2014, 2015, 2016, 2017 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -156,6 +156,10 @@ extern bool ebl_check_special_symbol (Ebl *ebl, GElf_Ehdr *ehdr, const GElf_Sym *sym, const char *name, const GElf_Shdr *destshdr); +/* Check if this is a data marker symbol. e.g. '$d' symbols for ARM. */ +extern bool ebl_data_marker_symbol (Ebl *ebl, const GElf_Sym *sym, + const char *sname); + /* Check whether only valid bits are set on the st_other symbol flag. */ extern bool ebl_check_st_other_bits (Ebl *ebl, unsigned char st_other); |