aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-i386.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2021-04-29 11:45:10 +0200
committerJan Beulich <jbeulich@suse.com>2021-04-29 11:45:10 +0200
commit3abbafc2aacc6706fea3e3e326e2f08d107c3672 (patch)
tree8762f858f41c93ef736b2fef06a8b5afc07d83de /gas/config/tc-i386.h
parent44f871628ccfcfd931f4619c60554f3bd6b57b8d (diff)
downloadgdb-3abbafc2aacc6706fea3e3e326e2f08d107c3672.zip
gdb-3abbafc2aacc6706fea3e3e326e2f08d107c3672.tar.gz
gdb-3abbafc2aacc6706fea3e3e326e2f08d107c3672.tar.bz2
x86: relax when/how @size can be used
Allow a few more expression forms when the entire expression can be resolved at assembly time. For this, i386_validate_fix() needs to arrange for all processing of the relocation to be deferred to tc_gen_reloc().
Diffstat (limited to 'gas/config/tc-i386.h')
-rw-r--r--gas/config/tc-i386.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h
index 39d7c27..5516a16 100644
--- a/gas/config/tc-i386.h
+++ b/gas/config/tc-i386.h
@@ -143,8 +143,10 @@ extern int x86_address_bytes (void);
#define NO_RELOC BFD_RELOC_NONE
-void i386_validate_fix (struct fix *);
-#define TC_VALIDATE_FIX(FIX,SEGTYPE,SKIP) i386_validate_fix(FIX)
+int i386_validate_fix (struct fix *);
+#define TC_VALIDATE_FIX(FIX,SEGTYPE,SKIP) do { \
+ if (!i386_validate_fix(FIX)) goto SKIP; \
+ } while (0)
#define tc_fix_adjustable(X) tc_i386_fix_adjustable(X)
extern int tc_i386_fix_adjustable (struct fix *);