public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
From: jkratoch@sourceware.org
To: archer-commits@sourceware.org
Subject: [SCM]  archer-jankratochvil-misc: Merge commit 'origin/master' into archer-jankratochvil-misc
Date: Sun, 14 Dec 2008 23:51:00 -0000	[thread overview]
Message-ID: <20081214235145.12794.qmail@sourceware.org> (raw)

The branch, archer-jankratochvil-misc has been updated
       via  a5ef33ef94775a5bdd201806ddf36d2671e6a866 (commit)
       via  17ec07b78f28e400d2e839d732abc94a6cb3ae2f (commit)
       via  2ba1a5ccb3799e993fd59088955b46d3a2647ceb (commit)
       via  bcc4841ed5d1365ce8e51fdb07afdfe5e8b114ec (commit)
       via  9d0ff7b457f2022cbcd2da11d1783348e2d36a33 (commit)
       via  3a70e03ee3b26bf0193ca88e5d211c87c7c8535f (commit)
       via  8a3ada7cdf8d989359bc5a94125c632117a2942c (commit)
       via  9cb769c44ee29cdc01a445a701df041aae7de528 (commit)
       via  95f1a6166a530ac07837b3f3111da3f8b76e7eee (commit)
       via  6641e3e244876f0f1e93f32e2bd4b5e274e057d5 (commit)
       via  0b104d2741b7f42029e74984b7a3ae8ef97cfebb (commit)
       via  f9fe8e1a40bb54ce88075b918d8be1a1566c6a48 (commit)
       via  df4a0b9abc3290af89ca9025b1c4a5ea00fbd345 (commit)
       via  d4a93591c374490bdf974cb170efb8a49c86fcc6 (commit)
       via  4a15fb5a73b2ddc4d6449c6dad79e1082301db46 (commit)
       via  2b0889d13c54d273bcb7688080ba231fbca96243 (commit)
       via  2d720676aece106042aecd9dbbc658d93c1d814d (commit)
       via  b9b2df2e314d7db4ea3a5c3c8c00139db22e862f (commit)
       via  215063195ce04893ac22d83dfda12db2080cd614 (commit)
       via  90b65158d7c9efbcc97386de78b37fdc87e65df1 (commit)
       via  bc330b88fd18fac168518b965fed937ba537371d (commit)
       via  92d4fad88b6f77282ef69e039660817aece6b2bd (commit)
       via  7dbe32ffbc835ecd38e06b2a3fe098e888889154 (commit)
       via  990d890a845dd2d8c84a44540a3318c66881bcda (commit)
       via  2ca21c55c0ac4e968a77500ec6ecc8d9710c5c7b (commit)
       via  ec39a377f6b2636a2b1d6698ef03c0cc38e7e709 (commit)
       via  4a74550b41e81a3d763d86c9a350aa5b0403b9c1 (commit)
      from  2af2bfaa1c59088a25d4cf5b11d0e6bc061e5474 (commit)

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

- Log -----------------------------------------------------------------
commit a5ef33ef94775a5bdd201806ddf36d2671e6a866
Merge: 2af2bfaa1c59088a25d4cf5b11d0e6bc061e5474 17ec07b78f28e400d2e839d732abc94a6cb3ae2f
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Mon Dec 15 00:46:51 2008 +0100

    Merge commit 'origin/master' into archer-jankratochvil-misc

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

