aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2005-08-01 11:59:33 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2005-08-01 11:59:33 +0000
commitc5211a5487be06a0bc2172036a8a426b00c0d427 (patch)
tree8936a9bfe37d7732e24b8053fccb51e8a1da7854
parent77e0b926c11f74a3f7d4029dcdde8e5e722f0cae (diff)
downloadgdb-c5211a5487be06a0bc2172036a8a426b00c0d427.zip
gdb-c5211a5487be06a0bc2172036a8a426b00c0d427.tar.gz
gdb-c5211a5487be06a0bc2172036a8a426b00c0d427.tar.bz2
* elfxx-mips.c (mips_mach_extends_p): Treat MIPS64 as an extension
of MIPS32 and MIPS64r2 as an extension of MIPS32r2.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elfxx-mips.c21
-rw-r--r--ld/testsuite/ChangeLog4
-rw-r--r--ld/testsuite/ld-mips-elf/mips-elf-flags.exp3
4 files changed, 30 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 957841e..cca0de3 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2005-08-01 Richard Sandiford <richard@codesourcery.com>
+
+ * elfxx-mips.c (mips_mach_extends_p): Treat MIPS64 as an extension
+ of MIPS32 and MIPS64r2 as an extension of MIPS32r2.
+
2005-07-30 David Daney <ddaney@avtrex.com>
* elflink.c (elf_gc_sweep): Set dynsymcount to correct value.
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 316114e..53b5c9e 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -9661,11 +9661,26 @@ mips_mach_extends_p (unsigned long base, unsigned long extension)
{
size_t i;
- for (i = 0; extension != base && i < ARRAY_SIZE (mips_mach_extensions); i++)
+ if (extension == base)
+ return TRUE;
+
+ if (base == bfd_mach_mipsisa32
+ && mips_mach_extends_p (bfd_mach_mipsisa64, extension))
+ return TRUE;
+
+ if (base == bfd_mach_mipsisa32r2
+ && mips_mach_extends_p (bfd_mach_mipsisa64r2, extension))
+ return TRUE;
+
+ for (i = 0; i < ARRAY_SIZE (mips_mach_extensions); i++)
if (extension == mips_mach_extensions[i].extension)
- extension = mips_mach_extensions[i].base;
+ {
+ extension = mips_mach_extensions[i].base;
+ if (extension == base)
+ return TRUE;
+ }
- return extension == base;
+ return FALSE;
}
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index f22a81a..aa75510 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2005-08-01 Richard Sandiford <richard@codesourcery.com>
+
+ * ld-mips/mips-elf-flags.exp: Add more good_combination tests.
+
2005-07-28 Ben Elliston <bje@gnu.org>
* lib/ld-lib.exp (run_ld_link_exec_tests): Add new parameter
diff --git a/ld/testsuite/ld-mips-elf/mips-elf-flags.exp b/ld/testsuite/ld-mips-elf/mips-elf-flags.exp
index 50ea39a..b65e02b 100644
--- a/ld/testsuite/ld-mips-elf/mips-elf-flags.exp
+++ b/ld/testsuite/ld-mips-elf/mips-elf-flags.exp
@@ -158,3 +158,6 @@ good_combination { "-mips3 -32" "-mips64r2 -32" "-mips64 -32" } { mips64r2 }
good_combination { "-march=vr4120 -mabi=32" "-mips3 -mabi=32" } { 4120 o32 }
good_combination { "-march=sb1 -mgp32 -32" "-march=4000 -mgp32 -32" } { sb1 o32 }
+good_combination { "-mips32 -mabi=32" "-march=sb1 -mabi=32" } { sb1 o32 }
+good_combination { "-mips64r2 -mabi=32" "-mips32 -mabi=32" } { mips64r2 o32 }
+good_combination { "-mips5 -mabi=o64" "-mips64r2 -mabi=o64" } { mips64r2 o64 }