public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
From: jkratoch@sourceware.org
To: archer-commits@sourceware.org
Subject: [SCM]  users/jkratoch/indexcxx-debugnames: Merge branch 'indexcxx' into indexcxx-debugnames
Date: Wed, 05 Apr 2017 16:17:00 -0000	[thread overview]
Message-ID: <20170405161707.83270.qmail@sourceware.org> (raw)

The branch, users/jkratoch/indexcxx-debugnames has been updated
       via  9acf8358ad7b6f42e949596b2c7bc37a1e9ff8da (commit)
       via  828d7c2b97ad76c73c1a718d1bbaf434d045b937 (commit)
       via  2cad08ea7dbc96103da9957da6973f9d0dbc33a8 (commit)
       via  55a98976756cb2df83ac8f8e9799331fbcc4f669 (commit)
       via  8dea77f0254d6a76d71092c922e9409ef1b67df4 (commit)
       via  4ac40124eef08045bf99ad9f4fcc277961953109 (commit)
       via  4d5efb852be6554305dfaf17c1e4f07bb9514273 (commit)
       via  c053b65441eb70ac78a514fabc3431b857a30d2e (commit)
       via  f3b8f8ee35bd62a2ae7d21561f5d23f00dad004f (commit)
       via  80070c0d3491347f11283c5791b9dd040fedbd4f (commit)
       via  4c7bf4f91b7dd3ccbd12be55316fca8817059a24 (commit)
       via  1e1a8bef60db2f524c5eb1d27be22cfa9ff82a84 (commit)
       via  499079343549348e270047ffa2687a8a76523700 (commit)
       via  6f77053d2ae56f16c10a8817732ed9fb43893507 (commit)
       via  9c5417255690af00751c7d506172459afe856894 (commit)
       via  ecfb656c37b982479d8eb07f240b434772d98fd6 (commit)
       via  d194f1fe51cb85b8a919b7ee9e3a7715b0ec9744 (commit)
       via  fff8551cf549f4047c9276a836408d802db6ce6d (commit)
       via  477bdd393c8145ad44899cb4681d57a61c82aad3 (commit)
       via  a91e1603afb6704545793e967a1a3dfe96b389de (commit)
       via  b52920324fabbcad93042f2e17de52696d0dab42 (commit)
       via  65dd1e590e519eba10bc29fb6e952271e0604c9b (commit)
       via  d62a8ae2dd0fbb6235f4e8f2fb61b83fe4ba1d90 (commit)
       via  ad32986fdf9da1c8748e47b8b45100398223dba8 (commit)
       via  db3a1dc7c9404e203c54576db3335e69d995e83e (commit)
       via  4c220b4625df0b08cbb22e5c7ca04dc7a629de1b (commit)
       via  c41cf6fdf514fce6b69f8f875b6903b2a3910f89 (commit)
       via  2f5f29cada3c06c9c26f4da5994951effee7d6f7 (commit)
       via  2514e33e01890ad28023359b110d1c9c1ad201d4 (commit)
       via  46bed6796d5821832e8ba373ddb2e7fdc45a109d (commit)
       via  82156ab704b08b124d319c0decdbd48b3ca2dac5 (commit)
       via  75ec1fdbb797a389e4fe4aaf2e15358a070dcc19 (commit)
       via  f32ba72991d2406b21ab17edc234a2f3fa7fb23d (commit)
       via  12bfb8fec326e847f6300874ca656e47ee027f5d (commit)
       via  450b68da0169dcfa1c36987ec80e2655abb3f8e6 (commit)
       via  5e6a0e73317915b0685249606538ea739acc3a23 (commit)
      from  e7fd7db7d4406e5ebb9e4fe05bb38b2202cd8f98 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 9acf8358ad7b6f42e949596b2c7bc37a1e9ff8da
