]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
s390: Do not generate incomplete opcode table
authorJens Remus <jremus@linux.ibm.com>
Thu, 30 Oct 2025 13:39:59 +0000 (14:39 +0100)
committerJens Remus <jremus@linux.ibm.com>
Thu, 30 Oct 2025 13:39:59 +0000 (14:39 +0100)
The s390 opcode table s390-opc.tbl is generated from s390-opc.txt
using the s390-mkopc utility using output redirection.  If s390-mkopc
fails with a non-zero return code, e.g. due to a warning or error, an
incomplete opcode table may be generated in the build directory.  A
subsequent invocation of make then assumes that incomplete opcode
table to be up to date.  Depending on the s390-mkopc issue the build
may then proceed without any follow-on warnings or errors, causing
the preceding error or warning to go unnoticed.

Generate the s390 opcode table into an intermediate temporary file
s390-opc.tbl.tmp in the build directory and only move it to the final
target s390-opc.tbl if the generation was successful.

Tested by appending an unsupported inline comment "# TEST" to one of
the instructions defined in s390-opc.txt.

opcodes/
* Makefile.am (s390-opc.tab): Use an intermediate temporary file
to prevent updating of the target on error/warning.
* Makefile.in: Regenerated.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
opcodes/Makefile.am
opcodes/Makefile.in

index a8642c4d07e44bfd86077a24fbf8d67a838b51de..c5b055dad577c1eb611685a815bfb77177459f2e 100644 (file)
@@ -583,7 +583,8 @@ s390-mkopc.o: s390-mkopc.c $(INCDIR)/opcode/s390.h
        $(AM_V_CC)$(COMPILE_FOR_BUILD) -c $(srcdir)/s390-mkopc.c
 
 s390-opc.tab: s390-mkopc$(EXEEXT_FOR_BUILD) s390-opc.txt
-       $(AM_V_GEN)./s390-mkopc$(EXEEXT_FOR_BUILD) < $(srcdir)/s390-opc.txt > s390-opc.tab
+       $(AM_V_GEN)./s390-mkopc$(EXEEXT_FOR_BUILD) < $(srcdir)/s390-opc.txt > s390-opc.tab.tmp
+       $(AM_V_at)$(am__mv) s390-opc.tab.tmp s390-opc.tab
 
 s390-opc.lo: s390-opc.tab
 
index ed61dfcf43581f8ebe70c9f1bd59b2b641ced37a..0aeeb81d705ade4d6de1e5a58e3ea985e62e65ea 100644 (file)
@@ -1562,7 +1562,8 @@ s390-mkopc.o: s390-mkopc.c $(INCDIR)/opcode/s390.h
        $(AM_V_CC)$(COMPILE_FOR_BUILD) -c $(srcdir)/s390-mkopc.c
 
 s390-opc.tab: s390-mkopc$(EXEEXT_FOR_BUILD) s390-opc.txt
-       $(AM_V_GEN)./s390-mkopc$(EXEEXT_FOR_BUILD) < $(srcdir)/s390-opc.txt > s390-opc.tab
+       $(AM_V_GEN)./s390-mkopc$(EXEEXT_FOR_BUILD) < $(srcdir)/s390-opc.txt > s390-opc.tab.tmp
+       $(AM_V_at)$(am__mv) s390-opc.tab.tmp s390-opc.tab
 
 s390-opc.lo: s390-opc.tab