diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elfxx-mips.c | 21 |
2 files changed, 23 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; } |