nickysn
db5e67c3fe
+ introduced a new type TRelocDataInt for use as the 'data' parameter for
...
TObjData.writeReloc; on i8086 it was changed to longint to allow using 32-bit
relocations
+ added support for writing 32-bit OMF relocations
git-svn-id: trunk@32936 -
2016-01-13 17:57:36 +00:00
nickysn
4f8baf29c6
+ handle RELOC_FARPTR48 relocations as well in TOmfObjData.writeReloc; this is
...
not used yet, but is added for completeness (and might be useful, if we add an
i386 target, that uses the OMF object format)
git-svn-id: trunk@32935 -
2016-01-13 15:07:41 +00:00
nickysn
e628729e1d
+ support 48-bit (16:32) far pointer relocations in the OMF internal linker
...
git-svn-id: trunk@32928 -
2016-01-11 17:50:27 +00:00
nickysn
02a6b77e32
+ added support for 32-bit offset OMF relocations (fltOffset32) in the OMF internal linker
...
git-svn-id: trunk@32927 -
2016-01-11 17:34:56 +00:00
nickysn
d4c21cf13a
* also check for 386+ when emitting a reference with a fs: or gs: prefix
...
git-svn-id: trunk@32926 -
2016-01-11 16:30:06 +00:00
nickysn
80b3e3020a
* the SEGFS and SEGGS prefixes are 386+
...
git-svn-id: trunk@32925 -
2016-01-11 15:51:40 +00:00
nickysn
c8e20dfe74
+ added i8086-specific consts RELOC_ABSOLUTE16 and RELOC_RELATIVE16, which are
...
aliases for RELOC_ABSOLUTE and RELOC_RELATIVE
* use RELOC_ABSOLUTE16 and RELOC_RELATIVE16, instead of RELOC_ABSOLUTE and
RELOC_RELATIVE in the linker-related parts of the OMF support (OMF object
reader and MZ exe output). This will make the code more readable, when 32-bit
relocation support is added to the linker. It will also make easier to reuse
this code for i386, in case we add an i386 target, that uses the OMF object
format.
git-svn-id: trunk@32923 -
2016-01-11 15:24:34 +00:00
pierre
40193ea1db
Add pi_has_open_array_parameter to proc_info.flags as this requires special handling for i8086 huge memory model to restore DS register correctly
...
git-svn-id: trunk@32922 -
2016-01-11 15:02:10 +00:00
nickysn
741a3eedf9
* fixed the cpu level of several 186+ instructions, that were mistakenly marked as either 286+ or 8086+
...
git-svn-id: trunk@32921 -
2016-01-11 13:22:08 +00:00
Jonas Maebe
b9231aa6f1
* converted objcgutl (Objective-C metadata generation) to the high level
...
typed const builder
git-svn-id: trunk@32917 -
2016-01-10 17:22:20 +00:00
Jonas Maebe
4aba875c34
* add llvm "weak" flag for tcalo_weak
...
git-svn-id: trunk@32916 -
2016-01-10 17:22:17 +00:00
Jonas Maebe
e3f8f8c974
* fixed position of "weak" linkage flag
...
git-svn-id: trunk@32915 -
2016-01-10 17:22:14 +00:00
Jonas Maebe
90071e04c4
* encode objc classrefdefs as objc_idtype as that is how they are typed
...
elsewhere in the compiler as well
git-svn-id: trunk@32914 -
2016-01-10 17:22:11 +00:00
Jonas Maebe
dacfb1a6ff
* load an objc classrefdef as objc_idtype, as that is also how we type
...
the self parameter in Objective-C class methods
git-svn-id: trunk@32913 -
2016-01-10 17:22:09 +00:00
Jonas Maebe
5959f45694
* emit custom Objective-C names in the LLVM assembler writer
...
git-svn-id: trunk@32912 -
2016-01-10 17:22:06 +00:00
Jonas Maebe
9e4806f21a
* made Objective-C non-fragile ABI field indexing type safe for LLVM
...
git-svn-id: trunk@32911 -
2016-01-10 17:22:03 +00:00
Jonas Maebe
d46fad1e7f
* use provided name to a_call_name() instead of hardcoding pd.mangledname()
...
(so that Objective-C messaging and WPO procedure names are used)
git-svn-id: trunk@32910 -
2016-01-10 17:21:59 +00:00
Jonas Maebe
1c99adb411
* fix rol/ror for llvm
...
git-svn-id: trunk@32909 -
2016-01-10 14:02:06 +00:00
Jonas Maebe
4cfec3b6e9
* fixed copy/paste error in r31285
...
git-svn-id: trunk@32908 -
2016-01-10 14:02:02 +00:00
Jonas Maebe
bbe8e346e0
* handle tc_equal typeconversions from conststring to a stringdef in
...
simplify, so that shortstring -> shortstring constant string conversions
are simplified for LLVM too (it leaves regular tc_equal type conversions
because often the type is still somewhat different), which is required
for the code in tasmlisttypedconstbuilder.tc_emit_stringdef() (it
assumes the result of inserting a type conversion is again a
stringconstant if it can be handled at compile time)
git-svn-id: trunk@32907 -
2016-01-10 14:01:58 +00:00
Jonas Maebe
0350369c6a
* don't check for a simple result location when loading an uninitialised
...
function result: we always only use the first location's register
git-svn-id: trunk@32906 -
2016-01-10 14:01:54 +00:00
Jonas Maebe
ae7b17890a
* support non-power-of-two records that have to be passed in MM registers
...
in a_load_ref_cgpara()
git-svn-id: trunk@32905 -
2016-01-10 14:01:50 +00:00
Jonas Maebe
49a83b2872
* allow targets to keep certain type conversions for equal types in
...
inserttypeconv()
o keep typeconversions between structurally equivalent but semantically
different procvardefs for LLVM and JVM, because they're different
types there
git-svn-id: trunk@32904 -
2016-01-10 14:01:46 +00:00
Jonas Maebe
5aadb149ed
* ensure the types of all elements emitted in all paths through
...
writeaccessproc() are the same, so the reuse of existing defs doesn't
result in the generation of typecasts for llvm
git-svn-id: trunk@32903 -
2016-01-10 14:01:43 +00:00
Jonas Maebe
4ae8dcc91e
* make the resultdef of left and right equal when comparing a dynarray
...
with nil (for llvm)
git-svn-id: trunk@32902 -
2016-01-10 14:01:39 +00:00
Jonas Maebe
f5a3bab7d4
* add llvminfo to override optimizer switches in case of {$ifdef llvm}
...
git-svn-id: trunk@32901 -
2016-01-10 14:01:35 +00:00
Jonas Maebe
508038a691
+ emit_pchar_const() helper for high level typed const builder
...
git-svn-id: trunk@32899 -
2016-01-10 14:01:24 +00:00
pierre
c863cd5bc8
Add u128bit and s128bit support in ppudump
...
git-svn-id: trunk@32898 -
2016-01-09 21:34:07 +00:00
florian
4ccc75e2e8
+ be able to specify endianess in the assembler command line
...
+ pass endianess to the powerpc assembler (GNU only), so an unified be/le GNU assembler can used to build powerpc64le
git-svn-id: trunk@32894 -
2016-01-09 14:28:25 +00:00
nickysn
ef9504ffd7
* made the \325 x86 prefix to generate a 0x66 prefix on i8086, thus fixing many
...
32-bit instructions on i8086, when using the internal obj writer
git-svn-id: trunk@32890 -
2016-01-08 17:20:37 +00:00
nickysn
6037976202
* several imul variants, featuring 32-bit or 64-bit registers marked 386+, instead of 286+
...
git-svn-id: trunk@32889 -
2016-01-08 17:07:36 +00:00
nickysn
e6ac1a4af5
+ added check for the compatibility of each instruction with the selected target
...
cpu in the i8086's internal obj writer
git-svn-id: trunk@32888 -
2016-01-08 16:44:28 +00:00
nickysn
e877bae4fc
+ add 'jmp rm16' and 'call rm16' before the rm32 versions on i8086, so the
...
16-bit version is picked up by default for opsize=S_NO. Previously the 386
version was picked on i8086, but the generated code was correct, because we
don't yet generate a 0x66 prefix for "\325", which leads to many 32-bit
instructions not being assembled correctly with the internal asm obj writer on
the i8086
git-svn-id: trunk@32887 -
2016-01-08 16:41:21 +00:00
Jonas Maebe
3aba28deb7
* factored out the generation of the Objective-C section names, so we can
...
reuse them for llvm too
git-svn-id: trunk@32885 -
2016-01-07 22:06:21 +00:00
Jonas Maebe
3f7169e250
* treat Objective-C metaclasses (classrefdefs) as voidpointertype at the
...
LLVM type level
git-svn-id: trunk@32884 -
2016-01-07 22:06:13 +00:00
Jonas Maebe
53bf43983a
+ support for emitting weak symbols with the high level typed constant builder
...
git-svn-id: trunk@32883 -
2016-01-07 22:06:06 +00:00
Jonas Maebe
58ae32e2d1
* factored out writing the LLVM linkage flags, take into account version
...
differences and also write them for procdefs
git-svn-id: trunk@32882 -
2016-01-07 22:06:00 +00:00
Jonas Maebe
d290ede5a6
+ added (not yet configurable) target LLVM version
...
git-svn-id: trunk@32881 -
2016-01-07 22:05:54 +00:00
Jonas Maebe
3dbe97d9b6
+ added some extra llvm versions and flags describing their features
...
git-svn-id: trunk@32880 -
2016-01-07 22:05:49 +00:00
Jonas Maebe
110a5642c0
- removed ait_weak/tai_weak, and replaced it with the previously existing
...
asd_weak_reference/asd_weak_definition directives
git-svn-id: trunk@32879 -
2016-01-07 22:05:38 +00:00
Jonas Maebe
1046c995a8
* ttai_typedconstbuilder.finalize_asmlist(): fixed handling of non-local
...
symbols that aren't AB_GLOBAL (e.g. AB_PRIVATE_EXTERN)
git-svn-id: trunk@32878 -
2016-01-07 22:05:28 +00:00
Jonas Maebe
bf735c7e58
* cleanup
...
git-svn-id: trunk@32877 -
2016-01-07 22:04:44 +00:00
nickysn
a508f9e5d3
+ added check if the selected cpu is 386+ when writing a 66h or 67h prefix in
...
the i8086 internal object writer. This allows weeding out spurious 386
instructions, as is similarly done by NASM when using it as an external
assembler.
git-svn-id: trunk@32871 -
2016-01-07 15:40:32 +00:00
nickysn
114c76bc4a
+ added i8086 to the list of supported cpus in the compiler usage help screen
...
git-svn-id: trunk@32870 -
2016-01-07 14:38:25 +00:00
nickysn
22b6e00147
* extracted the writing of 0x66 and 0x67 prefixes in the x86 internal assembler
...
to local procedures write0x66prefix and write0x67prefix
git-svn-id: trunk@32869 -
2016-01-07 14:18:14 +00:00
Jeppe Johansen
0251263234
Move some of the local reloc calculation out of aasmcpu, and into COFF and ELF writers.
...
git-svn-id: trunk@32867 -
2016-01-06 23:15:08 +00:00
nickysn
21c9712ea2
* allow 32-bit operand sizes in the i8086 version of Tx86Operand.SetSize, so
...
32-bit operands can work properly in i8086's inline asm. Fixes mantis #29188 .
git-svn-id: trunk@32866 -
2016-01-06 18:06:34 +00:00
Jeppe Johansen
1b02dd27dc
Make relocation type more precise compared to output of gas.
...
Change and to or in case symbol in other section is not exported.
git-svn-id: trunk@32852 -
2016-01-05 07:23:20 +00:00
Károly Balogh
b799ca40f8
m68k: various cleanups and improvements in the GAS assembler writer: pass operands to the helpers by reference, removed a few extra shortstring copies, cleanups
...
git-svn-id: trunk@32849 -
2016-01-05 04:12:00 +00:00
Károly Balogh
288fa53694
m68k: is_calljmp cleanup
...
git-svn-id: trunk@32848 -
2016-01-05 04:07:00 +00:00