Merge: e7fd7db 828d7c2
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Wed Apr 5 18:16:24 2017 +0200

    Merge branch 'indexcxx' into indexcxx-debugnames

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                        |   13 +
 bfd/ChangeLog                                    |   67 +
 bfd/Makefile.am                                  |    2 +
 bfd/Makefile.in                                  |    3 +
 bfd/config.bfd                                   |    6 +
 bfd/configure                                    |    2 +-
 bfd/configure.ac                                 |    2 +-
 bfd/elf-bfd.h                                    |   58 +
 bfd/elf-properties.c                             |  483 +++++++
 bfd/elf.c                                        |   69 +-
 bfd/elf32-i386.c                                 |   74 ++
 bfd/elf64-ppc.c                                  |   41 +-
 bfd/elf64-x86-64.c                               |   78 ++-
 bfd/elflink.c                                    |   35 +-
 bfd/elfnn-riscv.c                                |    9 +-
 bfd/elfxx-target.h                               |   12 +
 bfd/peXXigen.c                                   |   10 +-
 bfd/version.h                                    |    2 +-
 binutils/ChangeLog                               |   29 +
 binutils/NEWS                                    |    2 +
 binutils/readelf.c                               |   64 +-
 binutils/testsuite/binutils-all/mbind1.s         |   33 +
 binutils/testsuite/binutils-all/objcopy.exp      |    1 +
 config.sub                                       |    2 +-
 gas/ChangeLog                                    |   40 +
 gas/NEWS                                         |    2 +
 gas/config/obj-elf.c                             |   54 +-
 gas/config/obj-elf.h                             |    3 +-
 gas/config/tc-arm.c                              |    3 +-
 gas/config/tc-ia64.c                             |    2 +-
 gas/config/tc-microblaze.c                       |   18 +-
 gas/config/tc-mips.c                             |    2 +-
 gas/config/tc-msp430.c                           |    2 +-
 gas/config/tc-riscv.c                            |    2 +-
 gas/config/tc-rx.c                               |    4 +-
 gas/config/tc-tic6x.c                            |    3 +-
 gas/configure.tgt                                |    3 +
 gas/doc/as.texinfo                               |    2 +
 gas/testsuite/gas/elf/elf.exp                    |    3 +
 gas/testsuite/gas/elf/section10.d                |    4 +-
 gas/testsuite/gas/elf/section10.s                |    4 +-
 gas/testsuite/gas/elf/section12.s                |   33 +
 gas/testsuite/gas/elf/section12a.d               |   35 +
 gas/testsuite/gas/elf/section12b.d               |   32 +
 gas/testsuite/gas/elf/section13.d                |    2 +
 gas/testsuite/gas/elf/section13.l                |    2 +
 gas/testsuite/gas/elf/section13.s                |    2 +
 gdb/ChangeLog                                    |  172 +++
 gdb/MAINTAINERS                                  |    2 +-
 gdb/Makefile.in                                  |    8 +-
 gdb/NEWS                                         |    5 +
 gdb/alpha-fbsd-tdep.c                            |  132 --
 gdb/amd64-bsd-nat.c                              |   32 +-
 gdb/amd64-fbsd-tdep.c                            |   67 -
 gdb/common/gdb_optional.h                        |   34 +-
 gdb/common/offset-type.h                         |  149 +++
 gdb/common/preprocessor.h                        |   31 +
 gdb/common/traits.h                              |   34 +
 gdb/common/underlying.h                          |   32 +
 gdb/common/valid-expr.h                          |  108 ++
 gdb/config/alpha/fbsd.mh                         |    6 -
 gdb/configure.host                               |    4 +-
 gdb/configure.tgt                                |   11 +-
 gdb/dwarf2expr.c                                 |   45 +-
 gdb/dwarf2expr.h                                 |   16 +-
 gdb/dwarf2loc.c                                  |   37 +-
 gdb/dwarf2read.c                                 | 1530 +++++++++++-----------
 gdb/fbsd-nat.c                                   |    2 +-
 gdb/frame.c                                      |   58 +-
 gdb/gdbserver/ChangeLog                          |    4 +
 gdb/gdbserver/Makefile.in                        |    1 +
 gdb/gdbtypes.h                                   |   14 +-
 gdb/i386-fbsd-tdep.c                             |   59 -
 gdb/remote.c                                     |   10 +-
 gdb/testsuite/gdb.threads/thread-specific-bp.exp |    9 +-
 gdb/unittests/offset-type-selftests.c            |  178 +++
 include/ChangeLog                                |   11 +
 include/elf/common.h                             |    7 +
 include/elf/riscv.h                              |    3 +
 ld/ChangeLog                                     |   76 ++
 ld/NEWS                                          |    4 +
 ld/configure.tgt                                 |    1 +
 ld/emultempl/elf32.em                            |   48 +-
 ld/ldlang.c                                      |    2 +
 ld/testsuite/ld-elf/elf.exp                      |   21 +
 ld/testsuite/ld-elf/mbind1.s                     |   43 +
 ld/testsuite/ld-elf/mbind1a.d                    |   44 +
 ld/testsuite/ld-elf/mbind1b.d                    |   44 +
 ld/testsuite/ld-elf/mbind1c.d                    |   44 +
 ld/testsuite/ld-elf/mbind2a.s                    |   15 +
 ld/testsuite/ld-elf/mbind2b.c                    |   17 +
 ld/testsuite/ld-elf/pr21233-e.ld                 |    2 +
 ld/testsuite/ld-elf/pr21233-l.s                  |    6 +
 ld/testsuite/ld-elf/pr21233-l.sd                 |    6 +
 ld/testsuite/ld-elf/pr21233.ld                   |   17 +
 ld/testsuite/ld-elf/pr21233.s                    |    8 +
 ld/testsuite/ld-elf/pr21233.sd                   |    9 +
 ld/testsuite/ld-elf/shared.exp                   |   40 +
 ld/testsuite/ld-i386/i386.exp                    |  273 ++++
 ld/testsuite/ld-i386/pass.c                      |    8 +
 ld/testsuite/ld-i386/property-1.r                |    7 +
 ld/testsuite/ld-i386/property-2.r                |    7 +
 ld/testsuite/ld-i386/property-3.r                |    8 +
 ld/testsuite/ld-i386/property-4.r                |    8 +
 ld/testsuite/ld-i386/property-5.r                |    8 +
 ld/testsuite/ld-i386/property-6.r                |    7 +
 ld/testsuite/ld-i386/property-6a.c               |    7 +
 ld/testsuite/ld-i386/property-6b.c               |    8 +
 ld/testsuite/ld-i386/property-6c.S               |   18 +
 ld/testsuite/ld-i386/property-7.r                |    6 +
 ld/testsuite/ld-i386/property-no-copy.S          |   15 +
 ld/testsuite/ld-i386/property-stack.S            |   18 +
 ld/testsuite/ld-i386/property-unsorted-1.S       |   34 +
 ld/testsuite/ld-i386/property-unsorted-2.S       |   22 +
 ld/testsuite/ld-i386/property-x86-1.S            |   32 +
 ld/testsuite/ld-i386/property-x86-2.S            |   25 +
 ld/testsuite/ld-x86-64/pass.c                    |    8 +
 ld/testsuite/ld-x86-64/property-1.r              |    7 +
 ld/testsuite/ld-x86-64/property-2.r              |    7 +
 ld/testsuite/ld-x86-64/property-3.r              |    8 +
 ld/testsuite/ld-x86-64/property-4.r              |    8 +
 ld/testsuite/ld-x86-64/property-5.r              |    8 +
 ld/testsuite/ld-x86-64/property-6.r              |    7 +
 ld/testsuite/ld-x86-64/property-6a.c             |    7 +
 ld/testsuite/ld-x86-64/property-6b.c             |    8 +
 ld/testsuite/ld-x86-64/property-6c.S             |   23 +
 ld/testsuite/ld-x86-64/property-7.r              |    6 +
 ld/testsuite/ld-x86-64/property-no-copy.S        |   20 +
 ld/testsuite/ld-x86-64/property-stack.S          |   23 +
 ld/testsuite/ld-x86-64/property-unsorted-1.S     |   39 +
 ld/testsuite/ld-x86-64/property-unsorted-2.S     |   27 +
 ld/testsuite/ld-x86-64/property-x86-1.S          |   37 +
 ld/testsuite/ld-x86-64/property-x86-2.S          |   30 +
 ld/testsuite/ld-x86-64/x86-64.exp                |  273 ++++
 opcodes/ChangeLog                                |    5 +
 opcodes/riscv-dis.c                              |    2 +-
 136 files changed, 4450 insertions(+), 1226 deletions(-)
 create mode 100644 bfd/elf-properties.c
 create mode 100644 binutils/testsuite/binutils-all/mbind1.s
 create mode 100644 gas/testsuite/gas/elf/section12.s
 create mode 100644 gas/testsuite/gas/elf/section12a.d
 create mode 100644 gas/testsuite/gas/elf/section12b.d
 create mode 100644 gas/testsuite/gas/elf/section13.d
 create mode 100644 gas/testsuite/gas/elf/section13.l
 create mode 100644 gas/testsuite/gas/elf/section13.s
 delete mode 100644 gdb/alpha-fbsd-tdep.c
 create mode 100644 gdb/common/offset-type.h
 create mode 100644 gdb/common/preprocessor.h
 create mode 100644 gdb/common/traits.h
 create mode 100644 gdb/common/underlying.h
 create mode 100644 gdb/common/valid-expr.h
 delete mode 100644 gdb/config/alpha/fbsd.mh
 create mode 100644 gdb/unittests/offset-type-selftests.c
 create mode 100644 ld/testsuite/ld-elf/mbind1.s
 create mode 100644 ld/testsuite/ld-elf/mbind1a.d
 create mode 100644 ld/testsuite/ld-elf/mbind1b.d
 create mode 100644 ld/testsuite/ld-elf/mbind1c.d
 create mode 100644 ld/testsuite/ld-elf/mbind2a.s
 create mode 100644 ld/testsuite/ld-elf/mbind2b.c
 create mode 100644 ld/testsuite/ld-elf/pr21233-e.ld
 create mode 100644 ld/testsuite/ld-elf/pr21233-l.s
 create mode 100644 ld/testsuite/ld-elf/pr21233-l.sd
 create mode 100644 ld/testsuite/ld-elf/pr21233.ld
 create mode 100644 ld/testsuite/ld-elf/pr21233.s
 create mode 100644 ld/testsuite/ld-elf/pr21233.sd
 create mode 100644 ld/testsuite/ld-i386/pass.c
 create mode 100644 ld/testsuite/ld-i386/property-1.r
 create mode 100644 ld/testsuite/ld-i386/property-2.r
 create mode 100644 ld/testsuite/ld-i386/property-3.r
 create mode 100644 ld/testsuite/ld-i386/property-4.r
 create mode 100644 ld/testsuite/ld-i386/property-5.r
 create mode 100644 ld/testsuite/ld-i386/property-6.r
 create mode 100644 ld/testsuite/ld-i386/property-6a.c
 create mode 100644 ld/testsuite/ld-i386/property-6b.c
 create mode 100644 ld/testsuite/ld-i386/property-6c.S
 create mode 100644 ld/testsuite/ld-i386/property-7.r
 create mode 100644 ld/testsuite/ld-i386/property-no-copy.S
 create mode 100644 ld/testsuite/ld-i386/property-stack.S
 create mode 100644 ld/testsuite/ld-i386/property-unsorted-1.S
 create mode 100644 ld/testsuite/ld-i386/property-unsorted-2.S
 create mode 100644 ld/testsuite/ld-i386/property-x86-1.S
 create mode 100644 ld/testsuite/ld-i386/property-x86-2.S
 create mode 100644 ld/testsuite/ld-x86-64/pass.c
 create mode 100644 ld/testsuite/ld-x86-64/property-1.r
 create mode 100644 ld/testsuite/ld-x86-64/property-2.r
 create mode 100644 ld/testsuite/ld-x86-64/property-3.r
 create mode 100644 ld/testsuite/ld-x86-64/property-4.r
 create mode 100644 ld/testsuite/ld-x86-64/property-5.r
 create mode 100644 ld/testsuite/ld-x86-64/property-6.r
 create mode 100644 ld/testsuite/ld-x86-64/property-6a.c
 create mode 100644 ld/testsuite/ld-x86-64/property-6b.c
 create mode 100644 ld/testsuite/ld-x86-64/property-6c.S
 create mode 100644 ld/testsuite/ld-x86-64/property-7.r
 create mode 100644 ld/testsuite/ld-x86-64/property-no-copy.S
 create mode 100644 ld/testsuite/ld-x86-64/property-stack.S
 create mode 100644 ld/testsuite/ld-x86-64/property-unsorted-1.S
 create mode 100644 ld/testsuite/ld-x86-64/property-unsorted-2.S
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-1.S
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-2.S

