summaryrefslogtreecommitdiff
path: root/rts/LinkerInternals.h
diff options
context:
space:
mode:
authorTamar Christina <tamar@zhox.com>2022-12-04 15:55:43 +0000
committerMatthew Pickering <matthewtpickering@gmail.com>2023-01-02 23:38:30 +0000
commit6658c45d43de1a85ac4e823a92613b5c3d04d868 (patch)
tree9ce811925327eaf5048ef1d5356a8ca90d548f76 /rts/LinkerInternals.h
parent14ee7a04efadcd687d87af6c6be3ef2b6e7b63d3 (diff)
downloadhaskell-wip/T22130.tar.gz
linker: Fix BFD import librarieswip/T22130
Diffstat (limited to 'rts/LinkerInternals.h')
-rw-r--r--rts/LinkerInternals.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h
index 8982318b2a..6797095d1e 100644
--- a/rts/LinkerInternals.h
+++ b/rts/LinkerInternals.h
@@ -54,11 +54,16 @@ typedef struct _Section Section;
*/
/* What kind of thing a symbol identifies. We need to know this to determine how
- * to process overflowing relocations. See Note [Processing overflowed relocations]. */
+ * to process overflowing relocations. See Note [Processing overflowed relocations].
+ * This is bitfield however only the option SYM_TYPE_DUP_DISCARD can be combined
+ * with the other values. */
typedef enum _SymType {
- SYM_TYPE_CODE, /* the symbol is a function and can be relocated via a jump island */
- SYM_TYPE_DATA, /* the symbol is data */
- SYM_TYPE_INDIRECT_DATA, /* see Note [_iob_func symbol] */
+ SYM_TYPE_CODE = 1 << 0, /* the symbol is a function and can be relocated via a jump island */
+ SYM_TYPE_DATA = 1 << 1, /* the symbol is data */
+ SYM_TYPE_INDIRECT_DATA = 1 << 2, /* see Note [_iob_func symbol] */
+ SYM_TYPE_DUP_DISCARD = 1 << 3, /* the symbol is a symbol in a BFD import library
+ however if a duplicate is found with a mismatching
+ SymType then discard this one. */
} SymType;