On 2020-12-15 at 18:03 +0100, Luca Saiu wrote:

> This, while not technically assembling incorrect code, does not make
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

One more remark: I was not able to reproduce this behaviour with compact
branches, but it is possible that in some cases Gas' rewrite machinery
might actually move a previous instruction past the branch instead of
inserting a nop.  That would in fact be incorrect code, with compact
branches.

For example (using a traditional MIPS branch with delay slot) this:
--8<---------------cut here---------------start------------->8---
        addu  $10, $11, $12
        beq   $13, $14, foo
--8<---------------cut here---------------end--------------->8---
may turn into:
--8<---------------cut here---------------start------------->8---
   0:   11aeffff        beq     $13,$14,0x0
   4:   016c5021        addu    $10,$11,$12
--8<---------------cut here---------------end--------------->8---

If that happened with compact branches it would be a disaster.

I am adding a report to Bugzilla.

-- 
Luca Saiu
* My personal web site:  http://ageinghacker.net
* GNU epsilon:           http://www.gnu.org/software/epsilon
* Jitter:                http://ageinghacker.net/projects/jitter

I support everyone's freedom of mocking any opinion or belief, no
matter how deeply held, with open disrespect and the same unrelented
enthusiasm of a toddler who has just learned the word "poo".

Attachment: signature.asc
Description: PGP signature

Reply via email to