aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-i386.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2023-12-15 12:42:43 +0100
committerJan Beulich <jbeulich@suse.com>2023-12-15 12:42:43 +0100
commitda374e940857fed398acccf4202b37b8a5bc8c38 (patch)
treea962ea129a94499679c6863303607e16db30d952 /gas/config/tc-i386.h
parentc26906716eacae672a32309865ea5cc9f3e192c5 (diff)
downloadgdb-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.h5
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);