First 500 lines of diff:
diff --git a/ChangeLog b/ChangeLog
index 8565325..bb87497 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2017-04-03  Andrew Jenner  <andrew@codesourcery.com>
+
+	* config.sub: Handle ia16 in $basic_machine.
+
+	bfd/
+	* config.bfd: Handle ia16.
+
+	gas/
+	* configure.tgt: Handle ia16.
+
+	ld/
+	* configure.tgt: Handle ia16.
+
 2017-03-22  Nick Clifton  <nickc@redhat.com>
 
 	* config.sub: Sync with master version in config project.
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index bb851c7..0e4ad30 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,70 @@
+2017-04-05  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_gc_sweep_hook): Support ELFv2 PLT
+	reference counting.
+
+2017-04-02  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	(_bfd_XXi_swap_aouthdr_out): For clarity, use defines rather than
+	numbers for DataDirectory entry indicies passed to
+	add_data_entry().
+
+2017-04-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf.c (get_program_header_size): Add a GNU_MBIND segment for
+	each GNU_MBIND section and align GNU_MBIND section to page size.
+	(_bfd_elf_map_sections_to_segments): Create a GNU_MBIND
+	segment for each GNU_MBIND section.
+	(_bfd_elf_init_private_section_data): Copy sh_info from input
+	for GNU_MBIND section.
+
+2017-04-03  Palmer Dabbelt  <palmer@dabbelt.com>
+
+	* elfnn-riscv.c (GP_NAME): Delete.
+	(riscv_global_pointer_value): Change GP_NAME to RISCV_GP_SYMBOL.
+	(_bfd_riscv_relax_lui): Likewise.
+
+2017-04-04  Nick Clifton  <nickc@redhat.com>
+
+	PR binutils/21342
+	* elflink.c (_bfd_elf_define_linkage_sym): Prevent null pointer
+	dereference.
+	(bfd_elf_final_link): Only initialize the extended symbol index
+	section if there are extended symbol tables to list.
+
+2017-04-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makefile.am (BFD32_BACKENDS): Add elf-properties.lo.
+	(BFD32_BACKENDS_CFILES): Add elf-properties.c.
+	* configure.ac (elf): Add elf-properties.lo.
+	* Makefile.in: Regenerated.
+	* configure: Likewise.
+	* elf-bfd.h (elf_property_kind): New.
+	(elf_property): Likewise.
+	(elf_property_list): Likewise.
+	(elf_properties): Likewise.
+	(_bfd_elf_parse_gnu_properties): Likewise.
+	(_bfd_elf_get_property): Likewise.
+	(_bfd_elf_link_setup_gnu_properties): Likewise.
+	(elf_backend_data): Add parse_gnu_properties, merge_gnu_properties
+	and setup_gnu_properties.
+	(elf_obj_tdata): Add properties.
+	* elf-properties.c: New file.
+	* elf32-i386.c (elf_i386_parse_gnu_properties): New.
+	(elf_i386_merge_gnu_properties): Likewise.
+	(elf_backend_parse_gnu_properties): Likewise.
+	(elf_backend_merge_gnu_properties): Likewise.
+	* elf64-x86-64.c (elf_x86_64_parse_gnu_properties): Likewise.
+	(elf_x86_64_merge_gnu_properties): Likewise.
+	(elf_backend_parse_gnu_properties): Likewise.
+	(elf_backend_merge_gnu_properties): Likewise.
+	* elfxx-target.h (elf_backend_merge_gnu_properties): Likewise.
+	(elf_backend_parse_gnu_properties): Likewise.
+	(elf_backend_setup_gnu_properties): Likewise.
+	(elfNN_bed): Add elf_backend_parse_gnu_properties,
+	elf_backend_merge_gnu_properties and
+	elf_backend_setup_gnu_properties.
+
 2017-03-30  Pip Cet  <pipcet@gmail.com>
 
 	* elf32-wasm32.c: Add relocation code, two relocs.
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index 49ab092..97b608c 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -321,6 +321,7 @@ BFD32_BACKENDS = \
 	elf-m10200.lo \
 	elf-m10300.lo \
 	elf-nacl.lo \