Summary of changes:
 bfd/ChangeLog                       |   51 +++
 bfd/cpu-avr.c                       |    8 +-
 bfd/elf32-spu.c                     |  669 ++++++++++++++++++-----------------
 bfd/elf32-spu.h                     |   64 +++-
 bfd/pef.c                           |    2 +-
 bfd/version.h                       |    2 +-
 gdb/ChangeLog                       |   47 +++
 gdb/acinclude.m4                    |    3 +
 gdb/breakpoint.c                    |   26 +-
 gdb/cli/cli-decode.c                |   92 ++++--
 gdb/cli/cli-decode.h                |    8 +-
 gdb/command.h                       |    2 -
 gdb/config.in                       |    9 +
 gdb/configure                       |   69 ++++-
 gdb/configure.ac                    |    5 +-
 gdb/gdbserver/ChangeLog             |    6 +
 gdb/gdbserver/linux-low.h           |    1 -
 gdb/gdbserver/thread-db.c           |    2 -
 gdb/infcmd.c                        |   14 +-
 gdb/python/python-value.c           |    4 +-
 gdb/remote.c                        |    4 +-
 gdb/testsuite/ChangeLog             |    5 +
 gdb/testsuite/gdb.base/commands.exp |   30 ++
 gdb/version.in                      |    2 +-
 opcodes/ChangeLog                   |    8 +
 opcodes/i386-dis.c                  |    1 -
 opcodes/i386-gen.c                  |    2 +-
 27 files changed, 739 insertions(+), 397 deletions(-)

First 500 lines of diff:
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index dd67ef2..704a418 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,54 @@
+2008-12-10  Alan Modra  <amodra@bigpond.net.au>
+
+	* elf32-spu.h (struct spu_elf_params): Add num_regions.
+	* elf32-spu.c (spu_elf_auto_overlay): Handle multiple overlay regions.
+
+2008-12-10  Alan Modra  <amodra@bigpond.net.au>
+
+	* elf32-spu.g (struct spu_elf_params, enum _ovly_flavour): New.
+	(spu_elf_setup): Declare.
+	(spu_elf_create_sections, spu_elf_size_stubs): Update prototype.
+	(spu_elf_build_stubs, spu_elf_check_vma): Likewise.
+	* elf32-spu.c (struct spu_link_hash_table): Add "params". Remove
+	various other fields now in "params".  Adjust code throughout.
+	(struct call_info, struct function_info): Move earlier in file.
+	(struct spu_elf_stack_info): Likewise.
+	(spu_elf_setup): New function.
+	(spu_elf_create_sections): Remove args other than "info".
+	(spu_elf_size_stubs, spu_elf_build_stubs, spu_elf_check_vma): Likewise.
+	(maybe_needs_stubs): Remove "output_bfd" arg.  Adjust all calls.
+	(interesting_section): Similarly with "obfd" arg.
+	(needs_ovl_stub): Adjust output_section test.
+	(allocate_spuear_stubs): Likewise.
+	(OVL_STUB_SIZE): Don't define.
+	(ovl_stub_size): New function, use in place of OVL_STUB_SIZE.
+	(build_stub): Test params->ovly_flavour rather than OVL_STUB_SIZE.
+	(spu_elf_auto_overlay): Remove args other than "info".  Make use
+	of size returned from spu_elf_load_ovl_mgr.
+	(spu_elf_stack_analysis): Remove args other than "info".
+	(spu_elf_relocate_section): Tidy setting of "ea".
+
+2008-12-10  Alan Modra  <amodra@bigpond.net.au>
+
+	* elf32-spu.c (find_function_stack_adjust): Don't limit number
+	of insns scanned.  Correct sp tests.  Handle "fsmbi" and "andbi".
+	(mark_detached_root): New function.
+	(build_call_tree): Call it.
+	(sort_calls): Don't do void* arithmetic.
+	(define_ovtab_symbol): Don't abort on symbols defined in linker scripts.
+	(discover_functions): Consider STT_SECTION symbols too.
+	(collect_lib_sections): Don't cut short call tree traversal
+	when function size is too large.
+
+2008-12-09  Tom Tromey  <tromey@redhat.com>
+
+	* pef.c (bfd_pef_parse_traceback_table): Add parens to placate gcc
+	4.4.
+
+2008-12-09  Tristan Gingold  <gingold@adacore.com>
+
+	* cpu-avr.c (compatible): Makes avr-6 compatible only with itself.
+
 2008-12-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 	
 	* elf64-s390.c (elf_s390_check_relocs): Initialize
