linker does not like two global labels both pointing at the end of a
section (causes "atom sorting error" warnings), and this happened for
units without any code after r13098
git-svn-id: trunk@13111 -
* Warning when 64-bit object file contains 32-bit absolute relocations. In such case an executable image can be loaded into lower 4Gb of address space only.
git-svn-id: trunk@13110 -
* Proper handling of 64-bit COFF relocations.
* Use jumps with 32-bit relative addressing in imports on win64.
* This fixes are related to bug #13657. The bug is not fully fixed yet...
git-svn-id: trunk@13104 -
* Write zero to relocs in debug sections, which point to unused sections, eliminated by linker.
* It seems internal linker creates correct dwarf debug info now.
git-svn-id: trunk@13093 -
can remove regallocs for the allocated register and reinstert them
before already processed instructions, thereby preventing the
peephole optimizer from ever seeing the allocation for this register
(mantis #13612)
git-svn-id: trunk@13085 -
use the alignment of these elements rather than their size (fixes
alignment of arrays of int64/qword/double on darwin/i386 and darwin/arm)
git-svn-id: trunk@13068 -
mode (mantis #11859)
* cleaned up some superfluous "eq=te_incompatible" checks (probably from
copy/pasting conditions from elsewhere)
git-svn-id: trunk@13050 -
initialization code of units/programs, because they are already
zero and initializing them explicitly is Delphi-incompatible
(mantis #13345)
git-svn-id: trunk@13042 -
* test now tests both ansistring and widestring constants, instead of only
ansistring
* fixed writing of widestring constants to ppu file
* fixed setting length of read widestring constants (don't only set maxlen)
* handle cross-endian reading of widestring constants
git-svn-id: trunk@13034 -
of a bitpacked record in assembler code
* convert the offsets of byte-aligned fields of bitpacked records from bits
to bytes (mantis #13563)
git-svn-id: trunk@13027 -
physical registers
* free the physical return registers at the caller side for 64 bit
systems
* make sure that we do not double-free registers in case a return
value is not used (mantis #13536)
git-svn-id: trunk@13023 -
attribute is available via the new append_attribute() method
(to enable easily adding extra attributes)
* write the definitions of methods as child entries of the
objectdef, instead of in the global scope
* only write DW_AT_calling_convention and DW_AT_external attributes
if their value is different from the DWARF default one
+ write DW_AT_virtuality and DW_AT_vtable_elem_location attributes
for virtual methods
* write the debug info for the hidden "self" parameter before all
other parameters and mark it as "artificial", because that is
how GDB distinguishes regular methods from static methods
git-svn-id: trunk@13003 -
Borland's i386 calling convention (its value may still change)
* specify the calling convention of each procedure in the DWARF info
* don't add the function result twice or even thrice to the debug
info, and don't add it at all to the parameter lists (even if it's
a hidden parameter, gdb will automatically add it according to the
ABI rules when calling the function)
-> calling "register" functions/procedures works with my experimental
gdb patch (methods not yet tested, and probably won't work yet)
git-svn-id: trunk@12995 -
when they are not used in the unit where they are defined (since they
may be used elsewhere, discovered while analyzing mantis #13345)
git-svn-id: trunk@12954 -
(and hence those directories were interpreted as source files themselves)
+ added -gostabsabsincludes option to make the compiler store absolute
paths to include files in Stabs debugging information (since no
search paths are used). This is not the default because it breaks
when only the base path of an entire source tree changes (relative
paths, which are the previous behaviour and the current default,
work fine, but the absolute paths don't anymore; this can happen
with shared network drives, and possibly with distros shipping
external .dbg files)
git-svn-id: trunk@12933 -
work correctly with DWARF)
* only force the internal linker for STABS when generating relocatable
output (rather than for all debugging formats)
git-svn-id: trunk@12917 -
inlining, because that results in alignment settings of "0"
(voidtype.savesize = 0 -> size2align(0) = 0), which is interpreted
by the code generators as unaligned (and is actually even invalid
nowadays). This caused errors on NDS when writing to memory mapped
I/O devices (mantis #13343)
git-svn-id: trunk@12916 -
* renamed al_dwarf enum to al_dwarf_frame since this enum only enables frame generation
* renamed create_dwarf procedure for the same reason
* skipped check for dwarf support in assember, since we generate all dwarf info ourselves
git-svn-id: trunk@12906 -
of in the DWARF, as it's more efficient and avoids a gdb bug which
occurs on some platforms (thanks to Jan Kratochvil for the tip,
http://sourceware.org/ml/gdb/2009-03/msg00094.html )
git-svn-id: trunk@12905 -
they always use the same parameter pushing order
* define the pushleftright_pocalls constant only for i386 so it cannot
be accidentally used anymore for other platforms
git-svn-id: trunk@12891 -
elements of the array (like Kylix, mantis #12038) + test
* add pfReference and pfArray TParamFlags for open array parameters
like Kylix
git-svn-id: trunk@12888 -
Needs a fix in gdb when referencing a location relative to a
global variable (an array element other than the first, a field
other than the first) on Mac OS X and when using external debug
info on Linux/Windows.
git-svn-id: trunk@12877 -
the use of Objective-C 1.0 constructs. Because it is a mode switch, it
can be used cumulatively with every syntax mode. Note that a {$mode xxx}
statement resets all mode switches as well, so you cannot use the
-Mobjectivec1 variant if you have such a statement in a unit. This
modeswitch is currently only enabled for Darwin/PowerPC and Darwin/i386,
as the backend support is not yet implemented for other platforms.
+ implemented selector() statement that can be used to create an Objective-C
selector for the message with the specified *constant* name (in the future,
it will also work for Objective-C method identifiers)
+ added SEL type to the system unit (the selector() statement returns it)
+ added all Objective-C segments to the assembler writers
+ (currently mostly dummy) objc1 unit that is automatically included if the
{$modeswitch objectivec1} statement is used
+ some tests for the selector() statement
git-svn-id: trunk@12870 -
anything from past the end of the array (it was discarded, but this
can cause crashes if the array lies at the end of a memory block)
-- todo: also for writing
* adapted tparray13 so it checks this on unix platforms
git-svn-id: trunk@12844 -
raising an exception inside a signal handler is inherently unsafe
and often causes actual crashes on darwin (mantis #9930).
- removed an unused global typed constant (in_const_evaluation)
- removed {$ifdef havelinuxrtl10} code
git-svn-id: trunk@12826 -