binutils-gdb/sim/m32c/Makefile.in
Simon Marchi 2b8d134be4 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
2021-04-08 09:49:30 -04:00

72 lines
1.8 KiB
Makefile

#### Makefile.in --- Makefile template for the M32C simulator
### Copyright (C) 2005-2021 Free Software Foundation, Inc.
### Contributed by Red Hat, Inc.
###
### This file is part of the GNU simulators.
###
### This program is free software; you can redistribute it and/or modify
### it under the terms of the GNU General Public License as published by
### the Free Software Foundation; either version 3 of the License, or
### (at your option) any later version.
###
### This program is distributed in the hope that it will be useful,
### but WITHOUT ANY WARRANTY; without even the implied warranty of
### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
### GNU General Public License for more details.
###
### You should have received a copy of the GNU General Public License
### along with this program. If not, see <http://www.gnu.org/licenses/>.
## COMMON_PRE_CONFIG_FRAG
SIM_EXTRA_CFLAGS = -Wall -DTIMER_A
SIM_RUN_OBJS = \
main.o \
$(ENDLIST)
SIM_OBJS = \
gdb-if.o \
int.o \
load.o \
mem.o \
misc.o \
reg.o \
r8c.o \
m32c.o \
srcdest.o \
syscalls.o \
trace.o \
$(ENDLIST)
LIBS = $B/bfd/libbfd.a $B/libiberty/libiberty.a
## COMMON_POST_CONFIG_FRAG
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.tmp
mv r8c.c.tmp r8c.c
m32c.c : m32c.opc opc2c
$(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) $^
encodings:
grep '/\* [01]' $(srcdir)/r8c.opc | sort
opc2c.o : opc2c.c safe-fgets.h
$(COMPILE_FOR_BUILD) -c $(srcdir)/opc2c.c
safe-fgets.o : safe-fgets.c safe-fgets.h
$(COMPILE_FOR_BUILD) -c $(srcdir)/safe-fgets.c