+	elf-properties.lo \
 	elf-strtab.lo \
 	elf-vxworks.lo \
 	elf.lo \
@@ -516,6 +517,7 @@ BFD32_BACKENDS_CFILES = \
 	elf-m10200.c \
 	elf-m10300.c \
 	elf-nacl.c \
+	elf-properties.c \
 	elf-strtab.c \
 	elf-vxworks.c \
 	elf.c \
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index fed5117..e48abaf 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -655,6 +655,7 @@ BFD32_BACKENDS = \
 	elf-m10200.lo \
 	elf-m10300.lo \
 	elf-nacl.lo \
+	elf-properties.lo \
 	elf-strtab.lo \
 	elf-vxworks.lo \
 	elf.lo \
@@ -850,6 +851,7 @@ BFD32_BACKENDS_CFILES = \
 	elf-m10200.c \
 	elf-m10300.c \
 	elf-nacl.c \
+	elf-properties.c \
 	elf-strtab.c \
 	elf-vxworks.c \
 	elf.c \
@@ -1471,6 +1473,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-m10200.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-m10300.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-nacl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-properties.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-strtab.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-vxworks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf.Plo@am__quote@
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 1235c2c..b00958d 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -173,6 +173,7 @@ fido*)		 targ_archs=bfd_m68k_arch ;;
 hppa*)		 targ_archs=bfd_hppa_arch ;;
 i[3-7]86)	 targ_archs=bfd_i386_arch ;;
 i370)		 targ_archs=bfd_i370_arch ;;
