From aa02cc6302929252edd817456ef41317319c179c Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Mon, 21 Jun 2004 14:50:32 +0000 Subject: [PATCH] 2003-05-15 Richard Sandiford * cpu-h8300.c (compatible): Allow h8300s and h8300sx code to be linked together. Mark the result as h8300sx code. --- bfd/ChangeLog | 6 ++++++ bfd/cpu-h8300.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ec5c63e586..2bcd7bd8fc 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2004-06-21 Alexandre Oliva + + 2003-05-15 Richard Sandiford + * cpu-h8300.c (compatible): Allow h8300s and h8300sx code to be + linked together. Mark the result as h8300sx code. + 2004-06-21 Alexandre Oliva * elf-bfd.h (struct elf_backend_data): Added diff --git a/bfd/cpu-h8300.c b/bfd/cpu-h8300.c index 5907de0253..d726dc32bb 100644 --- a/bfd/cpu-h8300.c +++ b/bfd/cpu-h8300.c @@ -96,8 +96,18 @@ h8300_scan (const struct bfd_arch_info *info, const char *string) static const bfd_arch_info_type * compatible (const bfd_arch_info_type *in, const bfd_arch_info_type *out) { + if (in->arch != out->arch) + return 0; + if (in->mach == bfd_mach_h8300sx && out->mach == bfd_mach_h8300s) + return in; + if (in->mach == bfd_mach_h8300s && out->mach == bfd_mach_h8300sx) + return out; + if (in->mach == bfd_mach_h8300sxn && out->mach == bfd_mach_h8300sn) + return in; + if (in->mach == bfd_mach_h8300sn && out->mach == bfd_mach_h8300sxn) + return out; /* It's really not a good idea to mix and match modes. */ - if (in->arch != out->arch || in->mach != out->mach) + if (in->mach != out->mach) return 0; else return in; -- 2.34.1