diff mbox series

tcg: Increase the static number of temporaries

Message ID 20210121025439.1120405-1-richard.henderson@linaro.org
State New
Headers show
Series tcg: Increase the static number of temporaries | expand

Commit Message

Richard Henderson Jan. 21, 2021, 2:54 a.m. UTC
This isn't a total or permanent solution to the problem of running
out of temporaries, but it puts off the issue for a bit.

Make the assert in tcg_temp_alloc unconditional.  If we do run out
of temps, this can fail much later as a weird SIGSEGV, due to the
buffer overrun of the temp array.

Remove the inlines from tcg_temp_alloc and tcg_global_alloc.

Buglink: https://bugs.launchpad.net/bugs/1912065
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---

There are more bugs that need fixing in order to actually make
the dynamic allocation scheme work.  Rather than keep this bug
pending longer, hack around it and make the SEGV an ABRT.

r~

---
 include/tcg/tcg.h | 2 +-
 tcg/tcg.c         | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

Comments

Philippe Mathieu-Daudé Jan. 21, 2021, 7:32 a.m. UTC | #1
On 1/21/21 3:54 AM, Richard Henderson wrote:
> This isn't a total or permanent solution to the problem of running
> out of temporaries, but it puts off the issue for a bit.
> 
> Make the assert in tcg_temp_alloc unconditional.  If we do run out
> of temps, this can fail much later as a weird SIGSEGV, due to the
> buffer overrun of the temp array.
> 
> Remove the inlines from tcg_temp_alloc and tcg_global_alloc.
> 
> Buglink: https://bugs.launchpad.net/bugs/1912065
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> 
> There are more bugs that need fixing in order to actually make
> the dynamic allocation scheme work.  Rather than keep this bug
> pending longer, hack around it and make the SEGV an ABRT.
> 
> r~
> 
> ---
>  include/tcg/tcg.h | 2 +-
>  tcg/tcg.c         | 6 +++---
>  2 files changed, 4 insertions(+), 4 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Alex Bennée Jan. 21, 2021, 12:10 p.m. UTC | #2
Richard Henderson <richard.henderson@linaro.org> writes:

> This isn't a total or permanent solution to the problem of running
> out of temporaries, but it puts off the issue for a bit.
>
> Make the assert in tcg_temp_alloc unconditional.  If we do run out
> of temps, this can fail much later as a weird SIGSEGV, due to the
> buffer overrun of the temp array.
>
> Remove the inlines from tcg_temp_alloc and tcg_global_alloc.
>
> Buglink: https://bugs.launchpad.net/bugs/1912065
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Laurent Vivier Jan. 23, 2021, 4:19 p.m. UTC | #3
Le 21/01/2021 à 03:54, Richard Henderson a écrit :
> This isn't a total or permanent solution to the problem of running
> out of temporaries, but it puts off the issue for a bit.
> 
> Make the assert in tcg_temp_alloc unconditional.  If we do run out
> of temps, this can fail much later as a weird SIGSEGV, due to the
> buffer overrun of the temp array.
> 
> Remove the inlines from tcg_temp_alloc and tcg_global_alloc.
> 
> Buglink: https://bugs.launchpad.net/bugs/1912065
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> 
> There are more bugs that need fixing in order to actually make
> the dynamic allocation scheme work.  Rather than keep this bug
> pending longer, hack around it and make the SEGV an ABRT.
> 
> r~
> 
> ---
>  include/tcg/tcg.h | 2 +-
>  tcg/tcg.c         | 6 +++---
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
> index c5a9d65d5f..0187de1352 100644
> --- a/include/tcg/tcg.h
> +++ b/include/tcg/tcg.h
> @@ -275,7 +275,7 @@ typedef struct TCGPool {
>  
>  #define TCG_POOL_CHUNK_SIZE 32768
>  
> -#define TCG_MAX_TEMPS 512
> +#define TCG_MAX_TEMPS 1024

This seems not enough, I have:

ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
Bail out! ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)

With my branch m68k-virt (68040 processor with virtio-mmio devices) booting debian sid.

