https://sourceware.org/bugzilla/show_bug.cgi?id=30292
Bug ID: 30292 Summary: Unbounded recursion/infinite loop in eqv expansion Product: binutils Version: 2.39 Status: UNCONFIRMED Severity: critical Priority: P2 Component: gas Assignee: unassigned at sourceware dot org Reporter: charlechaud at gmail dot com Target Milestone: --- Created attachment 14791 --> https://sourceware.org/bugzilla/attachment.cgi?id=14791&action=edit One of 5 files triggering the infinite loop (run out of gcc or do gcc -E first). gas from binutils-2.38 works fine and produces correct object code. While introduced in 2.39, this bug persists in 2.40. There is an infinite loop of i386_intel_simplify_symbol mutually recursing with i386_intel_simplify in all x64 .S files except the "shani" one in this repo: https://github.com/prysmaticlabs/hashtree For example: https://github.com/prysmaticlabs/hashtree/blob/main/src/sha256_avx_x4.S To be complete/autonomous, I have attached this file, but the other 5 fail in a very similar way if that helps. (Note that it needs pre-processing first.) Setting a breakpoint at those symbols with a debugging enabled build, it seems like expanding the symbol `e` in translating a "vpslld TMP,e" instruction (in thatsha256_avx_x4.S file, anyway - the instruction triggering the looping recursion varies). The `e` symbol in question is part of some `eqv` s near the start of the file. I have not really tried to minimize this to the smallest reproducing bug, but the consistency of failure does suggest such minimizing might be straightforward. There was a somewhat substantial patch to this file between 2.38 and 2.39 that may be the origin of the problem. -- You are receiving this mail because: You are on the CC list for the bug.