public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
* [SCM]  archer-keiths-linespec-rewrite:  * cp-support.c (operator_tokens): Removed unused global.
@ 2012-04-03 22:23 kseitz
  0 siblings, 0 replies; only message in thread
From: kseitz @ 2012-04-03 22:23 UTC (permalink / raw)
  To: archer-commits

The branch, archer-keiths-linespec-rewrite has been updated
       via  15c8668c84a12cc049e16486d597078347f67826 (commit)
       via  c623963a8ff7fa837cb967086d714691a2b59742 (commit)
       via  3cad74d693b6ca58525fb67a3a979f7f814a28e2 (commit)
       via  d2b883ecf6e967e927b005b74eb44bd42bf80bb3 (commit)
       via  2427aa4bd15e88a2aba5fe710c7425c4957f1819 (commit)
       via  164d8e9ac9ec74d970aa42550000539710e96a8e (commit)
       via  a8ed34e234859774dd7ef60a34dfd95fb72a1799 (commit)
       via  67084d7a8630eca11cbebb352f893cb06eb77347 (commit)
       via  93cd7197cbfc7ca9ab6bfba32e737caf4c1ddbdd (commit)
       via  6a7b3ca186918388c00b959bc5682f6fd12411c4 (commit)
       via  48bd1722d3680f86fe861118aa54ef03c527e745 (commit)
       via  5cab1817f60351789dd78d051ad7c23839aab376 (commit)
       via  21c89a44d67e49062aced27d29370981f922ebbb (commit)
       via  5c3c12506e885797b4b8ad3f661f396b1a3dd6ac (commit)
       via  7a1bed16627dc124130fc8fae44892e70373e04d (commit)
       via  5841f3b2c5eddc10f6a3a1f07a082bf9daea9427 (commit)
       via  34b1f2f971ac17cc3d0b812c8c0017f8696030cb (commit)
       via  a6d3df81c4092878447204579025691aceec9682 (commit)
       via  3167997c2432e8ae4e21f1649bb968ad1c8c853c (commit)
       via  9a02193c10925ff26b4d2ce9f1326e098bb0ae62 (commit)
       via  7a63e9515491f21eaf07301df87d389def20e317 (commit)
       via  8f7c38639511cc0ec0314bbf6d14efaf2ad0bd85 (commit)
       via  bda1bace013cacd05e6c9b6ea5e9a097ec6c1d76 (commit)
       via  64119b65954deb48aabb006a63b2a07b8bad56d4 (commit)
       via  05e84e746af0ab4caabcf2dce10238eca015d6bc (commit)
       via  7ea6ee4a9b3cb896cbf718cb2b8c0f498b8d5801 (commit)
       via  279477758ac575031068f20b1c0938f23cd73cfd (commit)
      from  7ecbc682e5e87b9b3050f080e0bbaef735373c0a (commit)

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

- Log -----------------------------------------------------------------
commit 15c8668c84a12cc049e16486d597078347f67826
Author: Keith Seitz <keiths@redhat.com>
Date:   Tue Apr 3 15:23:02 2012 -0700

    	* cp-support.c (operator_tokens): Removed unused global.

commit c623963a8ff7fa837cb967086d714691a2b59742
Author: Keith Seitz <keiths@redhat.com>
Date:   Tue Apr 3 15:22:37 2012 -0700

    Doug's requested changes.

commit 3cad74d693b6ca58525fb67a3a979f7f814a28e2
Merge: 7ecbc68 d2b883e
Author: Keith Seitz <keiths@redhat.com>
Date:   Tue Apr 3 12:49:14 2012 -0700

    Merge remote-tracking branch 'gdb/master' into archer-keiths-linespec-rewrite

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

