aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config/arm/bpabi.h6
-rw-r--r--gcc/config/arm/uclinux-eabi.h3
-rw-r--r--gcc/config/arm/unwind-arm.h4
5 files changed, 20 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8007696..bd4ada6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2008-03-20 Paul Brook <paul@codesourcery.com>
+
+ * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
+ * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
+ linker flags.
+ * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
+ definition.
+ (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
+ * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
+
2008-03-20 Volker Reichelt <v.reichelt@netcologne.de>
* common.opt (Wmudflap): New option.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index fbb54e2..8d0217e 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -753,7 +753,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;;
arm*-*-uclinux*) # ARM ucLinux
- tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h arm/uclinux-elf.h"
+ tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h"
tmake_file="arm/t-arm arm/t-arm-elf"
case ${target} in
arm*-*-uclinux-*eabi)
diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
index 0f3b24f..876e234 100644
--- a/gcc/config/arm/bpabi.h
+++ b/gcc/config/arm/bpabi.h
@@ -55,11 +55,15 @@
#undef SUBTARGET_EXTRA_ASM_SPEC
#define SUBTARGET_EXTRA_ASM_SPEC "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=4}"
+#ifndef SUBTARGET_EXTRA_LINK_SPEC
+#define SUBTARGET_EXTRA_LINK_SPEC ""
+#endif
+
/* The generic link spec in elf.h does not support shared libraries. */
#undef LINK_SPEC
#define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} " \
"%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} " \
- "-X"
+ "-X" SUBTARGET_EXTRA_LINK_SPEC
#if defined (__thumb__)
#define RENAME_LIBRARY_SET ".thumb_set"
diff --git a/gcc/config/arm/uclinux-eabi.h b/gcc/config/arm/uclinux-eabi.h
index aa6bc76..5ba97bf 100644
--- a/gcc/config/arm/uclinux-eabi.h
+++ b/gcc/config/arm/uclinux-eabi.h
@@ -42,7 +42,8 @@
while (false)
#undef SUBTARGET_EXTRA_LINK_SPEC
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
+#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi -elf2flt" \
+ " --pic-veneer --target2=abs"
/* We default to the "aapcs-linux" ABI so that enums are int-sized by
default. */
diff --git a/gcc/config/arm/unwind-arm.h b/gcc/config/arm/unwind-arm.h
index 896e410..f6d3dc15 100644
--- a/gcc/config/arm/unwind-arm.h
+++ b/gcc/config/arm/unwind-arm.h
@@ -232,11 +232,11 @@ extern "C" {
if (!tmp)
return 0;
-#if defined(linux) || defined(__NetBSD__)
+#if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__)
/* Pc-relative indirect. */
tmp += ptr;
tmp = *(_Unwind_Word *) tmp;
-#elif defined(__symbian__)
+#elif defined(__symbian__) || defined(__uClinux__)
/* Absolute pointer. Nothing more to do. */
#else
/* Pc-relative pointer. */