Hi Peter,
On Thu, Jan 25, 2018 at 09:39:39PM -0600, Peter Bergner wrote:
> Ok, here is a separate translation table like you wanted. I still use the
> RS6000_CPU table to hold entire list of canonical cpu names, the new
> translation table in driver-rs6000.c only contains cpus whose AT_PLATFORM
> names do not match their GCC canonical names. I also added the pa6t to
> 970 translation you mentioned in the bugzilla. If you want me to drop
> that, that's easy enough to do.
Yeah dropping it is probably best.
> Is this better? I did the same unit testing by forcing unknown names
> and names that need translation and I've verified it works. Bootstrap
> and regtesting is still running though.
Looks much better, thanks. Some smaller things:
> +#ifdef __linux__
> +/* Canonical GCC cpu name table. */
> +static const char *rs6000_supported_cpu_names[] =
> +{
> +#define RS6000_CPU(NAME, CPU, FLAGS) NAME,
> +#include "rs6000-cpus.def"
> +#undef RS6000_CPU
> +};
Can't you just use processor_target_table here? Seems like a waste to
duplicate all that. (Need to make the table non-static then of course).
> static const char *
> elf_platform (void)
> {
> - int fd;
> + static const char *cpu = NULL;
Add a comment here please, static funtion-scope variables are confusing
(but handy, in cases like this).
> + /* The kernel returned an AT_PLATFORM name we do not support. */
> + s = XALLOCAVEC (char, len);
I don't think building up the list of names in a string buys you anything?
> + fatal_error (
> + input_location,
> + "Unsupported cpu name returned from kernel for -mcpu=native: %s\n"
> + "Please use an explicit cpu name. Valid cpu names are: %s",
> + cpu, s);
"Valid cpu names are:\n" and then a loop printing each name? Or get
fancy and throw in newlines too so it even looks good.
Thanks,
Segher