+ia16)		 targ_archs=bfd_i386_arch ;;
 lm32)	         targ_archs=bfd_lm32_arch ;;
 m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
 m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
@@ -906,6 +907,11 @@ case "${targ}" in
     targ_selvecs="icoff_le_vec icoff_be_vec"
     ;;
 
+  ia16-*-elf)
+    targ_defvec=i386_elf32_vec
+    targ_selvecs="i386_msdos_vec i386_aout_vec"
+    ;;
+
   ip2k-*-elf)
     targ_defvec=ip2k_elf32_vec
     ;;
diff --git a/bfd/configure b/bfd/configure
index 7cae4ae..24e3e2f 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -14234,7 +14234,7 @@ selarchs="$f"
 # Target backend .o files.
 tb=
 
-elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo
+elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-properties.lo
      elf-eh-frame.lo dwarf1.lo dwarf2.lo"
 coffgen="coffgen.lo dwarf2.lo"
 coff="cofflink.lo $coffgen"
diff --git a/bfd/configure.ac b/bfd/configure.ac
index feb1231..e568847 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -365,7 +365,7 @@ selarchs="$f"
 # Target backend .o files.
 tb=
 
-elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo
+elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-properties.lo
      elf-eh-frame.lo dwarf1.lo dwarf2.lo"
 coffgen="coffgen.lo dwarf2.lo"
 coff="cofflink.lo $coffgen"
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 9e3d6f5..af377ee 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -766,6 +766,39 @@ typedef asection * (*elf_gc_mark_hook_fn)
   (asection *, struct bfd_link_info *, Elf_Internal_Rela *,
    struct elf_link_hash_entry *, Elf_Internal_Sym *);
 
