This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Large patch to merge in changes for gcc 4.3


The attached patch is a merge of changes from eCosCentric's internal tree
to anoncvs, in order to support updated tools based on GCC 4.3.2. We have
these updated tools stable, and this patch is the precursor to announcing
the availability of the tools for wider testing.

Many of the changes here are required. Many are included for incidental
reasons such as warning cleanups. Quite a few more are included for no
better reason than that picking them apart would increase future merge
headache. That's also why you may see some bits that aren't (yet) relevant
for anoncvs. But leave them in as they'll become relevant eventually :-).

I've tried to marry the changes with ChangeLog entries - apologies for any
discrepancies - something like SVN would make taking individual changesets
much easier!

There are bound to be problems. The thing to bear in mind is that
eCosCentric have it all working, so if there are problems, mail me first
rather than spending time investigating. It will almost certainly already
have been fixed, and so it probably means I just need to pull a few more
patches from eCosCentric's tree. (FAOD this isn't all the
changes/fixes/improvements in eCosCentric's tree by a long shot which is
why some may well have been missed).

Changes to RedBoot's flash.c are omitted for the moment since that is to be
updated wholesale by me in a few days to merge flash v2 to the trunk. (Yes
it's finally happening).

There are further things I intend to do down the road before eCos 3.0 to
fully roll-out the the support:

1) Remove -Winline. It's now mostly distracting noise. And the use of
.gnu.linkonce sections means that I believe there is now very little chance
of harm in things not being inlined which had been marked as inlined. Put
it like this, I know from eCosCentric's libstdc++ support, -Winline
triggers a lot of stuff in libstdc++'s own headers - part of the toolchain
- so it's really not expected to be that well used.

2) Add -Wno-write-strings as a stopgap to remove nasty warning noise during
build. It will silence all the warnings when a constant string literal is
being assigned to a plain char *, whether in C or C++.

Now making this change (and the change in (1)) is something I only want to
do once. However I think the warning should only be silenced in the release
branch when that is taken. I think the trunk should retain this warning in
order to assist with correcting the code, rather than sweeping it under the
carpet.

Therefore if we're going to be touching all HAL's CYGBLD_GLOBAL_CFLAGS,
it's an opportunity to centralise these warning flags, which are entirely
generic and are distributed identically across all HALs. I propose adding a
CYGBLD_GLOBAL_WARNFLAGS CDL option in hal/common. And I will remove all the
standard warning flags[1] from all HALs, and replace it with a reference to
that option. More specifically I suggest that CYGBLD_GLOBAL_WARNFLAGS is an
option which consists of a concatenation of CYGBLD_GLOBAL_WARNFLAGS_C,
CYGBLD_GLOBAL_WARNFLAGS_CXX and CYGBLD_GLOBAL_WARNFLAGS_COMMON. Each of
these takes their default_value from an identically named option with a
_DEFAULT suffix. This allows package CDL to control the default, as well as
letting users override it. It also starts to give us a route to avoid the
horrible hackery in pkgconf/rules.mak to eliminate language-specific flags
by replacing it with something properly controlled. If anyone has a better
proposal, I'd like to hear it, although be warned that if it is more
effort, then they can consider themselves automatically volunteered to do it!

I would like to also do this with other generic options, but for now won't
bite off more than I can chew.

3) Change all the ARM targets to use the arm-eabi tools prefix in place of
arm-elf

4) Possibly change the MIPS targets to remove -G0. The mipsisa32-elf
multilibs have been built with -mno-extern-sdata which should avoid the
requirement for building all of eCos and the application with -G0. However
I haven't tested this very well - in particular it would need to be
verified that it works with RedBoot virtual vector calls.

Jifl

[1] -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef
-Woverloaded-virtual
-- 
eCosCentric Limited      http://www.eCosCentric.com/     The eCos experts
Barnwell House, Barnwell Drive, Cambridge, UK.       Tel: +44 1223 245571
Registered in England and Wales: Reg No 4422071.
------["Si fractum non sit, noli id reficere"]------       Opinions==mine
Index: hal/arm/arch/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/arch/current/ChangeLog,v
retrieving revision 1.111
diff -u -5 -p -r1.111 ChangeLog
--- hal/arm/arch/current/ChangeLog	15 Oct 2007 11:28:06 -0000	1.111
+++ hal/arm/arch/current/ChangeLog	11 Nov 2008 01:09:37 -0000
@@ -1,5 +1,96 @@
+2008-10-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/arm.ld: Discard C++ EH-related sections when we can't
+	possibly support C++ EH (no CYGPKG_LIBSTDCXX).
+
+2008-09-27  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/hal_mk_defs.c: Also export HAL_BREAKINST_THUMB and
+	HAL_BREAKINST_ARM to asm.
+	* src/arm.ld: Revise alignment yet further. Maintain ALIGN_LMA
+	at original value, but define alignment for use in compliance
+	with AAPCS. Expand explanatory comments.
+	(SECTION_text): Comply with AAPCS alignment when inserting
+	.ARM.extab and .ARM.exidx.	
+
+2008-09-17  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/arm.ld: Rework alignment further to improve backward
+	compatibility. Improve commenting on alignment issues.
+
+2008-08-26  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/arm.ld: We need to be double-word aligned sometimes, so align
+	LMA the same way too.
+
+2008-07-24  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* cdl/hal_arm.cdl (CYGBLD_HAL_ARM_EABI): EABI has a different C++
+	EH implementation, so don't let LIBSTDCXX use the default one.
+
+2008-06-04  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/vectors.S: Correctly conditionalise overwriting (or not)
+	of reset vector.
+
+2008-05-28  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/hal_misc.c (CONSTRUCTORS_END): Fix fencepost error.
+
+2008-05-19  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/arm_stub.h: Remove CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION
+	and CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION defines which should remain
+	as their defaults.
+	* src/arm.ld: Add SECTION_hal_vsr_table for targets which need the
+	VSR table in a different location to the rest of the fixed vectors.
+	* src/vectors.S: Allow hal_platform_setup.h to define
+	CYGHWR_HAL_ARM_SEPARATE_VSR_TABLE to allow move of hal_vsr_table
+	to its own section at a different address.
+
+2008-05-12  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/hal_mk_defs.c (main): Export exception vector info
+	to asm.
+	* src/arm.ld: Remove previous EABI support and instead use a
+	different approach incorporating into existing SECTION macros for
+	better backward compatibility.
+	* src/hal_misc.c (cyg_hal_invoke_constructors): Rewrite init_array
+	support for EABI.
+	There is now nothing copyrightable remaining from Chris Zimman's
+	earlier work in this package.
+
+2008-05-09  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* cdl/hal_arm.cdl: Rename EABI option. Set default from
+	toolchain prefix and flags. Rewrite description.
+	* include/hal_arch.h: Rename exception vector addresses to
+	names less likely to potentially clash with applications.
+	* src/vectors.S: Update vector address names in line with
+	hal_arch.h change. Rename CYGNUM_HAL_VECTOR_TABLE ->
+	CYGHWR_HAL_VECTOR_TABLE_BASE.
+
+2008-05-09  Chris Zimman  <czimman@bloomberg.com>
+2008-05-09  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	Some of the following changes were inspired by work from Chris
+	Zimman. Further changes were also provided, but have not been
+	included because either they are cosmetic (whitespace changes
+	etc.) and thus will only make it more difficult to merge in future
+	updates from public eCos code base in future, increase code size
+	for those who don't need it, or break compatibility with public
+	eCos.
+	* cdl/hal_arm.cdl: Add EABI build option.
+	* include/hal_arch.h: Add extra CPSR definitions, and exception
+	vector addresses.
+	* src/arm.ld: Add EABI support.
+	* src/hal_misc.c: Add EABI constructor support.
+	* src/vectors.S: Allow variant/processor/platform to specify
+	alternate vector table base. Use pretty names from hal_arch.h
+	for vector offset/addresses.
+
 2007-10-15  Sergei Gavrikov <w3sg@SoftHome.net>
 
 	* cdl/hal_arm.cdl: Use ACTUAL_CFLAGS whenever possible to avoid
 	warnings and complaints from newer compilers.
 
Index: hal/arm/arch/current/cdl/hal_arm.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/arch/current/cdl/hal_arm.cdl,v
retrieving revision 1.16
diff -u -5 -p -r1.16 hal_arm.cdl
--- hal/arm/arch/current/cdl/hal_arm.cdl	15 Oct 2007 11:28:06 -0000	1.16
+++ hal/arm/arch/current/cdl/hal_arm.cdl	11 Nov 2008 01:09:37 -0000
@@ -165,10 +165,25 @@ cdl_package CYGPKG_HAL_ARM {
              It is possible to optimize code for different
              ARM CPU families. This option selects which CPU to
              optimize for on boards that support multiple CPU types."
     }
 
