diff options
author | Jan Beulich <jbeulich@suse.com> | 2023-12-15 12:42:43 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2023-12-15 12:42:43 +0100 |
commit | da374e940857fed398acccf4202b37b8a5bc8c38 (patch) | |
tree | a962ea129a94499679c6863303607e16db30d952 /gas/config/tc-i386.h | |
parent | c26906716eacae672a32309865ea5cc9f3e192c5 (diff) | |
download | gdb-da374e940857fed398acccf4202b37b8a5bc8c38.zip gdb-da374e940857fed398acccf4202b37b8a5bc8c38.tar.gz gdb-da374e940857fed398acccf4202b37b8a5bc8c38.tar.bz2 |
x86: last-insn recording should be per-subsection
Otherwise intermediate subsection switches result in inconsistent
behavior. Leverage ELF's section change hook to switch state as
necessary, limiting overhead to the bare minimum when subsections aren't
used.
Diffstat (limited to 'gas/config/tc-i386.h')
-rw-r--r-- | gas/config/tc-i386.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h index 6d6f0b9..3cb0c78 100644 --- a/gas/config/tc-i386.h +++ b/gas/config/tc-i386.h @@ -294,6 +294,8 @@ struct i386_segment_info { last_insn_prefix } kind; } last_insn; + subsegT subseg; + struct i386_segment_info *next; }; #define TC_SEGMENT_INFO_TYPE struct i386_segment_info @@ -395,6 +397,9 @@ extern void tc_x86_frame_initial_instructions (void); #define md_elf_section_type(str,len) i386_elf_section_type (str, len) extern int i386_elf_section_type (const char *, size_t); +#define md_elf_section_change_hook i386_elf_section_change_hook +extern void i386_elf_section_change_hook (void); + #ifdef TE_SOLARIS #define md_fix_up_eh_frame(sec) i386_solaris_fix_up_eh_frame (sec) extern void i386_solaris_fix_up_eh_frame (segT); |