+enum elf_property_kind
+ {
+    /* A new property.  */
+    property_unknown = 0,
+    /* A property ignored by backend.  */
+    property_ignored,
+    /* A corrupt property reported by backend.  */
+    property_corrupt,
+    /* A property should be removed due to property merge.  */
+    property_remove,
+    /* A property which is a number.  */
+    property_number
+ };
+
+typedef struct elf_property
+{
+  unsigned int pr_type;
+  unsigned int pr_datasz;
+  union
+    {
+      /* For property_number, this is a number.  */
+      bfd_vma number;
+      /* Add a new one if elf_property_kind is updated.  */
+    } u;
+  enum elf_property_kind pr_kind;
+} elf_property;
+
+typedef struct elf_property_list
+{
+  struct elf_property_list *next;
+  struct elf_property property;
+} elf_property_list;
+
 struct bfd_elf_section_reloc_data;
 
 struct elf_backend_data
@@ -1389,6 +1422,19 @@ struct elf_backend_data
      or give an error and return FALSE.  */
   bfd_boolean (*obj_attrs_handle_unknown) (bfd *, int);
 
+  /* Parse GNU properties.  Return the property kind.  If the property
+     is corrupt, issue an error message and return property_corrupt.  */
+  enum elf_property_kind (*parse_gnu_properties) (bfd *, unsigned int,
+						  bfd_byte *,
+						  unsigned int);
+
+  /* Merge GNU properties.  Return TRUE if property is updated.  */
+  bfd_boolean (*merge_gnu_properties) (bfd *, elf_property *,
+				       elf_property *);
+
+  /* Set up GNU properties.  */
+  void (*setup_gnu_properties) (struct bfd_link_info *);
+
   /* Encoding used for compact EH tables.  */
   int (*compact_eh_encoding) (struct bfd_link_info *);
 