diff --git a/bfd/cpu-avr.c b/bfd/cpu-avr.c
index 364f64e..ddc410b 100644
--- a/bfd/cpu-avr.c
+++ b/bfd/cpu-avr.c
@@ -38,7 +38,13 @@ compatible (const bfd_arch_info_type * a,
   if (a->mach == b->mach)
     return a;
 
-  if (a->mach <= bfd_mach_avr6 && b->mach <= bfd_mach_avr6)
+  /* avr-6 is compatible only with itself as its call convention is not
+     compatible with other avr (the mcu saves the return address on 3 bytes
+     instead of 2).  */
+  if (a->mach == bfd_mach_avr6 || b->mach == bfd_mach_avr6)
+    return NULL;
+
+  if (a->mach < bfd_mach_avr6 && b->mach < bfd_mach_avr6)
     {
       /* Special case for ATmega[16]03 (avr:3) and ATmega83 (avr:4).  */
       if ((a->mach == bfd_mach_avr3 && b->mach == bfd_mach_avr4)
diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
index 708ab24..447aa8d 100644
--- a/bfd/elf32-spu.c
+++ b/bfd/elf32-spu.c
@@ -297,6 +297,8 @@ struct spu_link_hash_table
 {
   struct elf_link_hash_table elf;
 
+  struct spu_elf_params *params;
+
   /* Shortcuts to overlay sections.  */
   asection *ovtab;
   asection *toe;
@@ -333,34 +335,8 @@ struct spu_link_hash_table
   /* Count of overlay stubs needed in non-overlay area.  */
   unsigned int non_ovly_stub;
 
-  /* Stash various callbacks for --auto-overlay.  */
-  void (*spu_elf_load_ovl_mgr) (void);
-  FILE *(*spu_elf_open_overlay_script) (void);
-  void (*spu_elf_relink) (void);
-
-  /* Bit 0 set if --auto-overlay.
-     Bit 1 set if --auto-relink.
-     Bit 2 set if --overlay-rodata.  */
-  unsigned int auto_overlay : 3;
-#define AUTO_OVERLAY 1
-#define AUTO_RELINK 2
-#define OVERLAY_RODATA 4
-
-  /* Set if we should emit symbols for stubs.  */
-  unsigned int emit_stub_syms:1;
-
-  /* Set if we want stubs on calls out of overlay regions to
-     non-overlay regions.  */
-  unsigned int non_overlay_stubs : 1;
-
   /* Set on error.  */
   unsigned int stub_err : 1;
-
-  /* Set if stack size analysis should be done.  */
-  unsigned int stack_analysis : 1;
-
-  /* Set if __stack_* syms will be emitted.  */
-  unsigned int emit_stack_syms : 1;
 };
 
 /* Hijack the generic got fields for overlay stub accounting.  */
@@ -376,6 +352,69 @@ struct got_entry
 #define spu_hash_table(p) \
   ((struct spu_link_hash_table *) ((p)->hash))
 
+struct call_info
+{
+  struct function_info *fun;
+  struct call_info *next;
+  unsigned int count;
+  unsigned int max_depth;
+  unsigned int is_tail : 1;
+  unsigned int is_pasted : 1;
+};
+
+struct function_info
+{
+  /* List of functions called.  Also branches to hot/cold part of
+     function.  */
+  struct call_info *call_list;
+  /* For hot/cold part of function, point to owner.  */
+  struct function_info *start;
+  /* Symbol at start of function.  */
+  union {
+    Elf_Internal_Sym *sym;
+    struct elf_link_hash_entry *h;
+  } u;
+  /* Function section.  */
+  asection *sec;
+  asection *rodata;
+  /* Where last called from, and number of sections called from.  */
+  asection *last_caller;
+  unsigned int call_count;
+  /* Address range of (this part of) function.  */
+  bfd_vma lo, hi;
+  /* Stack usage.  */
+  int stack;
+  /* Distance from root of call tree.  Tail and hot/cold branches
+     count as one deeper.  We aren't counting stack frames here.  */
+  unsigned int depth;
+  /* Set if global symbol.  */
+  unsigned int global : 1;
+  /* Set if known to be start of function (as distinct from a hunk
+     in hot/cold section.  */
+  unsigned int is_func : 1;
+  /* Set if not a root node.  */
+  unsigned int non_root : 1;
+  /* Flags used during call tree traversal.  It's cheaper to replicate
+     the visit flags than have one which needs clearing after a traversal.  */
+  unsigned int visit1 : 1;
+  unsigned int visit2 : 1;
+  unsigned int marking : 1;
+  unsigned int visit3 : 1;
+  unsigned int visit4 : 1;
+  unsigned int visit5 : 1;
+  unsigned int visit6 : 1;
+  unsigned int visit7 : 1;
+};
+
+struct spu_elf_stack_info
+{
+  int num_fun;
+  int max_fun;
+  /* Variable size array describing functions, one per contiguous
+     address range belonging to a function.  */
+  struct function_info fun[1];
+};
+
 /* Create a spu ELF linker hash table.  */
 
 static struct bfd_link_hash_table *
@@ -405,6 +444,13 @@ spu_elf_link_hash_table_create (bfd *abfd)
   return &htab->elf.root;
 }
 
+void
+spu_elf_setup (struct bfd_link_info *info, struct spu_elf_params *params)
+{
+  struct spu_link_hash_table *htab = spu_hash_table (info);
+  htab->params = params;
+}
+
 /* Find the symbol for the given R_SYMNDX in IBFD and set *HP and *SYMP
    to (hash, NULL) for global symbols, and (NULL, sym) for locals.  Set
    *SYMSECP to the symbol's section.  *LOCSYMSP caches local syms.  */
@@ -479,16 +525,9 @@ get_sym_h (struct elf_link_hash_entry **hp,
    that the linker maps the sections to the right place in the output.  */
 
 bfd_boolean
-spu_elf_create_sections (struct bfd_link_info *info,
-			 int stack_analysis,
-			 int emit_stack_syms)
+spu_elf_create_sections (struct bfd_link_info *info)
 {
   bfd *ibfd;
-  struct spu_link_hash_table *htab = spu_hash_table (info);
-
-  /* Stash some options away where we can get at them later.  */
-  htab->stack_analysis = stack_analysis;
-  htab->emit_stack_syms = emit_stack_syms;
 
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
     if (bfd_get_section_by_name (ibfd, SPU_PTNOTE_SPUNAME) != NULL)
@@ -626,13 +665,6 @@ spu_elf_find_overlays (struct bfd_link_info *info)
   return ovl_index != 0;
 }
 
-/* Support two sizes of overlay stubs, a slower more compact stub of two
-   intructions, and a faster stub of four instructions.  */
-#ifndef OVL_STUB_SIZE
-/* Default to faster.  */
-#define OVL_STUB_SIZE 16
-/* #define OVL_STUB_SIZE 8 */
-#endif
 #define BRSL	0x33000000
 #define BR	0x32000000
 #define NOP	0x40200000
@@ -684,15 +716,14 @@ is_hint (const unsigned char *insn)
 /* True if INPUT_SECTION might need overlay stubs.  */
 
 static bfd_boolean
-maybe_needs_stubs (asection *input_section, bfd *output_bfd)
+maybe_needs_stubs (asection *input_section)
 {
   /* No stubs for debug sections and suchlike.  */
   if ((input_section->flags & SEC_ALLOC) == 0)
     return FALSE;
 
   /* No stubs for link-once sections that will be discarded.  */
-  if (input_section->output_section == NULL
-      || input_section->output_section->owner != output_bfd)
+  if (input_section->output_section == bfd_abs_section_ptr)
     return FALSE;
 
   /* Don't create stubs for .eh_frame references.  */
@@ -729,8 +760,7 @@ needs_ovl_stub (struct elf_link_hash_entry *h,
   enum _stub_type ret = no_stub;
 
   if (sym_sec == NULL
-      || sym_sec->output_section == NULL
-      || sym_sec->output_section->owner != info->output_bfd
+      || sym_sec->output_section == bfd_abs_section_ptr
       || spu_elf_section_data (sym_sec->output_section) == NULL)
     return ret;
 
@@ -750,7 +780,7 @@ needs_ovl_stub (struct elf_link_hash_entry *h,
 
   /* Usually, symbols in non-overlay sections don't need stubs.  */
   if (spu_elf_section_data (sym_sec->output_section)->u.o.ovl_index == 0
-      && !htab->non_overlay_stubs)
+      && !htab->params->non_overlay_stubs)
     return ret;
 
   if (h != NULL)
@@ -911,6 +941,15 @@ count_stub (struct spu_link_hash_table *htab,
   return TRUE;
 }
 
+/* Support two sizes of overlay stubs, a slower more compact stub of two
+   intructions, and a faster stub of four instructions.  */
+
+static unsigned int
+ovl_stub_size (enum _ovly_flavour ovly_flavour)
+{
+  return 8 << ovly_flavour;
+}
+
 /* Two instruction overlay stubs look like:
 
    brsl $75,__ovly_load
@@ -936,10 +975,10 @@ build_stub (struct spu_link_hash_table *htab,
 	    bfd_vma dest,
 	    asection *dest_sec)
 {
-  unsigned int ovl;
+  unsigned int ovl, dest_ovl;
   struct got_entry *g, **head;
   asection *sec;
-  bfd_vma addend, val, from, to;
+  bfd_vma addend, from, to;
 
   ovl = 0;
   if (stub_type != nonovl_stub)
@@ -973,42 +1012,40 @@ build_stub (struct spu_link_hash_table *htab,
   to = (htab->ovly_load->root.u.def.value
 	+ htab->ovly_load->root.u.def.section->output_offset
 	+ htab->ovly_load->root.u.def.section->output_section->vma);
-  val = to - from;
-  if (OVL_STUB_SIZE == 16)
-    val -= 12;
-  if (((dest | to | from) & 3) != 0
-      || val + 0x40000 >= 0x80000)
+
+  if (((dest | to | from) & 3) != 0)
     {
       htab->stub_err = 1;
       return FALSE;
     }
-  ovl = spu_elf_section_data (dest_sec->output_section)->u.o.ovl_index;
+  dest_ovl = spu_elf_section_data (dest_sec->output_section)->u.o.ovl_index;
 
-  if (OVL_STUB_SIZE == 16)
+  switch (htab->params->ovly_flavour)
     {
-      bfd_put_32 (sec->owner, ILA + ((ovl << 7) & 0x01ffff80) + 78,
+    case ovly_normal:
+      bfd_put_32 (sec->owner, ILA + ((dest_ovl << 7) & 0x01ffff80) + 78,
 		  sec->contents + sec->size);
       bfd_put_32 (sec->owner, LNOP,
 		  sec->contents + sec->size + 4);
       bfd_put_32 (sec->owner, ILA + ((dest << 7) & 0x01ffff80) + 79,
 		  sec->contents + sec->size + 8);
-      bfd_put_32 (sec->owner, BR + ((val << 5) & 0x007fff80),
+      bfd_put_32 (sec->owner, BR + (((to - (from + 12)) << 5) & 0x007fff80),
 		  sec->contents + sec->size + 12);
-    }
-  else if (OVL_STUB_SIZE == 8)
-    {
-      bfd_put_32 (sec->owner, BRSL + ((val << 5) & 0x007fff80) + 75,
-		  sec->contents + sec->size);
+      break;
 
-      val = (dest & 0x3ffff) | (ovl << 18);
-      bfd_put_32 (sec->owner, val,
+    case ovly_compact:
+      bfd_put_32 (sec->owner, BRSL + (((to - from) << 5) & 0x007fff80) + 75,
+		  sec->contents + sec->size);
+      bfd_put_32 (sec->owner, (dest & 0x3ffff) | (dest_ovl << 18),
 		  sec->contents + sec->size + 4);
+      break;
+
+    default:
+      abort ();
     }
-  else
-    abort ();
-  sec->size += OVL_STUB_SIZE;
+  sec->size += ovl_stub_size (htab->params->ovly_flavour);
 
-  if (htab->emit_stub_syms)
+  if (htab->params->emit_stub_syms)
     {
       size_t len;
       char *name;
@@ -1046,8 +1083,8 @@ build_stub (struct spu_link_hash_table *htab,
 	{
 	  h->root.type = bfd_link_hash_defined;
 	  h->root.u.def.section = sec;
-	  h->root.u.def.value = sec->size - OVL_STUB_SIZE;
-	  h->size = OVL_STUB_SIZE;
+	  h->size = ovl_stub_size (htab->params->ovly_flavour);
+	  h->root.u.def.value = sec->size - h->size;
 	  h->type = STT_FUNC;
 	  h->ref_regular = 1;
 	  h->def_regular = 1;
@@ -1077,11 +1114,10 @@ allocate_spuear_stubs (struct elf_link_hash_entry *h, void *inf)
       && h->def_regular
       && strncmp (h->root.root.string, "_SPUEAR_", 8) == 0
       && (sym_sec = h->root.u.def.section) != NULL
-      && sym_sec->output_section != NULL
-      && sym_sec->output_section->owner == info->output_bfd
+      && sym_sec->output_section != bfd_abs_section_ptr
       && spu_elf_section_data (sym_sec->output_section) != NULL
       && (spu_elf_section_data (sym_sec->output_section)->u.o.ovl_index != 0
-	  || htab->non_overlay_stubs))
+	  || htab->params->non_overlay_stubs))
     {
       return count_stub (htab, NULL, NULL, nonovl_stub, h, NULL);
     }
@@ -1103,11 +1139,10 @@ build_spuear_stubs (struct elf_link_hash_entry *h, void *inf)
       && h->def_regular
       && strncmp (h->root.root.string, "_SPUEAR_", 8) == 0
       && (sym_sec = h->root.u.def.section) != NULL
-      && sym_sec->output_section != NULL
-      && sym_sec->output_section->owner == info->output_bfd
+      && sym_sec->output_section != bfd_abs_section_ptr
       && spu_elf_section_data (sym_sec->output_section) != NULL
       && (spu_elf_section_data (sym_sec->output_section)->u.o.ovl_index != 0
-	  || htab->non_overlay_stubs))
+	  || htab->params->non_overlay_stubs))
     {
       return build_stub (htab, NULL, NULL, nonovl_stub, h, NULL,
 			 h->root.u.def.value, sym_sec);
@@ -1149,7 +1184,7 @@ process_stubs (struct bfd_link_info *info, bfd_boolean build)
 	      || isec->reloc_count == 0)
 	    continue;
 
-	  if (!maybe_needs_stubs (isec, info->output_bfd))
+	  if (!maybe_needs_stubs (isec))
 	    continue;
 
 	  /* Get the relocs.  */
@@ -1248,22 +1283,19 @@ process_stubs (struct bfd_link_info *info, bfd_boolean build)
 /* Allocate space for overlay call and return stubs.  */
 
 int
-spu_elf_size_stubs (struct bfd_link_info *info,
-		    void (*place_spu_section) (asection *, asection *,
-					       const char *),
-		    int non_overlay_stubs)
+spu_elf_size_stubs (struct bfd_link_info *info)
 {
-  struct spu_link_hash_table *htab = spu_hash_table (info);
+  struct spu_link_hash_table *htab;
   bfd *ibfd;
   bfd_size_type amt;
   flagword flags;
   unsigned int i;
   asection *stub;
 
-  htab->non_overlay_stubs = non_overlay_stubs;
   if (!process_stubs (info, FALSE))
     return 0;
 
+  htab = spu_hash_table (info);
   elf_link_hash_traverse (&htab->elf, allocate_spuear_stubs, info);
   if (htab->stub_err)
     return 0;
@@ -1282,10 +1314,11 @@ spu_elf_size_stubs (struct bfd_link_info *info,
   stub = bfd_make_section_anyway_with_flags (ibfd, ".stub", flags);
   htab->stub_sec[0] = stub;
   if (stub == NULL
-      || !bfd_set_section_alignment (ibfd, stub, 3 + (OVL_STUB_SIZE > 8)))
+      || !bfd_set_section_alignment (ibfd, stub,
+				     htab->params->ovly_flavour + 3))
     return 0;
-  stub->size = htab->stub_count[0] * OVL_STUB_SIZE;
-  (*place_spu_section) (stub, NULL, ".text");
+  stub->size = htab->stub_count[0] * ovl_stub_size (htab->params->ovly_flavour);
+  (*htab->params->place_spu_section) (stub, NULL, ".text");
 
   for (i = 0; i < htab->num_overlays; ++i)
     {
@@ -1294,10 +1327,11 @@ spu_elf_size_stubs (struct bfd_link_info *info,
       stub = bfd_make_section_anyway_with_flags (ibfd, ".stub", flags);
       htab->stub_sec[ovl] = stub;
       if (stub == NULL
-	  || !bfd_set_section_alignment (ibfd, stub, 3 + (OVL_STUB_SIZE > 8)))
+	  || !bfd_set_section_alignment (ibfd, stub,
+					 htab->params->ovly_flavour + 3))
 	return 0;
-      stub->size = htab->stub_count[ovl] * OVL_STUB_SIZE;
-      (*place_spu_section) (stub, osec, NULL);
+      stub->size = htab->stub_count[ovl] * ovl_stub_size (htab->params->ovly_flavour);
+      (*htab->params->place_spu_section) (stub, osec, NULL);
     }
 
  /* htab->ovtab consists of two arrays.
@@ -1321,14 +1355,14 @@ spu_elf_size_stubs (struct bfd_link_info *info,
     return 0;
 
   htab->ovtab->size = htab->num_overlays * 16 + 16 + htab->num_buf * 4;
-  (*place_spu_section) (htab->ovtab, NULL, ".data");
+  (*htab->params->place_spu_section) (htab->ovtab, NULL, ".data");
 
   htab->toe = bfd_make_section_anyway_with_flags (ibfd, ".toe", SEC_ALLOC);
   if (htab->toe == NULL
       || !bfd_set_section_alignment (ibfd, htab->toe, 4))
     return 0;
   htab->toe->size = 16;
-  (*place_spu_section) (htab->toe, NULL, ".toe");
+  (*htab->params->place_spu_section) (htab->toe, NULL, ".toe");
 
   return 2;
 }
@@ -1401,7 +1435,7 @@ define_ovtab_symbol (struct spu_link_hash_table *htab, const char *name)
       h->ref_regular_nonweak = 1;
       h->non_elf = 0;
     }
-  else
+  else if (h->root.u.def.section->owner != NULL)
     {
       (*_bfd_error_handler) (_("%B is not allowed to define %s"),
 			     h->root.u.def.section->owner,
@@ -1409,6 +1443,13 @@ define_ovtab_symbol (struct spu_link_hash_table *htab, const char *name)


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


             reply	other threads:[~2008-12-14 23:51 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-14 23:51 jkratoch [this message]
  -- strict thread matches above, loose matches on Subject: below --
2009-09-04 18:32 jkratoch
2009-05-03 13:18 jkratoch
2009-04-11 10:13 jkratoch
2009-03-20 17:07 jkratoch
2009-03-15 14:37 jkratoch
2009-03-12 20:10 jkratoch
2009-02-09 14:35 jkratoch
2009-01-27 14:39 jkratoch
2009-01-16 10:33 jkratoch
2009-01-10 23:26 jkratoch
2009-01-07 23:30 jkratoch
2008-12-28 16:15 jkratoch
2008-12-22 18:33 jkratoch
2008-12-07  2:49 jkratoch
2008-11-27 15:52 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=20081214235145.12794.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).