Thanks,
Laurent
Laurent Vivier Jan. 23, 2021, 7:36 p.m. UTC | #4
Le 23/01/2021 à 17:19, Laurent Vivier a écrit :
> Le 21/01/2021 à 03:54, Richard Henderson a écrit :
>> This isn't a total or permanent solution to the problem of running
>> out of temporaries, but it puts off the issue for a bit.
>>
>> Make the assert in tcg_temp_alloc unconditional.  If we do run out
>> of temps, this can fail much later as a weird SIGSEGV, due to the
>> buffer overrun of the temp array.
>>
>> Remove the inlines from tcg_temp_alloc and tcg_global_alloc.
>>
>> Buglink: https://bugs.launchpad.net/bugs/1912065
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>>
>> There are more bugs that need fixing in order to actually make
>> the dynamic allocation scheme work.  Rather than keep this bug
>> pending longer, hack around it and make the SEGV an ABRT.
>>
>> r~
>>
>> ---
>>  include/tcg/tcg.h | 2 +-
>>  tcg/tcg.c         | 6 +++---
>>  2 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
>> index c5a9d65d5f..0187de1352 100644
>> --- a/include/tcg/tcg.h
>> +++ b/include/tcg/tcg.h
>> @@ -275,7 +275,7 @@ typedef struct TCGPool {
>>  
>>  #define TCG_POOL_CHUNK_SIZE 32768
>>  
>> -#define TCG_MAX_TEMPS 512
>> +#define TCG_MAX_TEMPS 1024
> 
> This seems not enough, I have:
> 
> ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
> Bail out! ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
> 
> With my branch m68k-virt (68040 processor with virtio-mmio devices) booting debian sid.

The cause of the overflow is this sequence:

----------------
IN:
0xc0f0520c:  movel %a5,%sp@-
0xc0f0520e:  lea %pc@(0xc1805000),%a5
0xc0f05216:  moveal %sp@(12),%a0
0xc0f0521a:  movel %a5@(61a0),%a0@
0xc0f05222:  movel %a5@(4fd4),%a0@(180)
0xc0f0522c:  movel %a5@(8af4),%a0@(184)
0xc0f05236:  movel %a5@(6328),%a0@(188)
0xc0f05240:  movel %a5@(2530),%a0@(172)
0xc0f0524a:  movel %a5@(61fc),%a0@(176)
0xc0f05254:  movel %a5@(5848),%a0@(24)
0xc0f0525e:  movel %a5@(d398),%a0@(28)
0xc0f05268:  movel %a5@(53ec),%a0@(32)
0xc0f05272:  movel %a5@(17774),%a0@(36)
0xc0f0527c:  movel %a5@(f748),%a0@(40)
0xc0f05286:  movel %a5@(551c),%a0@(44)
0xc0f05290:  movel %a5@(36ac),%a0@(4)
0xc0f0529a:  movel %a5@(68a0),%a0@(8)
0xc0f052a4:  movel %a5@(54c0),%a0@(12)
0xc0f052ae:  movel %a5@(4354),%a0@(16)
0xc0f052b8:  movel %a5@(5eb0),%a0@(48)
0xc0f052c2:  movel %a5@(5ee4),%a0@(52)
0xc0f052cc:  movel %a5@(5894),%a0@(68)
0xc0f052d6:  movel %a5@(5924),%a0@(72)
0xc0f052e0:  movel %a5@(c8fc),%a0@(76)
0xc0f052ea:  movel %a5@(3248),%a0@(80)
0xc0f052f4:  movel %a5@(bcd0),%a0@(84)
0xc0f052fe:  movel %a5@(9a38),%a0@(88)
0xc0f05308:  movel %a5@(e2e8),%a0@(92)
0xc0f05312:  movel %a5@(dd50),%a0@(96)
0xc0f0531c:  movel %a5@(62b0),%a0@(100)
0xc0f05326:  movel %a5@(20a0),%a0@(104)
0xc0f05330:  movel %a5@(527c),%a0@(108)
0xc0f0533a:  movel %a5@(41ec),%a0@(112)
0xc0f05344:  movel %a5@(33dc),%a0@(116)
0xc0f0534e:  movel %a5@(423c),%a0@(120)
0xc0f05358:  movel %a5@(9728),%a0@(124)
0xc0f05362:  movel %a5@(3fe4),%a0@(128)
0xc0f0536c:  movel %a5@(1018c),%a0@(132)
0xc0f05376:  movel %a5@(7b54),%a0@(136)
0xc0f05380:  movel %a5@(121e8),%a0@(140)
0xc0f0538a:  movel %a5@(550c),%a0@(144)
0xc0f05394:  movel %a5@(b4a8),%a0@(148)
0xc0f0539e:  movel %a5@(6a20),%a0@(152)
0xc0f053a8:  movel %a5@(56e0),%a0@(156)
0xc0f053b2:  movel %a5@(10c9c),%a0@(160)
0xc0f053bc:  movel %a5@(a4e8),%a0@(164)
0xc0f053c6:  movel %a5@(9d58),%a0@(168)
0xc0f053d0:  movel %a5@(6e2c),%a0@(224)
0xc0f053da:  movel %a5@(4e28),%a0@(228)
0xc0f053e4:  movel %a5@(152e0),%a0@(232)
0xc0f053ee:  movel %a5@(7e3c),%a0@(236)
0xc0f053f8:  movel %a5@(15b10),%a0@(240)
0xc0f05402:  movel %a5@(4578),%a0@(244)
0xc0f0540c:  movel %a5@(11e98),%a0@(248)
0xc0f05416:  movel %a5@(44b8),%a0@(252)
0xc0f05420:  movel %a5@(72a0),%a0@(504)
0xc0f0542a:  movel %a5@(308c),%a0@(508)
0xc0f05434:  movel %a5@(4f40),%a0@(512)
0xc0f0543e:  movel %a5@(8c04),%a0@(516)
0xc0f05448:  movel %a5@(b328),%a0@(520)
0xc0f05452:  movel %a5@(4e40),%a0@(524)
0xc0f0545c:  movel %a5@(4954),%a0@(528)
0xc0f05466:  movel %a5@(14f48),%a0@(532)
0xc0f05470:  movel %a5@(15c2c),%a0@(536)
0xc0f0547a:  movel %a5@(4bf0),%a0@(540)
0xc0f05484:  movel %a5@(66b4),%a0@(544)
0xc0f0548e:  movel %a5@(3768),%a0@(548)
0xc0f05498:  movel %a5@(111e4),%a0@(552)
0xc0f054a2:  movel %a5@(414c),%a0@(556)
0xc0f054ac:  movel %a5@(14eb8),%a0@(560)
0xc0f054b6:  movel %a5@(6fec),%a0@(564)
0xc0f054c0:  movel %a5@(48c0),%a0@(568)
0xc0f054ca:  movel %a5@(4494),%a0@(572)
0xc0f054d4:  movel %a5@(7534),%a0@(576)
0xc0f054de:  movel %a5@(c1ec),%a0@(580)
0xc0f054e8:  movel %a5@(636c),%a0@(584)
0xc0f054f2:  movel %a5@(a5a0),%a0@(588)
0xc0f054fc:  movel %a5@(8734),%a0@(592)
0xc0f05506:  movel %a5@(3f94),%a0@(596)
0xc0f05510:  movel %a5@(11910),%a0@(600)
0xc0f0551a:  movel %a5@(119e4),%a0@(604)
0xc0f05524:  movel %a5@(5efc),%a0@(608)
0xc0f0552e:  movel %a5@(284c),%a0@(612)
0xc0f05538:  movel %a5@(4b58),%a0@(616)
0xc0f05542:  movel %a5@(4084),%a0@(620)
0xc0f0554c:  movel %a5@(3f80),%a0@(624)
0xc0f05556:  movel %a5@(d990),%a0@(628)
0xc0f05560:  movel %a5@(6c30),%a0@(192)
0xc0f0556a:  movel %a5@(7350),%a0@(196)
0xc0f05574:  movel %a5@(61ec),%a0@(200)
0xc0f0557e:  movel %a5@(4840),%a0@(204)
0xc0f05588:  movel %a5@(5414),%a0@(208)
0xc0f05592:  movel %a5@(3f1c),%a0@(212)
0xc0f0559c:  movel %a5@(53cc),%a0@(216)
0xc0f055a6:  movel %a5@(3e04),%a0@(220)
0xc0f055b0:  movel %a5@(13ae0),%a0@(256)
0xc0f055ba:  movel %a5@(902c),%a0@(260)
0xc0f055c4:  movel %a5@(1455c),%a0@(264)
0xc0f055ce:  movel %a5@(4a80),%a0@(268)
0xc0f055d8:  movel %a5@(1cb8),%a0@(272)
0xc0f055e2:  movel %a5@(3350),%a0@(276)
0xc0f055ec:  movel %a5@(6184),%a0@(280)
0xc0f055f6:  movel %a5@(4908),%a0@(284)
0xc0f05600:  movel %a5@(609c),%a0@(288)
0xc0f0560a:  movel %a5@(a348),%a0@(292)
0xc0f05614:  movel %a5@(9dbc),%a0@(296)
0xc0f0561e:  movel %a5@(4784),%a0@(300)
0xc0f05628:  movel %a5@(16fbc),%a0@(304)
0xc0f05632:  movel %a5@(3f78),%a0@(308)
0xc0f0563c:  movel %a5@(7128),%a0@(64)
0xc0f05646:  movel %a5@(7934),%a0@(20)
0xc0f05650:  movel %a5@(15e50),%a0@(56)
0xc0f0565a:  movel %a5@(41c4),%a0@(60)
0xc0f05664:  movel %a5@(7210),%a0@(312)
0xc0f0566e:  movel %a5@(14fc0),%a0@(316)
0xc0f05678:  movel %a5@(165f8),%a0@(320)
0xc0f05682:  movel %a5@(8e8c),%a0@(324)
0xc0f0568c:  movel %a5@(5008),%a0@(328)
0xc0f05696:  movel %a5@(66a0),%a0@(332)
0xc0f056a0:  movel %a5@(d53c),%a0@(336)
0xc0f056aa:  movel %a5@(44f8),%a0@(340)
0xc0f056b4:  movel %a5@(1534),%a0@(344)
0xc0f056be:  movel %a5@(3554),%a0@(348)
0xc0f056c8:  movel %a5@(13af8),%a0@(352)
0xc0f056d2:  movel %a5@(7758),%a0@(356)
0xc0f056dc:  movel %a5@(3434),%a0@(360)
0xc0f056e6:  movel %a5@(25b0),%a0@(364)
0xc0f056f0:  movel %a5@(14b68),%a0@(368)
0xc0f056fa:  movel %a5@(6a84),%a0@(372)
0xc0f05704:  movel %a5@(69bc),%a0@(376)
0xc0f0570e:  movel %a5@(2550),%a0@(380)
0xc0f05718:  movel %a5@(4438),%a0@(384)
0xc0f05722:  movel %a5@(1686c),%a0@(388)
0xc0f0572c:  movel %a5@(58ec),%a0@(392)
0xc0f05736:  movel %a5@(2610),%a0@(396)
0xc0f05740:  movel %a5@(1585c),%a0@(400)
0xc0f0574a:  movel %a5@(13468),%a0@(404)
0xc0f05754:  movel %a5@(1504),%a0@(408)
0xc0f0575e:  movel %a5@(160c),%a0@(412)
0xc0f05768:  movel %a5@(42b8),%a0@(416)
0xc0f05772:  movel %a5@(139dc),%a0@(420)
0xc0f0577c:  movel %a5@(33a4),%a0@(424)
0xc0f05786:  movel %a5@(b6cc),%a0@(428)
0xc0f05790:  movel %a5@(12cb4),%a0@(432)
0xc0f0579a:  movel %a5@(d530),%a0@(448)
0xc0f057a4:  movel %a5@(64a0),%a0@(436)
0xc0f057ae:  movel %a5@(18b58),%a0@(452)
0xc0f057b8:  movel %a5@(4e4c),%a0@(440)
0xc0f057c2:  movel %a5@(12b64),%a0@(456)
0xc0f057cc:  movel %a5@(8628),%a0@(444)
0xc0f057d6:  movel %a5@(11d4c),%a0@(460)
0xc0f057e0:  movel %a5@(5890),%a0@(464)
0xc0f057ea:  movel %a5@(2248),%a0@(468)
0xc0f057f4:  movel %a5@(5cfc),%a0@(472)
0xc0f057fe:  movel %a5@(4b74),%a0@(476)
0xc0f05808:  movel %a5@(5c24),%a0@(480)
0xc0f05812:  movel %a5@(4aa0),%a0@(484)
0xc0f0581c:  movel %a5@(16ff0),%a0@(488)
0xc0f05826:  movel %a5@(9520),%a0@(492)
0xc0f05830:  movel %a5@(110f0),%a0@(496)
0xc0f0583a:  movel %a5@(3bb8),%a0@(500)
0xc0f05844:  movel %a5@(ceec),%a0@(712)
0xc0f0584e:  movel %a5@(470c),%a0@(1100)
0xc0f05858:  movel %a5@(5c70),%a0@(632)
0xc0f05862:  movel %a5@(8a5c),%a0@(636)
0xc0f0586c:  movel %a5@(6098),%a0@(640)
0xc0f05876:  movel %a5@(6124),%a0@(644)
0xc0f05880:  movel %a5@(11688),%a0@(648)
0xc0f0588a:  movel %a5@(4928),%a0@(652)
0xc0f05894:  movel %a5@(1214c),%a0@(656)
0xc0f0589e:  movel %a5@(559c),%a0@(688)
0xc0f058a8:  movel %a5@(12394),%a0@(692)
0xc0f058b2:  movel %a5@(47b4),%a0@(696)
0xc0f058bc:  movel %a5@(43c0),%a0@(700)
0xc0f058c6:  movel %a5@(fc4c),%a0@(704)
0xc0f058d0:  movel %a5@(6e44),%a0@(708)
0xc0f058da:  movel %a5@(305c),%a0@(660)
0xc0f058e4:  movel %a5@(9e68),%a0@(664)
0xc0f058ee:  movel %a5@(1636c),%a0@(668)
0xc0f058f8:  movel %a5@(2b34),%a0@(672)
0xc0f05902:  movel %a5@(bee8),%a0@(676)
0xc0f0590c:  movel %a5@(8780),%a0@(680)
0xc0f05916:  movel %a5@(a10c),%a0@(684)
0xc0f05920:  movel %a5@(2bc4),%a0@(720)
0xc0f0592a:  movel %a5@(3888),%a0@(724)
0xc0f05934:  movel %a5@(6d3c),%a0@(716)
0xc0f0593e:  movel %a5@(804c),%a0@(728)
0xc0f05948:  movel %a5@(4584),%a0@(732)
0xc0f05952:  movel %a5@(141b4),%a0@(736)
0xc0f0595c:  movel %a5@(39a8),%a0@(740)
0xc0f05966:  movel %a5@(5324),%a0@(1112)
0xc0f05970:  movel %a5@(2b08),%a0@(1116)
0xc0f0597a:  movel %a5@(43d0),%a0@(1120)
0xc0f05984:  movel %a5@(5270),%a0@(1124)
0xc0f0598e:  movel %a5@(2888),%a0@(1128)
0xc0f05998:  movel %a5@(ca6c),%a0@(1132)
0xc0f059a2:  movel %a5@(854c),%a0@(1136)
0xc0f059ac:  movel %a5@(2110),%a0@(1140)
0xc0f059b6:  movel %a5@(49c0),%a0@(1144)
0xc0f059c0:  movel %a5@(4b40),%a0@(1148)
0xc0f059ca:  movel %a5@(ee34),%a0@(1152)
0xc0f059d4:  movel %a5@(2ffc),%a0@(1156)
0xc0f059de:  movel %a5@(11f14),%a0@(1160)
0xc0f059e8:  movel %a5@(4a24),%a0@(1164)
0xc0f059f2:  movel %a5@(4124),%a0@(784)
0xc0f059fc:  movel %a5@(77e8),%a0@(752)
0xc0f05a06:  movel %a5@(2c9c),%a0@(756)
0xc0f05a10:  movel %a5@(58f4),%a0@(760)
0xc0f05a1a:  movel %a5@(169bc),%a0@(764)
0xc0f05a24:  movel %a5@(6680),%a0@(768)
0xc0f05a2e:  movel %a5@(11320),%a0@(772)
0xc0f05a38:  movel %a5@(2010),%a0@(776)
0xc0f05a42:  movel %a5@(40fc),%a0@(780)
0xc0f05a4c:  movel %a5@(7884),%a0@(788)
0xc0f05a56:  movel %a5@(17c84),%a0@(792)
0xc0f05a60:  movel %a5@(78c4),%a0@(796)
0xc0f05a6a:  movel %a5@(ba00),%a0@(800)
0xc0f05a74:  movel %a5@(2f3c),%a0@(804)
0xc0f05a7e:  movel %a5@(2f54),%a0@(808)
0xc0f05a88:  movel %a5@(f7a4),%a0@(812)
0xc0f05a92:  movel %a5@(2ef4),%a0@(816)
0xc0f05a9c:  movel %a5@(3abc),%a0@(820)
0xc0f05aa6:  movel %a5@(d8e8),%a0@(824)
0xc0f05ab0:  movel %a5@(7d70),%a0@(828)
0xc0f05aba:  movel %a5@(2f0c),%a0@(832)
0xc0f05ac4:  movel %a5@(67bc),%a0@(836)
0xc0f05ace:  movel %a5@(62f8),%a0@(840)
0xc0f05ad8:  movel %a5@(475c),%a0@(844)
0xc0f05ae2:  movel %a5@(4a78),%a0@(848)
0xc0f05aec:  movel %a5@(49b4),%a0@(852)
0xc0f05af6:  movel %a5@(4ee4),%a0@(856)
0xc0f05b00:  movel %a5@(41e4),%a0@(860)
0xc0f05b0a:  movel %a5@(34f4),%a0@(864)
0xc0f05b14:  movel %a5@(2f6c),%a0@(868)
0xc0f05b1e:  movel %a5@(5688),%a0@(872)
0xc0f05b28:  movel %a5@(10cbc),%a0@(876)
0xc0f05b32:  movel %a5@(7658),%a0@(880)
0xc0f05b3c:  movel %a5@(2d44),%a0@(884)
0xc0f05b46:  movel %a5@(5d44),%a0@(888)
0xc0f05b50:  movel %a5@(c6f4),%a0@(892)
0xc0f05b5a:  movel %a5@(11f34),%a0@(896)
0xc0f05b64:  movel %a5@(5378),%a0@(900)
0xc0f05b6e:  movel %a5@(2070),%a0@(904)
0xc0f05b78:  movel %a5@(2dd4),%a0@(908)
0xc0f05b82:  movel %a5@(9ff8),%a0@(912)
0xc0f05b8c:  movel %a5@(5e18),%a0@(916)
0xc0f05b96:  movel %a5@(5fe4),%a0@(920)
0xc0f05ba0:  movel %a5@(4f04),%a0@(924)
0xc0f05baa:  movel %a5@(6c24),%a0@(928)
0xc0f05bb4:  movel %a5@(6d48),%a0@(932)
0xc0f05bbe:  movel %a5@(6da0),%a0@(936)
0xc0f05bc8:  movel %a5@(421c),%a0@(940)
0xc0f05bd2:  movel %a5@(4794),%a0@(944)
0xc0f05bdc:  movel %a5@(5150),%a0@(948)
0xc0f05be6:  movel %a5@(590c),%a0@(952)
0xc0f05bf0:  movel %a5@(2e1c),%a0@(956)
0xc0f05bfa:  movel %a5@(16e34),%a0@(960)
0xc0f05c04:  movel %a5@(2e4c),%a0@(964)
0xc0f05c0e:  movel %a5@(6934),%a0@(968)
0xc0f05c18:  movel %a5@(98dc),%a0@(972)
0xc0f05c22:  movel %a5@(9014),%a0@(976)
0xc0f05c2c:  movel %a5@(df58),%a0@(980)
0xc0f05c36:  movel %a5@(2c54),%a0@(984)
0xc0f05c40:  movel %a5@(f644),%a0@(988)
0xc0f05c4a:  movel %a5@(6164),%a0@(992)
0xc0f05c54:  movel %a5@(7344),%a0@(996)
0xc0f05c5e:  movel %a5@(11224),%a0@(1000)
0xc0f05c68:  movel %a5@(7df4),%a0@(1004)
0xc0f05c72:  movel %a5@(6a14),%a0@(1008)
0xc0f05c7c:  movel %a5@(5438),%a0@(1012)
0xc0f05c86:  movel %a5@(3c9c),%a0@(1016)
0xc0f05c90:  movel %a5@(54a8),%a0@(1020)
0xc0f05c9a:  movel %a5@(11388),%a0@(1024)
0xc0f05ca4:  movel %a5@(3104),%a0@(1028)
0xc0f05cae:  movel %a5@(11408),%a0@(1032)
0xc0f05cb8:  movel %a5@(557c),%a0@(1036)
0xc0f05cc2:  movel %a5@(a6b4),%a0@(1040)
0xc0f05ccc:  movel %a5@(3194),%a0@(1044)
0xc0f05cd6:  movel %a5@(11bc4),%a0@(1048)
0xc0f05ce0:  movel %a5@(31dc),%a0@(1052)
0xc0f05cea:  movel %a5@(6e68),%a0@(1056)
0xc0f05cf4:  movel %a5@(10c48),%a0@(1060)
0xc0f05cfe:  movel %a5@(c158),%a0@(1064)
0xc0f05d08:  movel %a5@(326c),%a0@(1068)
0xc0f05d12:  movel %a5@(3bd4),%a0@(1072)
0xc0f05d1c:  movel %a5@(a4b8),%a0@(1076)
0xc0f05d26:  movel %a5@(a518),%a0@(1080)
0xc0f05d30:  movel %a5@(3948),%a0@(1084)
0xc0f05d3a:  movel %a5@(4830),%a0@(1088)
0xc0f05d44:  movel %a5@(2f24),%a0@(1092)
0xc0f05d4e:  movel %a5@(1443c),%a0@(1096)
0xc0f05d58:  movel %a5@(5c44),%a0@(1104)
0xc0f05d62:  movel %a5@(7234),%a0@(1108)
0xc0f05d6c:  movel %a5@(7a24),%a0@(744)
0xc0f05d76:  movel %a5@(6fc4),%a0@(748)
0xc0f05d80:  movel %a5@(44f0),%a0@(1168)
0xc0f05d8a:  movel %a5@(5780),%a0@(1172)
0xc0f05d94:  movel %a5@(5d58),%a0@(1176)
0xc0f05d9e:  movel %a5@(40cc),%a0@(1180)
0xc0f05da8:  movel %a5@(f778),%a0@(1184)
0xc0f05db2:  movel %a5@(69a0),%a0@(1188)
0xc0f05dbc:  movel %a5@(7b1c),%a0@(1192)
0xc0f05dc6:  movel %a5@(f6dc),%a0@(1196)
0xc0f05dd0:  movel %a5@(1f3c),%a0@(1200)
0xc0f05dda:  movel %a5@(12244),%a0@(1204)
0xc0f05de4:  movel %a5@(3b34),%a0@(1208)
0xc0f05dee:  movel %a5@(7078),%a0@(1212)
0xc0f05df8:  movel %a5@(6088),%a0@(1216)
0xc0f05e02:  movel %a5@(5000),%a0@(1220)
0xc0f05e0c:  movel %a5@(6ca8),%a0@(1224)
0xc0f05e16:  movel %a5@(6ce8),%a0@(1228)
0xc0f05e20:  movel %a5@(b888),%a0@(1232)
0xc0f05e2a:  movel %a5@(3ea4),%a0@(1236)
0xc0f05e34:  movel %a5@(4838),%a0@(1240)
0xc0f05e3e:  movel %a5@(5b94),%a0@(1244)
0xc0f05e48:  movel %a5@(41f0),%a0@(1248)
0xc0f05e52:  movel %a5@(4220),%a0@(1252)
0xc0f05e5c:  movel %a5@(1057c),%a0@(1256)
0xc0f05e66:  movel %a5@(4280),%a0@(1260)
0xc0f05e70:  movel %a5@(42b0),%a0@(1264)
0xc0f05e7a:  movel %a5@(892c),%a0@(1268)
0xc0f05e84:  movel %a5@(4310),%a0@(1272)
0xc0f05e8e:  movel %a5@(7bb4),%a0@(1276)
0xc0f05e98:  movel %a5@(5d70),%a0@(1280)
0xc0f05ea2:  movel %a5@(43a0),%a0@(1284)
0xc0f05eac:  movel %a5@(1425c),%a0@(1288)
0xc0f05eb6:  movel %a5@(856c),%a0@(1292)
0xc0f05ec0:  movel %a5@(12b44),%a0@(1296)
0xc0f05eca:  movel %a5@(586c),%a0@(1300)
0xc0f05ed4:  movel %a5@(33ac),%a0@(1304)
0xc0f05ede:  movel %a5@(7974),%a0@(1308)
0xc0f05ee8:  movel %a5@(6a74),%a0@(1312)
0xc0f05ef2:  movel %a5@(157b8),%a0@(1316)
0xc0f05efc:  movel %a5@(d3fc),%a0@(1320)
0xc0f05f06:  movel %a5@(8430),%a0@(1324)
0xc0f05f10:  movel %a5@(31b4),%a0@(1328)
0xc0f05f1a:  movel %a5@(70c8),%a0@(1332)
0xc0f05f24:  movel %a5@(5404),%a0@(1336)
0xc0f05f2e:  movel %a5@(136a0),%a0@(1340)
0xc0f05f38:  movel %a5@(243c),%a0@(1344)
0xc0f05f42:  movel %a5@(5768),%a0@(1348)
0xc0f05f4c:  movel %a5@(23c4),%a0@(1352)
0xc0f05f56:  movel %a5@(15058),%a0@(1388)
0xc0f05f60:  movel %a5@(5104),%a0@(1392)
0xc0f05f6a:  movel %a5@(116f4),%a0@(1356)
0xc0f05f74:  movel %a5@(6ac4),%a0@(1360)
0xc0f05f7e:  movel %a5@(11448),%a0@(1364)
0xc0f05f88:  movel %a5@(3ee0),%a0@(1368)
0xc0f05f92:  movel %a5@(3e68),%a0@(1372)
0xc0f05f9c:  movel %a5@(16ac),%a0@(1376)
0xc0f05fa6:  movel %a5@(677c),%a0@(1380)
0xc0f05fb0:  movel %a5@(1664),%a0@(1396)
0xc0f05fba:  movel %a5@(13004),%a0@(1384)
0xc0f05fc4:  movel %a5@(161c),%a0@(1400)
0xc0f05fce:  movel %a5@(9d2c),%a0@(1404)
0xc0f05fd8:  movel %a5@(6414),%a0@(1408)
Richard Henderson Jan. 23, 2021, 10:18 p.m. UTC | #5
On 1/23/21 9:36 AM, Laurent Vivier wrote:
>>> -#define TCG_MAX_TEMPS 512
>>> +#define TCG_MAX_TEMPS 1024
>>
>> This seems not enough, I have:
>>
>> ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
>> Bail out! ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
>>
>> With my branch m68k-virt (68040 processor with virtio-mmio devices) booting debian sid.
> 
> The cause of the overflow is this sequence:

Thanks for the test case.  I was able to reproduce this with m68k-linux-user.
This TB uses 1063 separate constants.  :-/


r~
Alex Bennée Jan. 25, 2021, 9:31 a.m. UTC | #6
Laurent Vivier <laurent@vivier.eu> writes:

> Le 23/01/2021 à 17:19, Laurent Vivier a écrit :
>> Le 21/01/2021 à 03:54, Richard Henderson a écrit :
>>> This isn't a total or permanent solution to the problem of running
>>> out of temporaries, but it puts off the issue for a bit.
>>>
>>> Make the assert in tcg_temp_alloc unconditional.  If we do run out
>>> of temps, this can fail much later as a weird SIGSEGV, due to the
>>> buffer overrun of the temp array.
>>>
>>> Remove the inlines from tcg_temp_alloc and tcg_global_alloc.
>>>
>>> Buglink: https://bugs.launchpad.net/bugs/1912065
>>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>>> ---
>>>
>>> There are more bugs that need fixing in order to actually make
>>> the dynamic allocation scheme work.  Rather than keep this bug
>>> pending longer, hack around it and make the SEGV an ABRT.
>>>
>>> r~
>>>
>>> ---
>>>  include/tcg/tcg.h | 2 +-
>>>  tcg/tcg.c         | 6 +++---
>>>  2 files changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
>>> index c5a9d65d5f..0187de1352 100644
>>> --- a/include/tcg/tcg.h
>>> +++ b/include/tcg/tcg.h
>>> @@ -275,7 +275,7 @@ typedef struct TCGPool {
>>>  
>>>  #define TCG_POOL_CHUNK_SIZE 32768
>>>  
>>> -#define TCG_MAX_TEMPS 512
>>> +#define TCG_MAX_TEMPS 1024
>> 
>> This seems not enough, I have:
>> 
>> ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
>> Bail out! ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
>> 
>> With my branch m68k-virt (68040 processor with virtio-mmio devices) booting debian sid.
>
> The cause of the overflow is this sequence:
>
> ----------------
> IN:
> 0xc0f0520c:  movel %a5,%sp@-
> 0xc0f0520e:  lea %pc@(0xc1805000),%a5
> 0xc0f05216:  moveal %sp@(12),%a0
> 0xc0f0521a:  movel %a5@(61a0),%a0@
> 0xc0f05222:  movel %a5@(4fd4),%a0@(180)
> 0xc0f0522c:  movel %a5@(8af4),%a0@(184)
> 0xc0f05236:  movel %a5@(6328),%a0@(188)
> 0xc0f05240:  movel %a5@(2530),%a0@(172)
> 0xc0f0524a:  movel %a5@(61fc),%a0@(176)
> 0xc0f05254:  movel %a5@(5848),%a0@(24)
> 0xc0f0525e:  movel %a5@(d398),%a0@(28)
> 0xc0f05268:  movel %a5@(53ec),%a0@(32)
> 0xc0f05272:  movel %a5@(17774),%a0@(36)
> 0xc0f0527c:  movel %a5@(f748),%a0@(40)
> 0xc0f05286:  movel %a5@(551c),%a0@(44)
> 0xc0f05290:  movel %a5@(36ac),%a0@(4)
> 0xc0f0529a:  movel %a5@(68a0),%a0@(8)
> 0xc0f052a4:  movel %a5@(54c0),%a0@(12)
> 0xc0f052ae:  movel %a5@(4354),%a0@(16)
> 0xc0f052b8:  movel %a5@(5eb0),%a0@(48)
> 0xc0f052c2:  movel %a5@(5ee4),%a0@(52)
> 0xc0f052cc:  movel %a5@(5894),%a0@(68)
> 0xc0f052d6:  movel %a5@(5924),%a0@(72)
> 0xc0f052e0:  movel %a5@(c8fc),%a0@(76)
> 0xc0f052ea:  movel %a5@(3248),%a0@(80)
> 0xc0f052f4:  movel %a5@(bcd0),%a0@(84)
> 0xc0f052fe:  movel %a5@(9a38),%a0@(88)
> 0xc0f05308:  movel %a5@(e2e8),%a0@(92)
> 0xc0f05312:  movel %a5@(dd50),%a0@(96)
> 0xc0f0531c:  movel %a5@(62b0),%a0@(100)
> 0xc0f05326:  movel %a5@(20a0),%a0@(104)
> 0xc0f05330:  movel %a5@(527c),%a0@(108)
> 0xc0f0533a:  movel %a5@(41ec),%a0@(112)
> 0xc0f05344:  movel %a5@(33dc),%a0@(116)
> 0xc0f0534e:  movel %a5@(423c),%a0@(120)
> 0xc0f05358:  movel %a5@(9728),%a0@(124)
> 0xc0f05362:  movel %a5@(3fe4),%a0@(128)
> 0xc0f0536c:  movel %a5@(1018c),%a0@(132)
> 0xc0f05376:  movel %a5@(7b54),%a0@(136)
> 0xc0f05380:  movel %a5@(121e8),%a0@(140)
> 0xc0f0538a:  movel %a5@(550c),%a0@(144)
> 0xc0f05394:  movel %a5@(b4a8),%a0@(148)
> 0xc0f0539e:  movel %a5@(6a20),%a0@(152)
> 0xc0f053a8:  movel %a5@(56e0),%a0@(156)
> 0xc0f053b2:  movel %a5@(10c9c),%a0@(160)
> 0xc0f053bc:  movel %a5@(a4e8),%a0@(164)
> 0xc0f053c6:  movel %a5@(9d58),%a0@(168)
> 0xc0f053d0:  movel %a5@(6e2c),%a0@(224)
> 0xc0f053da:  movel %a5@(4e28),%a0@(228)
> 0xc0f053e4:  movel %a5@(152e0),%a0@(232)
> 0xc0f053ee:  movel %a5@(7e3c),%a0@(236)
> 0xc0f053f8:  movel %a5@(15b10),%a0@(240)
> 0xc0f05402:  movel %a5@(4578),%a0@(244)
> 0xc0f0540c:  movel %a5@(11e98),%a0@(248)
> 0xc0f05416:  movel %a5@(44b8),%a0@(252)
> 0xc0f05420:  movel %a5@(72a0),%a0@(504)
> 0xc0f0542a:  movel %a5@(308c),%a0@(508)
> 0xc0f05434:  movel %a5@(4f40),%a0@(512)
> 0xc0f0543e:  movel %a5@(8c04),%a0@(516)
> 0xc0f05448:  movel %a5@(b328),%a0@(520)
> 0xc0f05452:  movel %a5@(4e40),%a0@(524)
> 0xc0f0545c:  movel %a5@(4954),%a0@(528)
> 0xc0f05466:  movel %a5@(14f48),%a0@(532)
> 0xc0f05470:  movel %a5@(15c2c),%a0@(536)
> 0xc0f0547a:  movel %a5@(4bf0),%a0@(540)
> 0xc0f05484:  movel %a5@(66b4),%a0@(544)
> 0xc0f0548e:  movel %a5@(3768),%a0@(548)
> 0xc0f05498:  movel %a5@(111e4),%a0@(552)
> 0xc0f054a2:  movel %a5@(414c),%a0@(556)
> 0xc0f054ac:  movel %a5@(14eb8),%a0@(560)
> 0xc0f054b6:  movel %a5@(6fec),%a0@(564)
> 0xc0f054c0:  movel %a5@(48c0),%a0@(568)
> 0xc0f054ca:  movel %a5@(4494),%a0@(572)
> 0xc0f054d4:  movel %a5@(7534),%a0@(576)
> 0xc0f054de:  movel %a5@(c1ec),%a0@(580)
> 0xc0f054e8:  movel %a5@(636c),%a0@(584)
> 0xc0f054f2:  movel %a5@(a5a0),%a0@(588)
> 0xc0f054fc:  movel %a5@(8734),%a0@(592)
> 0xc0f05506:  movel %a5@(3f94),%a0@(596)
> 0xc0f05510:  movel %a5@(11910),%a0@(600)
> 0xc0f0551a:  movel %a5@(119e4),%a0@(604)
> 0xc0f05524:  movel %a5@(5efc),%a0@(608)
> 0xc0f0552e:  movel %a5@(284c),%a0@(612)
> 0xc0f05538:  movel %a5@(4b58),%a0@(616)
> 0xc0f05542:  movel %a5@(4084),%a0@(620)
> 0xc0f0554c:  movel %a5@(3f80),%a0@(624)
> 0xc0f05556:  movel %a5@(d990),%a0@(628)
> 0xc0f05560:  movel %a5@(6c30),%a0@(192)
> 0xc0f0556a:  movel %a5@(7350),%a0@(196)
> 0xc0f05574:  movel %a5@(61ec),%a0@(200)
> 0xc0f0557e:  movel %a5@(4840),%a0@(204)
> 0xc0f05588:  movel %a5@(5414),%a0@(208)
> 0xc0f05592:  movel %a5@(3f1c),%a0@(212)
> 0xc0f0559c:  movel %a5@(53cc),%a0@(216)
> 0xc0f055a6:  movel %a5@(3e04),%a0@(220)
> 0xc0f055b0:  movel %a5@(13ae0),%a0@(256)
> 0xc0f055ba:  movel %a5@(902c),%a0@(260)
> 0xc0f055c4:  movel %a5@(1455c),%a0@(264)
> 0xc0f055ce:  movel %a5@(4a80),%a0@(268)
> 0xc0f055d8:  movel %a5@(1cb8),%a0@(272)
> 0xc0f055e2:  movel %a5@(3350),%a0@(276)
> 0xc0f055ec:  movel %a5@(6184),%a0@(280)
> 0xc0f055f6:  movel %a5@(4908),%a0@(284)
> 0xc0f05600:  movel %a5@(609c),%a0@(288)
> 0xc0f0560a:  movel %a5@(a348),%a0@(292)
> 0xc0f05614:  movel %a5@(9dbc),%a0@(296)
> 0xc0f0561e:  movel %a5@(4784),%a0@(300)
> 0xc0f05628:  movel %a5@(16fbc),%a0@(304)
> 0xc0f05632:  movel %a5@(3f78),%a0@(308)
> 0xc0f0563c:  movel %a5@(7128),%a0@(64)
> 0xc0f05646:  movel %a5@(7934),%a0@(20)
> 0xc0f05650:  movel %a5@(15e50),%a0@(56)
> 0xc0f0565a:  movel %a5@(41c4),%a0@(60)
> 0xc0f05664:  movel %a5@(7210),%a0@(312)
> 0xc0f0566e:  movel %a5@(14fc0),%a0@(316)
> 0xc0f05678:  movel %a5@(165f8),%a0@(320)
> 0xc0f05682:  movel %a5@(8e8c),%a0@(324)
> 0xc0f0568c:  movel %a5@(5008),%a0@(328)
> 0xc0f05696:  movel %a5@(66a0),%a0@(332)
> 0xc0f056a0:  movel %a5@(d53c),%a0@(336)
> 0xc0f056aa:  movel %a5@(44f8),%a0@(340)
> 0xc0f056b4:  movel %a5@(1534),%a0@(344)
> 0xc0f056be:  movel %a5@(3554),%a0@(348)
> 0xc0f056c8:  movel %a5@(13af8),%a0@(352)
> 0xc0f056d2:  movel %a5@(7758),%a0@(356)
> 0xc0f056dc:  movel %a5@(3434),%a0@(360)
> 0xc0f056e6:  movel %a5@(25b0),%a0@(364)
> 0xc0f056f0:  movel %a5@(14b68),%a0@(368)
> 0xc0f056fa:  movel %a5@(6a84),%a0@(372)
> 0xc0f05704:  movel %a5@(69bc),%a0@(376)
> 0xc0f0570e:  movel %a5@(2550),%a0@(380)
> 0xc0f05718:  movel %a5@(4438),%a0@(384)
> 0xc0f05722:  movel %a5@(1686c),%a0@(388)
> 0xc0f0572c:  movel %a5@(58ec),%a0@(392)
> 0xc0f05736:  movel %a5@(2610),%a0@(396)
> 0xc0f05740:  movel %a5@(1585c),%a0@(400)
> 0xc0f0574a:  movel %a5@(13468),%a0@(404)
> 0xc0f05754:  movel %a5@(1504),%a0@(408)
> 0xc0f0575e:  movel %a5@(160c),%a0@(412)
> 0xc0f05768:  movel %a5@(42b8),%a0@(416)
> 0xc0f05772:  movel %a5@(139dc),%a0@(420)
> 0xc0f0577c:  movel %a5@(33a4),%a0@(424)
> 0xc0f05786:  movel %a5@(b6cc),%a0@(428)
> 0xc0f05790:  movel %a5@(12cb4),%a0@(432)
> 0xc0f0579a:  movel %a5@(d530),%a0@(448)
> 0xc0f057a4:  movel %a5@(64a0),%a0@(436)
> 0xc0f057ae:  movel %a5@(18b58),%a0@(452)
> 0xc0f057b8:  movel %a5@(4e4c),%a0@(440)
> 0xc0f057c2:  movel %a5@(12b64),%a0@(456)
> 0xc0f057cc:  movel %a5@(8628),%a0@(444)
> 0xc0f057d6:  movel %a5@(11d4c),%a0@(460)
> 0xc0f057e0:  movel %a5@(5890),%a0@(464)
> 0xc0f057ea:  movel %a5@(2248),%a0@(468)
> 0xc0f057f4:  movel %a5@(5cfc),%a0@(472)
> 0xc0f057fe:  movel %a5@(4b74),%a0@(476)
> 0xc0f05808:  movel %a5@(5c24),%a0@(480)
> 0xc0f05812:  movel %a5@(4aa0),%a0@(484)
> 0xc0f0581c:  movel %a5@(16ff0),%a0@(488)
> 0xc0f05826:  movel %a5@(9520),%a0@(492)
> 0xc0f05830:  movel %a5@(110f0),%a0@(496)
> 0xc0f0583a:  movel %a5@(3bb8),%a0@(500)
> 0xc0f05844:  movel %a5@(ceec),%a0@(712)
> 0xc0f0584e:  movel %a5@(470c),%a0@(1100)
> 0xc0f05858:  movel %a5@(5c70),%a0@(632)
> 0xc0f05862:  movel %a5@(8a5c),%a0@(636)
> 0xc0f0586c:  movel %a5@(6098),%a0@(640)
> 0xc0f05876:  movel %a5@(6124),%a0@(644)
> 0xc0f05880:  movel %a5@(11688),%a0@(648)
> 0xc0f0588a:  movel %a5@(4928),%a0@(652)
> 0xc0f05894:  movel %a5@(1214c),%a0@(656)
> 0xc0f0589e:  movel %a5@(559c),%a0@(688)
> 0xc0f058a8:  movel %a5@(12394),%a0@(692)
> 0xc0f058b2:  movel %a5@(47b4),%a0@(696)
> 0xc0f058bc:  movel %a5@(43c0),%a0@(700)
> 0xc0f058c6:  movel %a5@(fc4c),%a0@(704)
> 0xc0f058d0:  movel %a5@(6e44),%a0@(708)
> 0xc0f058da:  movel %a5@(305c),%a0@(660)
> 0xc0f058e4:  movel %a5@(9e68),%a0@(664)
> 0xc0f058ee:  movel %a5@(1636c),%a0@(668)
> 0xc0f058f8:  movel %a5@(2b34),%a0@(672)
> 0xc0f05902:  movel %a5@(bee8),%a0@(676)
> 0xc0f0590c:  movel %a5@(8780),%a0@(680)
> 0xc0f05916:  movel %a5@(a10c),%a0@(684)
> 0xc0f05920:  movel %a5@(2bc4),%a0@(720)
> 0xc0f0592a:  movel %a5@(3888),%a0@(724)
> 0xc0f05934:  movel %a5@(6d3c),%a0@(716)
> 0xc0f0593e:  movel %a5@(804c),%a0@(728)
> 0xc0f05948:  movel %a5@(4584),%a0@(732)
> 0xc0f05952:  movel %a5@(141b4),%a0@(736)
> 0xc0f0595c:  movel %a5@(39a8),%a0@(740)
> 0xc0f05966:  movel %a5@(5324),%a0@(1112)
> 0xc0f05970:  movel %a5@(2b08),%a0@(1116)
> 0xc0f0597a:  movel %a5@(43d0),%a0@(1120)
> 0xc0f05984:  movel %a5@(5270),%a0@(1124)
> 0xc0f0598e:  movel %a5@(2888),%a0@(1128)
> 0xc0f05998:  movel %a5@(ca6c),%a0@(1132)
> 0xc0f059a2:  movel %a5@(854c),%a0@(1136)
> 0xc0f059ac:  movel %a5@(2110),%a0@(1140)
> 0xc0f059b6:  movel %a5@(49c0),%a0@(1144)
> 0xc0f059c0:  movel %a5@(4b40),%a0@(1148)
> 0xc0f059ca:  movel %a5@(ee34),%a0@(1152)
> 0xc0f059d4:  movel %a5@(2ffc),%a0@(1156)
> 0xc0f059de:  movel %a5@(11f14),%a0@(1160)
> 0xc0f059e8:  movel %a5@(4a24),%a0@(1164)
> 0xc0f059f2:  movel %a5@(4124),%a0@(784)
> 0xc0f059fc:  movel %a5@(77e8),%a0@(752)
> 0xc0f05a06:  movel %a5@(2c9c),%a0@(756)
> 0xc0f05a10:  movel %a5@(58f4),%a0@(760)
> 0xc0f05a1a:  movel %a5@(169bc),%a0@(764)
> 0xc0f05a24:  movel %a5@(6680),%a0@(768)
> 0xc0f05a2e:  movel %a5@(11320),%a0@(772)
> 0xc0f05a38:  movel %a5@(2010),%a0@(776)
> 0xc0f05a42:  movel %a5@(40fc),%a0@(780)
> 0xc0f05a4c:  movel %a5@(7884),%a0@(788)
> 0xc0f05a56:  movel %a5@(17c84),%a0@(792)
> 0xc0f05a60:  movel %a5@(78c4),%a0@(796)
> 0xc0f05a6a:  movel %a5@(ba00),%a0@(800)
> 0xc0f05a74:  movel %a5@(2f3c),%a0@(804)
> 0xc0f05a7e:  movel %a5@(2f54),%a0@(808)
> 0xc0f05a88:  movel %a5@(f7a4),%a0@(812)
> 0xc0f05a92:  movel %a5@(2ef4),%a0@(816)
> 0xc0f05a9c:  movel %a5@(3abc),%a0@(820)
> 0xc0f05aa6:  movel %a5@(d8e8),%a0@(824)
> 0xc0f05ab0:  movel %a5@(7d70),%a0@(828)
> 0xc0f05aba:  movel %a5@(2f0c),%a0@(832)
> 0xc0f05ac4:  movel %a5@(67bc),%a0@(836)
> 0xc0f05ace:  movel %a5@(62f8),%a0@(840)
> 0xc0f05ad8:  movel %a5@(475c),%a0@(844)
> 0xc0f05ae2:  movel %a5@(4a78),%a0@(848)
> 0xc0f05aec:  movel %a5@(49b4),%a0@(852)
> 0xc0f05af6:  movel %a5@(4ee4),%a0@(856)
> 0xc0f05b00:  movel %a5@(41e4),%a0@(860)
> 0xc0f05b0a:  movel %a5@(34f4),%a0@(864)
> 0xc0f05b14:  movel %a5@(2f6c),%a0@(868)
> 0xc0f05b1e:  movel %a5@(5688),%a0@(872)
> 0xc0f05b28:  movel %a5@(10cbc),%a0@(876)
> 0xc0f05b32:  movel %a5@(7658),%a0@(880)
> 0xc0f05b3c:  movel %a5@(2d44),%a0@(884)
> 0xc0f05b46:  movel %a5@(5d44),%a0@(888)
> 0xc0f05b50:  movel %a5@(c6f4),%a0@(892)
> 0xc0f05b5a:  movel %a5@(11f34),%a0@(896)
> 0xc0f05b64:  movel %a5@(5378),%a0@(900)
> 0xc0f05b6e:  movel %a5@(2070),%a0@(904)
> 0xc0f05b78:  movel %a5@(2dd4),%a0@(908)
> 0xc0f05b82:  movel %a5@(9ff8),%a0@(912)
> 0xc0f05b8c:  movel %a5@(5e18),%a0@(916)
> 0xc0f05b96:  movel %a5@(5fe4),%a0@(920)
> 0xc0f05ba0:  movel %a5@(4f04),%a0@(924)
> 0xc0f05baa:  movel %a5@(6c24),%a0@(928)
> 0xc0f05bb4:  movel %a5@(6d48),%a0@(932)
> 0xc0f05bbe:  movel %a5@(6da0),%a0@(936)
> 0xc0f05bc8:  movel %a5@(421c),%a0@(940)
> 0xc0f05bd2:  movel %a5@(4794),%a0@(944)
> 0xc0f05bdc:  movel %a5@(5150),%a0@(948)
> 0xc0f05be6:  movel %a5@(590c),%a0@(952)
> 0xc0f05bf0:  movel %a5@(2e1c),%a0@(956)
> 0xc0f05bfa:  movel %a5@(16e34),%a0@(960)
> 0xc0f05c04:  movel %a5@(2e4c),%a0@(964)
> 0xc0f05c0e:  movel %a5@(6934),%a0@(968)
> 0xc0f05c18:  movel %a5@(98dc),%a0@(972)
> 0xc0f05c22:  movel %a5@(9014),%a0@(976)
> 0xc0f05c2c:  movel %a5@(df58),%a0@(980)
> 0xc0f05c36:  movel %a5@(2c54),%a0@(984)
> 0xc0f05c40:  movel %a5@(f644),%a0@(988)
> 0xc0f05c4a:  movel %a5@(6164),%a0@(992)
> 0xc0f05c54:  movel %a5@(7344),%a0@(996)
> 0xc0f05c5e:  movel %a5@(11224),%a0@(1000)
> 0xc0f05c68:  movel %a5@(7df4),%a0@(1004)
> 0xc0f05c72:  movel %a5@(6a14),%a0@(1008)
> 0xc0f05c7c:  movel %a5@(5438),%a0@(1012)
> 0xc0f05c86:  movel %a5@(3c9c),%a0@(1016)
> 0xc0f05c90:  movel %a5@(54a8),%a0@(1020)
> 0xc0f05c9a:  movel %a5@(11388),%a0@(1024)
> 0xc0f05ca4:  movel %a5@(3104),%a0@(1028)
> 0xc0f05cae:  movel %a5@(11408),%a0@(1032)
> 0xc0f05cb8:  movel %a5@(557c),%a0@(1036)
> 0xc0f05cc2:  movel %a5@(a6b4),%a0@(1040)
> 0xc0f05ccc:  movel %a5@(3194),%a0@(1044)
> 0xc0f05cd6:  movel %a5@(11bc4),%a0@(1048)
> 0xc0f05ce0:  movel %a5@(31dc),%a0@(1052)
> 0xc0f05cea:  movel %a5@(6e68),%a0@(1056)
> 0xc0f05cf4:  movel %a5@(10c48),%a0@(1060)
> 0xc0f05cfe:  movel %a5@(c158),%a0@(1064)
> 0xc0f05d08:  movel %a5@(326c),%a0@(1068)
> 0xc0f05d12:  movel %a5@(3bd4),%a0@(1072)
> 0xc0f05d1c:  movel %a5@(a4b8),%a0@(1076)
> 0xc0f05d26:  movel %a5@(a518),%a0@(1080)
> 0xc0f05d30:  movel %a5@(3948),%a0@(1084)
> 0xc0f05d3a:  movel %a5@(4830),%a0@(1088)
> 0xc0f05d44:  movel %a5@(2f24),%a0@(1092)
> 0xc0f05d4e:  movel %a5@(1443c),%a0@(1096)
> 0xc0f05d58:  movel %a5@(5c44),%a0@(1104)
> 0xc0f05d62:  movel %a5@(7234),%a0@(1108)
> 0xc0f05d6c:  movel %a5@(7a24),%a0@(744)
> 0xc0f05d76:  movel %a5@(6fc4),%a0@(748)
> 0xc0f05d80:  movel %a5@(44f0),%a0@(1168)
> 0xc0f05d8a:  movel %a5@(5780),%a0@(1172)
> 0xc0f05d94:  movel %a5@(5d58),%a0@(1176)
> 0xc0f05d9e:  movel %a5@(40cc),%a0@(1180)
> 0xc0f05da8:  movel %a5@(f778),%a0@(1184)
> 0xc0f05db2:  movel %a5@(69a0),%a0@(1188)
> 0xc0f05dbc:  movel %a5@(7b1c),%a0@(1192)
> 0xc0f05dc6:  movel %a5@(f6dc),%a0@(1196)
> 0xc0f05dd0:  movel %a5@(1f3c),%a0@(1200)
> 0xc0f05dda:  movel %a5@(12244),%a0@(1204)
> 0xc0f05de4:  movel %a5@(3b34),%a0@(1208)
> 0xc0f05dee:  movel %a5@(7078),%a0@(1212)
> 0xc0f05df8:  movel %a5@(6088),%a0@(1216)
> 0xc0f05e02:  movel %a5@(5000),%a0@(1220)
> 0xc0f05e0c:  movel %a5@(6ca8),%a0@(1224)
> 0xc0f05e16:  movel %a5@(6ce8),%a0@(1228)
> 0xc0f05e20:  movel %a5@(b888),%a0@(1232)
> 0xc0f05e2a:  movel %a5@(3ea4),%a0@(1236)
> 0xc0f05e34:  movel %a5@(4838),%a0@(1240)
> 0xc0f05e3e:  movel %a5@(5b94),%a0@(1244)
> 0xc0f05e48:  movel %a5@(41f0),%a0@(1248)
> 0xc0f05e52:  movel %a5@(4220),%a0@(1252)
> 0xc0f05e5c:  movel %a5@(1057c),%a0@(1256)
> 0xc0f05e66:  movel %a5@(4280),%a0@(1260)
> 0xc0f05e70:  movel %a5@(42b0),%a0@(1264)
> 0xc0f05e7a:  movel %a5@(892c),%a0@(1268)
> 0xc0f05e84:  movel %a5@(4310),%a0@(1272)
> 0xc0f05e8e:  movel %a5@(7bb4),%a0@(1276)
> 0xc0f05e98:  movel %a5@(5d70),%a0@(1280)
> 0xc0f05ea2:  movel %a5@(43a0),%a0@(1284)
> 0xc0f05eac:  movel %a5@(1425c),%a0@(1288)
> 0xc0f05eb6:  movel %a5@(856c),%a0@(1292)
> 0xc0f05ec0:  movel %a5@(12b44),%a0@(1296)
> 0xc0f05eca:  movel %a5@(586c),%a0@(1300)
> 0xc0f05ed4:  movel %a5@(33ac),%a0@(1304)
> 0xc0f05ede:  movel %a5@(7974),%a0@(1308)
> 0xc0f05ee8:  movel %a5@(6a74),%a0@(1312)
> 0xc0f05ef2:  movel %a5@(157b8),%a0@(1316)
> 0xc0f05efc:  movel %a5@(d3fc),%a0@(1320)
> 0xc0f05f06:  movel %a5@(8430),%a0@(1324)
> 0xc0f05f10:  movel %a5@(31b4),%a0@(1328)
> 0xc0f05f1a:  movel %a5@(70c8),%a0@(1332)
> 0xc0f05f24:  movel %a5@(5404),%a0@(1336)
> 0xc0f05f2e:  movel %a5@(136a0),%a0@(1340)
> 0xc0f05f38:  movel %a5@(243c),%a0@(1344)
> 0xc0f05f42:  movel %a5@(5768),%a0@(1348)
> 0xc0f05f4c:  movel %a5@(23c4),%a0@(1352)
> 0xc0f05f56:  movel %a5@(15058),%a0@(1388)
> 0xc0f05f60:  movel %a5@(5104),%a0@(1392)
> 0xc0f05f6a:  movel %a5@(116f4),%a0@(1356)
> 0xc0f05f74:  movel %a5@(6ac4),%a0@(1360)
> 0xc0f05f7e:  movel %a5@(11448),%a0@(1364)
> 0xc0f05f88:  movel %a5@(3ee0),%a0@(1368)
> 0xc0f05f92:  movel %a5@(3e68),%a0@(1372)
> 0xc0f05f9c:  movel %a5@(16ac),%a0@(1376)
> 0xc0f05fa6:  movel %a5@(677c),%a0@(1380)
> 0xc0f05fb0:  movel %a5@(1664),%a0@(1396)
> 0xc0f05fba:  movel %a5@(13004),%a0@(1384)
> 0xc0f05fc4:  movel %a5@(161c),%a0@(1400)
> 0xc0f05fce:  movel %a5@(9d2c),%a0@(1404)
> 0xc0f05fd8:  movel %a5@(6414),%a0@(1408)

I have to ask what on earth is the compiler trying to achieve here? It
looks like it's doing a static re-order of a bunch of stacked variables.
Is this generated code or a synthetic test case?
Laurent Vivier Jan. 25, 2021, 11 a.m. UTC | #7
Le 25/01/2021 à 10:31, Alex Bennée a écrit :
> 
> Laurent Vivier <laurent@vivier.eu> writes:
> 
>> Le 23/01/2021 à 17:19, Laurent Vivier a écrit :
>>> Le 21/01/2021 à 03:54, Richard Henderson a écrit :
>>>> This isn't a total or permanent solution to the problem of running
>>>> out of temporaries, but it puts off the issue for a bit.
>>>>
>>>> Make the assert in tcg_temp_alloc unconditional.  If we do run out
>>>> of temps, this can fail much later as a weird SIGSEGV, due to the
>>>> buffer overrun of the temp array.
>>>>
>>>> Remove the inlines from tcg_temp_alloc and tcg_global_alloc.
>>>>
>>>> Buglink: https://bugs.launchpad.net/bugs/1912065
>>>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>>>> ---
>>>>
>>>> There are more bugs that need fixing in order to actually make
>>>> the dynamic allocation scheme work.  Rather than keep this bug
>>>> pending longer, hack around it and make the SEGV an ABRT.
>>>>
>>>> r~
>>>>
>>>> ---
>>>>  include/tcg/tcg.h | 2 +-
>>>>  tcg/tcg.c         | 6 +++---
>>>>  2 files changed, 4 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
>>>> index c5a9d65d5f..0187de1352 100644
>>>> --- a/include/tcg/tcg.h
>>>> +++ b/include/tcg/tcg.h
>>>> @@ -275,7 +275,7 @@ typedef struct TCGPool {
>>>>  
>>>>  #define TCG_POOL_CHUNK_SIZE 32768
>>>>  
>>>> -#define TCG_MAX_TEMPS 512
>>>> +#define TCG_MAX_TEMPS 1024
>>>
>>> This seems not enough, I have:
>>>
>>> ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
>>> Bail out! ERROR:.../tcg/tcg.c:1210:tcg_temp_alloc: assertion failed: (n < TCG_MAX_TEMPS)
>>>
>>> With my branch m68k-virt (68040 processor with virtio-mmio devices) booting debian sid.
>>
>> The cause of the overflow is this sequence:
>>
>> ----------------
>> IN:
>> 0xc0f0520c:  movel %a5,%sp@-
>> 0xc0f0520e:  lea %pc@(0xc1805000),%a5
>> 0xc0f05216:  moveal %sp@(12),%a0
>> 0xc0f0521a:  movel %a5@(61a0),%a0@
>> 0xc0f05222:  movel %a5@(4fd4),%a0@(180)
>> 0xc0f0522c:  movel %a5@(8af4),%a0@(184)
>> 0xc0f05236:  movel %a5@(6328),%a0@(188)
>> 0xc0f05240:  movel %a5@(2530),%a0@(172)
>> 0xc0f0524a:  movel %a5@(61fc),%a0@(176)
>> 0xc0f05254:  movel %a5@(5848),%a0@(24)
>> 0xc0f0525e:  movel %a5@(d398),%a0@(28)
>> 0xc0f05268:  movel %a5@(53ec),%a0@(32)
>> 0xc0f05272:  movel %a5@(17774),%a0@(36)
>> 0xc0f0527c:  movel %a5@(f748),%a0@(40)
>> 0xc0f05286:  movel %a5@(551c),%a0@(44)
>> 0xc0f05290:  movel %a5@(36ac),%a0@(4)
>> 0xc0f0529a:  movel %a5@(68a0),%a0@(8)
>> 0xc0f052a4:  movel %a5@(54c0),%a0@(12)
>> 0xc0f052ae:  movel %a5@(4354),%a0@(16)
>> 0xc0f052b8:  movel %a5@(5eb0),%a0@(48)
>> 0xc0f052c2:  movel %a5@(5ee4),%a0@(52)
>> 0xc0f052cc:  movel %a5@(5894),%a0@(68)
>> 0xc0f052d6:  movel %a5@(5924),%a0@(72)
>> 0xc0f052e0:  movel %a5@(c8fc),%a0@(76)
>> 0xc0f052ea:  movel %a5@(3248),%a0@(80)
>> 0xc0f052f4:  movel %a5@(bcd0),%a0@(84)
>> 0xc0f052fe:  movel %a5@(9a38),%a0@(88)
>> 0xc0f05308:  movel %a5@(e2e8),%a0@(92)
>> 0xc0f05312:  movel %a5@(dd50),%a0@(96)
>> 0xc0f0531c:  movel %a5@(62b0),%a0@(100)
>> 0xc0f05326:  movel %a5@(20a0),%a0@(104)
>> 0xc0f05330:  movel %a5@(527c),%a0@(108)
>> 0xc0f0533a:  movel %a5@(41ec),%a0@(112)
>> 0xc0f05344:  movel %a5@(33dc),%a0@(116)
>> 0xc0f0534e:  movel %a5@(423c),%a0@(120)
>> 0xc0f05358:  movel %a5@(9728),%a0@(124)
>> 0xc0f05362:  movel %a5@(3fe4),%a0@(128)
>> 0xc0f0536c:  movel %a5@(1018c),%a0@(132)
>> 0xc0f05376:  movel %a5@(7b54),%a0@(136)
>> 0xc0f05380:  movel %a5@(121e8),%a0@(140)
>> 0xc0f0538a:  movel %a5@(550c),%a0@(144)
>> 0xc0f05394:  movel %a5@(b4a8),%a0@(148)
>> 0xc0f0539e:  movel %a5@(6a20),%a0@(152)
>> 0xc0f053a8:  movel %a5@(56e0),%a0@(156)
>> 0xc0f053b2:  movel %a5@(10c9c),%a0@(160)
>> 0xc0f053bc:  movel %a5@(a4e8),%a0@(164)
>> 0xc0f053c6:  movel %a5@(9d58),%a0@(168)
>> 0xc0f053d0:  movel %a5@(6e2c),%a0@(224)
>> 0xc0f053da:  movel %a5@(4e28),%a0@(228)
>> 0xc0f053e4:  movel %a5@(152e0),%a0@(232)
>> 0xc0f053ee:  movel %a5@(7e3c),%a0@(236)
>> 0xc0f053f8:  movel %a5@(15b10),%a0@(240)
>> 0xc0f05402:  movel %a5@(4578),%a0@(244)
>> 0xc0f0540c:  movel %a5@(11e98),%a0@(248)
>> 0xc0f05416:  movel %a5@(44b8),%a0@(252)
>> 0xc0f05420:  movel %a5@(72a0),%a0@(504)
>> 0xc0f0542a:  movel %a5@(308c),%a0@(508)
>> 0xc0f05434:  movel %a5@(4f40),%a0@(512)
>> 0xc0f0543e:  movel %a5@(8c04),%a0@(516)
>> 0xc0f05448:  movel %a5@(b328),%a0@(520)
>> 0xc0f05452:  movel %a5@(4e40),%a0@(524)
>> 0xc0f0545c:  movel %a5@(4954),%a0@(528)
>> 0xc0f05466:  movel %a5@(14f48),%a0@(532)
>> 0xc0f05470:  movel %a5@(15c2c),%a0@(536)
>> 0xc0f0547a:  movel %a5@(4bf0),%a0@(540)
>> 0xc0f05484:  movel %a5@(66b4),%a0@(544)
>> 0xc0f0548e:  movel %a5@(3768),%a0@(548)
>> 0xc0f05498:  movel %a5@(111e4),%a0@(552)
>> 0xc0f054a2:  movel %a5@(414c),%a0@(556)
>> 0xc0f054ac:  movel %a5@(14eb8),%a0@(560)
>> 0xc0f054b6:  movel %a5@(6fec),%a0@(564)
>> 0xc0f054c0:  movel %a5@(48c0),%a0@(568)
>> 0xc0f054ca:  movel %a5@(4494),%a0@(572)
>> 0xc0f054d4:  movel %a5@(7534),%a0@(576)
>> 0xc0f054de:  movel %a5@(c1ec),%a0@(580)
>> 0xc0f054e8:  movel %a5@(636c),%a0@(584)
>> 0xc0f054f2:  movel %a5@(a5a0),%a0@(588)
>> 0xc0f054fc:  movel %a5@(8734),%a0@(592)
>> 0xc0f05506:  movel %a5@(3f94),%a0@(596)
>> 0xc0f05510:  movel %a5@(11910),%a0@(600)
>> 0xc0f0551a:  movel %a5@(119e4),%a0@(604)
>> 0xc0f05524:  movel %a5@(5efc),%a0@(608)
>> 0xc0f0552e:  movel %a5@(284c),%a0@(612)
>> 0xc0f05538:  movel %a5@(4b58),%a0@(616)
>> 0xc0f05542:  movel %a5@(4084),%a0@(620)
>> 0xc0f0554c:  movel %a5@(3f80),%a0@(624)
>> 0xc0f05556:  movel %a5@(d990),%a0@(628)
>> 0xc0f05560:  movel %a5@(6c30),%a0@(192)
>> 0xc0f0556a:  movel %a5@(7350),%a0@(196)
>> 0xc0f05574:  movel %a5@(61ec),%a0@(200)
>> 0xc0f0557e:  movel %a5@(4840),%a0@(204)
>> 0xc0f05588:  movel %a5@(5414),%a0@(208)
>> 0xc0f05592:  movel %a5@(3f1c),%a0@(212)
>> 0xc0f0559c:  movel %a5@(53cc),%a0@(216)
>> 0xc0f055a6:  movel %a5@(3e04),%a0@(220)
>> 0xc0f055b0:  movel %a5@(13ae0),%a0@(256)
>> 0xc0f055ba:  movel %a5@(902c),%a0@(260)
>> 0xc0f055c4:  movel %a5@(1455c),%a0@(264)
>> 0xc0f055ce:  movel %a5@(4a80),%a0@(268)
>> 0xc0f055d8:  movel %a5@(1cb8),%a0@(272)
>> 0xc0f055e2:  movel %a5@(3350),%a0@(276)
>> 0xc0f055ec:  movel %a5@(6184),%a0@(280)
>> 0xc0f055f6:  movel %a5@(4908),%a0@(284)
>> 0xc0f05600:  movel %a5@(609c),%a0@(288)
>> 0xc0f0560a:  movel %a5@(a348),%a0@(292)
>> 0xc0f05614:  movel %a5@(9dbc),%a0@(296)
>> 0xc0f0561e:  movel %a5@(4784),%a0@(300)
>> 0xc0f05628:  movel %a5@(16fbc),%a0@(304)
>> 0xc0f05632:  movel %a5@(3f78),%a0@(308)
>> 0xc0f0563c:  movel %a5@(7128),%a0@(64)
>> 0xc0f05646:  movel %a5@(7934),%a0@(20)
>> 0xc0f05650:  movel %a5@(15e50),%a0@(56)
>> 0xc0f0565a:  movel %a5@(41c4),%a0@(60)
>> 0xc0f05664:  movel %a5@(7210),%a0@(312)
>> 0xc0f0566e:  movel %a5@(14fc0),%a0@(316)
>> 0xc0f05678:  movel %a5@(165f8),%a0@(320)
>> 0xc0f05682:  movel %a5@(8e8c),%a0@(324)
>> 0xc0f0568c:  movel %a5@(5008),%a0@(328)
>> 0xc0f05696:  movel %a5@(66a0),%a0@(332)
>> 0xc0f056a0:  movel %a5@(d53c),%a0@(336)
>> 0xc0f056aa:  movel %a5@(44f8),%a0@(340)
>> 0xc0f056b4:  movel %a5@(1534),%a0@(344)
>> 0xc0f056be:  movel %a5@(3554),%a0@(348)
>> 0xc0f056c8:  movel %a5@(13af8),%a0@(352)
>> 0xc0f056d2:  movel %a5@(7758),%a0@(356)
>> 0xc0f056dc:  movel %a5@(3434),%a0@(360)
>> 0xc0f056e6:  movel %a5@(25b0),%a0@(364)
>> 0xc0f056f0:  movel %a5@(14b68),%a0@(368)
>> 0xc0f056fa:  movel %a5@(6a84),%a0@(372)
>> 0xc0f05704:  movel %a5@(69bc),%a0@(376)
>> 0xc0f0570e:  movel %a5@(2550),%a0@(380)
>> 0xc0f05718:  movel %a5@(4438),%a0@(384)
>> 0xc0f05722:  movel %a5@(1686c),%a0@(388)
>> 0xc0f0572c:  movel %a5@(58ec),%a0@(392)
>> 0xc0f05736:  movel %a5@(2610),%a0@(396)
>> 0xc0f05740:  movel %a5@(1585c),%a0@(400)
>> 0xc0f0574a:  movel %a5@(13468),%a0@(404)
>> 0xc0f05754:  movel %a5@(1504),%a0@(408)
>> 0xc0f0575e:  movel %a5@(160c),%a0@(412)
>> 0xc0f05768:  movel %a5@(42b8),%a0@(416)
>> 0xc0f05772:  movel %a5@(139dc),%a0@(420)
>> 0xc0f0577c:  movel %a5@(33a4),%a0@(424)
>> 0xc0f05786:  movel %a5@(b6cc),%a0@(428)
>> 0xc0f05790:  movel %a5@(12cb4),%a0@(432)
>> 0xc0f0579a:  movel %a5@(d530),%a0@(448)
>> 0xc0f057a4:  movel %a5@(64a0),%a0@(436)
>> 0xc0f057ae:  movel %a5@(18b58),%a0@(452)
>> 0xc0f057b8:  movel %a5@(4e4c),%a0@(440)
>> 0xc0f057c2:  movel %a5@(12b64),%a0@(456)
>> 0xc0f057cc:  movel %a5@(8628),%a0@(444)
>> 0xc0f057d6:  movel %a5@(11d4c),%a0@(460)
>> 0xc0f057e0:  movel %a5@(5890),%a0@(464)
>> 0xc0f057ea:  movel %a5@(2248),%a0@(468)
>> 0xc0f057f4:  movel %a5@(5cfc),%a0@(472)
>> 0xc0f057fe:  movel %a5@(4b74),%a0@(476)
>> 0xc0f05808:  movel %a5@(5c24),%a0@(480)
>> 0xc0f05812:  movel %a5@(4aa0),%a0@(484)
>> 0xc0f0581c:  movel %a5@(16ff0),%a0@(488)
>> 0xc0f05826:  movel %a5@(9520),%a0@(492)
>> 0xc0f05830:  movel %a5@(110f0),%a0@(496)
>> 0xc0f0583a:  movel %a5@(3bb8),%a0@(500)
>> 0xc0f05844:  movel %a5@(ceec),%a0@(712)
>> 0xc0f0584e:  movel %a5@(470c),%a0@(1100)
>> 0xc0f05858:  movel %a5@(5c70),%a0@(632)
>> 0xc0f05862:  movel %a5@(8a5c),%a0@(636)
>> 0xc0f0586c:  movel %a5@(6098),%a0@(640)
>> 0xc0f05876:  movel %a5@(6124),%a0@(644)
>> 0xc0f05880:  movel %a5@(11688),%a0@(648)
>> 0xc0f0588a:  movel %a5@(4928),%a0@(652)
>> 0xc0f05894:  movel %a5@(1214c),%a0@(656)
>> 0xc0f0589e:  movel %a5@(559c),%a0@(688)
>> 0xc0f058a8:  movel %a5@(12394),%a0@(692)
>> 0xc0f058b2:  movel %a5@(47b4),%a0@(696)
>> 0xc0f058bc:  movel %a5@(43c0),%a0@(700)
>> 0xc0f058c6:  movel %a5@(fc4c),%a0@(704)
>> 0xc0f058d0:  movel %a5@(6e44),%a0@(708)
>> 0xc0f058da:  movel %a5@(305c),%a0@(660)
>> 0xc0f058e4:  movel %a5@(9e68),%a0@(664)
>> 0xc0f058ee:  movel %a5@(1636c),%a0@(668)
>> 0xc0f058f8:  movel %a5@(2b34),%a0@(672)
>> 0xc0f05902:  movel %a5@(bee8),%a0@(676)
>> 0xc0f0590c:  movel %a5@(8780),%a0@(680)
>> 0xc0f05916:  movel %a5@(a10c),%a0@(684)
>> 0xc0f05920:  movel %a5@(2bc4),%a0@(720)
>> 0xc0f0592a:  movel %a5@(3888),%a0@(724)
>> 0xc0f05934:  movel %a5@(6d3c),%a0@(716)
>> 0xc0f0593e:  movel %a5@(804c),%a0@(728)
>> 0xc0f05948:  movel %a5@(4584),%a0@(732)
>> 0xc0f05952:  movel %a5@(141b4),%a0@(736)
>> 0xc0f0595c:  movel %a5@(39a8),%a0@(740)
>> 0xc0f05966:  movel %a5@(5324),%a0@(1112)
>> 0xc0f05970:  movel %a5@(2b08),%a0@(1116)
>> 0xc0f0597a:  movel %a5@(43d0),%a0@(1120)
>> 0xc0f05984:  movel %a5@(5270),%a0@(1124)
>> 0xc0f0598e:  movel %a5@(2888),%a0@(1128)
>> 0xc0f05998:  movel %a5@(ca6c),%a0@(1132)
>> 0xc0f059a2:  movel %a5@(854c),%a0@(1136)
>> 0xc0f059ac:  movel %a5@(2110),%a0@(1140)
>> 0xc0f059b6:  movel %a5@(49c0),%a0@(1144)
>> 0xc0f059c0:  movel %a5@(4b40),%a0@(1148)
>> 0xc0f059ca:  movel %a5@(ee34),%a0@(1152)
>> 0xc0f059d4:  movel %a5@(2ffc),%a0@(1156)
>> 0xc0f059de:  movel %a5@(11f14),%a0@(1160)
>> 0xc0f059e8:  movel %a5@(4a24),%a0@(1164)
>> 0xc0f059f2:  movel %a5@(4124),%a0@(784)
>> 0xc0f059fc:  movel %a5@(77e8),%a0@(752)
>> 0xc0f05a06:  movel %a5@(2c9c),%a0@(756)
>> 0xc0f05a10:  movel %a5@(58f4),%a0@(760)
>> 0xc0f05a1a:  movel %a5@(169bc),%a0@(764)
>> 0xc0f05a24:  movel %a5@(6680),%a0@(768)
>> 0xc0f05a2e:  movel %a5@(11320),%a0@(772)
>> 0xc0f05a38:  movel %a5@(2010),%a0@(776)
>> 0xc0f05a42:  movel %a5@(40fc),%a0@(780)
>> 0xc0f05a4c:  movel %a5@(7884),%a0@(788)
>> 0xc0f05a56:  movel %a5@(17c84),%a0@(792)
>> 0xc0f05a60:  movel %a5@(78c4),%a0@(796)
>> 0xc0f05a6a:  movel %a5@(ba00),%a0@(800)
>> 0xc0f05a74:  movel %a5@(2f3c),%a0@(804)
>> 0xc0f05a7e:  movel %a5@(2f54),%a0@(808)
>> 0xc0f05a88:  movel %a5@(f7a4),%a0@(812)
>> 0xc0f05a92:  movel %a5@(2ef4),%a0@(816)
>> 0xc0f05a9c:  movel %a5@(3abc),%a0@(820)
>> 0xc0f05aa6:  movel %a5@(d8e8),%a0@(824)
>> 0xc0f05ab0:  movel %a5@(7d70),%a0@(828)
>> 0xc0f05aba:  movel %a5@(2f0c),%a0@(832)
>> 0xc0f05ac4:  movel %a5@(67bc),%a0@(836)
>> 0xc0f05ace:  movel %a5@(62f8),%a0@(840)
>> 0xc0f05ad8:  movel %a5@(475c),%a0@(844)
>> 0xc0f05ae2:  movel %a5@(4a78),%a0@(848)
>> 0xc0f05aec:  movel %a5@(49b4),%a0@(852)
>> 0xc0f05af6:  movel %a5@(4ee4),%a0@(856)
>> 0xc0f05b00:  movel %a5@(41e4),%a0@(860)
>> 0xc0f05b0a:  movel %a5@(34f4),%a0@(864)
>> 0xc0f05b14:  movel %a5@(2f6c),%a0@(868)
>> 0xc0f05b1e:  movel %a5@(5688),%a0@(872)
>> 0xc0f05b28:  movel %a5@(10cbc),%a0@(876)
>> 0xc0f05b32:  movel %a5@(7658),%a0@(880)
>> 0xc0f05b3c:  movel %a5@(2d44),%a0@(884)
>> 0xc0f05b46:  movel %a5@(5d44),%a0@(888)
>> 0xc0f05b50:  movel %a5@(c6f4),%a0@(892)
>> 0xc0f05b5a:  movel %a5@(11f34),%a0@(896)
>> 0xc0f05b64:  movel %a5@(5378),%a0@(900)
>> 0xc0f05b6e:  movel %a5@(2070),%a0@(904)
>> 0xc0f05b78:  movel %a5@(2dd4),%a0@(908)
>> 0xc0f05b82:  movel %a5@(9ff8),%a0@(912)
>> 0xc0f05b8c:  movel %a5@(5e18),%a0@(916)
>> 0xc0f05b96:  movel %a5@(5fe4),%a0@(920)
>> 0xc0f05ba0:  movel %a5@(4f04),%a0@(924)
>> 0xc0f05baa:  movel %a5@(6c24),%a0@(928)
>> 0xc0f05bb4:  movel %a5@(6d48),%a0@(932)
>> 0xc0f05bbe:  movel %a5@(6da0),%a0@(936)
>> 0xc0f05bc8:  movel %a5@(421c),%a0@(940)
>> 0xc0f05bd2:  movel %a5@(4794),%a0@(944)
>> 0xc0f05bdc:  movel %a5@(5150),%a0@(948)
>> 0xc0f05be6:  movel %a5@(590c),%a0@(952)
>> 0xc0f05bf0:  movel %a5@(2e1c),%a0@(956)
>> 0xc0f05bfa:  movel %a5@(16e34),%a0@(960)
>> 0xc0f05c04:  movel %a5@(2e4c),%a0@(964)
>> 0xc0f05c0e:  movel %a5@(6934),%a0@(968)
>> 0xc0f05c18:  movel %a5@(98dc),%a0@(972)
>> 0xc0f05c22:  movel %a5@(9014),%a0@(976)
>> 0xc0f05c2c:  movel %a5@(df58),%a0@(980)
>> 0xc0f05c36:  movel %a5@(2c54),%a0@(984)
>> 0xc0f05c40:  movel %a5@(f644),%a0@(988)
>> 0xc0f05c4a:  movel %a5@(6164),%a0@(992)
>> 0xc0f05c54:  movel %a5@(7344),%a0@(996)
>> 0xc0f05c5e:  movel %a5@(11224),%a0@(1000)
>> 0xc0f05c68:  movel %a5@(7df4),%a0@(1004)
>> 0xc0f05c72:  movel %a5@(6a14),%a0@(1008)
>> 0xc0f05c7c:  movel %a5@(5438),%a0@(1012)
>> 0xc0f05c86:  movel %a5@(3c9c),%a0@(1016)
>> 0xc0f05c90:  movel %a5@(54a8),%a0@(1020)
>> 0xc0f05c9a:  movel %a5@(11388),%a0@(1024)
>> 0xc0f05ca4:  movel %a5@(3104),%a0@(1028)
>> 0xc0f05cae:  movel %a5@(11408),%a0@(1032)
>> 0xc0f05cb8:  movel %a5@(557c),%a0@(1036)
>> 0xc0f05cc2:  movel %a5@(a6b4),%a0@(1040)
>> 0xc0f05ccc:  movel %a5@(3194),%a0@(1044)
>> 0xc0f05cd6:  movel %a5@(11bc4),%a0@(1048)
>> 0xc0f05ce0:  movel %a5@(31dc),%a0@(1052)
>> 0xc0f05cea:  movel %a5@(6e68),%a0@(1056)
>> 0xc0f05cf4:  movel %a5@(10c48),%a0@(1060)
>> 0xc0f05cfe:  movel %a5@(c158),%a0@(1064)
>> 0xc0f05d08:  movel %a5@(326c),%a0@(1068)
>> 0xc0f05d12:  movel %a5@(3bd4),%a0@(1072)
>> 0xc0f05d1c:  movel %a5@(a4b8),%a0@(1076)
>> 0xc0f05d26:  movel %a5@(a518),%a0@(1080)
>> 0xc0f05d30:  movel %a5@(3948),%a0@(1084)
>> 0xc0f05d3a:  movel %a5@(4830),%a0@(1088)
>> 0xc0f05d44:  movel %a5@(2f24),%a0@(1092)
>> 0xc0f05d4e:  movel %a5@(1443c),%a0@(1096)
>> 0xc0f05d58:  movel %a5@(5c44),%a0@(1104)
>> 0xc0f05d62:  movel %a5@(7234),%a0@(1108)
>> 0xc0f05d6c:  movel %a5@(7a24),%a0@(744)
>> 0xc0f05d76:  movel %a5@(6fc4),%a0@(748)
>> 0xc0f05d80:  movel %a5@(44f0),%a0@(1168)
>> 0xc0f05d8a:  movel %a5@(5780),%a0@(1172)
>> 0xc0f05d94:  movel %a5@(5d58),%a0@(1176)
>> 0xc0f05d9e:  movel %a5@(40cc),%a0@(1180)
>> 0xc0f05da8:  movel %a5@(f778),%a0@(1184)
>> 0xc0f05db2:  movel %a5@(69a0),%a0@(1188)
>> 0xc0f05dbc:  movel %a5@(7b1c),%a0@(1192)
>> 0xc0f05dc6:  movel %a5@(f6dc),%a0@(1196)
>> 0xc0f05dd0:  movel %a5@(1f3c),%a0@(1200)
>> 0xc0f05dda:  movel %a5@(12244),%a0@(1204)
>> 0xc0f05de4:  movel %a5@(3b34),%a0@(1208)
>> 0xc0f05dee:  movel %a5@(7078),%a0@(1212)
>> 0xc0f05df8:  movel %a5@(6088),%a0@(1216)
>> 0xc0f05e02:  movel %a5@(5000),%a0@(1220)
>> 0xc0f05e0c:  movel %a5@(6ca8),%a0@(1224)
>> 0xc0f05e16:  movel %a5@(6ce8),%a0@(1228)
>> 0xc0f05e20:  movel %a5@(b888),%a0@(1232)
>> 0xc0f05e2a:  movel %a5@(3ea4),%a0@(1236)
>> 0xc0f05e34:  movel %a5@(4838),%a0@(1240)
>> 0xc0f05e3e:  movel %a5@(5b94),%a0@(1244)
>> 0xc0f05e48:  movel %a5@(41f0),%a0@(1248)
>> 0xc0f05e52:  movel %a5@(4220),%a0@(1252)
>> 0xc0f05e5c:  movel %a5@(1057c),%a0@(1256)
>> 0xc0f05e66:  movel %a5@(4280),%a0@(1260)
>> 0xc0f05e70:  movel %a5@(42b0),%a0@(1264)
>> 0xc0f05e7a:  movel %a5@(892c),%a0@(1268)
>> 0xc0f05e84:  movel %a5@(4310),%a0@(1272)
>> 0xc0f05e8e:  movel %a5@(7bb4),%a0@(1276)
>> 0xc0f05e98:  movel %a5@(5d70),%a0@(1280)
>> 0xc0f05ea2:  movel %a5@(43a0),%a0@(1284)
>> 0xc0f05eac:  movel %a5@(1425c),%a0@(1288)
>> 0xc0f05eb6:  movel %a5@(856c),%a0@(1292)
>> 0xc0f05ec0:  movel %a5@(12b44),%a0@(1296)
>> 0xc0f05eca:  movel %a5@(586c),%a0@(1300)
>> 0xc0f05ed4:  movel %a5@(33ac),%a0@(1304)
>> 0xc0f05ede:  movel %a5@(7974),%a0@(1308)
>> 0xc0f05ee8:  movel %a5@(6a74),%a0@(1312)
>> 0xc0f05ef2:  movel %a5@(157b8),%a0@(1316)
>> 0xc0f05efc:  movel %a5@(d3fc),%a0@(1320)
>> 0xc0f05f06:  movel %a5@(8430),%a0@(1324)
>> 0xc0f05f10:  movel %a5@(31b4),%a0@(1328)
>> 0xc0f05f1a:  movel %a5@(70c8),%a0@(1332)
>> 0xc0f05f24:  movel %a5@(5404),%a0@(1336)
>> 0xc0f05f2e:  movel %a5@(136a0),%a0@(1340)
>> 0xc0f05f38:  movel %a5@(243c),%a0@(1344)
>> 0xc0f05f42:  movel %a5@(5768),%a0@(1348)
>> 0xc0f05f4c:  movel %a5@(23c4),%a0@(1352)
>> 0xc0f05f56:  movel %a5@(15058),%a0@(1388)
>> 0xc0f05f60:  movel %a5@(5104),%a0@(1392)
>> 0xc0f05f6a:  movel %a5@(116f4),%a0@(1356)
>> 0xc0f05f74:  movel %a5@(6ac4),%a0@(1360)
>> 0xc0f05f7e:  movel %a5@(11448),%a0@(1364)
>> 0xc0f05f88:  movel %a5@(3ee0),%a0@(1368)
>> 0xc0f05f92:  movel %a5@(3e68),%a0@(1372)
>> 0xc0f05f9c:  movel %a5@(16ac),%a0@(1376)
>> 0xc0f05fa6:  movel %a5@(677c),%a0@(1380)
>> 0xc0f05fb0:  movel %a5@(1664),%a0@(1396)
>> 0xc0f05fba:  movel %a5@(13004),%a0@(1384)
>> 0xc0f05fc4:  movel %a5@(161c),%a0@(1400)
>> 0xc0f05fce:  movel %a5@(9d2c),%a0@(1404)
>> 0xc0f05fd8:  movel %a5@(6414),%a0@(1408)
> 
> I have to ask what on earth is the compiler trying to achieve here? It
> looks like it's doing a static re-order of a bunch of stacked variables.
> Is this generated code or a synthetic test case?
> 

I don't know what this code is: it happens during the boot sequence of debian/sid, only after
updating my image to the latest change (no kernel change). But it's not clear which service is
involved in the crash.

Thanks,
Laurent
diff mbox series

Patch

diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index c5a9d65d5f..0187de1352 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -275,7 +275,7 @@  typedef struct TCGPool {
 
 #define TCG_POOL_CHUNK_SIZE 32768
 
-#define TCG_MAX_TEMPS 512
+#define TCG_MAX_TEMPS 1024
 #define TCG_MAX_INSNS 512
 
 /* when the size of the arguments of a called function is smaller than
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 8f8badb61c..5110f6f39c 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -1204,14 +1204,14 @@  void tcg_func_start(TCGContext *s)
     QSIMPLEQ_INIT(&s->labels);
 }
 
-static inline TCGTemp *tcg_temp_alloc(TCGContext *s)
+static TCGTemp *tcg_temp_alloc(TCGContext *s)
 {
     int n = s->nb_temps++;
-    tcg_debug_assert(n < TCG_MAX_TEMPS);
+    g_assert(n < TCG_MAX_TEMPS);
     return memset(&s->temps[n], 0, sizeof(TCGTemp));
 }
 
-static inline TCGTemp *tcg_global_alloc(TCGContext *s)
+static TCGTemp *tcg_global_alloc(TCGContext *s)
 {
     TCGTemp *ts;