@@ -1798,6 +1844,10 @@ struct elf_obj_tdata
   /* Symbol buffer.  */
   void *symbuf;
 
+  /* List of GNU properties.  Will be updated by setup_gnu_properties
+     after all input GNU properties are merged for output.  */
+  elf_property_list *properties;
+
   obj_attribute known_obj_attributes[2][NUM_KNOWN_OBJ_ATTRIBUTES];
   obj_attribute_list *other_obj_attributes[2];
 
@@ -1882,6 +1932,7 @@ struct elf_obj_tdata
   (elf_known_obj_attributes (bfd) [OBJ_ATTR_PROC])
 #define elf_other_obj_attributes_proc(bfd) \
   (elf_other_obj_attributes (bfd) [OBJ_ATTR_PROC])
+#define elf_properties(bfd) (elf_tdata (bfd) -> properties)
 \f
 extern void _bfd_elf_swap_verdef_in
   (bfd *, const Elf_External_Verdef *, Elf_Internal_Verdef *);
@@ -2538,6 +2589,13 @@ extern bfd_boolean _bfd_elf_merge_unknown_attribute_low (bfd *, bfd *, int);
 extern bfd_boolean _bfd_elf_merge_unknown_attribute_list (bfd *, bfd *);
 extern Elf_Internal_Shdr *_bfd_elf_single_rel_hdr (asection *sec);
 