Summary of changes:
 bfd/ChangeLog                           |   29 +++++
 bfd/Makefile.am                         |    4 +
 bfd/Makefile.in                         |    5 +
 bfd/configure                           |   30 +++---
 bfd/configure.in                        |   30 +++---
 bfd/elf-nacl.c                          |  205 +++++++++++++++++++++++++++++++
 bfd/elf-nacl.h                          |   24 ++++
 bfd/elf32-i386.c                        |   10 ++
 bfd/elf32-m68k.c                        |    2 +-
 bfd/elf64-x86-64.c                      |   14 ++-
 bfd/version.h                           |    2 +-
 gdb/ChangeLog                           |   30 +++++
 gdb/NEWS                                |    2 +-
 gdb/cp-support.c                        |   13 --
 gdb/cp-valprint.c                       |   20 ++--
 gdb/darwin-nat.c                        |   17 +++
 gdb/i386-darwin-nat.c                   |   48 ++++----
 gdb/i386-darwin-tdep.c                  |    2 +-
 gdb/linespec.c                          |  109 ++++++++++-------
 gdb/testsuite/ChangeLog                 |    9 ++
 gdb/testsuite/gdb.trace/unavailable.exp |    8 +-
 gdb/valprint.c                          |   12 +--
 gdb/value.h                             |   14 ++
 gdb/version.in                          |    2 +-
 libiberty/ChangeLog                     |    9 ++
 libiberty/cp-demangle.c                 |    5 +
 libiberty/stack-limit.c                 |    3 +-
 libiberty/testsuite/demangle-expected   |    6 +
 opcodes/ChangeLog                       |    5 +
 opcodes/bfin-dis.c                      |   11 +--
 sim/bfin/ChangeLog                      |   27 ++++
 sim/bfin/bfin-sim.c                     |   14 +--
 sim/bfin/devices.c                      |    1 +
 sim/bfin/dv-bfin_sic.c                  |    2 +-
 sim/bfin/interp.c                       |    4 +-
 sim/bfin/machs.c                        |    2 +-
 sim/common/ChangeLog                    |    4 +
 sim/common/hw-ports.c                   |    2 +-
 38 files changed, 568 insertions(+), 168 deletions(-)
 create mode 100644 bfd/elf-nacl.c
 create mode 100644 bfd/elf-nacl.h

First 500 lines of diff:
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8bd12f2..56a1121 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,32 @@
+2012-04-03  Roland McGrath  <mcgrathr@google.com>
+
+	* elf-nacl.c: New file.
+	* elf-nacl.h: New file.
+	* elf32-i386.c (elf_backend_modify_segment_map): Define for
+	bfd_elf32_i386_nacl_vec.
+	(elf_backend_modify_program_headers): Likewise.
+	* elf64-x86-64.c (elf_backend_modify_segment_map): Define for
+	bfd_elf64_x86_64_nacl_vec and bfd_elf32_x86_64_nacl_vec.
+	(elf_backend_modify_program_headers): Likewise.
+	* Makefile.am (BFD32_BACKENDS, BFD64_BACKENDS): Add elf-nacl.lo here.
+	(BFD32_BACKENDS_CFILES, BFD64_BACKENDS_CFILES): Add elf-nacl.c here.
+	* Makefile.in: Regenerated.
+	* configure.in (bfd_elf64_x86_64_nacl_vec): Add elf-nacl.o to tb here.
+	(bfd_elf32_x86_64_nacl_vec): Likewise.
+	(bfd_elf64_x86_64_vec, bfd_elf32_x86_64_vec): Likewise.
+	(bfd_elf64_x86_64_freebsd_vec, bfd_elf64_x86_64_sol2_vec): Likewise.
+	(bfd_elf64_l1om_vec, bfd_elf64_l1om_freebsd_vec): Likewise.
+	(bfd_elf64_k1om_vec, bfd_elf64_k1om_freebsd_vec): Likewise.
+	(bfd_elf32_i386_nacl_vec): Likewise.
+	(bfd_elf32_i386_sol2_vec, bfd_elf32_i386_freebsd_vec): Likewise.
+	(bfd_elf32_i386_vxworks_vec, bfd_elf32_i386_vec): Likewise.
+	* configure: Regenerated.
+
+2012-03-31  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* elf32-m68k.c (elf_m68k_relocate_section): Allow
+	R_68K_TLS_LE{8,16,32} for PIE.
+
 2012-03-30  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
 	* elf64-s390.c: Fix several comments regarding PLT entry
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index 8f4fbee..50c84ee 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -275,6 +275,7 @@ BFD32_BACKENDS = \
 	elf-ifunc.lo \
 	elf-m10200.lo \
 	elf-m10300.lo \
+	elf-nacl.lo \
 	elf-strtab.lo \
 	elf-vxworks.lo \
 	elf.lo \
@@ -461,6 +462,7 @@ BFD32_BACKENDS_CFILES = \
 	elf-ifunc.c \
 	elf-m10200.c \
 	elf-m10300.c \
+	elf-nacl.c \
 	elf-strtab.c \
 	elf-vxworks.c \
 	elf.c \
@@ -609,6 +611,7 @@ BFD64_BACKENDS = \
 	coff-x86_64.lo \
 	coff64-rs6000.lo \
 	demo64.lo \
