correctly calculate and pass on the addresses for the parameters and the environment; this way parameters can now be used, but reading environment variables still does not seem to work...
Note: the other assembler files (especially cprt0.as) were not adjusted and might not work at all
git-svn-id: trunk@22936 -
if an address is passed the compiler cannot know a good
value for the frame so it passed nil and no stack trace is printed, resolves#12528
git-svn-id: trunk@22932 -
+ a_op64_reg_reg: add support for "NEG" and "NOT" of 64-bit values
+ a_op64_const_reg: make sure that we know whether a NEG or NOT with a constant is performed
git-svn-id: trunk@22930 -
* since m68k is 1) a big endian system and 2) a system without a fixed stack (thus we use a push-equivalent) we need to swap the order of the hi and lo longwords of a 64-bit value when passing it to a function
git-svn-id: trunk@22928 -
* in case of copying from the parameter location to the local location we need to use the alignment size for the source as byte/word values are passed as LongInts (this is how the ABI is specified)
git-svn-id: trunk@22924 -
- Removed separate ELF section names for PIC. The only difference was .data named .data.rel; however .rel suffix has nothing to do with PIC. It only signifies that the section has relocations so such sections can be grouped together in output file and reduce number of pages for dynamic linker to visit while resolving the relocations at load time. At the same time, no existing link scripts distinguish between .rel and any other suffix (except .rel.ro, but it's a different story), meaning that long section names will break .rel grouping.
While support for .data.rel can be added similar to existing rodata handling (separate sec_data and sec_data_norel sections), this doesn't seem worth the trouble.
git-svn-id: trunk@22915 -
* Simplified .shstrtab handling between passes by using oso_debug_copy attribute on it.
- Don't recreate segment mapping: only debug sections are removed between passes, and they are never part of any segment.
git-svn-id: trunk@22914 -
that were removed (e.g. most of QuickDraw) were kept. Most changes are
related to deprecation notices, or the fact that certain headers have
become available on iOS. This version corresponds to r393 of the
macosxintf repository.
There were also a number of small corrections to existing declarations:
o several opaque types have been changed from ^SInt32 into pointers to
different empty records. That means that these types are no longer
assignment-compatible. Some of the more prominent ones that may affect
existing *correct* code are HIObject and ControlRef=HIViewRef. This
may require adding typecasts to keep code compiling (the same typecasts
are required in C)
o CGGLContextCreate : fixed first parameter (was "var", now is value
parameter)
o CFHostGetAddressing: var hasBeenResolved: boolean -> booleanptr because
can be nil
o CFHostGetNames: var hasBeenResolved: boolean -> booleanptr because can
be nil
o ColorSyncIterateInstalledProfiles: var seed: UInt32 -> UInt32Ptr
because can be nil
o AudioStreamGetPropertyInfo: outSize and outWritable changed to pointer
because can be nil
o cblas (several var-parametes changed to pointers because they represent
arrays):
o cblas_sswap, cblas_dswap: X, Y
o cblas_scopy, cblas_dcopy: Y
o cblas_saxpy, cblas_daxpy: Y
o catlas_saxpby, catlas_daxpby: Y
o catlas_sset, catlas_dset: X
o cblas_sscal, cblas_dscal: X
o cblas_sgemv, cblas_dgemv: X
o cblas_strmv, cblas_dtrmv: X
o cblas_stbmv, cblas_dtbmv: X
o cblas_stpmv, cblas_dtpmv: Ap, X
o cblas_strsv, cblas_dtrsv: X
o cblas_stbsv, cblas_dtbsv: X
o cblas_stpsv, cblas_dtpsv: Ap, X
o cblas_ssymv, cblas_dsymv: X
o cblas_ssbmv, cblas_dsbmv: Y
o cblas_sspmv, cblas_dspmv: Ap, Y
o cblas_sger, cblas_dger: A
o cblas_ssyr, cblas_dsyr: A
o cblas_sspr, cblas_dspr: Ap
o cblas_ssyr2, cblas_dsyr2: A
o cblas_sspr2, cblas_dspr2: A
o cblas_sgemm, cblas_sgemm: C
o cblas_ssymm, cblas_Dsymm: C
o cblas_ssyrk, cblas_dsyrk: C
o cblas_ssyr2k, cblas_dsyr2k: C
o cblas_strmm, cblas_dtrmm: B
o cblas_strsm, cblas_strsm: B
o vBLAS (idem)
o SDOT: X, Y
o SNRM2: X
o SASUM: X
o ISAMAX: X
o SSWAP: X, Y
o SCOPY: X, Y
o SAXPY: X, Y
o SROT: X, Y
o SSCAL: X
o SGEMV, A, X, Y
o SGEMM: A, B, C
o vDSP (idem)
o vDSP_sve_svesq, vDSP_sve_svesqD: __vDSP_A
o vDSP_normalize, vDSP_normalizeD: __vDSP_A, __vDSP_C
git-svn-id: trunk@22897 -
+ add routine "call_rtl_moddiv_reg_reg" which handles the calling of "fpc_div_longint", "fpc_div_dword", "fpc_mod_longint" and "fpc_mod_dword"
* emit_mod_reg_reg & emit_div_reg_reg: use the new method instead of doing the call oneself
=> "Str(SomeInt, SomeStr)" and "Writeln(SomeInt)" now works
git-svn-id: trunk@22893 -
+ add methods "call_rtl_mul_const_reg" and "call_rtl_mul_reg_reg" which can call the RTL helpers "fpc_mul_longint" and "fpc_mul_longword" (based on AVR code)
* use the new call methods for the RTL to correctly pass the parameters (on the stack, not in registers...)
git-svn-id: trunk@22892 -
* don't do a sign_extend, but use the correct move size to copy the const; this fixes the setting of the line ending style inside of "Assign"
=> output of strings does now work correctly!
git-svn-id: trunk@22890 -