From e2212738d40877a8a54e5728999acb7f035f66f3 Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Sun, 4 Nov 2012 00:40:05 +0100 Subject: Generate PLT thumb stub only when necessary Generate PLT thumb stub for an ARM PLT entry only when at least one Thumb instruction branches to that entry. This is a rewrite of the previous patch. --- tcc.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'tcc.h') diff --git a/tcc.h b/tcc.h index 4e88782..9e7c574 100644 --- a/tcc.h +++ b/tcc.h @@ -492,6 +492,13 @@ typedef struct ASMOperand { } ASMOperand; #endif +struct sym_attr { + unsigned long got_offset; +#ifdef TCC_TARGET_ARM + unsigned char plt_thumb_stub:1; +#endif +}; + struct TCCState { unsigned output_type : 8; unsigned reloc_output : 1; @@ -524,11 +531,11 @@ struct TCCState { Section **priv_sections; int nb_priv_sections; /* number of private sections */ - /* got handling */ + /* got & plt handling */ Section *got; Section *plt; - unsigned long *got_offsets; - int nb_got_offsets; + struct sym_attr *sym_attrs; + int nb_sym_attrs; /* give the correspondance from symtab indexes to dynsym indexes */ int *symtab_to_dynsym; -- cgit v1.3.1