Denis Chertykov wrote:
> 2011/12/19 Georg-Johann Lay <avr@>:
>> Joseph S. Myers wrote:
>>> On Sun, 18 Dec 2011, Georg-Johann Lay wrote:
>>>
>>>>> This new file needs to have the standard copyright and license notices.
>>>>> It's desirable to generate such notices in the output files as well.
>>>> What is the right copyright for the generated files?
>>> See other examples.
>> There is more than one flavour if the license... From what you wrote it's
>> okay
>> to use GPL in all cases even if included libgcc, so I used that text.
>>
>> Besides printing license, there are two minor changes compared to the
>> original
>> patch:
>>
>> * lib1funcs.S defines macro SPEED_DIV that trades speed against code size.
>> It uses __AVR_HAVE_8BIT_SP__ now to get better estimation of flash size.
>>
>> * avr-c.c use AVR_HAVE_8BIT_SP instead of avr_current_device->short_sp to
>> define respective built-in macros __AVR_HAVE_8/16BIT_SP__.
>>
>> Ok?
>>
>> Johann
>>
>> contrib/
>> PR target/51345
>> * gcc_update (files_and_dependencies): Add
>> gcc/config/avr/t-multilib, gcc/config/avr/multilib.h.
>>
>> libgcc/
>> PR target/51345
>> * config/avr/lib1funcs.S: Remove FIXME comments.
>> (SPEED_DIV): Depend on __AVR_HAVE_8BIT_SP__.
>> gcc/
>> PR target/51345
>> * config.gcc (tm_file target=avr]): Add avr/avr-multilib.h
>> (tmake_file target=avr): Add avr/t-multilib.
>>
>> * config/avr/avr-c.c (avr_cpu_cpp_builtins): Use AVR_HAVE_8BIT_SP
>> to built-in define __AVR_HAVE_8BIT_SP__, __AVR_HAVE_16BIT_SP__.
>> * config/avr/genmultilib.awk: New file.
>> * config/avr/t-multilib: New auto-generated file.
>> * config/avr/multilib.h: New auto-generated file.
>> * config/avr/t-avr (AVR_MCUS): New variable.
>> (genopt.sh): Use it.
>> (s-mlib): Depend on t-multilib.
>> (t-multilib, multilib.h): New dependencies.
>> (s-avr-mlib): New rule to build t-multilib, multilib.h from AVR_MCUS.
>> (MULTILIB_OPTIONS): Remove.
>> (MULTILIB_MATCHES): Remove.
>> (MULTILIB_DIRNAMES): Remove.
>> (MULTILIB_EXCEPTIONS): Remove:
>> * config/avr/genopt.sh: Don't use hard coded file name;
>> pass AVR_MCUS from t-avr instead.
>>
>
> Approved.
>
> Denis.
Applied with the following change. This is needed if older version of [g]awk is
installed that does not accept length() on arrays. The generated files are the
same.
Johann
diff --git a/gcc/config/avr/genmultilib.awk b/gcc/config/avr/genmultilib.awk
index bbff61c..7bc3b4a 100644
--- a/gcc/config/avr/genmultilib.awk
+++ b/gcc/config/avr/genmultilib.awk
@@ -36,6 +36,8 @@ BEGIN {
option[""] = ""
tiny_stack[""] = 1
comment = 1
+ n_mcu = 0
+ n_cores = 0
mtiny[0] = ""
mtiny[1] = "tiny-stack"
@@ -110,7 +112,8 @@ BEGIN {
if (core == "avr1")
next
- cores[length (cores)] = core
+ cores[n_cores] = core
+ n_cores++
tiny_stack[core] = 0
option[core] = "mmcu=" core
@@ -122,7 +125,8 @@ BEGIN {
next
tiny_stack[name] = $5
- mcu[length (mcu)] = name
+ mcu[n_mcu] = name
+ n_mcu++
option[name] = "mmcu=" name
toCore[name] = core
@@ -157,7 +161,7 @@ END {
# (avr2, avr25, ...) x mtiny-stack
sep = ""
- for (c = 0; c < length (cores); c++)
+ for (c = 0; c < n_cores; c++)
{
m_options = m_options sep option[cores[c]]
sep = "/"
@@ -175,7 +179,7 @@ END {
dot_excludes = ""
m_raw_sp8 = ""
- for (t = 0; t < length (mcu); t++)
+ for (t = 0; t < n_mcu; t++)
{
core = toCore[mcu[t]]
@@ -212,8 +216,9 @@ END {
####################################################################
# Compose MULTILIB_DIRNAMES, MULTILIB_EXEPTIONS and avr_multilib_raw
- for (t = 0; t < length (mtiny); t++)
- for (c = -1; c < length (cores); c++)
+ n_mtiny = 2
+ for (t = 0; t < n_mtiny; t++)
+ for (c = -1; c < n_cores; c++)
{
if (c == -1)
core = ""
@@ -255,7 +260,7 @@ END {
line = mdir
- for (s = 0; s < length (cores); s++)
+ for (s = 0; s < n_cores; s++)
{
if (cores[s] == core)
line = line " " option[cores[s]]