+	elf-nacl.lo \
 	elf32-ia64.lo \
 	elf32-score.lo \
 	elf32-score7.lo \
@@ -645,6 +648,7 @@ BFD64_BACKENDS_CFILES = \
 	coff-x86_64.c \
 	coff64-rs6000.c \
 	demo64.c \
+	elf-nacl.c \
 	elf32-score.c \
 	elf32-score7.c \
 	elf64-alpha.c \
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 437bafc..cf7b380 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -575,6 +575,7 @@ BFD32_BACKENDS = \
 	elf-ifunc.lo \
 	elf-m10200.lo \
 	elf-m10300.lo \
+	elf-nacl.lo \
 	elf-strtab.lo \
 	elf-vxworks.lo \
 	elf.lo \
@@ -761,6 +762,7 @@ BFD32_BACKENDS_CFILES = \
 	elf-ifunc.c \
 	elf-m10200.c \
 	elf-m10300.c \
+	elf-nacl.c \
 	elf-strtab.c \
 	elf-vxworks.c \
 	elf.c \
@@ -910,6 +912,7 @@ BFD64_BACKENDS = \
 	coff-x86_64.lo \
 	coff64-rs6000.lo \
 	demo64.lo \
+	elf-nacl.lo \
 	elf32-ia64.lo \
 	elf32-score.lo \
 	elf32-score7.lo \
@@ -946,6 +949,7 @@ BFD64_BACKENDS_CFILES = \
 	coff-x86_64.c \
 	coff64-rs6000.c \
 	demo64.c \
+	elf-nacl.c \
 	elf32-score.c \
 	elf32-score7.c \
 	elf64-alpha.c \
@@ -1341,6 +1345,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-ifunc.Plo@am__quote@
 @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-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/configure b/bfd/configure
index 58a57ba..dd274bd 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -15225,11 +15225,11 @@ do
     bfd_elf32_hppa_nbsd_vec)	tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_hppa_vec)		tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_i370_vec)		tb="$tb elf32-i370.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_sol2_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_freebsd_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_nacl_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_vxworks_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_sol2_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_freebsd_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_nacl_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_vxworks_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
     bfd_elf32_i860_little_vec)	tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     bfd_elf32_i860_vec)		tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     bfd_elf32_i960_vec)		tb="$tb elf32-i960.lo elf32.lo $elf" ;;
@@ -15364,16 +15364,16 @@ do
 				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_tradlittlemips_vec | bfd_elf64_tradlittlemips_freebsd_vec)
 				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_x86_64_sol2_vec)  tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf32_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
-    bfd_elf32_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
-    bfd_elf64_l1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_l1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_k1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_k1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_x86_64_sol2_vec)  tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf32_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
+    bfd_elf32_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
+    bfd_elf64_l1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_l1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_k1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_k1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
     bfd_mmo_vec)		tb="$tb mmo.lo" target_size=64 ;;
     bfd_powerpc_pe_vec)         tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
     bfd_powerpc_pei_vec)        tb="$tb pei-ppc.lo peigen.lo cofflink.lo" ;;
diff --git a/bfd/configure.in b/bfd/configure.in
index f443915..af3622b 100644
--- a/bfd/configure.in
+++ b/bfd/configure.in
@@ -711,11 +711,11 @@ do
     bfd_elf32_hppa_nbsd_vec)	tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_hppa_vec)		tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_i370_vec)		tb="$tb elf32-i370.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_sol2_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_freebsd_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_nacl_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_vxworks_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
-    bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_sol2_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_freebsd_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_nacl_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_vxworks_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
+    bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
     bfd_elf32_i860_little_vec)	tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     bfd_elf32_i860_vec)		tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     bfd_elf32_i960_vec)		tb="$tb elf32-i960.lo elf32.lo $elf" ;;
@@ -850,16 +850,16 @@ do
 				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_tradlittlemips_vec | bfd_elf64_tradlittlemips_freebsd_vec)
 				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_x86_64_sol2_vec)  tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf32_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
-    bfd_elf32_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
-    bfd_elf64_l1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_l1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_k1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_k1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_x86_64_sol2_vec)  tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf32_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
+    bfd_elf32_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
+    bfd_elf64_l1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_l1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_k1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    bfd_elf64_k1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
     bfd_mmo_vec)		tb="$tb mmo.lo" target_size=64 ;;
     bfd_powerpc_pe_vec)         tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
     bfd_powerpc_pei_vec)        tb="$tb pei-ppc.lo peigen.lo cofflink.lo" ;;
