mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
ed2917de68
Currently md_end is typically used for some final actions rather than freeing memory like other *_end functions. Rename it to md_finish, and rename target implementation. The renaming of target functions makes it possible to find them all with "grep md_finish", eg. md_mips_end is renamed to mips_md_finish, not md_mips_finish. This patch leaves a number of md_end functions unchanged, those that either do nothing or deallocate memory, and calls them late. The idea here is that target maintainers implement md_end functions to tidy memory, if anyone cares. Freeing persistent memory in gas is not at all important, except that it can hide more important memory leaks, those that happen once per some frequent gas operation, amongst these unimportant memory leaks. * as.c (main): Rename md_end to md_finish. * config/tc-alpha.c, * config/tc-alpha.h, * config/tc-arc.c, * config/tc-arc.h, * config/tc-arm.c, * config/tc-arm.h, * config/tc-csky.c, * config/tc-csky.h, * config/tc-ia64.c, * config/tc-ia64.h, * config/tc-mcore.c, * config/tc-mcore.h, * config/tc-mips.c, * config/tc-mips.h, * config/tc-mmix.c, * config/tc-mmix.h, * config/tc-msp430.c, * config/tc-msp430.h, * config/tc-nds32.c, * config/tc-nds32.h, * config/tc-ppc.c, * config/tc-ppc.h, * config/tc-pru.c, * config/tc-pru.h, * config/tc-riscv.c, * config/tc-riscv.h, * config/tc-s390.c, * config/tc-s390.h, * config/tc-sparc.c, * config/tc-sparc.h, * config/tc-tic4x.c, * config/tc-tic4x.h, * config/tc-tic6x.c, * config/tc-tic6x.h, * config/tc-v850.c, * config/tc-v850.h, * config/tc-xtensa.c, * config/tc-xtensa.h, * config/tc-z80.c, * config/tc-z80.h: Similarly. * output-file.c (output_file_close): Call md_end.
95 lines
2.6 KiB
C
95 lines
2.6 KiB
C
/* This file is tc-mcore.h
|
|
|
|
Copyright (C) 1999-2022 Free Software Foundation, Inc.
|
|
|
|
This file is part of GAS, the GNU Assembler.
|
|
|
|
GAS 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, or (at your option)
|
|
any later version.
|
|
|
|
GAS 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 GAS; see the file COPYING. If not, write to the
|
|
Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
|
|
02110-1301, USA. */
|
|
|
|
#ifndef TC_MCORE
|
|
#define TC_MCORE 1
|
|
|
|
#define TARGET_ARCH bfd_arch_mcore
|
|
/* Used to initialise target_big_endian. */
|
|
#define TARGET_BYTES_BIG_ENDIAN 0
|
|
|
|
#define IGNORE_NONSTANDARD_ESCAPES
|
|
|
|
/* Some pseudo-op semantic extensions. */
|
|
#define PSEUDO_LCOMM_OPTIONAL_ALIGN
|
|
|
|
#define LISTING_HEADER "M.CORE GAS"
|
|
#define LISTING_LHS_CONT_LINES 4
|
|
|
|
/* We want local label support. */
|
|
#define LOCAL_LABELS_FB 1
|
|
|
|
extern const struct relax_type md_relax_table[];
|
|
#define TC_GENERIC_RELAX_TABLE md_relax_table
|
|
#define md_finish mcore_md_finish
|
|
|
|
/* Want the section information too... */
|
|
#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
|
|
|
|
#ifdef OBJ_COFF
|
|
|
|
#define TARGET_FORMAT (target_big_endian ? "pe-mcore-big" : "pe-mcore-little")
|
|
|
|
struct mcore_tc_sy
|
|
{
|
|
int sy_flags;
|
|
};
|
|
|
|
#define TC_SYMFIELD_TYPE struct mcore_tc_sy
|
|
|
|
# if defined TE_PE
|
|
# define TC_FORCE_RELOCATION(x) \
|
|
((x)->fx_r_type == BFD_RELOC_RVA || generic_force_reloc (x))
|
|
# endif
|
|
|
|
#endif /* OBJ_COFF */
|
|
|
|
#ifdef OBJ_ELF
|
|
|
|
#define TARGET_FORMAT (target_big_endian ? "elf32-mcore-big" : "elf32-mcore-little")
|
|
|
|
/* No shared lib support, so we don't need to ensure externally
|
|
visible symbols can be overridden. */
|
|
#define EXTERN_FORCE_RELOC 0
|
|
|
|
/* When relaxing, we need to emit various relocs we otherwise wouldn't. */
|
|
#define TC_FORCE_RELOCATION(fix) mcore_force_relocation (fix)
|
|
|
|
#define tc_fix_adjustable(FIX) mcore_fix_adjustable (FIX)
|
|
|
|
/* Values passed to md_apply_fix don't include the symbol value. */
|
|
#define MD_APPLY_SYM_VALUE(FIX) 0
|
|
|
|
#endif /* OBJ_ELF */
|
|
|
|
#ifndef TARGET_FORMAT
|
|
# error No target format specified.
|
|
#endif
|
|
|
|
#include "write.h" /* For definition of fixS */
|
|
|
|
extern void mcore_md_finish (void);
|
|
extern arelent *tc_gen_reloc (asection *, fixS *);
|
|
extern int mcore_force_relocation (fixS *);
|
|
extern bool mcore_fix_adjustable (fixS *);
|
|
|
|
#endif /* TC_MCORE */
|