+    cdl_option CYGBLD_HAL_ARM_EABI {
+        display          "Build for ARM EABI"
+        default_value    { (is_substr(CYGBLD_GLOBAL_COMMAND_PREFIX, "-eabi") && \
+                            !is_substr(CYGBLD_GLOBAL_CFLAGS, "-mabi=apcs-gnu") && \
+                            !is_substr(CYGBLD_GLOBAL_CFLAGS, "-mabi=atpcs")) || \
+                           is_substr(CYGBLD_GLOBAL_CFLAGS, "-mabi=aapcs") }
+        # The EABI uses a different C++ exception implementation to the standard
+        # one and thus we indicate this to CYGPKG_LIBSTDCXX
+        implements       CYGINT_LIBSTDCXX_NO_CXX_EXCEPTION_REG_FRAME_IMPL
+        description "
+            If using a toolchain which targets the ARM EABI (embedded application
+            binary interface), this option should be enabled to provide altered
+            semantics and differing linker section output."
+    }
+
     cdl_option CYGHWR_HAL_ARM_DUMP_EXCEPTIONS {
         display          "Provide diagnostic dump for exceptions"
         requires         !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
         default_value    0
         description      "
Index: hal/arm/arch/current/include/hal_arch.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/arch/current/include/hal_arch.h,v
retrieving revision 1.22
diff -u -5 -p -r1.22 hal_arch.h
--- hal/arm/arch/current/include/hal_arch.h	24 Jun 2003 08:43:00 -0000	1.22
+++ hal/arm/arch/current/include/hal_arch.h	11 Nov 2008 01:09:37 -0000
@@ -10,10 +10,11 @@
 //==========================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
+// Copyright (C) 2004, 2005, 2007, 2008 eCosCentric Limited
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -76,15 +77,44 @@
 #define CPSR_FIQ_MODE		0x11
 #define CPSR_IRQ_MODE		0x12
 #define CPSR_SUPERVISOR_MODE	0x13
 #define CPSR_UNDEF_MODE		0x1B
 
+// The following are not supported by every CPU, but if
+// they are, they have the following values:
+#define CPSR_ICACHE_ENABLE	0x1000
+#define CPSR_BIG_ENDIAN		0x80
+#define CPSR_DCACHE_ENABLE	0x4
+#define CPSR_ALIGN_FAULT_ENABLE	0x2
+#define CPSR_MMU_ENABLE		0x1
+
 #define CPSR_MODE_BITS          0x1F
 
 #define CPSR_INITIAL (CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE)
 #define CPSR_THREAD_INITIAL (CPSR_SUPERVISOR_MODE)
 
+//
+// Vector table offsets
+//
+
+#define HAL_ARM_RESET_VECTOR			0x00
+#define HAL_ARM_UNDEFINED_VECTOR		0x04
+#define HAL_ARM_SWI_VECTOR			0x08
+#define HAL_ARM_PREFETCH_VECTOR			0x0C
+#define HAL_ARM_ABORT_VECTOR			0x10
+#define HAL_ARM_RESERVED_VECTOR			0x14
+#define HAL_ARM_IRQ_VECTOR			0x18
+#define HAL_ARM_FIQ_VECTOR			0x1C
+#define HAL_ARM_RESET_VECTOR_ADDR		0x20
+#define HAL_ARM_UNDEFINED_VECTOR_ADDR		0x24
+#define HAL_ARM_SWI_VECTOR_ADDR			0x28
+#define HAL_ARM_PREFETCH_VECTOR_ADDR		0x2C
+#define HAL_ARM_ABORT_VECTOR_ADDR		0x30
+#define HAL_ARM_RESERVED_VECTOR_ADDR		0x34
+#define HAL_ARM_IRQ_VECTOR_ADDR			0x38
+#define HAL_ARM_FIQ_VECTOR_ADDR			0x3C
+
 //--------------------------------------------------------------------------
 // Processor saved states:
 // The layout of this structure is also defined in "arm.inc", for assembly
 // code, which will be generated automatically if this file changes.
 
Index: hal/arm/arch/current/src/arm.ld
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/arch/current/src/arm.ld,v
retrieving revision 1.21
diff -u -5 -p -r1.21 arm.ld
--- hal/arm/arch/current/src/arm.ld	28 Aug 2002 03:02:49 -0000	1.21
+++ hal/arm/arch/current/src/arm.ld	11 Nov 2008 01:09:37 -0000
@@ -5,10 +5,11 @@
 //=============================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2005, 2008 eCosCentric Ltd.
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -28,27 +29,21 @@
 // License. However the source code for this file must still be made available
 // in accordance with section (3) of the GNU General Public License.
 //
 // This exception does not invalidate any other reasons why a work based on
 // this file might be covered by the GNU General Public License.
-//
-// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
-// at http://sources.redhat.com/ecos/ecos-license/
 // -------------------------------------------
 //####ECOSGPLCOPYRIGHTEND####
 //=============================================================================
 
 #include <pkgconf/system.h>
+#include <pkgconf/hal.h>
 
 STARTUP(vectors.o)
 ENTRY(reset_vector)
 INPUT(extras.o)
-#if (__GNUC__ >= 3)
-GROUP(libtarget.a libgcc.a libsupc++.a)
-#else
-GROUP(libtarget.a libgcc.a)
-#endif
+GROUP( CYGBLD_HAL_LINKER_GROUPED_LIBS )
 
 #if defined(__ARMEB__)
 OUTPUT_FORMAT(elf32-bigarm)
 #endif
 
@@ -70,12 +65,25 @@ OUTPUT_FORMAT(elf32-bigarm)
 // Keep RODATA in separate sections.
 #define MERGE_IN_RODATA
 #undef  CYGPRI_PID_BE_WORKAROUND
 #endif
 
+// ALIGN_LMA is 4, but the AAPCS now requires that double word types
+// be aligned to 8, which means some input sections can be marked as needing
+// 8-byte alignment, even text ones (consider literal data).
+// This is quite a big backward-compatibility problem for us as a zillion
+// platform mlt files for ARM assume that 4-byte alignment is adequate. Really
+// this is a bigger problem for the VMA but of course the LMA and VMA have to
+// move in sync, since things like .data are just copied as a block. Still,
+// ALIGN_LMA as 4 is probably best, but there can be problems with this.
+
 #define ALIGN_LMA 4
-#define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
+#define AAPCS_ALIGN 8
+#define FOLLOWING_ALIGNED(_section_, _align_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + (_align_) - 1) & ~ ((_align_) - 1))
+#define FOLLOWING(_section_) FOLLOWING_ALIGNED(_section_, ALIGN_LMA)
+
+
 #define LMA_EQ_VMA
 #define FORCE_OUTPUT . = .
 
 // Some versions of gcc define "arm" which causes problems with .note.arm.ident
 #undef arm
@@ -88,11 +96,21 @@ OUTPUT_FORMAT(elf32-bigarm)
   .debug_line     0 : { *(.debug_line) }        \
   .debug_frame    0 : { *(.debug_frame) }       \
   .debug_str      0 : { *(.debug_str) }         \
   .debug_loc      0 : { *(.debug_loc) }         \
   .debug_macinfo  0 : { *(.debug_macinfo) }     \
-  .note.arm.ident 0 : { KEEP (*(.note.arm.ident)) }
+  .note.arm.ident 0 : { KEEP (*(.note.arm.ident)) } \
+  /DISCARD/       0 : { *(.fini_array*) }
+
+
+// Following not used unless CYGHWR_HAL_ARM_SEPARATE_VSR_TABLE
+// defined in hal_platform_setup.h. Otherwise vsr table
+// goes in .fixed_vectors.
+#define SECTION_hal_vsr_table(_region_, _vma_, _lma_) \
+    .hal_vsr_table _vma_ : _lma_ \
+    { FORCE_OUTPUT; KEEP (*(.hal_vsr_table)) } \
+    > _region_
 
 #define SECTION_fixed_vectors(_region_, _vma_, _lma_) \
     .fixed_vectors _vma_ : _lma_ \
     { FORCE_OUTPUT; KEEP (*(.fixed_vectors)) } \
     > _region_
@@ -102,16 +120,77 @@ OUTPUT_FORMAT(elf32-bigarm)
     { __rom_vectors_vma = ABSOLUTE(.); \
       FORCE_OUTPUT; KEEP (*(.vectors)) } \
     > _region_ \
     __rom_vectors_lma = LOADADDR(.rom_vectors);
 
+/* The following two sections are used for C++ exception handling
+ * only and so can be discarded if not used for that.
+ * These are both included directly from the SECTION_text
+ * definition and so, for now, are not expected to be listed
+ * separately in mlt files.
+ */
+#ifdef CYGPKG_LIBSTDCXX
+#define SECTION_ARM_extab(_region_, _vma_, _lma_) \
+    .ARM.extab _vma_ : _lma_ \
+    { PROVIDE (__stext = ABSOLUTE(.)); _stext = ABSOLUTE(.) ; \
+    FORCE_OUTPUT; \
+    *(.ARM.extab* .gnu.linkonce.armextab.*) } > _region_
+
+#define SECTION_ARM_exidx(_region_, _vma_, _lma_) \
+    . = _vma_; \
+    . = ALIGN(AAPCS_ALIGN); \
+    __exidx_start = ABSOLUTE(.); \
+    .ARM.exidx ALIGN(AAPCS_ALIGN) : _lma_ { \
+    *(.ARM.exidx* .gnu.linkonce.armexidx.*) \
+    FORCE_OUTPUT; \
+    } > _region_ \
+    __exidx_end = ABSOLUTE(.);
+
+#else
+#define SECTION_ARM_extab(_region_, _vma_, _lma_) \
+    .ARM.extab _vma_ : _lma_ \
+    { PROVIDE (__stext = ABSOLUTE(.)); _stext = ABSOLUTE(.) ; \
+    FORCE_OUTPUT; \
+    } > _region_ \
+    /DISCARD/     0 : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
+
+#define SECTION_ARM_exidx(_region_, _vma_, _lma_) \
+    . = _vma_; \
+    . = ALIGN(AAPCS_ALIGN); \
+    __exidx_start = ABSOLUTE(.); \
+    .ARM.exidx ALIGN(AAPCS_ALIGN) : _lma_ { \
+    FORCE_OUTPUT; \
+    } > _region_ \
+    __exidx_end = ABSOLUTE(.); \
+    /DISCARD/     0 : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
+#endif
+
+
+
+// We slot in the .ARM.extab and .ARM.exidx sections first. They
+// need to be close to .text due to their relocations which may
+// want small offsets - .rodata may be somewhere very different.
+// This approach also allows forward compatibility with targets
+// which haven't used the EABI before (no new SECTION_xxx definition
+// to use).
+// One glitch is that the AAPCS can require up to 8-byte alignment
+// for double word types. For sections after the first (for which we
+// "trust" the MLT files (probably a mistake)), we need to
+// ensure the subsequent sections' VMA and LMA move in sync, which
+// means keeping the same alignment, and thus since for example literal
+// data in .text can require up to 8 byte alignment, the LMA must also
+// be 8 byte aligned.
+
 #define SECTION_text(_region_, _vma_, _lma_) \
-    .text _vma_ : _lma_ \
-    { _stext = ABSOLUTE(.); \
-    PROVIDE (__stext = ABSOLUTE(.)); \
+    SECTION_ARM_extab(_region_, _vma_, _lma_) \
+    SECTION_ARM_exidx(_region_, ALIGN(AAPCS_ALIGN), FOLLOWING_ALIGNED(.ARM.extab, AAPCS_ALIGN)) \
+    .text ALIGN(AAPCS_ALIGN) : FOLLOWING_ALIGNED(.ARM.exidx, AAPCS_ALIGN) \
+    { \
     *(.text*) *(.gnu.warning) *(.gnu.linkonce.t.*) *(.init) \
     *(.glue_7) *(.glue_7t)  \
+    __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \
+    __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \
     } > _region_ \
     _etext = .; PROVIDE (__etext = .);
 
 #define SECTION_fini(_region_, _vma_, _lma_) \
     .fini _vma_ : _lma_ \
@@ -136,23 +215,46 @@ OUTPUT_FORMAT(elf32-bigarm)
 #define SECTION_fixup(_region_, _vma_, _lma_) \
     .fixup _vma_ : _lma_ \
     { FORCE_OUTPUT; *(.fixup) } \
     > _region_
 
-#define SECTION_gcc_except_table(_region_, _vma_, _lma_) \
-    .gcc_except_table _vma_ : _lma_ \
-    { FORCE_OUTPUT; *(.gcc_except_table) } \
-    > _region_
+#ifdef CYGPKG_LIBSTDCXX
+/* We want to discard C++ exception frame data if we don't have the
+ * C++ support to use it. So there are two versions of the section
+ * definitions for .gcc_except_table and .eh_frame, one which keeps
+ * them, the other discards.
+ */
+#define SECTION_gcc_except_table(_region_, _vma_, _lma_)      \
+    .gcc_except_table _vma_ : _lma_                           \
+    { FORCE_OUTPUT;                                           \
+      KEEP(*(.gcc_except_table))                              \
+      *(.gcc_except_table.*)                                  \
+    } > _region_
 
 #define SECTION_eh_frame(_region_, _vma_, _lma_)      \
   .eh_frame _vma_ : _lma_                             \
     {                                                 \
        FORCE_OUTPUT;  __EH_FRAME_BEGIN__ = .;         \
        KEEP(*(.eh_frame))                             \
        __FRAME_END__ = .;                             \
        . = . + 8;                                     \
     } > _region_ = 0
+#else
+#define SECTION_gcc_except_table(_region_, _vma_, _lma_)      \
+    .gcc_except_table _vma_ : _lma_                           \
+    { FORCE_OUTPUT;                                           \
+    } > _region_                                              \
+    /DISCARD/     0 : { *(.gcc_except_table*) }
+
+#define SECTION_eh_frame(_region_, _vma_, _lma_)      \
+  .eh_frame _vma_ : _lma_                             \
+    {                                                 \
+       FORCE_OUTPUT;  __EH_FRAME_BEGIN__ = .;         \
+       __FRAME_END__ = .;                             \
+    } > _region_                                      \
+    /DISCARD/     0 : { *(.eh_frame) }
+#endif
 
 #define SECTION_RELOCS(_region_, _vma_, _lma_)                              \
   .rel.text      :                                                          \
     {                                                                       \
       *(.rel.text)                                                          \
@@ -228,12 +330,12 @@ OUTPUT_FORMAT(elf32-bigarm)
     { __ram_data_start = ABSOLUTE (.); \
     *(.data*) *(.data1) *(.gnu.linkonce.d.*) MERGE_IN_RODATA \
     . = ALIGN (4); \
     KEEP(*( SORT (.ecos.table.*))) ;            \
     . = ALIGN (4); \
-    __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \
-    __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \
+    __init_array_start__ = ABSOLUTE (.); KEEP (*(SORT (.init_array.*))) \
+    KEEP (*(SORT (.init_array))) __init_array_end__ = ABSOLUTE (.); \
     *(.dynamic) *(.sdata*) *(.gnu.linkonce.s.*) \
     . = ALIGN (4); *(.2ram.*) } \
     > _region_ \
     __rom_data_start = LOADADDR (.data); \
     __ram_data_end = .; PROVIDE (__ram_data_end = .); _edata = .; PROVIDE (edata = .); \
Index: hal/arm/arch/current/src/hal_misc.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/arch/current/src/hal_misc.c,v
retrieving revision 1.21
diff -u -5 -p -r1.21 hal_misc.c
--- hal/arm/arch/current/src/hal_misc.c	11 Sep 2007 18:04:25 -0000	1.21
+++ hal/arm/arch/current/src/hal_misc.c	11 Nov 2008 01:09:37 -0000
@@ -7,10 +7,11 @@
 //==========================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2008 eCosCentric Limited.
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -58,19 +59,18 @@
 #endif
 #ifdef CYGPKG_CYGMON
 #include <pkgconf/cygmon.h>
 #endif
 
+#include <cyg/infra/diag.h>
 #include <cyg/infra/cyg_type.h>
 #include <cyg/infra/cyg_trac.h>         // tracing macros
 #include <cyg/infra/cyg_ass.h>          // assertion macros
 
 #include <cyg/hal/hal_arch.h>           // HAL header
 #include <cyg/hal/hal_intr.h>           // HAL header
 
-#include <cyg/infra/diag.h>
-
 /*------------------------------------------------------------------------*/
 /* First level C exception handler.                                       */
 
 externC void __handle_exception (void);
 
@@ -176,32 +176,45 @@ hal_spurious_IRQ(HAL_SavedRegisters *reg
 #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
 cyg_bool cyg_hal_stop_constructors;
 #endif
 
 typedef void (*pfunc) (void);
+
+// EABI uses different symbols, and constructors are in opposite order.
+#ifdef CYGBLD_HAL_ARM_EABI
+extern pfunc __init_array_start__[];
+extern pfunc __init_array_end__[];
+#define CONSTRUCTORS_START  (__init_array_start__[0])
+#define CONSTRUCTORS_END    (__init_array_end__)
+#define NEXT_CONSTRUCTOR(c) ((c)++)
+#else
 extern pfunc __CTOR_LIST__[];
 extern pfunc __CTOR_END__[];
+#define CONSTRUCTORS_START  (__CTOR_END__[-1])
+#define CONSTRUCTORS_END    (&__CTOR_LIST__[-1])
+#define NEXT_CONSTRUCTOR(c) ((c)--)
+#endif
 
 void
 cyg_hal_invoke_constructors (void)
 {
 #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
-    static pfunc *p = &__CTOR_END__[-1];
+    static pfunc *p = &CONSTRUCTORS_START;
     
     cyg_hal_stop_constructors = 0;
-    for (; p >= __CTOR_LIST__; p--) {
-        (*p) ();
+    for (; p != CONSTRUCTORS_END; NEXT_CONSTRUCTOR(p)) {
+        (*p)();
         if (cyg_hal_stop_constructors) {
-            p--;
+            NEXT_CONSTRUCTOR(p);
             break;
         }
     }
 #else
     pfunc *p;
 
-    for (p = &__CTOR_END__[-1]; p >= __CTOR_LIST__; p--)
-        (*p) ();
+    for (p = &CONSTRUCTORS_START; p != CONSTRUCTORS_END; NEXT_CONSTRUCTOR(p))
+        (*p)();
 #endif
 }
 
 /*------------------------------------------------------------------------*/
 /* Architecture default ISR                                               */
Index: hal/arm/arch/current/src/hal_mk_defs.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/arch/current/src/hal_mk_defs.c,v
retrieving revision 1.12
diff -u -5 -p -r1.12 hal_mk_defs.c
--- hal/arm/arch/current/src/hal_mk_defs.c	6 May 2003 21:00:20 -0000	1.12
+++ hal/arm/arch/current/src/hal_mk_defs.c	11 Nov 2008 01:09:37 -0000
@@ -7,10 +7,11 @@
 //==========================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
+// Copyright (C) 2008 eCosCentric Limited.
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -119,10 +120,29 @@ main(void)
     DEFINE(CPSR_THREAD_INITIAL, CPSR_THREAD_INITIAL);
 #if defined(CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT)
     DEFINE(CYGNUM_CALL_IF_TABLE_SIZE, CYGNUM_CALL_IF_TABLE_SIZE);
 #endif
     DEFINE(CYGNUM_HAL_INTERRUPT_NONE, CYGNUM_HAL_INTERRUPT_NONE);
+    DEFINE(HAL_ARM_RESET_VECTOR, HAL_ARM_RESET_VECTOR);
+    DEFINE(HAL_ARM_UNDEFINED_VECTOR, HAL_ARM_UNDEFINED_VECTOR);
+    DEFINE(HAL_ARM_SWI_VECTOR, HAL_ARM_SWI_VECTOR);
+    DEFINE(HAL_ARM_PREFETCH_VECTOR, HAL_ARM_PREFETCH_VECTOR);
+    DEFINE(HAL_ARM_ABORT_VECTOR, HAL_ARM_ABORT_VECTOR);
+    DEFINE(HAL_ARM_RESERVED_VECTOR, HAL_ARM_RESERVED_VECTOR);
+    DEFINE(HAL_ARM_IRQ_VECTOR, HAL_ARM_IRQ_VECTOR);
+    DEFINE(HAL_ARM_FIQ_VECTOR, HAL_ARM_FIQ_VECTOR);
+    DEFINE(HAL_ARM_RESET_VECTOR_ADDR, HAL_ARM_RESET_VECTOR_ADDR);
+    DEFINE(HAL_ARM_UNDEFINED_VECTOR_ADDR, HAL_ARM_UNDEFINED_VECTOR_ADDR);
+    DEFINE(HAL_ARM_SWI_VECTOR_ADDR, HAL_ARM_SWI_VECTOR_ADDR);
+    DEFINE(HAL_ARM_PREFETCH_VECTOR_ADDR, HAL_ARM_PREFETCH_VECTOR_ADDR);
+    DEFINE(HAL_ARM_ABORT_VECTOR_ADDR, HAL_ARM_ABORT_VECTOR_ADDR);
+    DEFINE(HAL_ARM_RESERVED_VECTOR_ADDR, HAL_ARM_RESERVED_VECTOR_ADDR);
+    DEFINE(HAL_ARM_IRQ_VECTOR_ADDR, HAL_ARM_IRQ_VECTOR_ADDR);
+    DEFINE(HAL_ARM_FIQ_VECTOR_ADDR, HAL_ARM_FIQ_VECTOR_ADDR);
+
+    DEFINE(HAL_BREAKINST_THUMB, HAL_BREAKINST_THUMB);
+    DEFINE(HAL_BREAKINST_ARM, HAL_BREAKINST_ARM);
 
     return 0;
 }
 
 
Index: hal/arm/arch/current/src/vectors.S
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/arch/current/src/vectors.S,v
retrieving revision 1.57
diff -u -5 -p -r1.57 vectors.S
--- hal/arm/arch/current/src/vectors.S	4 Feb 2007 00:16:42 -0000	1.57
+++ hal/arm/arch/current/src/vectors.S	11 Nov 2008 01:09:37 -0000
@@ -178,12 +178,18 @@ _name_: 
 .endm
 
 
 //==========================================================================
 // Hardware exception vectors.
-//   This entire section will be copied to location 0x0000 at startup time.
+//   This entire section will be copied to the vector table base (by default at
+//   location 0x0000) at startup time.
 //
+
+#ifndef CYGHWR_HAL_VECTOR_TABLE_BASE
+# define CYGHWR_HAL_VECTOR_TABLE_BASE     0x0
+#endif  /* ifdef CYGHWR_HAL_VECTOR_TABLE_BASE */
+
         .code   32
         .section ".vectors","ax"
 
 // This macro allows platforms to add their own code at the very start of
 // the image.  This may be required in some circumstances where eCos ROM 
@@ -354,47 +360,51 @@ start:  
         ldr     r1,init_done
         str     r1,[r0]
 #endif
 
         // Reset software interrupt pointer
-        mov     r0,#0           // move vectors
+        ldr     r0,=CYGHWR_HAL_VECTOR_TABLE_BASE           // move vectors
         ldr     r1,.__exception_handlers
 #if defined(CYG_HAL_STARTUP_RAM) && \
     !defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS)
         cmp     r7,#CPSR_SUPERVISOR_MODE
         beq     10f
 #endif
-        ldr     r2,[r1,#0x28]   // software interrupt
-        str     r2,[r0,#0x28]
+        ldr     r2,[r1,#HAL_ARM_SWI_VECTOR_ADDR]   // software interrupt
+        str     r2,[r0,#HAL_ARM_SWI_VECTOR_ADDR]
 10:
-        ldr     r2,[r1,#0x18]   // IRQ
-        str     r2,[r0,#0x18]
-        ldr     r2,[r1,#0x38]
-        str     r2,[r0,#0x38]
-        ldr     r2,[r1,#0x1C]   // FIQ
-        str     r2,[r0,#0x1C]
-        ldr     r2,[r1,#0x3C]
-        str     r2,[r0,#0x3C]
-        ldr     r2,[r1,#0x0C]   // abort (prefetch)
-        str     r2,[r0,#0x0C]
-        ldr     r2,[r1,#0x2C]   
-        str     r2,[r0,#0x2C]
-        ldr     r2,[r1,#0x10]   // abort (data)
-        str     r2,[r0,#0x10]
-        ldr     r2,[r1,#0x30]
-        str     r2,[r0,#0x30]
+        ldr     r2,[r1,#HAL_ARM_IRQ_VECTOR]   // IRQ
+        str     r2,[r0,#HAL_ARM_IRQ_VECTOR]
+        ldr     r2,[r1,#HAL_ARM_IRQ_VECTOR_ADDR]
+        str     r2,[r0,#HAL_ARM_IRQ_VECTOR_ADDR]
+        ldr     r2,[r1,#HAL_ARM_FIQ_VECTOR]   // FIQ
+        str     r2,[r0,#HAL_ARM_FIQ_VECTOR]
+        ldr     r2,[r1,#HAL_ARM_FIQ_VECTOR_ADDR]
+        str     r2,[r0,#HAL_ARM_FIQ_VECTOR_ADDR]
+        ldr     r2,[r1,#HAL_ARM_PREFETCH_VECTOR]   // abort (prefetch)
+        str     r2,[r0,#HAL_ARM_PREFETCH_VECTOR]
+        ldr     r2,[r1,#HAL_ARM_PREFETCH_VECTOR_ADDR]   
+        str     r2,[r0,#HAL_ARM_PREFETCH_VECTOR_ADDR]
+        ldr     r2,[r1,#HAL_ARM_ABORT_VECTOR]   // abort (data)
+        str     r2,[r0,#HAL_ARM_ABORT_VECTOR]
+        ldr     r2,[r1,#HAL_ARM_ABORT_VECTOR_ADDR]
+        str     r2,[r0,#HAL_ARM_ABORT_VECTOR_ADDR]
 
         LED 4
 
 #if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM)
         // Set up reset vector
-        mov     r0,#0
+        ldr     r0,=CYGHWR_HAL_VECTOR_TABLE_BASE
         ldr     r1,.__exception_handlers
-        ldr     r2,[r1,#0x00]    // reset vector intstruction
-        str     r2,[r0,#0x00]
+# ifndef CYGSEM_HAL_KEEP_RESET_VECTOR
+        ldr     r2,[r1,#HAL_ARM_RESET_VECTOR]    // reset vector instruction
+        str     r2,[r0,#HAL_ARM_RESET_VECTOR]
+#  ifndef CYGSEM_HAL_ROM_RESET_USES_JUMP // if using jump, reset vector address is not referenced
         ldr     r2,=warm_reset
-        str     r2,[r0,#0x20]
+        str     r2,[r0,#HAL_ARM_RESET_VECTOR_ADDR]
+#  endif
+# endif
         // Relocate [copy] data from ROM to RAM
         ldr     r3,.__rom_data_start
         ldr     r4,.__ram_data_start
         ldr     r5,.__ram_data_end
         cmp     r4,r5           // jump if no data to move
Index: hal/common/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/common/current/ChangeLog,v
retrieving revision 1.114
diff -u -5 -p -r1.114 ChangeLog
--- hal/common/current/ChangeLog	27 Sep 2007 15:32:31 -0000	1.114
+++ hal/common/current/ChangeLog	11 Nov 2008 01:09:38 -0000
@@ -1,5 +1,30 @@
+2008-05-20  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/thread-packets.c (threadmatch): Silence pointer signedness
+	warning.
+	(threadref_to_int): Ditto.
+	* src/generic-stub.c (__mem2hex): Ditto.
+	(__mem2hex_safe): Ditto.
+	(__hex2mem): Ditto.
+	(__hex2mem_safe): Ditto.
+	* src/hal_if.c (delay_us): Ditto.
+	* include/hal_stub.h (CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION):
+	Instead of using a local variable to avoid compiler reordering
+	when taking the address of a label, instead call an external function.
+	(NB making the variable volatile isn't sufficient).
+
+2008-05-13  Chris Zimman  <czimman@bloomberg.com>
+
+	* cdl/hal.cdl: Work around problem with current ARM EABI tools by
+	using /dev/null as linker script. Should be safe with other tools.
+
+2007-11-27  Bart Veer  <bartv@ecoscentric.com>
+
+	* src/hal_if.c (delay_us): use HAL_DELAY_US() rather than the
+	fancy implementation if the port cannot provide HAL_CLOCK_READ()
+
 2007-09-27  Grant Edwards <grante@visi.com>
 
         * include/hal_endian.h (SWAP16): Fix "return value" so
         that it only returns data in lower 16 bits instead of 24.
 
@@ -33,10 +58,16 @@
 2005-04-27  Enrico Piria <epiria@libero.it>
 
 	* src/hal_if.c Added missing declarations of tries when compiling
 	with CYGNUM_HAL_DEBUG_GDB_PROTOCOL_RETRIES != 0.
 
+2005-02-17  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* cdl/common.cdl: Add CYGBLD_HAL_LINKER_GROUPED_LIBS to allow
+	CDL setting of libraries used for GROUP() directive in linker
+	script.
+
 2004-11-20  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* tests/intr.c: Make the ISR call the DSR to make sure this works
 	correctly.
 
Index: hal/common/current/cdl/common.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/common/current/cdl/common.cdl,v
retrieving revision 1.5
diff -u -5 -p -r1.5 common.cdl
--- hal/common/current/cdl/common.cdl	23 May 2002 23:02:45 -0000	1.5
+++ hal/common/current/cdl/common.cdl	11 Nov 2008 01:09:38 -0000
@@ -7,10 +7,11 @@
 # ====================================================================
 #####ECOSGPLCOPYRIGHTBEGIN####
 ## -------------------------------------------
 ## This file is part of eCos, the Embedded Configurable Operating System.
 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+## Copyright (C) 2005 eCosCentric Ltd.
 ##
 ## eCos 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 2 or (at your option) any later version.
 ##
@@ -30,13 +31,10 @@
 ## License. However the source code for this file must still be made available
 ## in accordance with section (3) of the GNU General Public License.
 ##
 ## This exception does not invalidate any other reasons why a work based on
 ## this file might be covered by the GNU General Public License.
-##
-## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
-## at http://sources.redhat.com/ecos/ecos-license/
 ## -------------------------------------------
 #####ECOSGPLCOPYRIGHTEND####
 # ====================================================================
 ######DESCRIPTIONBEGIN####
 #
@@ -148,5 +146,48 @@ cdl_component CYGDBG_HAL_DIAG_TO_DEBUG_C
             other end. In particular, GDB may silently ignore raw
             ASCII text."
     }
 }
 
+cdl_component CYGBLD_HAL_LINKER_GROUPED_LIBS {
+    display       "Grouped libraries for linking"
+    flavor        data
+    default_value CYGBLD_HAL_LINKER_GROUPED_LIBS_DEFAULT
+    requires      { is_substr(CYGBLD_HAL_LINKER_GROUPED_LIBS, "libtarget.a") }
+    description   "
+                This option provides a list of libraries used to satisfy
+                linker dependencies, but necessary for building eCos. It is passed
+                to a GROUP() directive in the linker script, which is analogous
+                to using the \"-(\" aka \"--start-group\", and \"-)\" aka
+                \"--end-group\" options on the linker command line.
+
+                It provides a similar function to adding \"-llibname\" to the
+                linker, but with the added feature that each library in the group
+                is scanned in turn for unresolved symbols, and this process is
+                repeated until there are no more unresolved symbols. This is important
+                for system libraries as there are often mutual dependencies.
+
+                This option should not be used for adding application specific
+                libraries. That should be done in the application's own makefile
+                or link line.
+        
+                Users wishing to use the GNU Compiler prior to GCC 3.0 will
+                need to remove libsupc++.a from this option.
+
+                Note that libtarget.a is always required to build eCos."
+
+    cdl_option CYGBLD_HAL_LINKER_GROUPED_LIBS_DEFAULT {
+        display       "Default setting"
+        flavor        data
+        default_value { "libtarget.a libgcc.a libsupc++.a" }
+        description   "
+                This option is intended to be used by other eCos packages (including
+                HAL packages) to provide a different default value for
+                CYGBLD_HAL_LINKER_GROUPED_LIBS.
+
+                This is separated into its own option to continue to
+                allow the user to make customisations to the grouped library
+                list."
+    }
+}
+
+# EOF common.cdl
Index: hal/common/current/cdl/hal.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/common/current/cdl/hal.cdl,v
retrieving revision 1.21
diff -u -5 -p -r1.21 hal.cdl
--- hal/common/current/cdl/hal.cdl	22 Apr 2004 15:26:33 -0000	1.21
+++ hal/common/current/cdl/hal.cdl	11 Nov 2008 01:09:38 -0000
@@ -69,11 +69,11 @@ cdl_package CYGPKG_HAL {
 
     requires      CYGPKG_INFRA
 
     make -priority 250 {
         <PREFIX>/lib/extras.o: <PREFIX>/lib/libextras.a
-        $(CC) $(CFLAGS) -nostdlib -Wl,-r -Wl,--whole-archive -o $@ $<
+        $(CC) $(CFLAGS) -nostdlib -Wl,-r -T /dev/null -Wl,--whole-archive -o $@ $<
     }   
 
 
     cdl_component CYGPKG_HAL_COMMON {
         display       "Platform-independent HAL options"
Index: hal/common/current/include/hal_stub.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/common/current/include/hal_stub.h,v
retrieving revision 1.23
diff -u -5 -p -r1.23 hal_stub.h
--- hal/common/current/include/hal_stub.h	29 Aug 2002 16:15:33 -0000	1.23
+++ hal/common/current/include/hal_stub.h	11 Nov 2008 01:09:38 -0000
@@ -10,10 +10,11 @@
 //=============================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2008 eCosCentric Limited.
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -260,10 +261,13 @@ extern int  cyg_hal_gdb_break_is_set (vo
 extern volatile int cyg_hal_gdb_running_step;
 
 // Use these in hal_diag.c when about to write a whole $O packet to GDB.
 // NB they require __builtin_return_address() to work: if your platform
 // does not support this, use HAL_DISABLE_INTERRUPTS &c instead.
+// These are used to ensure the user's GDB cannot step through the critical
+// region, causing everything to go horribly wrong - particularly likely
+// with watching variables. Instead it will magically skip over the region.
 
 #if 1 // Can use the address of a label: this is more portable
 
 // This macro may already have been defined by the architecture HAL
 #ifndef CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION
@@ -280,13 +284,18 @@ do {                                    
 #ifndef CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION
 #define CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION( _old_ )                         \
 do {                                                                          \
     cyg_hal_gdb_remove_break( (target_register_t)&&cyg_hal_gdb_break_place ); \
     HAL_RESTORE_INTERRUPTS(_old_);                                            \
-    _old_ = 1; /* actually use the label as a label... */                     \
+    /* The following is solely to provide the label without the compiler      \
+     * optimising it away. By referencing an external function, it can't      \
+     * remove or reorder it. And because we have just called                  \
+     * cyg_hal_gdb_remove_break(), we know cyg_hal_gdb_break_is_set() will    \
+     * return 0.                                                              \
+     */                                                                       \
 cyg_hal_gdb_break_place:;                                                     \
-    if ( (_old_)-- > 0 ) /* ...or the compiler might move it! */              \
+    if ( cyg_hal_gdb_break_is_set() ) /* ...or the compiler might move it! */ \
         goto cyg_hal_gdb_break_place;                                         \
 } while ( 0 )
 #endif
 
 #else // use __builtin_return_address instead.
Index: hal/common/current/src/generic-stub.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/common/current/src/generic-stub.c,v
retrieving revision 1.33
diff -u -5 -p -r1.33 generic-stub.c
--- hal/common/current/src/generic-stub.c	24 Jun 2003 04:57:18 -0000	1.33
+++ hal/common/current/src/generic-stub.c	11 Nov 2008 01:09:39 -0000
@@ -546,12 +546,12 @@ __mem2hex (mem, buf, count, may_fault)
      char *mem;
      char *buf;
      int count;
      int may_fault;
 {
-  hexMemDst      = (unsigned char *) buf;
-  hexMemSrc      = (unsigned char *) mem;
+  hexMemDst      = (char *) buf;
+  hexMemSrc      = (char *) mem;
   hexMemCount    = count;
   may_fault_mode = may_fault;
 #ifdef TARGET_HAS_HARVARD_MEMORY
   progMem = 0;
 #endif
@@ -575,12 +575,12 @@ __mem2hex (mem, buf, count, may_fault)
  */
 
 static char *
 __mem2hex_safe (target_addr_t mem, char *buf, int count)
 {
-  hexMemDst      = (unsigned char *) buf;
-  hexMemSrc      = (unsigned char *) TARGET_ADDR_TO_PTR(mem);
+  hexMemDst      = (char *) buf;
+  hexMemSrc      = (char *) TARGET_ADDR_TO_PTR(mem);
   hexMemCount    = count;
   may_fault_mode = 1;
 #ifdef TARGET_HAS_HARVARD_MEMORY
   progMem = TARGET_ADDR_IS_PROGMEM(mem);
 #endif
@@ -663,12 +663,12 @@ __hex2mem (buf, mem, count, may_fault)
      char *buf;
      char *mem;
      int count;
      int may_fault;
 {
-  hexMemSrc      = (unsigned char *) buf;
-  hexMemDst      = (unsigned char *) mem;
+  hexMemSrc      = (char *) buf;
+  hexMemDst      = (char *) mem;
   hexMemCount    = count;
   may_fault_mode = may_fault;
 #ifdef TARGET_HAS_HARVARD_MEMORY
   progMem = 0;
 #endif
@@ -689,12 +689,12 @@ __hex2mem (buf, mem, count, may_fault)
    the last byte written.
 */
 char *
 __hex2mem_safe (char *buf, target_addr_t mem, int count)
 {
-  hexMemSrc      = (unsigned char *) buf;
-  hexMemDst      = (unsigned char *) TARGET_ADDR_TO_PTR(mem);
+  hexMemSrc      = (char *) buf;
+  hexMemDst      = (char *) TARGET_ADDR_TO_PTR(mem);
   hexMemCount    = count;
   may_fault_mode = 1;
 #ifdef TARGET_HAS_HARVARD_MEMORY
   progMem = TARGET_ADDR_IS_PROGMEM(mem);
 #endif
Index: hal/common/current/src/hal_if.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/common/current/src/hal_if.c,v
retrieving revision 1.30
diff -u -5 -p -r1.30 hal_if.c
--- hal/common/current/src/hal_if.c	9 May 2006 15:51:39 -0000	1.30
+++ hal/common/current/src/hal_if.c	11 Nov 2008 01:09:39 -0000
@@ -10,10 +10,11 @@
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
 // Copyright (C) 2002, 2003 Gary Thomas
 // Copyright (C) 2003 Nick Garnett <nickg@calivar.com>
 // Copyright (C) 2003 Jonathan Larmour <jlarmour@eCosCentric.com>
+// Copyright (C) 2004, 2005, 2006, 2008 eCosCentric Limited
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -272,13 +273,14 @@ static __call_if_delay_us_t delay_us;
 
 static void
 delay_us(cyg_int32 usecs)
 {
     CYGARC_HAL_SAVE_GP();
-#ifdef CYGPKG_KERNEL
+#if defined(CYGPKG_KERNEL) && defined(HAL_CLOCK_READ)
     {
-        cyg_int32 start, elapsed, elapsed_usec;
+        cyg_uint32 start, elapsed_hal;
+        cyg_int32 elapsed, elapsed_usec;
         cyg_int32 slice;
         cyg_int32 usec_per_period = CYGNUM_HAL_RTC_NUMERATOR/CYGNUM_HAL_RTC_DENOMINATOR/1000;
         cyg_int32 ticks_per_usec = CYGNUM_KERNEL_COUNTERS_RTC_PERIOD/usec_per_period;
         
         do {
@@ -309,12 +311,12 @@ delay_us(cyg_int32 usecs)
                 slice /= usec_per_period;
             }
     
             HAL_CLOCK_READ(&start);
             do {
-                HAL_CLOCK_READ(&elapsed);
-                elapsed = (elapsed - start); // counts up!
+                HAL_CLOCK_READ(&elapsed_hal);
+                elapsed = (elapsed_hal - start); // counts up!
                 if (elapsed < 0)
                     elapsed += CYGNUM_KERNEL_COUNTERS_RTC_PERIOD;
             } while (elapsed < slice);
             
             // Adjust by elapsed, not slice, since an interrupt may
Index: hal/common/current/src/thread-packets.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/common/current/src/thread-packets.c,v
retrieving revision 1.10
diff -u -5 -p -r1.10 thread-packets.c
--- hal/common/current/src/thread-packets.c	23 May 2002 23:02:49 -0000	1.10
+++ hal/common/current/src/thread-packets.c	11 Nov 2008 01:09:39 -0000
@@ -7,10 +7,11 @@
 //========================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2008 eCosCentric Limited.
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -401,11 +402,11 @@ static int threadref_to_int(threadref * 
 {
   int value = 0 ;
   unsigned char * scan ;
   int i ;
   
-  scan = (char *) ref ;
+  scan = (unsigned char *) ref ;
   scan += 4 ;
   i = 4 ;
   while (i-- > 0) value = (value << 8) | ((*scan++) & 0xff) ;
   return value ;
 } /* threadref_to_int */
@@ -426,12 +427,12 @@ int threadmatch(
                 threadref * src
                 )
 {
   unsigned char * srcp, * destp ;
   int i , result ;
-  srcp = (char *) src ;
-  destp = (char *) dest ;
+  srcp = (unsigned char *) src ;
+  destp = (unsigned char *) dest ;
   i = 8 ;
   result = 1 ;
   while (i-- > 0 ) result &= (*srcp++ == *destp++) ? 1 : 0 ;
   return result ;
 } /* threadmatch */           
Index: hal/powerpc/adder/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/adder/current/ChangeLog,v
retrieving revision 1.18
diff -u -5 -p -r1.18 ChangeLog
--- hal/powerpc/adder/current/ChangeLog	27 Mar 2005 18:19:19 -0000	1.18
+++ hal/powerpc/adder/current/ChangeLog	11 Nov 2008 01:09:42 -0000
@@ -1,16 +1,43 @@
 2005-03-27  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* src/hal_aux.c: Added prototype of _adder_set_led() to remove
 	compiler warning
 	
+2005-01-19  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* misc/adderII_redboot_ROMRAM.ecm: Update minimum image size from
+	0x30000 to 0x50000.
+
+	* include/pkgconf/mlt_powerpc_adder_ram.ldi: Allow up to 0x60000 to be used
+	by ROM.
+	* include/pkgconf/mlt_powerpc_adder_ram.h
+	(CYGMEM_SECTION_reserved_for_rom_SIZE): Ditto.
+
+2004-11-04  John Dallaway  <jld@ecoscentric.com>
+
+	* cdl/hal_powerpc_adder.cdl: Remove "-fvtable-gc" and "-finit-priority"
+	from the set of default compilation flags.
+
+2004-09-28  John Dallaway  <jld@ecoscentric.com>
+
+	* include/pkgconf/mlt_powerpc_adder_romram.ldi: Include relocs and
+	.eh_frame sections.
+	* include/pkgconf/mlt_powerpc_adder_rom.ldi: Ditto.
+	* include/pkgconf/mlt_powerpc_adder_ram.ldi: Ditto.
+	
 2004-09-16  Gary Thomas  <gary@mlbassoc.com>
 
 	* src/hal_aux.c (hal_platform_init): Move parallel port initializations
 	from variant here (comment says they are required re: errata, but no
 	supporting documentation is known)
 
+2004-01-12  John Dallaway  <jld@ecoscentric.com>
+
+	* include/pkgconf/mlt_powerpc_adder_ram.*, doc/adder.sgml:
+	Reserve an additional 64kB for use by RedBoot.
+
 2003-12-21  Gary Thomas  <gary@mlbassoc.com>
 
 	* src/adder.S: Only clear caches on non-RAM startup modes.  This fixes
 	some problems when using network debug connections (messing with the
 	caches seems to confuse the CPM)
Index: hal/powerpc/adder/current/cdl/hal_powerpc_adder.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/adder/current/cdl/hal_powerpc_adder.cdl,v
retrieving revision 1.11
diff -u -5 -p -r1.11 hal_powerpc_adder.cdl
--- hal/powerpc/adder/current/cdl/hal_powerpc_adder.cdl	10 Dec 2003 11:39:50 -0000	1.11
+++ hal/powerpc/adder/current/cdl/hal_powerpc_adder.cdl	11 Nov 2008 01:09:43 -0000
@@ -184,11 +184,11 @@ cdl_package CYGPKG_HAL_POWERPC_ADDER {
 
         cdl_option CYGBLD_GLOBAL_CFLAGS {
             display "Global compiler flags"
             flavor  data
             no_define
-            default_value { "-msoft-float -mcpu=860 -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
+            default_value { "-msoft-float -mcpu=860 -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions" }
             description   "
                 This option controls the global compiler flags which
                 are used to compile all packages by
                 default. Individual packages may define
                 options which override these global flags."
Index: hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.h,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_adder_ram.h
--- hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.h	25 Nov 2002 23:18:43 -0000	1.1
+++ hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.h	11 Nov 2008 01:09:43 -0000
@@ -27,11 +27,11 @@ extern char CYG_LABEL_NAME (__reserved_v
 #define CYGMEM_SECTION_reserved_virtual_table_SIZE (0x100)
 #ifndef __ASSEMBLER__
 extern char CYG_LABEL_NAME (__reserved_for_rom) [];
 #endif
 #define CYGMEM_SECTION_reserved_for_rom (CYG_LABEL_NAME (__reserved_for_rom))
-#define CYGMEM_SECTION_reserved_for_rom_SIZE (0x3cd00)
+#define CYGMEM_SECTION_reserved_for_rom_SIZE (0x5cd00)
 #ifndef __ASSEMBLER__
 extern char CYG_LABEL_NAME (__heap1) [];
 #endif
 #define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
 #define CYGMEM_SECTION_heap1_SIZE (0x800000 - (size_t) CYG_LABEL_NAME (__heap1))
Index: hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_adder_ram.ldi
--- hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.ldi	25 Nov 2002 23:18:43 -0000	1.1
+++ hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.ldi	11 Nov 2008 01:09:43 -0000
@@ -13,18 +13,20 @@ SECTIONS
 {
     SECTIONS_BEGIN
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x3cd00;
+    CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x5cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN(0x4), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.mlt
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.mlt,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_adder_ram.mlt
--- hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.mlt	25 Nov 2002 23:18:43 -0000	1.1
+++ hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_ram.mlt	11 Nov 2008 01:09:43 -0000
@@ -1,11 +1,11 @@
 version 0
 region ram 0 800000 0 !
 section reserved_vectors 3000 1 0 0 1 1 1 1 0 0 reserved_vsr_table reserved_vsr_table !
 section reserved_vsr_table 200 10 0 0 0 1 0 1 reserved_virtual_table reserved_virtual_table !
 section reserved_virtual_table 100 10 0 0 0 1 0 1 reserved_for_rom reserved_for_rom !
-section reserved_for_rom 3cd00 10 0 0 0 1 0 1 vectors vectors !
+section reserved_for_rom 4cd00 10 0 0 0 1 0 1 vectors vectors !
 section vectors 0 10 0 1 0 1 0 1 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
 section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
 section rodata 0 8 0 1 0 1 0 1 fixup fixup !
Index: hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_adder_rom.ldi
--- hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_rom.ldi	25 Nov 2002 23:18:43 -0000	1.1
+++ hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_rom.ldi	11 Nov 2008 01:09:43 -0000
@@ -12,15 +12,17 @@ MEMORY
 
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfe000000, LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN(0x4), LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
Index: hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_romram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_romram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_adder_romram.ldi
--- hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_romram.ldi	25 Nov 2002 23:18:43 -0000	1.1
+++ hal/powerpc/adder/current/include/pkgconf/mlt_powerpc_adder_romram.ldi	11 Nov 2008 01:09:43 -0000
@@ -12,15 +12,17 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (ram, 0, LMA_EQ_VMA)
     SECTION_text (ram, 0x3400, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN(0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/adder/current/misc/adderII_redboot_ROMRAM.ecm
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/adder/current/misc/adderII_redboot_ROMRAM.ecm,v
retrieving revision 1.2
diff -u -5 -p -r1.2 adderII_redboot_ROMRAM.ecm
--- hal/powerpc/adder/current/misc/adderII_redboot_ROMRAM.ecm	21 Sep 2003 12:27:57 -0000	1.2
+++ hal/powerpc/adder/current/misc/adderII_redboot_ROMRAM.ecm	11 Nov 2008 01:09:43 -0000
@@ -70,11 +70,11 @@ cdl_component CYG_HAL_STARTUP {
 cdl_component CYGBLD_BUILD_REDBOOT {
     user_value 1
 };
 
 cdl_option CYGBLD_REDBOOT_MIN_IMAGE_SIZE {
-    user_value 0x00030000
+    user_value 0x00050000
 };
 
 cdl_option CYGOPT_REDBOOT_FIS_REDBOOT_BACKUP {
     user_value 0
 };
Index: hal/powerpc/arch/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/arch/current/ChangeLog,v
retrieving revision 1.71
diff -u -5 -p -r1.71 ChangeLog
--- hal/powerpc/arch/current/ChangeLog	26 Sep 2008 14:00:56 -0000	1.71
+++ hal/powerpc/arch/current/ChangeLog	11 Nov 2008 01:09:43 -0000
@@ -1,5 +1,16 @@
+2008-10-31  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/powerpc.ld (SECTION_data): Do not define _GLOBAL_OFFSET_TABLE_
+	It is meant to be defined by the linker.
+
+2008-10-10  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/powerpc.ld: Remove workaround from 2005-06-03 for LD bug,
+	since fixed.
+	Include .eh_frame_hdr in .eh_frame.
+
 2008-09-23  Shaun Louie <sal@microplex.com>
 
     * src/vectors.S: Changed compile condition that determines whether
       exception vectors should be copied to RAM.
 
@@ -15,19 +26,43 @@
 2005-07-29  Gary Thomas  <gary@mlbassoc.com>
 
 	* include/arch.inc: Add one-time-include protection since newer
 	versions of the GNU assembler complain about redefining macros.
 
+2005-06-29  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/powerpc.ld: Future-proof relocs sections.
+
+2005-06-10  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/powerpc.ld: gcc_except_table subsections don't need to be
+	kept.
+
+2005-06-03  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/powerpc.ld: gcc_except_table needs to be marked KEEP.
+
 2005-03-14  Peter Korsgaard  <jacmetd@sunsite.dk>
 
 	* src/redboot_linux_exec.c (do_exec): Correctly set bi_size.
 
+2005-02-17  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/powerpc.ld: Use CYGBLD_HAL_LINKER_GROUPED_LIBS from the common HAL
+	for GROUP() list now.
+
 2004-11-04  Peter Korsgaard  <jacmet@sunsite.dk>
 
 	* src/ppc_stub.c (__is_single_step): Removed compiler warning
 	about pointer / integer comparison.
 	
+2004-09-28  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/powerpc.ld: Add relocs section. Break out .eh_frame section and
+	define correctly. Split .gnu.linkonce.* subsections correctly between
+	text/rodata/data/sdata/sbss/scommon etc.
+
 2004-05-27  Gary Thomas  <gary@mlbassoc.com>
 
 	* src/redboot_linux_exec.c (do_exec): Be sensitive to value in
 	"entry_address" as this can indicate if the image to be executed
 	is valid (the "load" functions set it to "NO_MEMORY" when invalid)
Index: hal/powerpc/arch/current/src/powerpc.ld
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/arch/current/src/powerpc.ld,v
retrieving revision 1.16
diff -u -5 -p -r1.16 powerpc.ld
--- hal/powerpc/arch/current/src/powerpc.ld	10 Apr 2003 18:07:56 -0000	1.16
+++ hal/powerpc/arch/current/src/powerpc.ld	11 Nov 2008 01:09:43 -0000
@@ -7,10 +7,11 @@
 //==========================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2004, 2005, 2008 eCosCentric Limited
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -46,38 +47,80 @@
 // Purpose:	PowerPC Linker script
 //
 //####DESCRIPTIONEND####
 //
 //==========================================================================
+
+#include <pkgconf/hal.h>
+
 STARTUP(vectors.o)
 ENTRY(__exception_reset)
 #ifdef EXTRAS
 INPUT(extras.o)
 #endif
-#if (__GNUC__ >= 3)
-GROUP(libtarget.a libgcc.a libsupc++.a)
-#else
-GROUP(libtarget.a libgcc.a)
-#endif
+GROUP( CYGBLD_HAL_LINKER_GROUPED_LIBS )
 
 #define ALIGN_LMA 8
 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
 #define LMA_EQ_VMA
 #define FORCE_OUTPUT . = .
 
 
 #define SECTIONS_BEGIN
 
+#define SECTION_RELOCS(_region_, _vma_, _lma_)                          \
+  .rel.dyn        :                                                     \
+    {                                                                   \
+      *(.rel.init)                                                      \
+      *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)                    \
+      *(.rel.fini)                                                      \
+      *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)                \
+      *(.rel.data.rel.ro*)                                              \
+      *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)                    \
+      *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)                 \
+      *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)                   \
+      *(.rel.ctors)                                                     \
+      *(.rel.dtors)                                                     \
+      *(.rel.got)                                                       \
+      *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)                  \
+      *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)                   \
+      *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)               \
+      *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)                \
+      *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)                      \
+    } > _region_                                                        \
+  .rela.dyn       :                                                     \
+    {                                                                   \
+      *(.rela.init)                                                     \
+      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)                 \
+      *(.rela.fini)                                                     \
+      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)             \
+      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)                 \
+      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)              \
+      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)                \
+      *(.rela.ctors)                                                    \
+      *(.rela.dtors)                                                    \
+      *(.rela.got)                                                      \
+      *(.rela.got1)                                                     \
+      *(.rela.got2)                                                     \
+      *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)               \
+      *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)                \
+      *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)            \
+      *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)             \
+      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)                   \
+    } > _region_                                                        \
+  .rel.plt        : { *(.rel.plt) } > _region_                          \
+  .rela.plt       : { *(.rela.plt) } > _region_
+
 #define SECTION_vectors(_region_, _vma_, _lma_)        \
   .vectors _vma_ : _lma_                                              \
   { FORCE_OUTPUT; KEEP(*(.vectors)) }         \
   > _region_
 
 #define SECTION_text(_region_, _vma_, _lma_)           \
   .text _vma_ : _lma_                                                 \
   { _stext = .;       \
-    *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) }      \
+    *(.text*) *(.gnu.warning) *(.gnu.linkonce.t.*) *(.init) }      \
   > _region_                                                    \
   _etext = .;  PROVIDE (etext = .);
 
 #define SECTION_fini(_region_, _vma_, _lma_)   \
     .fini _vma_ : _lma_                                       \
@@ -87,29 +130,47 @@ GROUP(libtarget.a libgcc.a)
 #define SECTION_rodata1(_region_, _vma_, _lma_)        \
     .rodata1 _vma_ : _lma_                                            \
     { FORCE_OUTPUT; *(.rodata1*) }             \
     > _region_
 
-#define SECTION_rodata(_region_, _vma_, _lma_) \
-    .rodata _vma_ : _lma_                                     \
-    { FORCE_OUTPUT; *(.rodata*) }     \
-    > _region_
+#define SECTION_rodata(_region_, _vma_, _lma_)          \
+    .rodata _vma_ : _lma_                               \
+    { FORCE_OUTPUT; *(.rodata*) *(.gnu.linkonce.r.*)    \
+    } > _region_
 
 #define SECTION_fixup(_region_, _vma_, _lma_)                      \
     .fixup _vma_ : _lma_                                                          \
     { __FIXUP_START__ = ABSOLUTE(.); *(.fixup) __FIXUP_END__ = ABSOLUTE(.);}\
     > _region_
 
+/* We want to discard C++ exception frame data if we don't have the
+ * C++ support to use it. But we can't. With current binutils (2008-05-13)
+ * the linker goes very wrong if either of the contents of
+ * .gcc_except_table or .eh_frame are discarded. Yes I tried.
+ */
 #define SECTION_gcc_except_table(_region_, _vma_, _lma_)       \
-    .gcc_except_table _vma_ : _lma_                                           \
-    { __EXCEPT_START__ = ABSOLUTE(.); *(.gcc_except_table)              \
-      __EXCEPT_END__ = ABSOLUTE(.);}                                    \
-    > _region_
+    .gcc_except_table _vma_ : _lma_                            \
+    { __EXCEPT_START__ = ABSOLUTE(.);                          \
+      *(.gcc_except_table)                                     \
+      *(.gcc_except_table.*)                                   \
+      __EXCEPT_END__ = ABSOLUTE(.);                            \
+    } > _region_
+
+#define SECTION_eh_frame(_region_, _vma_, _lma_)      \
+  .eh_frame _vma_ : _lma_                             \
+    {                                                 \
+       *(.eh_frame_hdr)                               \
+       FORCE_OUTPUT;  __EH_FRAME_BEGIN__ = .;         \
+       KEEP(*(.eh_frame))                             \
+       __FRAME_END__ = .;                             \
+       . = . + 8;                                     \
+    } > _region_ = 0
 
 #define SECTION_data(_region_, _vma_, _lma_)                         \
     .data _vma_ : _lma_                                                             \
     { __ram_data_start = ABSOLUTE(.); *(.data*)                                 \
+      *(.gnu.linkonce.d.*) \
     __GOT1_START__ = ABSOLUTE(.); *(.got1) __GOT1_END__ = ABSOLUTE(.);        \
       /* Put .ctors and .dtors next to the .got2 section, so that */          \
       /* the pointers get relocated with -mrelocatable.           */          \
      . = ALIGN(8); __CTOR_LIST__ = ABSOLUTE(.);                               \
       KEEP(*(SORT(.ctors*))) __CTOR_END__ = ABSOLUTE(.);                      \
@@ -118,18 +179,17 @@ GROUP(libtarget.a libgcc.a)
       . = ALIGN(8);                                                           \
       KEEP(*( SORT (.ecos.table.*))) ;                                        \
       . = ALIGN(4);                                                           \
       *( .2ram.*) ;                                                           \
     __GOT2_START__ = ABSOLUTE(.); *(.got2) __GOT2_END__ = ABSOLUTE(.);        \
-    __GOT_START = ABSOLUTE(.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE(. + 32768);   \
+    __GOT_START = ABSOLUTE(.);                                                \
     _SDA_BASE_ = ABSOLUTE(.); *(.got.plt) *(.got)                             \
     __GOT_END__ = ABSOLUTE(.);  *(.dynamic)                                   \
-    *(.eh_frame)                                                              \
       /* We want the small data sections together, so single-instruction */   \
       /* offsets can access them all, and initialized data all before    */   \
       /* uninitialized, so we can shorten the on-disk segment size.      */   \
-    __SDATA_START__ = ABSOLUTE(.); *(.sdata) *(.sdata.*)                      \
+    __SDATA_START__ = ABSOLUTE(.); *(.sdata) *(.sdata.*) *(.gnu.linkonce.s.*) \
     __SDATA2_START__ = ABSOLUTE(.); *(.sdata2*) }                             \
     > _region_                                                                \
     __rom_data_start = LOADADDR(.data);                                       \
     __ram_data_end = .; PROVIDE(__ram_data_end = .);                          \
     _edata = .; PROVIDE (edata = .);
@@ -137,18 +197,18 @@ GROUP(libtarget.a libgcc.a)
 #define SECTION_sbss(_region_, _vma_, _lma_)                     \
     .sbss _vma_ : _lma_                                                         \
     { __sbss_start = ABSOLUTE (.);                                        \
     __SBSS_START__ = ABSOLUTE(.); *(.sbss.*) __SBSS_END__ = ABSOLUTE(.);   \
     __SBSSx_START__ = ABSOLUTE(.); *(.sbss*) __SBSSx_END__ = ABSOLUTE(.);\
-    *(.scommon*)                                                          \
+     *(.gnu.linkonce.sb.*) *(.scommon*)                                       \
     __sbss_end = ABSOLUTE (.); }                                          \
     > _region_
 
 #define SECTION_bss(_region_, _vma_, _lma_)                      \
     .bss _vma_ : _lma_                                                          \
     { __bss_start = ABSOLUTE (.);                       \
-      FORCE_OUTPUT; *(.dynbss*) *(.bss*) *(COMMON)      \
+      FORCE_OUTPUT; *(.dynbss*) *(.bss*) *(.gnu.linkonce.b.*) *(COMMON)      \
       __bss_end = ABSOLUTE (.); }                       \
     > _region_
 
 #define SECTIONS_END . = ALIGN(4); _end = .; PROVIDE (end = .);
 
Index: hal/powerpc/cme555/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/cme555/current/ChangeLog,v
retrieving revision 1.6
diff -u -5 -p -r1.6 ChangeLog
--- hal/powerpc/cme555/current/ChangeLog	16 Dec 2003 15:22:10 -0000	1.6
+++ hal/powerpc/cme555/current/ChangeLog	11 Nov 2008 01:09:43 -0000
@@ -1,5 +1,11 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_cme555_ram.ldi:
+	* include/pkgconf/mlt_powerpc_cme555_rom.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-12-16  Gary Thomas  <gary@mlbassoc.com>
 
 	* misc/redboot_ROM.ecm: 
 	* misc/redboot_RAM.ecm: 
 	CYGNUM_FLASH_WORKSPACE_SIZE is no longer used.
Index: hal/powerpc/cme555/current/include/pkgconf/mlt_powerpc_cme555_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/cme555/current/include/pkgconf/mlt_powerpc_cme555_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_cme555_ram.ldi
--- hal/powerpc/cme555/current/include/pkgconf/mlt_powerpc_cme555_ram.ldi	20 May 2002 22:23:33 -0000	1.1
+++ hal/powerpc/cme555/current/include/pkgconf/mlt_powerpc_cme555_ram.ldi	11 Nov 2008 01:09:43 -0000
@@ -20,15 +20,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); 
     . = 0x00400000;
 
     SECTION_vectors          (ram, 0x00400000,  LMA_EQ_VMA)
     SECTION_text             (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS           (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1          (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata           (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup            (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame         (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data             (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/cme555/current/include/pkgconf/mlt_powerpc_cme555_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/cme555/current/include/pkgconf/mlt_powerpc_cme555_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_cme555_rom.ldi
--- hal/powerpc/cme555/current/include/pkgconf/mlt_powerpc_cme555_rom.ldi	20 May 2002 22:23:33 -0000	1.1
+++ hal/powerpc/cme555/current/include/pkgconf/mlt_powerpc_cme555_rom.ldi	11 Nov 2008 01:09:43 -0000
@@ -15,23 +15,25 @@ SECTIONS
 
     CYG_LABEL_DEFN(__reserved_vectors) = 0x00000000;
 
     SECTION_vectors          (rom, 0x00000000,   LMA_EQ_VMA)
     SECTION_text             (rom, ALIGN (0x4),  LMA_EQ_VMA)
+    SECTION_RELOCS           (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_fini             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata1          (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata           (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_fixup            (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1),  LMA_EQ_VMA)
+    SECTION_eh_frame         (rom, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x3f9800;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
 
-    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss             (iram, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_bss              (iram, ALIGN (0x10), LMA_EQ_VMA)
 
     . = 0x400000;
 
Index: hal/powerpc/cogent/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/cogent/current/ChangeLog,v
retrieving revision 1.27
diff -u -5 -p -r1.27 ChangeLog
--- hal/powerpc/cogent/current/ChangeLog	24 Jul 2003 20:24:06 -0000	1.27
+++ hal/powerpc/cogent/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,11 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_cogent_ram.ldi:
+	* include/pkgconf/mlt_powerpc_cogent_rom.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-07-18  Nick Garnett  <nickg@balti.calivar.com>
 
 	* cdl/hal_powerpc_cogent.cdl:
         Changed values for CYGNUM_HAL_RTC_NUMERATOR,
         CYGNUM_HAL_RTC_DENOMINATOR and CYGNUM_HAL_RTC_PERIOD to
Index: hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.ldi,v
retrieving revision 1.6
diff -u -5 -p -r1.6 mlt_powerpc_cogent_ram.ldi
--- hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.ldi	23 Oct 2000 17:11:21 -0000	1.6
+++ hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0xcd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.ldi,v
retrieving revision 1.6
diff -u -5 -p -r1.6 mlt_powerpc_cogent_rom.ldi
--- hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.ldi	23 Oct 2000 17:11:21 -0000	1.6
+++ hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,19 +13,21 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfff00000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/csb281/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/csb281/current/ChangeLog,v
retrieving revision 1.13
diff -u -5 -p -r1.13 ChangeLog
--- hal/powerpc/csb281/current/ChangeLog	21 Sep 2003 12:27:57 -0000	1.13
+++ hal/powerpc/csb281/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,12 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_csb281_ram.ldi:
+	* include/pkgconf/mlt_powerpc_csb281_rom.ldi:
+	* include/pkgconf/mlt_powerpc_csb281_romram.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-09-21  Gary Thomas  <gary@mlbassoc.com>
 
 	* misc/redboot_RAM.ecm: 
 	* misc/redboot_ROM.ecm: 
 	* misc/redboot_ROMRAM.ecm:  Adjust for changes in RedBoot
Index: hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_csb281_ram.ldi
--- hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_ram.ldi	24 Dec 2002 16:00:50 -0000	1.1
+++ hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x3cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_csb281_rom.ldi
--- hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_rom.ldi	24 Dec 2002 16:00:50 -0000	1.1
+++ hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,19 +13,21 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfff00000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_romram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_romram.ldi,v
retrieving revision 1.2
diff -u -5 -p -r1.2 mlt_powerpc_csb281_romram.ldi
--- hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_romram.ldi	4 Jan 2003 03:38:40 -0000	1.2
+++ hal/powerpc/csb281/current/include/pkgconf/mlt_powerpc_csb281_romram.ldi	11 Nov 2008 01:09:44 -0000
@@ -12,15 +12,17 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (ram, 0, LMA_EQ_VMA)
     SECTION_text (ram, 0x3400, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ec555/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/ChangeLog,v
retrieving revision 1.10
diff -u -5 -p -r1.10 ChangeLog
--- hal/powerpc/ec555/current/ChangeLog	24 Sep 2004 12:57:32 -0000	1.10
+++ hal/powerpc/ec555/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,17 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_ec555_f02_s01_ram.ldi:
+	* include/pkgconf/mlt_powerpc_ec555_f02_s01_rom.ldi:
+	* include/pkgconf/mlt_powerpc_ec555_f04_s02_ram.ldi:
+	* include/pkgconf/mlt_powerpc_ec555_f04_s02_rom.ldi:
+	* include/pkgconf/mlt_powerpc_ec555_f08_s04_ram.ldi:
+	* include/pkgconf/mlt_powerpc_ec555_f08_s04_rom.ldi:
+	* include/pkgconf/mlt_powerpc_ec555_f08_s08_ram.ldi:
+	* include/pkgconf/mlt_powerpc_ec555_f08_s08_rom.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2004-09-23  Bob Koninckx <bob.koninckx@o-3s.com>
 
 	* src/ec555.S: Updated memory controller settings for ethernet card. Now
 	it also works for redboot running out of internal FLASH, and with a longer
 	system bus.
Index: hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f02_s01_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f02_s01_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ec555_f02_s01_ram.ldi
--- hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f02_s01_ram.ldi	29 Apr 2004 06:54:18 -0000	1.1
+++ hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f02_s01_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -22,15 +22,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x10000;
 
     SECTION_vectors          (ram, 0x01010000,  LMA_EQ_VMA)
     SECTION_text             (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS           (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1          (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata           (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup            (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame         (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data             (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f02_s01_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f02_s01_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ec555_f02_s01_rom.ldi
--- hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f02_s01_rom.ldi	29 Apr 2004 06:54:18 -0000	1.1
+++ hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f02_s01_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -15,23 +15,25 @@ SECTIONS
 
     CYG_LABEL_DEFN(__reserved_vectors) = 0x00000000;
 
     SECTION_vectors          (rom, 0x00000000,   LMA_EQ_VMA)
     SECTION_text             (rom, ALIGN (0x4),  LMA_EQ_VMA)
+    SECTION_RELOCS             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_fini             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata1          (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata           (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_fixup            (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1),  LMA_EQ_VMA)
+    SECTION_eh_frame         (rom, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x3f9800;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
 
-    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss             (iram, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x1000000;
 
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
Index: hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f04_s02_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f04_s02_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ec555_f04_s02_ram.ldi
--- hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f04_s02_ram.ldi	29 Apr 2004 06:54:18 -0000	1.1
+++ hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f04_s02_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -22,15 +22,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x10000;
 
     SECTION_vectors          (ram, 0x01010000,  LMA_EQ_VMA)
     SECTION_text             (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS           (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1          (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata           (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup            (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame         (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data             (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f04_s02_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f04_s02_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ec555_f04_s02_rom.ldi
--- hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f04_s02_rom.ldi	29 Apr 2004 06:54:18 -0000	1.1
+++ hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f04_s02_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -15,23 +15,25 @@ SECTIONS
 
     CYG_LABEL_DEFN(__reserved_vectors) = 0x00000000;
 
     SECTION_vectors          (rom, 0x00000000,   LMA_EQ_VMA)
     SECTION_text             (rom, ALIGN (0x4),  LMA_EQ_VMA)
+    SECTION_RELOCS             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_fini             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata1          (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata           (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_fixup            (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1),  LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x3f9800;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
 
-    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss             (iram, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x1000000;
 
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
Index: hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s04_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s04_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ec555_f08_s04_ram.ldi
--- hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s04_ram.ldi	29 Apr 2004 06:54:18 -0000	1.1
+++ hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s04_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -22,15 +22,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x10000;
 
     SECTION_vectors          (ram, 0x01010000,  LMA_EQ_VMA)
     SECTION_text             (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS           (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1          (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata           (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup            (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame         (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data             (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s04_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s04_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ec555_f08_s04_rom.ldi
--- hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s04_rom.ldi	29 Apr 2004 06:54:18 -0000	1.1
+++ hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s04_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -15,23 +15,25 @@ SECTIONS
 
     CYG_LABEL_DEFN(__reserved_vectors) = 0x00000000;
 
     SECTION_vectors          (rom, 0x00000000,   LMA_EQ_VMA)
     SECTION_text             (rom, ALIGN (0x4),  LMA_EQ_VMA)
+    SECTION_RELOCS           (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_fini             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata1          (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata           (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_fixup            (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1),  LMA_EQ_VMA)
+    SECTION_eh_frame         (rom, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x3f9800;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
 
-    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss             (iram, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x1000000;
 
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
Index: hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s08_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s08_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ec555_f08_s08_ram.ldi
--- hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s08_ram.ldi	29 Apr 2004 06:54:18 -0000	1.1
+++ hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s08_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -22,15 +22,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x10000;
 
     SECTION_vectors          (ram, 0x01010000,  LMA_EQ_VMA)
     SECTION_text             (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS           (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1          (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata           (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup            (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame         (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data             (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s08_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s08_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ec555_f08_s08_rom.ldi
--- hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s08_rom.ldi	29 Apr 2004 06:54:18 -0000	1.1
+++ hal/powerpc/ec555/current/include/pkgconf/mlt_powerpc_ec555_f08_s08_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -15,23 +15,25 @@ SECTIONS
 
     CYG_LABEL_DEFN(__reserved_vectors) = 0x00000000;
 
     SECTION_vectors          (rom, 0x00000000,   LMA_EQ_VMA)
     SECTION_text             (rom, ALIGN (0x4),  LMA_EQ_VMA)
+    SECTION_RELOCS           (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_fini             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata1          (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata           (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_fixup            (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1),  LMA_EQ_VMA)
+    SECTION_eh_frame         (rom, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x3f9800;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
 
-    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss             (iram, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x1000000;
 
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
Index: hal/powerpc/fads/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/fads/current/ChangeLog,v
retrieving revision 1.23
diff -u -5 -p -r1.23 ChangeLog
--- hal/powerpc/fads/current/ChangeLog	7 Jun 2005 18:39:05 -0000	1.23
+++ hal/powerpc/fads/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,11 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_fads_ram.ldi:
+	* include/pkgconf/mlt_powerpc_fads_rom.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2005-06-07  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* Changed all sourceware.cygnus.com URLs to 
 	ecos.sourceware.org.
 
Index: hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.ldi,v
retrieving revision 1.6
diff -u -5 -p -r1.6 mlt_powerpc_fads_ram.ldi
--- hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.ldi	23 Oct 2000 17:11:22 -0000	1.6
+++ hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0xcd00;
     SECTION_vectors (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.ldi,v
retrieving revision 1.4
diff -u -5 -p -r1.4 mlt_powerpc_fads_rom.ldi
--- hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.ldi	23 Oct 2000 17:11:22 -0000	1.4
+++ hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,16 +13,18 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0x2800000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_data (ram, 0x100000, FOLLOWING (.gcc_except_table))
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_data (ram, 0x100000, FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/mbx/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/mbx/current/ChangeLog,v
retrieving revision 1.39
diff -u -5 -p -r1.39 ChangeLog
--- hal/powerpc/mbx/current/ChangeLog	8 Dec 2003 14:31:54 -0000	1.39
+++ hal/powerpc/mbx/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,11 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_mbx_ram.ldi:
+	* include/pkgconf/mlt_powerpc_mbx_rom.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-12-08  Gary Thomas  <gary@mlbassoc.com>
 
 	* cdl/hal_powerpc_mbx.cdl: 
 	HAL_PLATFORM_CPU now defined by MPC8xx variant CDL.
 
Index: hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.ldi,v
retrieving revision 1.6
diff -u -5 -p -r1.6 mlt_powerpc_mbx_ram.ldi
--- hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.ldi	23 Oct 2000 17:11:22 -0000	1.6
+++ hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x1cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.ldi,v
retrieving revision 1.6
diff -u -5 -p -r1.6 mlt_powerpc_mbx_rom.ldi
--- hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.ldi	23 Oct 2000 17:11:22 -0000	1.6
+++ hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,19 +13,21 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfe000000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/moab/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/moab/current/ChangeLog,v
retrieving revision 1.19
diff -u -5 -p -r1.19 ChangeLog
--- hal/powerpc/moab/current/ChangeLog	3 Feb 2005 16:01:22 -0000	1.19
+++ hal/powerpc/moab/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,12 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_moab_ram.ldi:
+	* include/pkgconf/mlt_powerpc_moab_rom.ldi:
+	* include/pkgconf/mlt_powerpc_moab_romram.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2005-02-03  Gary Thomas  <gary@mlbassoc.com>
 
 	* src/moab.S: Rework startup sequence - faster and works better
 	on all boards (including some that wouldn't come up at all).
 
Index: hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_moab_ram.ldi
--- hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_ram.ldi	19 Sep 2003 17:11:28 -0000	1.1
+++ hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x7cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_moab_rom.ldi
--- hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_rom.ldi	19 Sep 2003 17:11:28 -0000	1.1
+++ hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,22 +13,24 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfff80000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
 
     .reset_vector 0xFFFFFFFC : LMA_EQ_VMA { . = .; KEEP(*(.reset_vector)) } >rom
 
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_romram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_romram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_moab_romram.ldi
--- hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_romram.ldi	19 Sep 2003 17:11:28 -0000	1.1
+++ hal/powerpc/moab/current/include/pkgconf/mlt_powerpc_moab_romram.ldi	11 Nov 2008 01:09:44 -0000
@@ -12,15 +12,17 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (ram, 0, LMA_EQ_VMA)
     SECTION_text (ram, 0x3400, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/pati/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/pati/current/ChangeLog,v
retrieving revision 1.1
diff -u -5 -p -r1.1 ChangeLog
--- hal/powerpc/pati/current/ChangeLog	15 Sep 2008 19:33:56 -0000	1.1
+++ hal/powerpc/pati/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,11 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_pati_ram.ldi:
+	* include/pkgconf/mlt_powerpc_pati_rom.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2008-05-08  Steven Clugston  <steven.clugston@ncl.ac.uk>
 
 	* New package.
 
 //===========================================================================
Index: hal/powerpc/pati/current/include/pkgconf/mlt_powerpc_pati_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/pati/current/include/pkgconf/mlt_powerpc_pati_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_pati_ram.ldi
--- hal/powerpc/pati/current/include/pkgconf/mlt_powerpc_pati_ram.ldi	15 Sep 2008 19:33:56 -0000	1.1
+++ hal/powerpc/pati/current/include/pkgconf/mlt_powerpc_pati_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -25,15 +25,17 @@ SECTIONS
 
     SECTION_vectors          (ram, 0x00410000,  LMA_EQ_VMA)
 
     SECTION_vectors          (ram, 0x00410000,  LMA_EQ_VMA)
     SECTION_text             (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS           (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1          (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata           (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup            (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame         (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data             (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss             (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/pati/current/include/pkgconf/mlt_powerpc_pati_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/pati/current/include/pkgconf/mlt_powerpc_pati_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_pati_rom.ldi
--- hal/powerpc/pati/current/include/pkgconf/mlt_powerpc_pati_rom.ldi	15 Sep 2008 19:33:56 -0000	1.1
+++ hal/powerpc/pati/current/include/pkgconf/mlt_powerpc_pati_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -14,23 +14,25 @@ SECTIONS
     SECTIONS_BEGIN
     CYG_LABEL_DEFN(__reserved_vectors) = 0x00000000;
 
     SECTION_vectors          (rom, 0x00000000,   LMA_EQ_VMA)
     SECTION_text             (rom, ALIGN (0x4),  LMA_EQ_VMA)
+    SECTION_RELOCS             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_fini             (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata1          (rom, ALIGN (0x8),  LMA_EQ_VMA)
     SECTION_rodata           (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_fixup            (rom, ALIGN (0x4),  LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1),  LMA_EQ_VMA)
+    SECTION_eh_frame         (rom, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x3f9800;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10);
     . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
 
-    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data             (iram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss             (iram, ALIGN (0x4),  LMA_EQ_VMA)
 
     . = 0x400000;
 
     SECTION_bss              (ram, ALIGN (0x10), LMA_EQ_VMA)
Index: hal/powerpc/rattler/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/rattler/current/ChangeLog,v
retrieving revision 1.9
diff -u -5 -p -r1.9 ChangeLog
--- hal/powerpc/rattler/current/ChangeLog	11 Dec 2003 15:17:26 -0000	1.9
+++ hal/powerpc/rattler/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,12 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_rattler_ram.ldi:
+	* include/pkgconf/mlt_powerpc_rattler_rom.ldi:
+	* include/pkgconf/mlt_powerpc_rattler_romram.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-12-11  Gary Thomas  <gary@mlbassoc.com>
 
 	* src/hal_aux.c (_rattler_reset): Machine check needs to be disabled
 	for checkstop to happen.  Interestingly enough, this fact seems to
 	differ from version to version of the 82xx chips.
Index: hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_rattler_ram.ldi
--- hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_ram.ldi	19 Aug 2003 17:29:49 -0000	1.1
+++ hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x3cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_rattler_rom.ldi
--- hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_rom.ldi	19 Aug 2003 17:29:49 -0000	1.1
+++ hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,19 +13,21 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfe010000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_romram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_romram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_rattler_romram.ldi
--- hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_romram.ldi	19 Aug 2003 17:29:49 -0000	1.1
+++ hal/powerpc/rattler/current/include/pkgconf/mlt_powerpc_rattler_romram.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,15 +13,17 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (ram, 0, LMA_EQ_VMA)
     SECTION_text (ram, 0x3400, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/sim/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/sim/current/ChangeLog,v
retrieving revision 1.20
diff -u -5 -p -r1.20 ChangeLog
--- hal/powerpc/sim/current/ChangeLog	24 Jul 2003 20:24:08 -0000	1.20
+++ hal/powerpc/sim/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,10 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_sim_ram.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-07-18  Nick Garnett  <nickg@balti.calivar.com>
 
 	* cdl/hal_powerpc_sim.cdl:
         Changed values for CYGNUM_HAL_RTC_NUMERATOR,
         CYGNUM_HAL_RTC_DENOMINATOR and CYGNUM_HAL_RTC_PERIOD to
Index: hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.ldi,v
retrieving revision 1.6
diff -u -5 -p -r1.6 mlt_powerpc_sim_ram.ldi
--- hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.ldi	23 Oct 2000 17:11:24 -0000	1.6
+++ hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,15 +13,17 @@ SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (ram, 0, LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vsr_table) = 0x3000; . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ts1000/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts1000/current/ChangeLog,v
retrieving revision 1.11
diff -u -5 -p -r1.11 ChangeLog
--- hal/powerpc/ts1000/current/ChangeLog	8 Dec 2003 14:31:55 -0000	1.11
+++ hal/powerpc/ts1000/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,12 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_ts1000_ram.ldi:
+	* include/pkgconf/mlt_powerpc_ts1000_rom.ldi:
+	* include/pkgconf/mlt_powerpc_ts1000_romram.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-12-08  Gary Thomas  <gary@mlbassoc.com>
 
 	* cdl/hal_powerpc_ts1000.cdl: 
 	HAL_PLATFORM_CPU now defined by MPC8xx variant CDL.
 
Index: hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ts1000_ram.ldi
--- hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_ram.ldi	11 Oct 2002 20:09:26 -0000	1.1
+++ hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x3cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_rom.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ts1000_rom.ldi
--- hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_rom.ldi	11 Oct 2002 20:09:26 -0000	1.1
+++ hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,18 +13,20 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfe000000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
+    SECTION_eh_frame (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
     SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_romram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_romram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ts1000_romram.ldi
--- hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_romram.ldi	11 Oct 2002 20:09:26 -0000	1.1
+++ hal/powerpc/ts1000/current/include/pkgconf/mlt_powerpc_ts1000_romram.ldi	11 Nov 2008 01:09:44 -0000
@@ -12,15 +12,17 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (ram, 0, LMA_EQ_VMA)
     SECTION_text (ram, 0x3400, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ts6/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts6/current/ChangeLog,v
retrieving revision 1.6
diff -u -5 -p -r1.6 ChangeLog
--- hal/powerpc/ts6/current/ChangeLog	24 Jul 2003 20:24:08 -0000	1.6
+++ hal/powerpc/ts6/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,13 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_ts6_ram.ldi:
+	* include/pkgconf/mlt_powerpc_ts6_romhigh.ldi:
+	* include/pkgconf/mlt_powerpc_ts6_romlow.ldi:
+	* include/pkgconf/mlt_powerpc_ts6_romram.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-07-18  Nick Garnett  <nickg@balti.calivar.com>
 
 	* cdl/hal_powerpc_ts6.cdl:
         Changed values for CYGNUM_HAL_RTC_NUMERATOR,
         CYGNUM_HAL_RTC_DENOMINATOR and CYGNUM_HAL_RTC_PERIOD to
Index: hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ts6_ram.ldi
--- hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_ram.ldi	12 Dec 2002 21:15:34 -0000	1.1
+++ hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x1cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romhigh.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romhigh.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ts6_romhigh.ldi
--- hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romhigh.ldi	12 Dec 2002 21:15:34 -0000	1.1
+++ hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romhigh.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,19 +13,21 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfff00000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romlow.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romlow.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ts6_romlow.ldi
--- hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romlow.ldi	12 Dec 2002 21:15:34 -0000	1.1
+++ hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romlow.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,19 +13,21 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xff800000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_ts6_romram.ldi
--- hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romram.ldi	12 Dec 2002 21:15:34 -0000	1.1
+++ hal/powerpc/ts6/current/include/pkgconf/mlt_powerpc_ts6_romram.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,20 +13,22 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0x03f00000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors)       = 0;           . = CYG_LABEL_DEFN(__reserved_vectors)       + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table)     = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table)     + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_flash)     = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_for_flash)     + 0xcd00;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/vads/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/vads/current/ChangeLog,v
retrieving revision 1.7
diff -u -5 -p -r1.7 ChangeLog
--- hal/powerpc/vads/current/ChangeLog	24 Jul 2003 20:24:09 -0000	1.7
+++ hal/powerpc/vads/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,13 @@
+2008-11-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_vads_ram.ldi:
+	* include/pkgconf/mlt_powerpc_vads_romhigh.ldi:
+	* include/pkgconf/mlt_powerpc_vads_romlow.ldi:
+	* include/pkgconf/mlt_powerpc_vads_romram.ldi:
+	Add SECTION_eh_frame and SECTION_RELOCS.
+
 2003-07-18  Nick Garnett  <nickg@balti.calivar.com>
 
 	* cdl/hal_powerpc_vads.cdl:
         Changed values for CYGNUM_HAL_RTC_NUMERATOR,
         CYGNUM_HAL_RTC_DENOMINATOR and CYGNUM_HAL_RTC_PERIOD to
Index: hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_ram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_vads_ram.ldi
--- hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_ram.ldi	12 Dec 2002 21:15:36 -0000	1.1
+++ hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -16,15 +16,17 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x1cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romhigh.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romhigh.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_vads_romhigh.ldi
--- hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romhigh.ldi	12 Dec 2002 21:15:36 -0000	1.1
+++ hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romhigh.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,19 +13,21 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfff00000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romlow.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romlow.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_vads_romlow.ldi
--- hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romlow.ldi	12 Dec 2002 21:15:36 -0000	1.1
+++ hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romlow.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,19 +13,21 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xff800000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romram.ldi,v
retrieving revision 1.1
diff -u -5 -p -r1.1 mlt_powerpc_vads_romram.ldi
--- hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romram.ldi	12 Dec 2002 21:15:36 -0000	1.1
+++ hal/powerpc/vads/current/include/pkgconf/mlt_powerpc_vads_romram.ldi	11 Nov 2008 01:09:44 -0000
@@ -13,20 +13,22 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0x00f00000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors)       = 0;           . = CYG_LABEL_DEFN(__reserved_vectors)       + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table)     = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table)     + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_flash)     = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_for_flash)     + 0xcd00;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.eh_frame))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
Index: hal/powerpc/viper/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/viper/current/ChangeLog,v
retrieving revision 1.31
diff -u -5 -p -r1.31 ChangeLog
--- hal/powerpc/viper/current/ChangeLog	21 Dec 2003 13:41:18 -0000	1.31
+++ hal/powerpc/viper/current/ChangeLog	11 Nov 2008 01:09:44 -0000
@@ -1,5 +1,21 @@
+2004-09-30  John Dallaway  <jld@ecoscentric.com>
+
+	* cdl/hal_powerpc_viper.cdl: Clean up of CDL strings.
+
+2004-09-28  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/pkgconf/mlt_powerpc_viper_romram.ldi: Include relocs and
+	.eh_frame sections.
+	* include/pkgconf/mlt_powerpc_viper_rom.ldi: Ditto.
+	* include/pkgconf/mlt_powerpc_viper_ram.ldi: Ditto.
+
+	* include/pkgconf/mlt_powerpc_viper_romram.mlt: Delete. Out of date and
+	unmaintained.
+	* include/pkgconf/mlt_powerpc_viper_rom.mlt: Ditto.
+	* include/pkgconf/mlt_powerpc_viper_ram.mlt: Ditto.
+
 2003-12-21  Gary Thomas  <gary@mlbassoc.com>
 
 	* src/viper.S: Only clear caches on non-RAM startup.  This is to
 	help solve a problem with network debug connections.  It seems 
 	that messing with the caches during startup confuses the CPM.
@@ -241,10 +257,11 @@
 //===========================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2004 eCosCentric Limited
 //
 // eCos 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 2 or (at your option) any later version.
 //
Index: hal/powerpc/viper/current/cdl/hal_powerpc_viper.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/viper/current/cdl/hal_powerpc_viper.cdl,v
retrieving revision 1.18
diff -u -5 -p -r1.18 hal_powerpc_viper.cdl
--- hal/powerpc/viper/current/cdl/hal_powerpc_viper.cdl	8 Dec 2003 14:31:56 -0000	1.18
+++ hal/powerpc/viper/current/cdl/hal_powerpc_viper.cdl	11 Nov 2008 01:09:44 -0000
@@ -8,10 +8,11 @@
 #####ECOSGPLCOPYRIGHTBEGIN####
 ## -------------------------------------------
 ## This file is part of eCos, the Embedded Configurable Operating System.
 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
 ## Copyright (C) 2002, 2003 Gary Thomas
+## Copyright (C) 2004 eCosCentric Limited
 ##
 ## eCos 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 2 or (at your option) any later version.
 ##
@@ -49,18 +50,18 @@
 #####DESCRIPTIONEND####
 #
 # ====================================================================
 
 cdl_package CYGPKG_HAL_POWERPC_VIPER {
-    display       "A&M VIPER PowerPC evaluation board"
+    display       "A&M Viper PowerPC evaluation board"
     parent        CYGPKG_HAL_POWERPC
     requires      CYGPKG_HAL_POWERPC_MPC8xx
     define_header hal_powerpc_viper.h
     include_dir   cyg/hal
     description   "
         The VIPER HAL package provides the support needed to run
-        eCos on a A&M VIPER board equipped with a PowerPC processor."
+        eCos on a A&M Viper board equipped with a PowerPC processor."
 
     compile       hal_diag.c hal_aux.c viper.S
 
     implements    CYGINT_HAL_DEBUG_GDB_STUBS
     implements    CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
Index: hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_ram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_ram.ldi,v
retrieving revision 1.3
diff -u -5 -p -r1.3 mlt_powerpc_viper_ram.ldi
--- hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_ram.ldi	31 May 2002 01:05:55 -0000	1.3
+++ hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_ram.ldi	11 Nov 2008 01:09:44 -0000
@@ -15,16 +15,18 @@ SECTIONS
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x3cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN(0x4), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_rom.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_rom.ldi,v
retrieving revision 1.2
diff -u -5 -p -r1.2 mlt_powerpc_viper_rom.ldi
--- hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_rom.ldi	31 May 2002 01:05:55 -0000	1.2
+++ hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_rom.ldi	11 Nov 2008 01:09:44 -0000
@@ -12,15 +12,17 @@ MEMORY
 
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (rom, 0xfe000000, LMA_EQ_VMA)
+    SECTION_RELOCS (rom, ALIGN(0x4), LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_eh_frame (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
     CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
     CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
Index: hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_romram.ldi
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_romram.ldi,v
retrieving revision 1.2
diff -u -5 -p -r1.2 mlt_powerpc_viper_romram.ldi
--- hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_romram.ldi	31 May 2002 01:05:55 -0000	1.2
+++ hal/powerpc/viper/current/include/pkgconf/mlt_powerpc_viper_romram.ldi	11 Nov 2008 01:09:44 -0000
@@ -12,15 +12,17 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_vectors (ram, 0, LMA_EQ_VMA)
     SECTION_text (ram, 0x3400, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN(0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
     CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
Index: infra/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/infra/current/ChangeLog,v
retrieving revision 1.61
diff -u -5 -p -r1.61 ChangeLog
--- infra/current/ChangeLog	10 Jul 2008 15:39:30 -0000	1.61
+++ infra/current/ChangeLog	11 Nov 2008 01:09:45 -0000
@@ -1,5 +1,11 @@
+2008-10-02  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/gccsupport.cxx (fwrite, fputc): New functions since GCC can
+	now optimise certain builtins used by the libsupc++ runtime to
+	these.
+
 2008-07-10  Grant Edwards <grant.b.edwards@gmail.com>
 
         * src/diag.cxx: allow ASCII escape character in printf
         format strings.
 
@@ -67,10 +73,16 @@
 
 	* include/cyg_type.h: Added CYGBLD_ATTRIB_USED so that we can
 	indicate to gcc 3.4.4 or above not to throw away a variable or
 	function even when it appears to be not references.
 	
+2005-04-07  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/gccsupport.cxx: New file. Provide very simple defaults for
+	some dependencies of the GCC runtime.	
+	* cdl/infra.cdl: Build it.
+
 2005-03-27  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* include/diag.h: Added CYGBLD_ATTRIB_PRINTF_FORMAT where
 	appropriate to get the compiler to do more checking.
 	* src/diag.cxx (diag_dump_buf_with_offset_16bit): Fix compiler warning
Index: infra/current/cdl/infra.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/infra/current/cdl/infra.cdl,v
retrieving revision 1.15
diff -u -5 -p -r1.15 infra.cdl
--- infra/current/cdl/infra.cdl	25 Aug 2006 12:10:06 -0000	1.15
+++ infra/current/cdl/infra.cdl	11 Nov 2008 01:09:45 -0000
@@ -7,10 +7,11 @@
 # ====================================================================
 #####ECOSGPLCOPYRIGHTBEGIN####
 ## -------------------------------------------
 ## This file is part of eCos, the Embedded Configurable Operating System.
 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+## Copyright (C) 2005 eCosCentric Limited
 ##
 ## eCos 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 2 or (at your option) any later version.
 ##
@@ -58,11 +59,11 @@ cdl_package CYGPKG_INFRA {
         Package startup options." 
 
     compile startup.cxx prestart.cxx pkgstart.cxx userstart.cxx      \
             dummyxxmain.cxx null.cxx simple.cxx fancy.cxx buffer.cxx \
             diag.cxx tcdiag.cxx memcpy.c memset.c delete.cxx eprintf.c \
-	    pure.cxx
+	    pure.cxx gccsupport.cxx
 
 
     # ====================================================================
 #    cdl_component CYGPKG_INFRA_TYPES {
 #        display       "Common Types"
Index: kernel/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/kernel/current/ChangeLog,v
retrieving revision 1.144
diff -u -5 -p -r1.144 ChangeLog
--- kernel/current/ChangeLog	15 Sep 2007 14:42:39 -0000	1.144
+++ kernel/current/ChangeLog	11 Nov 2008 01:09:46 -0000
@@ -1,5 +1,10 @@
+2008-07-24  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/thread.inl: Silence some warnings by assigning
+	string literals to const char *, not char *.
+
 2007-08-23  Hans Rosenfeld  <rosenfeld@grumpf.hope-2000.org>
 
 	* tests/intr0.cxx, tests/kintr0.c: As suggested by Bart Veer,
 	priorities of the interrupts created by intr0 and kintr0 can now
 	be overridden by the HAL through HAL_INTR_TEST_PRIO_x constants.
Index: kernel/current/include/thread.inl
===================================================================
RCS file: /cvs/ecos/ecos/packages/kernel/current/include/thread.inl,v
retrieving revision 1.16
diff -u -5 -p -r1.16 thread.inl
--- kernel/current/include/thread.inl	15 Mar 2004 15:20:53 -0000	1.16
+++ kernel/current/include/thread.inl	11 Nov 2008 01:09:46 -0000
@@ -11,10 +11,11 @@
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
 // Copyright (C) 2003 Gary Thomas
+// Copyright (C) 2008 eCosCentric Limited
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -111,17 +112,17 @@ inline void Cyg_HardwareThread::check_st
 
     for ( i = 0;
           i < CYGNUM_KERNEL_THREADS_STACK_CHECK_DATA_SIZE/sizeof(cyg_uint32);
           i++ ) {
         if ((sig ^ (i * 0x01010101)) != base[i]) {
-            char *reason = "Stack base corrupt";
+            const char *reason = "Stack base corrupt";
             diag_printf("%s - i: %d\n", reason, i);
             diag_dump_buf(base, CYGNUM_KERNEL_THREADS_STACK_CHECK_DATA_SIZE);
             CYG_FAIL(reason);
         }
         if ((sig ^ (i * 0x10101010)) != top[i]) {
-            char *reason = "Stack top corrupt";
+            const char *reason = "Stack top corrupt";
             diag_printf("%s - i: %d\n", reason, i);
             diag_dump_buf(top, CYGNUM_KERNEL_THREADS_STACK_CHECK_DATA_SIZE);
             CYG_FAIL(reason);
         }
     }            
@@ -141,11 +142,11 @@ inline void Cyg_HardwareThread::check_st
         
         for ( i = 0;
               i < CYGNUM_KERNEL_THREADS_STACK_CHECK_DATA_SIZE/sizeof(cyg_uint32);
               i++ ) {
             if ((sig ^ (i * 0x01010101)) != p[i]) {
-                char *reason = "Gap between stack limit and base corrupt";
+                const char *reason = "Gap between stack limit and base corrupt";
                 diag_printf("%s - i: %d\n", reason, i);
                 diag_dump_buf(p, CYGNUM_KERNEL_THREADS_STACK_CHECK_DATA_SIZE);
                 CYG_FAIL(reason);
             }
         }
Index: redboot/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/ChangeLog,v
retrieving revision 1.257
diff -u -5 -p -r1.257 ChangeLog
--- redboot/current/ChangeLog	28 Aug 2007 10:59:52 -0000	1.257
+++ redboot/current/ChangeLog	11 Nov 2008 01:09:49 -0000
@@ -1,5 +1,29 @@
+2008-06-18  Bart Veer  <bartv@ecoscentric.com>
+
+	* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
+  	src/xyzModem.c, include/redboot.h: more signed vs. unsigned char
+	issues. 
+
+2008-05-20  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/fs/e2fs.c (e2fs_mount): Avoid compiler strict aliasing
+	problem.
+
+	* include/fis.h (struct fis_image_desc): Make fis name be
+	signed char to reduce warnings.
+	* include/flash_config.h (struct _config): Make config_data
+	be signed char to reduce warnings.
+	* include/redboot.h: mon_write_char and mon_read_char_with_timeout
+	take unsigned char, to reduce warnings.
+	* src/parse.c: Add const to err_printf format.
+	* src/fconfig.c: Many signed/unsigned warning cleanups.
+	* src/io.c: Ditto.
+	* src/xyzModem.c: Ditto.
+	* src/load.c: Ditto.
+	* src/flash.c: Ditto.
+
 2007-08-28  Gary Thomas  <gary@mlbassoc.com>
 
 	* src/flash.c (do_flash_init): Memory allocation was slightly
 	incorrect - 'workspace_end' should always be used to find 
 	the end of available memory.
@@ -190,10 +214,32 @@
 	to specify the name of the default network device.
 
 	* src/net/net_io.c: Use CYGDAT_REDBOOT_DEFAULT_NETWORK_DEVICE as
 	the default to the net_device config option.
 
+2005-08-15  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/fconfig.c (flash_write_config): Warning cleanup.
+	* src/net/net_io.c (do_ip_addr): Warning cleanup.
+	* src/flash.c (fis_create): Warning cleanup.
+
+2005-08-09  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/net/net.h: Include redboot.h for tick functions.
+
+2005-08-05  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/net/net.h: Pull tick functions into redboot.h as they
+	are used more widely than the net stack.
+	* include/redboot.h: Declare tick functions.
+	* src/main.c (cyg_start): Correctly compute workspace_end so it
+	works even on high RAM values [bug #1000202].
+	Don't use workspace_end directly for context init - it gets
+	modified.
+	(do_go): Don't use workspace_end directly for context init -
+	it gets	modified.
+
 2005-07-06  Isaac Claymore <iclaymore@gmail.com>
 
 	* src/fconfig.c: (get_config): Verify the length of the script is
 	less than MAX_SCRIPT_LENGTH.
 
Index: redboot/current/cdl/redboot.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/cdl/redboot.cdl,v
retrieving revision 1.79
diff -u -5 -p -r1.79 redboot.cdl
--- redboot/current/cdl/redboot.cdl	4 Jun 2007 20:30:59 -0000	1.79
+++ redboot/current/cdl/redboot.cdl	11 Nov 2008 01:09:49 -0000
@@ -97,10 +97,11 @@ cdl_package CYGPKG_REDBOOT {
 
         requires ! CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
         requires ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
         requires ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
         requires CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
+        requires CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS
 
         requires CYGINT_ISO_STRING_MEMFUNCS 
         requires CYGINT_ISO_STRING_STRFUNCS
         requires CYGINT_REDBOOT_LOAD_METHOD
 
Index: redboot/current/include/fis.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/include/fis.h,v
retrieving revision 1.7
diff -u -5 -p -r1.7 fis.h
--- redboot/current/include/fis.h	9 May 2006 15:52:03 -0000	1.7
+++ redboot/current/include/fis.h	11 Nov 2008 01:09:50 -0000
@@ -85,11 +85,11 @@ struct fis_valid_info
   (16 + 4 * sizeof(unsigned long) + 3 * sizeof(CYG_ADDRESS))
 
 struct fis_image_desc {
     union
     {
-    unsigned char name[16];      // Null terminated name
+        char name[16];      // Null terminated name
         #ifdef CYGOPT_REDBOOT_REDUNDANT_FIS
            struct fis_valid_info valid_info;
         #endif
     } u;
     CYG_ADDRESS   flash_base;    // Address within FLASH of image
Index: redboot/current/include/flash_config.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/include/flash_config.h,v
retrieving revision 1.11
diff -u -5 -p -r1.11 flash_config.h
--- redboot/current/include/flash_config.h	21 Dec 2003 13:17:51 -0000	1.11
+++ redboot/current/include/flash_config.h	11 Nov 2008 01:09:50 -0000
@@ -7,10 +7,11 @@
 //==========================================================================
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
+// Copyright (C) 2008 eCosCentric Limited.
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -100,11 +101,11 @@ bool flash_add_config(struct config_opti
 
 // Internal structure used to hold config data
 struct _config {
     unsigned long len;
     unsigned long key1;
-    unsigned char config_data[MAX_CONFIG_DATA-(4*4)];
+    char config_data[MAX_CONFIG_DATA-(4*4)];
     unsigned long key2;
     unsigned long cksum;
 };
 
 #endif // _FLASH_CONFIG_H_
Index: redboot/current/include/redboot.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/include/redboot.h,v
retrieving revision 1.38
diff -u -5 -p -r1.38 redboot.h
--- redboot/current/include/redboot.h	4 Jun 2007 20:31:00 -0000	1.38
+++ redboot/current/include/redboot.h	11 Nov 2008 01:09:50 -0000
@@ -113,11 +113,11 @@ EXTERN bootp_header_t my_bootp_info;
 EXTERN int gdb_port;
 EXTERN bool net_debug;
 #endif
 
 #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT
-EXTERN unsigned char *script;
+EXTERN char *script;
 EXTERN int script_timeout;
 #ifdef CYGSEM_REDBOOT_VARIABLE_BAUD_RATE
 EXTERN int console_baud_rate;
 #endif
 #endif
@@ -133,12 +133,12 @@ EXTERN void cyg_plf_redboot_startup(void
 // Prototypes
 typedef int _printf_fun(const char *fmt, ...);
 externC int  strcasecmp(const char *s1, const char *s2);
 externC int  strncasecmp(const char *s1, const char *s2, size_t len);
 
-externC void mon_write_char(char c);
-externC bool mon_read_char_with_timeout(char *c);
+externC void mon_write_char(unsigned char c);
+externC bool mon_read_char_with_timeout(unsigned char *c);
 externC void mon_set_read_char_timeout(int ms);
 externC bool verify_action(char *fmt, ...);
 externC bool verify_action_with_timeout(int timeout, char *fmt, ...);
 
 // Read a single line of input from the console, possibly with timeout
@@ -158,10 +158,18 @@ externC bool _rb_break(int timeout);
 
 // "console" selection
 externC int  start_console(void);
 externC void end_console(int old_console);
 
+// Tick functions
+__externC unsigned long do_ms_tick(void);
+__externC unsigned long get_ms_ticks(void);
+__externC void ms_ticks_add_us(long);
+
+#define MS_TICKS() get_ms_ticks()
+#define MS_TICKS_DELAY() do_ms_tick()
+
 // Alias functions
 #ifdef CYGSEM_REDBOOT_FLASH_ALIASES
 externC char *flash_lookup_alias(char *alias, char *alias_buf);
 #endif
 externC void expand_aliases(char *line, int len);
@@ -316,11 +324,11 @@ externC bool scan_opts(int argc, char *a
                        struct option_info *opts, int num_opts, 
                        void *def_arg, int def_arg_type, char *def_descr);
 
 externC int redboot_exec( char *command, ... );
 
-externC void err_printf( char *fmt, ... );
+externC void err_printf( const char *fmt, ... );
 
 #ifdef CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS
 #define CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS \
   (CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS+CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS)
 #else
Index: redboot/current/include/net/net.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/include/net/net.h,v
retrieving revision 1.21
diff -u -5 -p -r1.21 net.h
--- redboot/current/include/net/net.h	4 Jun 2007 20:31:00 -0000	1.21
+++ redboot/current/include/net/net.h	11 Nov 2008 01:09:50 -0000
@@ -8,10 +8,11 @@
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
 // Copyright (C) 2002, 2003 Gary Thomas
+// Copyright (C) 2004, 2005 eCosCentric Limited
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -69,15 +70,10 @@ extern bool net_debug;
 # ifdef CYGDBG_IO_ETH_DRIVERS_DEBUG
 extern int cyg_io_eth_net_debug;
 # endif
 #endif
 
-extern unsigned long do_ms_tick(void);
-extern unsigned long get_ms_ticks(void);
-#define MS_TICKS() get_ms_ticks()
-#define MS_TICKS_DELAY() do_ms_tick()
-
 /* #define NET_SUPPORT_RARP  1 */
 #define NET_SUPPORT_ICMP 1
 #define NET_SUPPORT_UDP  1
 #define NET_SUPPORT_TCP  1
 
@@ -643,6 +639,9 @@ extern int net_devindex(char *name);
 #define bsp_log diag_printf
 #else
 #define BSPLOG(x)
 #endif
 
+// Need tick functions
+#include <redboot.h>
+
 #endif // _NET_H_
Index: redboot/current/src/fconfig.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/fconfig.c,v
retrieving revision 1.13
diff -u -5 -p -r1.13 fconfig.c
--- redboot/current/src/fconfig.c	9 May 2006 15:52:03 -0000	1.13
+++ redboot/current/src/fconfig.c	11 Nov 2008 01:09:50 -0000
@@ -8,10 +8,11 @@
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
 // Copyright (C) 2003 Gary Thomas
+// Copyright (C) 2005, 2008 eCosCentric Ltd.
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -104,11 +105,11 @@ static struct _config  *readonly_config;
 void *cfg_base;   // Location in Flash of config data
 int   cfg_size;   // Length of config data - rounded to Flash block size
 #endif // FLASH MEDIA
 
 // Prototypes for local functions
-static unsigned char *flash_lookup_config(char *key);
+static char *flash_lookup_config(char *key);
 
 static bool config_ok;
 
 #define CONFIG_KEY1    0x0BADFACE
 #define CONFIG_KEY2    0xDEADDEAD
@@ -199,11 +200,11 @@ static int  config_length(int type);
 void
 conf_endian_fixup(void *ptr)
 {
 #ifdef REDBOOT_FLASH_REVERSE_BYTEORDER
     struct _config *p = (struct _config *)ptr;
-    unsigned char *dp = p->config_data;
+    char *dp = p->config_data;
     void *val_ptr;
     int len;
     cyg_uint16 u16;
     cyg_uint32 u32;
 
@@ -247,11 +248,11 @@ conf_endian_fixup(void *ptr)
     }
 #endif
 }
 
 static int
-get_config(unsigned char *dp, char *title, int list_opt, char *newvalue )
+get_config(char *dp, char *title, int list_opt, char *newvalue )
 {
     char line[256], hold_line[256], *sp, *lp;
     int ret;
     bool hold_bool_val, new_bool_val, enable;
     unsigned long hold_int_val, new_int_val;
@@ -315,11 +316,11 @@ get_config(unsigned char *dp, char *titl
     case CONFIG_STRING:
         lp += diag_sprintf(lp, "%s", (unsigned char *)val_ptr);
         break;
     case CONFIG_SCRIPT:
         diag_printf("\n");
-        sp = lp = (unsigned char *)val_ptr;
+        sp = lp = (char *)val_ptr;
         while (*sp) {
             while (*lp != '\n') lp++;
             *lp = '\0';
             diag_printf(".. %s\n", sp);
             *lp++ = '\n';
@@ -430,11 +431,11 @@ get_config(unsigned char *dp, char *titl
 	break;
 #endif
 #endif
     case CONFIG_SCRIPT:
         // Assume it always changes
-        sp = (unsigned char *)val_ptr;
+        sp = (char *)val_ptr;
 	script_len = 0;
         diag_printf("Enter script, terminate with empty line\n");
         while (true) {
             *sp = '\0';
             diag_printf(">> ");
@@ -457,11 +458,11 @@ get_config(unsigned char *dp, char *titl
     case CONFIG_STRING:
         if (strlen(line) >= MAX_STRING_LENGTH) {
             diag_printf("Sorry, value is too long\n");
             return CONFIG_BAD;
         }
-        strcpy((unsigned char *)val_ptr, line);
+        strcpy((char *)val_ptr, line);
         break;
     }
     return CONFIG_CHANGED;
 }
 
@@ -515,11 +516,11 @@ do_flash_config(int argc, char *argv[])
     bool list_only;
     bool nicknames;
     bool fullnames;
     bool dumbterminal;
     int list_opt = 0;
-    unsigned char *dp;
+    char *dp;
     int len, ret;
     char *title;
     char *onlyone = NULL;
     char *onevalue = NULL;
     bool doneone = false;
@@ -530,11 +531,11 @@ do_flash_config(int argc, char *argv[])
         diag_printf("Sorry, no FLASH memory is available\n");
         return;
     }
 #endif
     memcpy(backup_config, config, sizeof(struct _config));
-    script = (unsigned char *)0;
+    script = NULL;
 
     init_opts(&opts[0], 'l', false, OPTION_ARG_TYPE_FLG, 
               (void *)&list_only, (bool *)0, "list configuration only");
     init_opts(&opts[1], 'n', false, OPTION_ARG_TYPE_FLG, 
               (void *)&nicknames, (bool *)0, "show nicknames");
@@ -694,11 +695,11 @@ do_alias(int argc, char *argv[])
 char *
 flash_lookup_alias(char *alias, char *alias_buf)
 {
     char name[80];
     char *val;
-    unsigned char * dp;
+    char * dp;
     void *val_ptr;
     int type;
     bool hold_bool_val;
     long hold_long_val;
 #ifdef CYGPKG_REDBOOT_NETWORKING
@@ -772,13 +773,17 @@ flash_crc(struct _config *conf)
 // Write the in-memory copy of the configuration data to the flash device.
 //
 void
 flash_write_config(bool prompt)
 {
-#if defined(CYGHWR_REDBOOT_FLASH_CONFIG_MEDIA_FLASH)
-#if !defined(CYGSEM_REDBOOT_FLASH_COMBINED_FIS_AND_CONFIG)
+#if defined(CYGHWR_REDBOOT_FLASH_CONFIG_MEDIA_FLASH) && !defined(CYGSEM_REDBOOT_FLASH_COMBINED_FIS_AND_CONFIG)
+# ifdef CYG_FLASH_ERR_OK // crude temporary hack to see if we're being used with flashv2
+    cyg_flashaddr_t err_addr;
+# else
     void *err_addr;
+# endif
+#if !defined(CYGSEM_REDBOOT_FLASH_COMBINED_FIS_AND_CONFIG)
     int stat;
 #endif
 #endif
 
     config->len = sizeof(struct _config);
@@ -817,17 +822,17 @@ flash_write_config(bool prompt)
 }
 
 //
 // Find the configuration entry for a particular key
 //
-static unsigned char *
+static char *
 flash_lookup_config(char *key)
 {
-    unsigned char *dp;
+    char *dp;
     int len;
 
-    if (!config_ok) return (unsigned char *)NULL;
+    if (!config_ok) return NULL;
 
     dp = &config->config_data[0];
     while (dp < &config->config_data[sizeof(config->config_data)]) {
         len = 4 + CONFIG_OBJECT_KEYLEN(dp) + CONFIG_OBJECT_ENABLE_KEYLEN(dp) +
             config_length(CONFIG_OBJECT_TYPE(dp));
@@ -835,20 +840,20 @@ flash_lookup_config(char *key)
             return dp;
         }
         dp += len;
     }
 //    diag_printf("Can't find config data for '%s'\n", key);
-    return false;
+    return NULL;
 }
 
 //
 // Enumerate the keys from the configuration
 //
 bool
 flash_next_key(char *key, int keylen, int *type, int *offset)
 {
-    unsigned char *dp;
+    char *dp;
     int len;
 
     if (!config_ok) return false;
     if ((*offset < 0) || (*offset >= MAX_CONFIG_DATA)) return false;
 
@@ -865,20 +870,20 @@ flash_next_key(char *key, int keylen, in
 // Retrieve a data object from the data base (in memory copy)
 //
 bool
 flash_get_config(char *key, void *val, int type)
 {
-    unsigned char *dp;
+    char *dp;
     void *val_ptr;
 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG_READONLY_FALLBACK
     struct _config *save_config = 0;
     bool res;
 #endif
 
     if (!config_ok) return false;
 
-    if ((dp = flash_lookup_config(key)) != (unsigned char *)NULL) {
+    if ((dp = flash_lookup_config(key)) != NULL) {
         if (CONFIG_OBJECT_TYPE(dp) == type) {
             val_ptr = (void *)CONFIG_OBJECT_VALUE(dp);
             switch (type) {
                 // Note: the data may be unaligned in the configuration data
             case CONFIG_BOOL:
@@ -939,16 +944,16 @@ flash_get_config(char *key, void *val, i
 // Update a data object in the data base (in memory copy & backing store)
 //
 bool
 flash_set_config(char *key, void *val, int type)
 {
-    unsigned char *dp;
+    char *dp;
     void *val_ptr;
 
     if (!config_ok) return false;
 
-    if ((dp = flash_lookup_config(key)) != (unsigned char *)NULL) {
+    if ((dp = flash_lookup_config(key)) != NULL) {
         if (CONFIG_OBJECT_TYPE(dp) == type) {
             val_ptr = (void *)CONFIG_OBJECT_VALUE(dp);
             switch (type) {
                 // Note: the data may be unaligned in the configuration data
             case CONFIG_BOOL:
@@ -985,11 +990,11 @@ flash_set_config(char *key, void *val, i
 
 //
 // Copy data into the config area
 //
 static void
-flash_config_insert_value(unsigned char *dp, struct config_option *opt)
+flash_config_insert_value(char *dp, struct config_option *opt)
 {
     switch (opt->type) {
         // Note: the data may be unaligned in the configuration data
     case CONFIG_BOOL:
         memcpy(dp, (void *)&opt->dflt, sizeof(bool));
@@ -1032,16 +1037,16 @@ flash_config_insert_value(unsigned char 
 // Add a new option to the database
 //
 bool
 flash_add_config(struct config_option *opt, bool update)
 {
-    unsigned char *dp, *kp;
+    char *dp, *kp;
     int len, elen, size;
 
     // If data item is already present, just update it
     // Note: only the data value can be thusly changed
-    if ((dp = flash_lookup_config(opt->key)) != (unsigned char *)NULL) {
+    if ((dp = flash_lookup_config(opt->key)) != NULL) {
         flash_config_insert_value(CONFIG_OBJECT_VALUE(dp), opt);
         if (update) {
             flash_write_config(true);
         }
         return true;
@@ -1124,11 +1129,11 @@ load_flash_config(void)
 #ifdef CYGHWR_REDBOOT_FLASH_CONFIG_MEDIA_FLASH
     void *err_addr;
 #endif
 
     config_ok = false;
-    script = (unsigned char *)0;
+    script = NULL;
     cfg_temp -= sizeof(struct _config);  // Space for primary config data
     config = (struct _config *)cfg_temp;
     cfg_temp -= sizeof(struct _config);  // Space for backup config data
     backup_config = (struct _config *)cfg_temp;
 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG_READONLY_FALLBACK
Index: redboot/current/src/io.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/io.c,v
retrieving revision 1.33
diff -u -5 -p -r1.33 io.c
--- redboot/current/src/io.c	8 Sep 2005 12:14:34 -0000	1.33
+++ redboot/current/src/io.c	11 Nov 2008 01:09:50 -0000
@@ -8,10 +8,11 @@
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
 // Copyright (C) 2002, 2003, 2005 Gary Thomas
+// Copyright (C) 2004, 2008 eCosCentric Limited
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -117,11 +118,11 @@ do_channel(int argc, char *argv[])
             diag_printf("%d\n", cur);
     }
 }
 
 void 
-mon_write_char(char c)
+mon_write_char(unsigned char c)
 {
     hal_virtual_comm_table_t *__chan;
 
 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE
     if (!console_selected) {
@@ -146,11 +147,11 @@ mon_write_char(char c)
         }
     }
 }
 
 static void 
-mon_read_char(char *c)
+mon_read_char(unsigned char *c)
 {
     hal_virtual_comm_table_t* __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
     
     if (__chan)
         *c = CYGACC_COMM_IF_GETC(*__chan);
@@ -163,11 +164,11 @@ mon_read_char(char *c)
 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE
 static int _mon_timeout;
 #endif
 
 bool
-mon_read_char_with_timeout(char *c)
+mon_read_char_with_timeout(unsigned char *c)
 {
     bool res = false;
     hal_virtual_comm_table_t *__chan;
 
 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE
@@ -251,14 +252,14 @@ mon_set_read_char_timeout(int ms)
 // Test for ^C on the console.  CAUTION! discards all console input
 //
 bool
 _rb_break(int timeout)
 {
-    char c;
+    unsigned char c;
     mon_set_read_char_timeout(timeout);
     if (mon_read_char_with_timeout(&c)) {
-        if (c == 0x03) {  // Test for ^C
+        if (c == '\x03') {  // Test for ^C
             return true;
         }
     }
     return false;
 }
@@ -400,11 +401,11 @@ _rb_gets_preloaded(char *buf, int buflen
         }
         *eol = '\0';
 #define CTRL(c) ((c)&0x1F)
 #ifdef CYGSEM_REDBOOT_CMD_LINE_ANSI_SEQUENCES
         // Special handling of ANSI keyboard sequences (arrows, etc)
-        if (c == 0x1B) {
+        if (c == '\x1B') {
             // Leadin for ANSI keyboard sequence
             ansi_state = 1;
             continue;
         }
         switch (ansi_state) {
@@ -691,11 +692,11 @@ _rb_gets_preloaded(char *buf, int buflen
                     xp--;
                 }
             }
 #endif
             if (console_echo) {
-                mon_write_char(c);
+                mon_write_char((unsigned char)c);
             }
             if (ip == eol) {
                 // Advance both pointers
                 *ip++ = c;
                 eol = ip;
Index: redboot/current/src/load.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/load.c,v
retrieving revision 1.49
diff -u -5 -p -r1.49 load.c
--- redboot/current/src/load.c	24 Jan 2007 10:23:35 -0000	1.49
+++ redboot/current/src/load.c	11 Nov 2008 01:09:50 -0000
@@ -114,12 +114,12 @@ extern struct load_io_entry __RedBoot_LO
 // Buffers, data used by redboot_getc
 #define BUF_SIZE CYGNUM_REDBOOT_GETC_BUFFER
 struct {
     getc_io_funcs_t *io;
     int (*fun)(char *, int len, int *err);
-    unsigned char  buf[BUF_SIZE];
-    unsigned char *bufp;
+    char  buf[BUF_SIZE];
+    char *bufp;
     int   avail, len, err;
     int   verbose, decompress, tick;
 #ifdef CYGBLD_BUILD_REDBOOT_WITH_ZLIB
     int (*raw_fun)(char *, int len, int *err);
     _pipe_t load_pipe;
@@ -163,11 +163,11 @@ redboot_getc(void)
             if (getc_info.verbose) diag_printf("\n");
             return -1;
         }
     }
     getc_info.avail--;
-    return *getc_info.bufp++;
+    return ((int)*getc_info.bufp++) & 0x00FF;
 }
 
 #ifdef CYGBLD_BUILD_REDBOOT_WITH_ZLIB
 //
 // Called to fetch a new chunk of data and decompress it
@@ -308,11 +308,11 @@ load_elf_image(getc_t getc, unsigned lon
     int phx, len, ch;
     unsigned char *addr;
     unsigned long addr_offset = 0;
     unsigned long highest_address = 0;
     unsigned long lowest_address = 0xFFFFFFFF;
-    unsigned char *SHORT_DATA = "Short data reading ELF file\n";
+    const char SHORT_DATA[] = "Short data reading ELF file\n";
 
     // Read the header
     if (_read(getc, (unsigned char *)&ehdr, sizeof(ehdr)) != sizeof(ehdr)) {
         err_printf("Can't read ELF header\n");
         redboot_getc_terminate(true);
Index: redboot/current/src/main.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/main.c,v
retrieving revision 1.66
diff -u -5 -p -r1.66 main.c
--- redboot/current/src/main.c	20 Jul 2006 20:27:47 -0000	1.66
+++ redboot/current/src/main.c	11 Nov 2008 01:09:50 -0000
@@ -281,14 +281,14 @@ cyg_start(void)
         ram_end = HAL_MEM_REAL_REGION_TOP( ram_end_tmp );
     }
 #endif
 #ifdef CYGMEM_SECTION_heap1
     workspace_start = (unsigned char *)CYGMEM_SECTION_heap1;
-    workspace_end = (unsigned char *)(CYGMEM_SECTION_heap1+CYGMEM_SECTION_heap1_SIZE);
+    workspace_end = (unsigned char *)CYGMEM_SECTION_heap1+CYGMEM_SECTION_heap1_SIZE;
 #else
     workspace_start = (unsigned char *)CYGMEM_REGION_ram;
-    workspace_end = (unsigned char *)(CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE);
+    workspace_end = (unsigned char *)CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE;
 #endif
 
     if ( ram_end < workspace_end ) {
         // when *less* SDRAM is installed than the possible maximum,
         // but the heap1 region remains greater...
@@ -335,15 +335,15 @@ cyg_start(void)
       script = CYGDAT_REDBOOT_DEFAULT_BOOT_SCRIPT;
     }
 # endif
     if (script) {
         // Give the guy a chance to abort any boot script
-        unsigned char *hold_script = script;
+        char *hold_script = script;
         int script_timeout_ms = script_timeout * CYGNUM_REDBOOT_BOOT_SCRIPT_TIMEOUT_RESOLUTION;
         diag_printf("== Executing boot script in %d.%03d seconds - enter ^C to abort\n", 
                     script_timeout_ms/1000, script_timeout_ms%1000);
-        script = (unsigned char *)0;
+        script = NULL;
         res = _GETS_CTRLC;  // Treat 0 timeout as ^C
         while (script_timeout_ms >= CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT) {
             res = _rb_gets(line, sizeof(line), CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT);
             if (res >= _GETS_OK) {
                 diag_printf("== Executing boot script in %d.%03d seconds - enter ^C to abort\n", 
@@ -352,11 +352,11 @@ cyg_start(void)
             }
             if (res != _GETS_TIMEOUT) break;
             script_timeout_ms -= CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT;
         }
         if (res == _GETS_CTRLC) {
-            script = (unsigned char *)0;  // Disable script
+            script = NULL;  // Disable script
         } else {
             script = hold_script;  // Re-enable script
         }
     }
 #endif
@@ -380,10 +380,12 @@ cyg_start(void)
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
             if (res == _GETS_GDB) {
 		int dbgchan;
                 hal_virtual_comm_table_t *__chan;
                 int i;
+                CYG_ADDRESS gdb_stack_sp;
+
                 // Special case of '$' - need to start GDB protocol
                 gdb_active = true;
                 // Mask interrupts on all channels
                 for (i = 0;  i < CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS;  i++) {
                     CYGACC_CALL_IF_SET_CONSOLE_COMM(i);
@@ -391,16 +393,17 @@ cyg_start(void)
                     CYGACC_COMM_IF_CONTROL( *__chan, __COMMCTL_IRQ_DISABLE );
                 }
     
                 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
 
+                gdb_stack_sp = (CYG_ADDRESS)workspace_end;
                 // set up a temporary context that will take us to the trampoline
-                HAL_THREAD_INIT_CONTEXT((CYG_ADDRWORD)workspace_end,
+                HAL_THREAD_INIT_CONTEXT(gdb_stack_sp,
                                         breakpoint, trampoline,0);
 
                 // switch context to trampoline (get GDB stubs started)
-                HAL_THREAD_SWITCH_CONTEXT(&saved_context, &workspace_end);
+                HAL_THREAD_SWITCH_CONTEXT(&saved_context, &gdb_stack_sp);
 
                 gdb_active = false;
 
 		dbgchan = CYGACC_CALL_IF_SET_DEBUG_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
 		CYGACC_CALL_IF_SET_CONSOLE_COMM(dbgchan);
@@ -525,10 +528,11 @@ do_go(int argc, char *argv[])
     bool stop_net = false;
 #endif
     struct option_info opts[3];
     char line[8];
     hal_virtual_comm_table_t *__chan;
+    CYG_ADDRESS trampoline_stack_sp;
 
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
     __mem_fault_handler = 0; // Let GDB handle any faults directly
 #endif
     entry = entry_address;  // Default from last 'load' operation
@@ -554,12 +558,12 @@ do_go(int argc, char *argv[])
         return;
     }
     if (wait_time_set) {
         int script_timeout_ms = wait_time * 1000;
 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG
-        unsigned char *hold_script = script;
-        script = (unsigned char *)0;
+        char *hold_script = script;
+        script = NULL;
 #endif
         diag_printf("About to start execution at %p - abort with ^C within %d seconds\n",
                     (void *)entry, wait_time);
         while (script_timeout_ms >= CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT) {
             res = _rb_gets(line, sizeof(line), CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT);
@@ -597,16 +601,16 @@ do_go(int argc, char *argv[])
 	HAL_DCACHE_DISABLE();
 	HAL_DCACHE_SYNC();
     }
     HAL_ICACHE_INVALIDATE_ALL();
     HAL_DCACHE_INVALIDATE_ALL();
+    trampoline_stack_sp = (CYG_ADDRESS)workspace_end;
     // set up a temporary context that will take us to the trampoline
-    HAL_THREAD_INIT_CONTEXT((CYG_ADDRWORD)workspace_end, 
-                            entry, trampoline, 0);
+    HAL_THREAD_INIT_CONTEXT(trampoline_stack_sp, entry, trampoline, 0);
 
     // switch context to trampoline
-    HAL_THREAD_SWITCH_CONTEXT(&saved_context, &workspace_end);
+    HAL_THREAD_SWITCH_CONTEXT(&saved_context, &trampoline_stack_sp);
 
     // we get back here by way of return_to_redboot()
 
     // undo the changes we made before switching context
     if (!cache_enabled) {
@@ -760,5 +764,7 @@ valid_address(unsigned char *addr)
             }
         }
     }
     return false;
 }
+
+/* EOF main.c */
Index: redboot/current/src/parse.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/parse.c,v
retrieving revision 1.10
diff -u -5 -p -r1.10 parse.c
--- redboot/current/src/parse.c	20 Jul 2006 20:27:47 -0000	1.10
+++ redboot/current/src/parse.c	11 Nov 2008 01:09:51 -0000
@@ -259,11 +259,11 @@ int redboot_exec( char *command, ... )
     va_end(ap);
 
     return result;
 }
 
-externC void err_printf( char *fmt, ... )
+externC void err_printf( const char *fmt, ... )
 {
     va_list ap;
     
     va_start(ap, fmt);
 
Index: redboot/current/src/xyzModem.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/xyzModem.c,v
retrieving revision 1.21
diff -u -5 -p -r1.21 xyzModem.c
--- redboot/current/src/xyzModem.c	25 Feb 2006 14:21:12 -0000	1.21
+++ redboot/current/src/xyzModem.c	11 Nov 2008 01:09:51 -0000
@@ -57,18 +57,18 @@
 #include <xyzModem.h>
 
 // Assumption - run xyzModem protocol over the console port
 
 // Values magic to the protocol
-#define SOH 0x01
-#define STX 0x02
-#define EOT 0x04
-#define ACK 0x06
-#define BSP 0x08
-#define NAK 0x15
-#define CAN 0x18
-#define EOF 0x1A  // ^Z for DOS officionados
+#define SOH '\x01'
+#define STX '\x02'
+#define EOT '\x04'
+#define ACK '\x06'
+#define BSP '\x08'
+#define NAK '\x15'
+#define CAN '\x18'
+#define EOF '\x1A'  // ^Z for DOS officionados
 
 #define USE_YMODEM_LENGTH
 
 // Data & state local to the protocol
 static struct {
@@ -178,21 +178,21 @@ zm_dump(int line)
 // Wait for the line to go idle
 static void
 xyzModem_flush(void)
 {
     int res;
-    char c;
+    unsigned char c;
     while (true) {
         res = CYGACC_COMM_IF_GETC_TIMEOUT(*xyz.__chan, &c);
         if (!res) return;
     }
 }
 
 static int
 xyzModem_get_hdr(void)
 {
-    char c;
+    unsigned char c;
     int res;
     bool hdr_found = false;
     int i, can_total, hdr_chars;
     unsigned short cksum;
 
@@ -286,11 +286,11 @@ xyzModem_get_hdr(void)
             return xyzModem_timeout;
         }
     }
     ZM_DEBUG(zm_dump(__LINE__));
     // Validate the message
-    if ((xyz.blk ^ xyz.cblk) != (unsigned char)0xFF) {
+    if ((xyz.blk ^ xyz.cblk) != 0x00FF) {
         ZM_DEBUG(zm_dprintf("Framing error - blk: %x/%x/%x\n", xyz.blk, xyz.cblk, (xyz.blk ^ xyz.cblk)));
         ZM_DEBUG(zm_dump_buf(xyz.pkt, xyz.len));
         xyzModem_flush();
         return xyzModem_frame;
     }
@@ -370,11 +370,11 @@ xyzModem_stream_open(connection_info_t *
             if (xyz.blk == 0) {
 #ifdef USE_YMODEM_LENGTH
                 // skip filename
                 while (*xyz.bufp++);
                 // get the length
-                parse_num(xyz.bufp, &xyz.file_length, NULL, " ");
+                parse_num((char*)xyz.bufp, &xyz.file_length, NULL, " ");
 #endif
                 // The rest of the file name data block quietly discarded
                 xyz.tx_ack = true;
             }
             xyz.next_blk = 1;
Index: redboot/current/src/fs/e2fs.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/fs/e2fs.c,v
retrieving revision 1.7
diff -u -5 -p -r1.7 e2fs.c
--- redboot/current/src/fs/e2fs.c	14 Feb 2003 16:31:40 -0000	1.7
+++ redboot/current/src/fs/e2fs.c	11 Nov 2008 01:09:51 -0000
@@ -8,10 +8,11 @@
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
 // Copyright (C) 2003 Gary Thomas <gary@mind.be>
+// Copyright (C) 2008 eCosCentric Limited.
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -158,17 +159,20 @@ e2fs_get_inode(e2fs_desc_t *e2fs, int in
 //
 static int
 e2fs_mount(partition_t *part, e2fs_desc_t *e2fs)
 {
     int sb_block = 1;
-    cyg_uint32  sb_buf[E2FS_MIN_BLOCK_SIZE/sizeof(cyg_uint32)];
-    struct e2fs_super_block *sb = (struct e2fs_super_block *)sb_buf;
+    union {
+        cyg_uint32  sb_buf[E2FS_MIN_BLOCK_SIZE/sizeof(cyg_uint32)];
+        struct e2fs_super_block sbdata;
+    } sbdata_union;
+    struct e2fs_super_block *sb=&sbdata_union.sbdata;
 
     e2fs->part = part;
 
     if (!PARTITION_READ(part, sb_block*(E2FS_MIN_BLOCK_SIZE/SECTOR_SIZE),
-			(cyg_uint32 *)sb, E2FS_MIN_BLOCK_SIZE/SECTOR_SIZE))
+			&sbdata_union.sb_buf[0], E2FS_MIN_BLOCK_SIZE/SECTOR_SIZE))
 	return -1;
 
     if (SWAB_LE16(sb->magic) != E2FS_SUPER_MAGIC) {
 	diag_printf("ext2_mount: bad magic 0x%x\n", SWAB_LE16(sb->magic));
 	return -1;
Index: redboot/current/src/net/net_io.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/net/net_io.c,v
retrieving revision 1.48
diff -u -5 -p -r1.48 net_io.c
--- redboot/current/src/net/net_io.c	4 Jun 2007 20:31:00 -0000	1.48
+++ redboot/current/src/net/net_io.c	11 Nov 2008 01:09:51 -0000
@@ -8,10 +8,11 @@
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
 // Copyright (C) 2002, 2003, 2004 Gary Thomas
+// Copyright (C) 2004,2005 eCosCentric Limited
 //
 // eCos 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 2 or (at your option) any later version.
 //
@@ -885,16 +886,15 @@ do_ip_addr(int argc, char *argv[])
     if (ip_addr_set) {
 #ifdef CYGSEM_REDBOOT_NETWORKING_USE_GATEWAY
         char *slash_pos;
         /* see if the (optional) mask length was given */
         if( (slash_pos = strchr(ip_addr, '/')) ) {
-            int mask_len;
-            unsigned long mask;
+            unsigned long mask, mask_len;
             *slash_pos = '\0';
             slash_pos++;
-            if( !parse_num(slash_pos, (unsigned long *)&mask_len, 0, 0) ||  
-                mask_len <= 0 || mask_len > 32 ) {
+            if( !parse_num(slash_pos, &mask_len, 0, 0) ||  
+                mask_len == 0 || mask_len > 32 ) {
                 diag_printf("Invalid mask length: %s\n", slash_pos);
                 return;
             }
             mask = htonl((0xffffffff << (32-mask_len))&0xffffffff);
             memcpy(&__local_ip_mask, &mask, 4);
0a1,191
> /*===========================================================================
> //
> //      gccsupport.cxx
> //
> //      Miscellaneous generic support functions required by GCC
> //
> //==========================================================================
> //####ECOSGPLCOPYRIGHTBEGIN####
> // -------------------------------------------
> // This file is part of eCos, the Embedded Configurable Operating System.
> // Copyright (C) 2004, 2005, 2008 eCosCentric Ltd.
> //
> // eCos 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 2 or (at your option) any later version.
> //
> // eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
> // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
> //
> // As a special exception, if other files instantiate templates or use macros
> // or inline functions from this file, or you compile this file and link it
> // with other works to produce a work based on this file, this file does not
> // by itself cause the resulting work to be covered by the GNU General Public
> // License. However the source code for this file must still be made available
> // in accordance with section (3) of the GNU General Public License.
> //
> // This exception does not invalidate any other reasons why a work based on
> // this file might be covered by the GNU General Public License.
> // -------------------------------------------
> //####ECOSGPLCOPYRIGHTEND####
> //==========================================================================
> //#####DESCRIPTIONBEGIN####
> //
> // Author(s):    jlarmour
> // Contributors: 
> // Date:         2005-03-06
> // Purpose:      This file provides miscellaneous support functions that have
> //               been assumed to be present by GCC.
> // Description:  These functions and definitions are usually defaults
> //               for when the "real" implementation does not exist.
> //               These are intentionally very basic implementations. Users
> //               should pull in the real implementations from other packages
> //               rather than these. These are purely here for GCC's
> //               requirements and nothing more.
> //
> //####DESCRIPTIONEND####
> //
> //==========================================================================*/
> 
> 
> /* INCLUDES */
> 
> #include <pkgconf/infra.h>      /* Configuration of infra package */
> #include <pkgconf/isoinfra.h>   /* Configuration of isoinfra package */
> 
> #include <cyg/infra/cyg_type.h> /* Common type definitions */
>     //#include <cyg/infra/cyg_trac.h> /* Tracing support */
>     //#include <cyg/infra/cyg_ass.h>  /* Assertion support */
> #include <stddef.h>             /* Compiler defns such as size_t, NULL etc. */
> #include <stdio.h>
> #include <cyg/infra/diag.h>     /* Diagnostic output */
> 
> /* GLOBALS */
> 
> 
> #ifndef CYGINT_ISO_STDIO_FILETYPES
> typedef long FILE;
> #endif
> #ifndef CYGINT_ISO_STDIO_STREAMS
> FILE *stdout, *stderr; /* In practice, ignored */
> #endif
> 
> 
> /* FUNCTIONS */
> #ifndef CYGINT_ISO_STDIO_CHAR_IO
> __externC int
> fputs( const char *string, FILE * /* ignored */ ) __THROW
> {
>     diag_write_string( string );
>     return 0;
> }
> 
> __externC int
> fputc( int c, FILE * /* ignored */ ) __THROW
> {
>     diag_write_char( (char)c );
>     return c;
> }
> 
> #endif
> 
> #ifndef CYGINT_ISO_STDIO_DIRECT_IO
> /* Recent GCC can "optimise" fputs(string, stream)
>  * to fwrite(string, 1, len, stream).
>  * No idea why they think that's a good idea though! */
> __externC size_t
> fwrite( const void *ptr, size_t object_size, size_t num_objects,
>         FILE * /* ignored */ ) __THROW
> {
>     const char *str = static_cast<const char *>(ptr);
> 
>     /* double check GCC use before assuming. Hmm, is it possible
>      * GCC could optimise away the terminating NULL?
>      */
>     if (object_size == 1 && str[num_objects] == '\0')
>         diag_write_string( str );
>     else
>         return 0;
>     return num_objects;
> }
> #endif
> 
> #ifndef CYGINT_ISO_STRING_MEMFUNCS
> __externC int
> memcmp( const void *s1, const void *s2, size_t n )
> {
>     const unsigned char *m1 = (const unsigned char *) s1;
>     const unsigned char *m2 = (const unsigned char *) s2;
> 
>     while (n--)
>     {
>         if (*m1 != *m2)
>         {
>             return *m1 - *m2;
>         }
>         m1++;
>         m2++;
>     }
>     return 0;
> } // memcmp()
> #endif
> 
> #ifndef CYGINT_ISO_STRING_STRFUNCS
> __externC int
> strncmp( const char *s1, const char *s2, size_t n )
> {
>     if (n == 0)
>     {
>         return 0;
>     }
>     while (n-- != 0 && *s1 == *s2)
>     {
>         if (n == 0 || *s1 == '\0' || *s2 == '\0')
>             break;
>         s1++;
>         s2++;
>     }
> 
>     return (*(unsigned char *) s1) - (*(unsigned char *) s2);
> } // strncmp()
> 
> __externC int
> strcmp( const char *s1, const char *s2 )
> {
>     // Could do simple and direct implementation, but smaller is better
>     return strncmp( s1, s2, (size_t)-1 );
> } // strcmp()
> 
> __externC char *
> strcat( char *s1, const char *s2 )
> {
>     char *s = s1;
> 
>     while (*s1)
>         s1++;
> 
>     while ((*s1++ = *s2++))
>         ;
>     return s;
> } // strcat()
> 
> __externC char *
> strcpy( char *s1, const char *s2 )
> {
>     char *s = s1;
> 
>     while ((*s1++ = *s2++) != '\0')
>         ;
> 
>     return s;
> } // strcpy()
> #endif
> 
> 
> /* EOF gccsupport.cxx */

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]