+extern bfd_boolean _bfd_elf_parse_gnu_properties
+  (bfd *, Elf_Internal_Note *);
+extern elf_property * _bfd_elf_get_property
+  (bfd *, unsigned int, unsigned int);
+extern void _bfd_elf_link_setup_gnu_properties
+  (struct bfd_link_info *);
+
 /* The linker may need to keep track of the number of relocs that it
    decides to copy as dynamic relocs in check_relocs for each symbol.
    This is so that it can later discard them if they are found to be
diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
new file mode 100644
index 0000000..a0456f8
--- /dev/null
+++ b/bfd/elf-properties.c
@@ -0,0 +1,483 @@
+/* ELF program property support.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program 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 a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+/* GNU program property draft is at:
+
+   https://github.com/hjl-tools/linux-abi/wiki/property-draft.pdf
+ */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+
+/* Get a property, allocate a new one if needed.  */
+
+elf_property *
+_bfd_elf_get_property (bfd *abfd, unsigned int type, unsigned int datasz)
+{
+  elf_property_list *p, **lastp;
+
+  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+    {
+      /* Never should happen.  */
+      abort ();
+    }
+
+  /* Keep the property list in order of type.  */
+  lastp = &elf_properties (abfd);
+  for (p = *lastp; p; p = p->next)
+    {
+      /* Reuse the existing entry.  */
+      if (type == p->property.pr_type)
+	{
+	  if (datasz > p->property.pr_datasz)
+	    {
+	      /* This can happen when mixing 32-bit and 64-bit objects.  */
+	      p->property.pr_datasz = datasz;
+	    }
+	  return &p->property;
+	}
+      else if (type < p->property.pr_type)
+	break;
+      lastp = &p->next;
+    }
+  p = (elf_property_list *) bfd_alloc (abfd, sizeof (*p));
+  if (p == NULL)
+    {
+      _bfd_error_handler (_("%B: out of memory in _bfd_elf_get_property"),
+			  abfd);
+      _exit (EXIT_FAILURE);
+    }
+  memset (p, 0, sizeof (*p));
+  p->property.pr_type = type;
+  p->property.pr_datasz = datasz;
+  p->next = *lastp;
+  *lastp = p;
+  return &p->property;
+}
+
+/* Parse GNU properties.  */
+
+bfd_boolean
+_bfd_elf_parse_gnu_properties (bfd *abfd, Elf_Internal_Note *note)
+{
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  unsigned int align_size = bed->s->elfclass == ELFCLASS64 ? 8 : 4;
+  bfd_byte *ptr = (bfd_byte *) note->descdata;
+  bfd_byte *ptr_end = ptr + note->descsz;
+
+  if (note->descsz < 8 || (note->descsz % align_size) != 0)
+    {
+bad_size:
+      _bfd_error_handler
+	(_("warning: %B: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx\n"),
+	 abfd, note->type, note->descsz);
+      return FALSE;
+    }
+
+  while (1)
+    {
+      unsigned int type = bfd_h_get_32 (abfd, ptr);
+      unsigned int datasz = bfd_h_get_32 (abfd, ptr + 4);
+      elf_property *prop;
+
+      ptr += 8;
+
+      if ((ptr + datasz) > ptr_end)
+	{
+	  _bfd_error_handler
+	    (_("warning: %B: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x\n"),
+	     abfd, note->type, type, datasz);
+	  /* Clear all properties.  */
+	  elf_properties (abfd) = NULL;
+	  return FALSE;
+	}
+
+      if (type >= GNU_PROPERTY_LOPROC)
+	{
+	  if (type < GNU_PROPERTY_LOUSER && bed->parse_gnu_properties)
+	    {
+	      enum elf_property_kind kind
+		= bed->parse_gnu_properties (abfd, type, ptr, datasz);
+	      if (kind == property_corrupt)
+		{
+		  /* Clear all properties.  */
+		  elf_properties (abfd) = NULL;
+		  return FALSE;
+		}
+	      else if (kind != property_ignored)
+		goto next;
+	    }
+	}
+      else
+	{
+	  switch (type)
+	    {
+	    case GNU_PROPERTY_STACK_SIZE:
+	      if (datasz != align_size)
+		{
+		  _bfd_error_handler
+		    (_("warning: %B: corrupt stack size: 0x%x\n"),
+		     abfd, datasz);
+		  /* Clear all properties.  */
+		  elf_properties (abfd) = NULL;
+		  return FALSE;
+		}
+	      prop = _bfd_elf_get_property (abfd, type, datasz);
+	      if (datasz == 8)
+		prop->u.number = bfd_h_get_64 (abfd, ptr);
+	      else
+		prop->u.number = bfd_h_get_32 (abfd, ptr);
+	      prop->pr_kind = property_number;
+	      goto next;
+
+	    case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
+	      if (datasz != 0)
+		{
+		  _bfd_error_handler
+		    (_("warning: %B: corrupt no copy on protected size: 0x%x\n"),
+		     abfd, datasz);
+		  /* Clear all properties.  */
+		  elf_properties (abfd) = NULL;
+		  return FALSE;
+		}
+	      prop = _bfd_elf_get_property (abfd, type, datasz);
+	      prop->pr_kind = property_number;
+	      goto next;
+
+	    default:
+	      break;
+	    }
+	}
+
+      _bfd_error_handler
+	(_("warning: %B: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x\n"),
+	 abfd, note->type, type);
+
+next:
+      ptr += (datasz + (align_size - 1)) & ~ (align_size - 1);
+      if (ptr == ptr_end)
+	break;
+
+      if (ptr > (ptr_end - 8))
+	goto bad_size;
+    }
+
+  return TRUE;
+}
+
+/* Merge GNU property BPROP with APROP.  If APROP isn't NULL, return TRUE
+   if APROP is updated.  Otherwise, return TRUE if BPROP should be merged
+   with ABFD.  */
+
+static bfd_boolean
+elf_merge_gnu_properties (bfd *abfd, elf_property *aprop,
+			  elf_property *bprop)
+{
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type;
+
+  if (bed->merge_gnu_properties != NULL
+      && pr_type >= GNU_PROPERTY_LOPROC
+      && pr_type < GNU_PROPERTY_LOUSER)
+    return bed->merge_gnu_properties (abfd, aprop, bprop);
+
+  switch (pr_type)


hooks/post-receive
--
Repository for Project Archer.


             reply	other threads:[~2017-04-05 16:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-05 16:17 jkratoch [this message]
  -- strict thread matches above, loose matches on Subject: below --
2017-04-02 11:01 jkratoch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170405161707.83270.qmail@sourceware.org \
    --to=jkratoch@sourceware.org \
    --cc=archer-commits@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).