aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2021-04-08 09:49:30 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2021-04-08 09:49:30 -0400
commit2b8d134be46071f6869ed45ebbf521d91c93fb66 (patch)
treeb7e9539146a59fd0cfa2dd562f217bbccbbf8aac /sim
parent16e311ab6d4d379da18ad03bc5373f621f488f41 (diff)
downloadfsf-binutils-gdb-2b8d134be46071f6869ed45ebbf521d91c93fb66.zip
fsf-binutils-gdb-2b8d134be46071f6869ed45ebbf521d91c93fb66.tar.gz
fsf-binutils-gdb-2b8d134be46071f6869ed45ebbf521d91c93fb66.tar.bz2
sim: set ASAN_OPTIONS=detect_leaks=0 when running igen and opc2c
The igen/dgen and opc2c tools leak their heap-allocated memory (on purpose) at program exit, which makes AddressSanitizer fail the tool execution. This breaks the build, as it makes the tool return a non-zero exit code. Fix that by disabling leak detection through the setting of that environment variable. I also changed the opc2c rules for m32c to go through a temporary file. What happened is that the failing opc2c would produce an incomplete file (probably because ASan exits the process before stdout is flushed). This meant that further make attempts didn't try to re-create the file, as it already existed. A "clean" was therefore necessary. This can also happen in regular builds if the user interrupts the build (^C) in the middle of the opc2c execution and tries to resume it. Going to a temporary file avoids this issue. sim/m32c/ChangeLog: * Makefile.in: Set ASAN_OPTIONS when running opc2c. sim/mips/ChangeLog: * Makefile.in: Set ASAN_OPTIONS when running igen. sim/mn10300/ChangeLog: * Makefile.in: Set ASAN_OPTIONS when running igen. sim/ppc/ChangeLog: * Makefile.in: Set ASAN_OPTIONS when running igen. sim/v850/ChangeLog: * Makefile.in: Set ASAN_OPTIONS when running igen. Change-Id: I00f21d4dc1aff0ef73471925d41ce7c23e83e082
Diffstat (limited to 'sim')
-rw-r--r--sim/common/Make-common.in4
-rw-r--r--sim/m32c/ChangeLog4
-rw-r--r--sim/m32c/Makefile.in10
-rw-r--r--sim/mips/ChangeLog4
-rw-r--r--sim/mips/Makefile.in20
-rw-r--r--sim/mn10300/ChangeLog4
-rw-r--r--sim/mn10300/Makefile.in2
-rw-r--r--sim/ppc/ChangeLog4
-rw-r--r--sim/ppc/Makefile.in10
-rw-r--r--sim/v850/ChangeLog4
-rw-r--r--sim/v850/Makefile.in2
11 files changed, 52 insertions, 16 deletions
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index c8445bc..28f50ab 100644
--- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in
@@ -111,6 +111,10 @@ COMPILE.post = -c -o $@
COMPILE = $(COMPILE.pre) $(ALL_CFLAGS) $(COMPILE.post)
POSTCOMPILE = @true
+# igen leaks memory, and therefore makes AddressSanitizer unhappy. Disable
+# leak detection while running it.
+IGEN = ASAN_OPTIONS=detect_leaks=0 ../igen/igen
+
# Each simulator's Makefile.in defines one or more of these variables
# to override our settings as necessary. There is no need to define these
# in the simulator's Makefile.in if one is using the default value. In fact
diff --git a/sim/m32c/ChangeLog b/sim/m32c/ChangeLog
index 31e3523..458024c 100644
--- a/sim/m32c/ChangeLog
+++ b/sim/m32c/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-08 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * Makefile.in: Set ASAN_OPTIONS when running opc2c.
+
2021-04-07 Simon Marchi <simon.marchi@polymtl.ca>
* opc2c.c (main): Remove vlist variable.
diff --git a/sim/m32c/Makefile.in b/sim/m32c/Makefile.in
index 6bc5c5b..186c9c0 100644
--- a/sim/m32c/Makefile.in
+++ b/sim/m32c/Makefile.in
@@ -46,11 +46,17 @@ LIBS = $B/bfd/libbfd.a $B/libiberty/libiberty.a
arch = m32c
+# opc2c leaks memory, and therefore makes AddressSanitizer unhappy. Disable
+# leak detection while running it.
+OPC2C = ASAN_OPTIONS=detect_leaks=0 ./opc2c
+
r8c.c : r8c.opc opc2c
- ./opc2c -l r8c.out $(srcdir)/r8c.opc > r8c.c
+ $(OPC2C) -l r8c.out $(srcdir)/r8c.opc > r8c.c.tmp
+ mv r8c.c.tmp r8c.c
m32c.c : m32c.opc opc2c
- ./opc2c -l m32c.out $(srcdir)/m32c.opc > m32c.c
+ $(OPC2C) -l m32c.out $(srcdir)/m32c.opc > m32c.c.tmp
+ mv m32c.c.tmp m32c.c
opc2c : opc2c.o safe-fgets.o
$(LINK_FOR_BUILD) $^
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog
index 8c2bc70..6d515f8 100644
--- a/sim/mips/ChangeLog
+++ b/sim/mips/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-08 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * Makefile.in: Set ASAN_OPTIONS when running igen.
+
2021-04-04 Steve Ellcey <sellcey@mips.com>
Faraz Shahbazker <fshahbazker@wavecomp.com>
diff --git a/sim/mips/Makefile.in b/sim/mips/Makefile.in
index c66c6e8..0090645 100644
--- a/sim/mips/Makefile.in
+++ b/sim/mips/Makefile.in
@@ -149,7 +149,7 @@ BUILT_SRC_FROM_IGEN = \
$(BUILT_SRC_FROM_IGEN): tmp-igen
tmp-igen: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
@@ -220,7 +220,7 @@ BUILT_SRC_FROM_M16 = \
$(BUILT_SRC_FROM_M16): tmp-m16
tmp-m16: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
@@ -255,7 +255,7 @@ tmp-m16: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
$(SHELL) $(srcdir)/../../move-if-change tmp-model.c m16_model.c
$(SHELL) $(srcdir)/../../move-if-change tmp-support.h m16_support.h
$(SHELL) $(srcdir)/../../move-if-change tmp-support.c m16_support.c
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
@@ -292,7 +292,7 @@ tmp-m16: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
$(SHELL) $(srcdir)/../../move-if-change tmp-model.c m32_model.c
$(SHELL) $(srcdir)/../../move-if-change tmp-support.h m32_support.h
$(SHELL) $(srcdir)/../../move-if-change tmp-support.c m32_support.c
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
@@ -346,7 +346,7 @@ BUILT_SRC_FROM_MICROMIPS = \
$(BUILT_SRC_FROM_MICROMIPS): tmp-micromips
tmp-micromips: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
@@ -391,7 +391,7 @@ tmp-micromips: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
micromips16_support.h
$(SHELL) $(srcdir)/../../move-if-change tmp-support.c \
micromips16_support.c
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
@@ -436,7 +436,7 @@ tmp-micromips: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
micromips32_support.h
$(SHELL) $(srcdir)/../../move-if-change tmp-support.c \
micromips32_support.c
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
@@ -481,7 +481,7 @@ tmp-micromips: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
micromips_m32_support.h
$(SHELL) $(srcdir)/../../move-if-change tmp-support.c \
micromips_m32_support.c
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
@@ -521,7 +521,7 @@ tmp-mach-multi: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
m16*) e="-B 16 -H 15 -o $(M16_DC) -F 16" ;; \
*) e="-B 32 -H 31 -o $(IGEN_DC) -F $${f}" ;; \
esac; \
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
$${e} \
-I $(srcdir) \
@@ -574,7 +574,7 @@ tmp-mach-multi: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
done
touch tmp-mach-multi
tmp-itable-multi: $(IGEN_INSN) $(IGEN_DC) ../igen/igen $(IGEN_INCLUDE)
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-I $(srcdir) \
-Werror \
diff --git a/sim/mn10300/ChangeLog b/sim/mn10300/ChangeLog
index 4a2d2b3f..9b3a9c5 100644
--- a/sim/mn10300/ChangeLog
+++ b/sim/mn10300/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-08 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * Makefile.in: Set ASAN_OPTIONS when running igen.
+
2021-04-02 Mike Frysinger <vapier@gentoo.org>
* Makefile.in (../igen/igen): Delete rule.
diff --git a/sim/mn10300/Makefile.in b/sim/mn10300/Makefile.in
index 6cdf971..773b7f9 100644
--- a/sim/mn10300/Makefile.in
+++ b/sim/mn10300/Makefile.in
@@ -69,7 +69,7 @@ IGEN_TRACE= # -G omit-line-numbers # -G trace-rule-selection -G trace-rule-rejec
IGEN_INSN=$(srcdir)/mn10300.igen $(srcdir)/am33.igen $(srcdir)/am33-2.igen
IGEN_DC=$(srcdir)/mn10300.dc
tmp-igen: $(IGEN_INSN) $(IGEN_DC) ../igen/igen
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-G gen-direct-access \
-M mn10300,am33 -G gen-multi-sim=am33 \
diff --git a/sim/ppc/ChangeLog b/sim/ppc/ChangeLog
index 539d317..910996f 100644
--- a/sim/ppc/ChangeLog
+++ b/sim/ppc/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-08 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * Makefile.in: Set ASAN_OPTIONS when running igen.
+
2021-04-03 Mike Frysinger <vapier@gentoo.org>
* Makefile.in (install): Install as run-ppc when not the primary arch.
diff --git a/sim/ppc/Makefile.in b/sim/ppc/Makefile.in
index d2bd1d3..d9d0198 100644
--- a/sim/ppc/Makefile.in
+++ b/sim/ppc/Makefile.in
@@ -133,6 +133,12 @@ IGEN_FLAGS = \
$(IGEN_SMP) \
$(IGEN_LINE_NR)
+# igen/dgen leak memory, and therefore makes AddressSanitizer unhappy. Disable
+# leak detection while running them.
+
+IGEN = ASAN_OPTIONS=detect_leaks=0 ./igen
+DGEN = ASAN_OPTIONS=detect_leaks=0 ./dgen
+
.NOEXPORT:
MAKEOVERRIDES=
@@ -666,7 +672,7 @@ ppc-config.h: $(CONFIG_FILE)
tmp-dgen: dgen ppc-spr-table $(srcdir)/../../move-if-change
- ./dgen $(DGEN_FLAGS) \
+ $(DGEN) $(DGEN_FLAGS) \
-r $(srcdir)/ppc-spr-table \
-n spreg.h -hp tmp-spreg.h \
-n spreg.c -p tmp-spreg.c
@@ -675,7 +681,7 @@ tmp-dgen: dgen ppc-spr-table $(srcdir)/../../move-if-change
touch tmp-dgen
tmp-igen: igen $(srcdir)/ppc-instructions $(srcdir)/altivec.igen $(srcdir)/e500.igen $(IGEN_OPCODE_RULES) $(srcdir)/../../move-if-change tmp-ld-decode tmp-ld-cache tmp-ld-insn tmp-filter
- ./igen $(IGEN_FLAGS) \
+ $(IGEN) $(IGEN_FLAGS) \
-o $(srcdir)/$(IGEN_OPCODE_RULES) \
-I $(srcdir) -i $(srcdir)/ppc-instructions \
-n icache.h -hc tmp-icache.h \
diff --git a/sim/v850/ChangeLog b/sim/v850/ChangeLog
index 27af3c3..4488b2e 100644
--- a/sim/v850/ChangeLog
+++ b/sim/v850/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-08 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * Makefile.in: Set ASAN_OPTIONS when running igen.
+
2021-04-02 Mike Frysinger <vapier@gentoo.org>
* Makefile.in (../igen/igen): Delete rule.
diff --git a/sim/v850/Makefile.in b/sim/v850/Makefile.in
index 983fc79..250129c5 100644
--- a/sim/v850/Makefile.in
+++ b/sim/v850/Makefile.in
@@ -69,7 +69,7 @@ IGEN_TRACE= # -G omit-line-numbers # -G trace-rule-selection -G trace-rule-rejec
IGEN_INSN=$(srcdir)/v850.igen
IGEN_DC=$(srcdir)/v850-dc
tmp-igen: $(IGEN_INSN) $(IGEN_DC) ../igen/igen
- ../igen/igen \
+ $(IGEN) \
$(IGEN_TRACE) \
-G gen-direct-access \
-G gen-zero-r0 \