changeset 2679:47922fab416e

* src/i386.ld: gcc_except_table subsections don't need to be kept. * src/i386.ld: gcc_except_table needs to be marked KEEP.
author jld
date Fri, 05 Dec 2008 08:14:42 +0000
parents c5bac719313d
children b0d201ac6a5b
files packages/hal/i386/arch/current/ChangeLog packages/hal/i386/arch/current/src/i386.ld
diffstat 2 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/packages/hal/i386/arch/current/ChangeLog
+++ b/packages/hal/i386/arch/current/ChangeLog
@@ -6,6 +6,15 @@ 2005-07-18  David Vrabel  <dvrabel@arcom
 
 	* include/hal_arch.h: #define CYGARC_VIRTUAL_ADDRESS.
 
+2005-06-10  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/i386.ld: gcc_except_table subsections don't need to be
+	kept.
+
+2005-06-03  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/i386.ld: gcc_except_table needs to be marked KEEP.
+
 2005-04-22  David Vrabel  <dvrabel@arcom.com>
 
 	* cdl/hal_i386.cdl (CYGHWR_REDBOOT_I386_TRAMPOLINE_ADDRESS): Don't
--- a/packages/hal/i386/arch/current/src/i386.ld
+++ b/packages/hal/i386/arch/current/src/i386.ld
@@ -9,6 +9,7 @@
 // -------------------------------------------
 // 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
@@ -100,9 +101,11 @@ GROUP(libtarget.a libgcc.a)
     > _region_
 
 #define SECTION_gcc_except_table(_region_, _vma_, _lma_)       \
-    .gcc_except_table _vma_ : _lma_                                           \
-    { _EXCEPT_START_ = ABSOLUTE(.); *(.gcc_except_table)                \
-      _EXCEPT_END_ = ABSOLUTE(.);}                                      \
+    .gcc_except_table _vma_ : _lma_                            \
+    { _EXCEPT_START_ = ABSOLUTE(.);                            \
+      KEEP(*(.gcc_except_table))                               \
+      *(.gcc_except_table.*)                                   \
+      _EXCEPT_END_ = ABSOLUTE(.);}                             \
     > _region_
 
 // Note: The __ in the name is an encoding of the .