diff --git a/bfd/elf-nacl.c b/bfd/elf-nacl.c
new file mode 100644
index 0000000..3ba7f55
--- /dev/null
+++ b/bfd/elf-nacl.c
@@ -0,0 +1,205 @@
+/* Native Client support for ELF
+   Copyright 2012 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., 59 Temple Place - Suite 330, Boston,
+   MA 02111-1307, USA.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "elf-bfd.h"
+#include "elf-nacl.h"
+#include "elf/common.h"
+#include "elf/internal.h"
+
+static bfd_boolean
+segment_executable (struct elf_segment_map *seg)
+{
+  if (seg->p_flags_valid)
+    return (seg->p_flags & PF_X) != 0;
+  else
+    {
+      /* The p_flags value has not been computed yet,
+         so we have to look through the sections.  */
+      unsigned int i;
+      for (i = 0; i < seg->count; ++i)
+        if (seg->sections[i]->flags & SEC_CODE)
+          return TRUE;
+    }
+  return FALSE;
+}
+
+static bfd_boolean
+segment_nonexecutable_and_has_contents (struct elf_segment_map *seg)
+{
+  bfd_boolean any_contents = FALSE;
+  unsigned int i;
+  for (i = 0; i < seg->count; ++i)
+    {
+      if (seg->sections[i]->flags & SEC_CODE)
+        return FALSE;
+      if (seg->sections[i]->flags & SEC_HAS_CONTENTS)
+        any_contents = TRUE;
+    }
+  return any_contents;
+}
+
+
+/* We permute the segment_map to get BFD to do the file layout we want:
+   The first non-executable PT_LOAD segment appears first in the file
+   and contains the ELF file header and phdrs.  */
+bfd_boolean
+nacl_modify_segment_map (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
+{
+  struct elf_segment_map **m = &elf_tdata (abfd)->segment_map;
+  struct elf_segment_map **first_load = NULL;
+  struct elf_segment_map **last_load = NULL;
+  bfd_boolean moved_headers = FALSE;
+
+  while (*m != NULL)
+    {
+      struct elf_segment_map *seg = *m;
+
+      if (seg->p_type == PT_LOAD)
+        {
+          /* First, we're just finding the earliest PT_LOAD.
+             By the normal rules, this will be the lowest-addressed one.
+             We only have anything interesting to do if it's executable.  */
+          last_load = m;
+          if (first_load == NULL)
+            {
+              if (!segment_executable (*m))
+                return TRUE;
+              first_load = m;
+            }
+          /* Now that we've noted the first PT_LOAD, we're looking for
+             the first non-executable PT_LOAD with a nonempty p_filesz.  */
+          else if (!moved_headers
+                   && segment_nonexecutable_and_has_contents (seg))
+            {
+              /* This is the one we were looking for!
+
+                 First, clear the flags on previous segments that
+                 say they include the file header and phdrs.  */
+              struct elf_segment_map *prevseg;
+              for (prevseg = *first_load;
+                   prevseg != seg;
+                   prevseg = prevseg->next)
+                if (prevseg->p_type == PT_LOAD)
+                  {
+                    prevseg->includes_filehdr = 0;
+                    prevseg->includes_phdrs = 0;
+                  }
+
+              /* This segment will include those headers instead.  */
+              seg->includes_filehdr = 1;
+              seg->includes_phdrs = 1;
+
+              moved_headers = TRUE;
+            }
+        }
+
+      m = &seg->next;
+    }
+
+  if (first_load != last_load && moved_headers)
+    {
+      /* Now swap the first and last PT_LOAD segments'
+         positions in segment_map.  */
+      struct elf_segment_map *first = *first_load;
+      struct elf_segment_map *last = *last_load;
+      *first_load = first->next;
+      first->next = last->next;
+      last->next = first;
+    }
+
+  return TRUE;
+}
+
+/* After nacl_modify_segment_map has done its work, the file layout has
+   been done as we wanted.  But the PT_LOAD phdrs are no longer in the
+   proper order for the ELF rule that they must appear in ascending address
+   order.  So find the two segments we swapped before, and swap them back.  */
+bfd_boolean
+nacl_modify_program_headers (bfd *abfd,
+                             struct bfd_link_info *info ATTRIBUTE_UNUSED)
+{
+  struct elf_segment_map **m = &elf_tdata (abfd)->segment_map;
+  Elf_Internal_Phdr *phdr = elf_tdata (abfd)->phdr;
+  Elf_Internal_Phdr *p = phdr;
+
+  /* Find the PT_LOAD that contains the headers (should be the first).  */
+  while (*m != NULL)
+    {
+      if ((*m)->p_type == PT_LOAD && (*m)->includes_filehdr)
+        break;
+
+      m = &(*m)->next;
+      ++p;
+    }
+
+  if (*m != NULL)
+    {
+      struct elf_segment_map **first_load_seg = m;
+      Elf_Internal_Phdr *first_load_phdr = p;
+      struct elf_segment_map **next_load_seg = NULL;
+      Elf_Internal_Phdr *next_load_phdr = NULL;
+
+      /* Now move past that first one and find the PT_LOAD that should be
+         before it by address order.  */
+
+      m = &(*m)->next;
+      ++p;
+
+      while ((*m) != NULL)
+        {
+          if (p->p_type == PT_LOAD && p->p_vaddr < first_load_phdr->p_vaddr)
+            {
+              next_load_seg = m;
+              next_load_phdr = p;
+              break;
+            }
+
+          m = &(*m)->next;
+          ++p;
+        }
+
+      /* Swap their positions in the segment_map back to how they used to be.
+         The phdrs have already been set up by now, so we have to slide up
+         the earlier ones to insert the one that should be first.  */
+      if (next_load_seg != NULL)
+        {
+          Elf_Internal_Phdr move_phdr;
+          struct elf_segment_map *first_seg = *first_load_seg;
+          struct elf_segment_map *next_seg = *next_load_seg;
+          struct elf_segment_map *first_next = first_seg->next;
+          struct elf_segment_map *next_next = next_seg->next;
+
+          first_seg->next = next_next;
+          *first_load_seg = next_seg;
+
+          next_seg->next = first_next;
+          *next_load_seg = first_seg;
+
+          move_phdr = *next_load_phdr;
+          memmove (first_load_phdr + 1, first_load_phdr,
+                   (next_load_phdr - first_load_phdr) * sizeof move_phdr);
+          *first_load_phdr = move_phdr;
+        }
+    }
+
+  return TRUE;
+}
diff --git a/bfd/elf-nacl.h b/bfd/elf-nacl.h
new file mode 100644
index 0000000..417c7e3
--- /dev/null
+++ b/bfd/elf-nacl.h
@@ -0,0 +1,24 @@
+/* Native Client support for ELF
+   Copyright 2012 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., 59 Temple Place - Suite 330, Boston,
+   MA 02111-1307, USA.  */
+
+#include "bfd.h"
+
+bfd_boolean nacl_modify_segment_map (bfd *, struct bfd_link_info *);
+bfd_boolean nacl_modify_program_headers (bfd *, struct bfd_link_info *);
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index f35e3c2..d5a2614 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -25,6 +25,7 @@
 #include "bfdlink.h"
 #include "libbfd.h"
 #include "elf-bfd.h"
+#include "elf-nacl.h"
 #include "elf-vxworks.h"
 #include "bfd_stdint.h"
 #include "objalloc.h"
@@ -5207,8 +5208,17 @@ static const struct elf_i386_backend_data elf_i386_nacl_arch_bed =
 #undef	elf_backend_arch_data
 #define elf_backend_arch_data	&elf_i386_nacl_arch_bed
 
+#undef	elf_backend_modify_segment_map
+#define	elf_backend_modify_segment_map		nacl_modify_segment_map
+#undef	elf_backend_modify_program_headers
+#define	elf_backend_modify_program_headers	nacl_modify_program_headers
+
 #include "elf32-target.h"
 
+/* Restore defaults.  */
+#undef	elf_backend_modify_segment_map
+#undef	elf_backend_modify_program_headers
+
 /* VxWorks support.  */
 
 #undef	TARGET_LITTLE_SYM
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index 26cec39..91ae2df 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -3948,7 +3948,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
 	case R_68K_TLS_LE32:
 	case R_68K_TLS_LE16:
 	case R_68K_TLS_LE8:
-	  if (info->shared)
+	  if (info->shared && !info->pie)
 	    {
 	      (*_bfd_error_handler)
 		(_("%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted "
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index cc5ee42..8ca811c 100644
--- a/bfd/elf64-x86-64.c


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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-04-03 22:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-03 22:23 [SCM] archer-keiths-linespec-rewrite: * cp-support.c (operator_tokens): Removed unused global kseitz

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).