[PATCHv3 4/7] arc: Remove EF_ARC_CPU_GENERIC constant.
Claudiu Zissulescu
Claudiu.Zissulescu@synopsys.com
Wed Mar 16 11:06:00 GMT 2016
I am not very sure about this patch. The official Synopsys ARC compiler doesn't set the e_flags. The code you just removed was made to handle those situations. Did you made some testing against those kind of situations.
Thanks,
Claudiu
> -----Original Message-----
> From: Andrew Burgess [mailto:andrew.burgess@embecosm.com]
> Sent: Wednesday, March 16, 2016 12:02 AM
> To: binutils@sourceware.org
> Cc: Claudiu.Zissulescu@synopsys.com; Cupertino.Miranda@synopsys.com;
> noamca@mellanox.com; Nick Clifton; Andreas Schwab; Andrew Burgess
> Subject: [PATCHv3 4/7] arc: Remove EF_ARC_CPU_GENERIC constant.
>
> The constant EF_ARC_CPU_GENERIC is defined in the include/elf/arc.h
> file, and is used in a few places in binutils, however, this constant
> should never make it into the elf header flags; we always set a valid
> cpu type in the assembler, which should then be copied over during
> linking.
>
> In order to simplify the code this commit remove EF_ARC_CPU_GENERIC.
>
> bfd/ChangeLog:
>
> * elf32-arc.c (arc_elf_print_private_bfd_data): Remove use of
> EF_ARC_CPU_GENERIC.
> (arc_elf_final_write_processing): Don't bother setting cpu field
> in e_flags, this will have been set elsewhere.
>
> binutils/ChangeLog:
>
> * readelf.c (get_machine_flags): Remove use of
> EF_ARC_CPU_GENERIC.
>
> gas/ChangeLog:
>
> * config/tc-arc.c (arc_select_cpu): Remove use of
> EF_ARC_CPU_GENERIC.
>
> include/ChangeLog:
>
> * elf/arc.h (EF_ARC_CPU_GENERIC): Delete. Update related
> comment.
> ---
> bfd/ChangeLog | 7 +++++++
> bfd/elf32-arc.c | 10 ----------
> binutils/ChangeLog | 4 ++++
> binutils/readelf.c | 3 ---
> gas/ChangeLog | 5 +++++
> gas/config/tc-arc.c | 7 +++----
> include/ChangeLog | 4 ++++
> include/elf/arc.h | 6 ++----
> 8 files changed, 25 insertions(+), 21 deletions(-)
>
> diff --git a/bfd/ChangeLog b/bfd/ChangeLog
> index d2532f0..20c1904 100644
> --- a/bfd/ChangeLog
> +++ b/bfd/ChangeLog
> @@ -1,5 +1,12 @@
> 2016-03-15 Andrew Burgess <andrew.burgess@embecosm.com>
>
> + * elf32-arc.c (arc_elf_print_private_bfd_data): Remove use of
> + EF_ARC_CPU_GENERIC.
> + (arc_elf_final_write_processing): Don't bother setting cpu field
> + in e_flags, this will have been set elsewhere.
> +
> +2016-03-15 Andrew Burgess <andrew.burgess@embecosm.com>
> +
> * elf32-arc.c (arc_elf_final_write_processing): Switch to using
> EF_ARC_MACH_MSK.
>
> diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
> index 7c856d0..ec81852 100644
> --- a/bfd/elf32-arc.c
> +++ b/bfd/elf32-arc.c
> @@ -415,7 +415,6 @@ arc_elf_print_private_bfd_data (bfd *abfd, void *
> ptr)
>
> switch (flags & EF_ARC_MACH_MSK)
> {
> - case EF_ARC_CPU_GENERIC : fprintf (file, " -mcpu=generic"); break;
> case EF_ARC_CPU_ARCV2HS : fprintf (file, " -mcpu=ARCv2HS"); break;
> case EF_ARC_CPU_ARCV2EM : fprintf (file, " -mcpu=ARCv2EM"); break;
> case E_ARC_MACH_ARC600 : fprintf (file, " -mcpu=ARC600"); break;
> @@ -647,34 +646,25 @@ static void
> arc_elf_final_write_processing (bfd * abfd,
> bfd_boolean linker ATTRIBUTE_UNUSED)
> {
> - unsigned long val;
> unsigned long emf;
>
> switch (bfd_get_mach (abfd))
> {
> case bfd_mach_arc_arc600:
> - val = E_ARC_MACH_ARC600;
> emf = EM_ARC_COMPACT;
> break;
> case bfd_mach_arc_arc601:
> - val = E_ARC_MACH_ARC601;
> emf = EM_ARC_COMPACT;
> break;
> case bfd_mach_arc_arc700:
> - val = E_ARC_MACH_ARC700;
> emf = EM_ARC_COMPACT;
> break;
> case bfd_mach_arc_arcv2:
> - val = EF_ARC_CPU_GENERIC;
> emf = EM_ARC_COMPACT2;
> - /* TODO: Check validity of this. It can also be ARCV2EM here.
> - Previous version sets the e_machine here. */
> break;
> default:
> abort ();
> }
> - if ((elf_elfheader (abfd)->e_flags & EF_ARC_MACH_MSK) ==
> EF_ARC_CPU_GENERIC)
> - elf_elfheader (abfd)->e_flags |= val;
>
> elf_elfheader (abfd)->e_machine = emf;
>
> diff --git a/binutils/ChangeLog b/binutils/ChangeLog
> index 9328815..1ac9384 100644
> --- a/binutils/ChangeLog
> +++ b/binutils/ChangeLog
> @@ -1,5 +1,9 @@
> 2016-03-15 Andrew Burgess <andrew.burgess@embecosm.com>
>
> + * readelf.c (get_machine_flags): Remove use of
> EF_ARC_CPU_GENERIC.
> +
> +2016-03-15 Andrew Burgess <andrew.burgess@embecosm.com>
> +
> * testsuite/binutils-all/objdump.exp (cpus_expected): Add ARC700
> to the architecture list.
>
> diff --git a/binutils/readelf.c b/binutils/readelf.c
> index 7deac04..b764234 100644
> --- a/binutils/readelf.c
> +++ b/binutils/readelf.c
> @@ -2776,9 +2776,6 @@ get_machine_flags (unsigned e_flags, unsigned
> e_machine)
> case EF_ARC_CPU_ARCV2HS:
> strcat (buf, ", ARC HS");
> break;
> - case EF_ARC_CPU_GENERIC:
> - strcat (buf, ", ARC generic");
> - break;
> case E_ARC_MACH_ARC600:
> strcat (buf, ", ARC600");
> break;
> diff --git a/gas/ChangeLog b/gas/ChangeLog
> index fc026ea..16d7f34 100644
> --- a/gas/ChangeLog
> +++ b/gas/ChangeLog
> @@ -1,5 +1,10 @@
> 2016-03-15 Andrew Burgess <andrew.burgess@embecosm.com>
>
> + * config/tc-arc.c (arc_select_cpu): Remove use of
> + EF_ARC_CPU_GENERIC.
> +
> +2016-03-15 Andrew Burgess <andrew.burgess@embecosm.com>
> +
> * config/tc-arc.c (arc_target): Delay initialisation until
> arc_select_cpu.
> (arc_target_name): Likewise.
> diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c
> index 5633905..65eb0e9 100644
> --- a/gas/config/tc-arc.c
> +++ b/gas/config/tc-arc.c
> @@ -573,7 +573,7 @@ md_number_to_chars_midend (char *buf, valueT
> val, int n)
> static void
> arc_select_cpu (const char *arg)
> {
> - int cpu_flags = EF_ARC_CPU_GENERIC;
> + int cpu_flags = 0;
> int i;
>
> for (i = 0; cpu_types[i].name; ++i)
> @@ -591,9 +591,8 @@ arc_select_cpu (const char *arg)
>
> if (!cpu_types[i].name)
> as_fatal (_("unknown architecture: %s\n"), arg);
> -
> - if (cpu_flags != EF_ARC_CPU_GENERIC)
> - arc_eflag = (arc_eflag & ~EF_ARC_MACH_MSK) | cpu_flags;
> + gas_assert (cpu_flags != 0);
> + arc_eflag = (arc_eflag & ~EF_ARC_MACH_MSK) | cpu_flags;
> }
>
> /* Here ends all the ARCompact extension instruction assembling
> diff --git a/include/ChangeLog b/include/ChangeLog
> index b083a8d..102d1c0 100644
> --- a/include/ChangeLog
> +++ b/include/ChangeLog
> @@ -1,5 +1,9 @@
> 2016-03-15 Andrew Burgess <andrew.burgess@embecosm.com>
>
> + * elf/arc.h (EF_ARC_CPU_GENERIC): Delete. Update related
> comment.
> +
> +2016-03-15 Andrew Burgess <andrew.burgess@embecosm.com>
> +
> * elf/arc.h (EF_ARC_MACH): Delete.
> (EF_ARC_MACH_MSK): Remove out of date comment.
>
> diff --git a/include/elf/arc.h b/include/elf/arc.h
> index 0b75465..47381f3 100644
> --- a/include/elf/arc.h
> +++ b/include/elf/arc.h
> @@ -43,13 +43,11 @@ END_RELOC_NUMBERS (R_ARC_max)
> #define EF_ARC_OSABI_MSK 0x00000f00
> #define EF_ARC_ALL_MSK (EF_ARC_MACH_MSK |
> EF_ARC_OSABI_MSK)
>
> -/* Various CPU types. */
> +/* Various CPU types. These numbers are exposed in the ELF header flags
> + (e_flags field), and so must never change. */
> #define E_ARC_MACH_ARC600 0x00000002
> #define E_ARC_MACH_ARC601 0x00000004
> #define E_ARC_MACH_ARC700 0x00000003
> -
> -/* Processor specific flags for the ELF header e_flags field. */
> -#define EF_ARC_CPU_GENERIC 0x00000000
> #define EF_ARC_CPU_ARCV2EM 0x00000005
> #define EF_ARC_CPU_ARCV2HS 0x00000006
>
> --
> 2.5.1
More information about the Binutils
mailing list