| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Clang's assembler in Xcode 6 appears to choke when the operand of st4 is a range, but is happy with a list.
|
| |
|
|\
| |
| | |
Fix expr error in Solaris 10 when using gcc.
|
| | |
|
|\ \
| | |
| | | |
Support PCC as producer and consumer
|
| | |
| | |
| | |
| | |
| | |
| | | |
Apparently, PCC doesn't support the fastcall calling convention.
Nor does it issue a warning or error for the attribute that it
does not understand.
|
| | | |
|
|\ \ \
| |/ /
| | | |
Fix build on darwin
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
If we're going to have to hand-write unwind info for darwin,
these macros make the job harder.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
EHFrame{N} IIRC is a special cue to ld64 that it should treat the unwind
in the object as "special/legacy" .. [these days everything is .cfi_xxxx
(except, cctools-as, as you noted)] .. without that much confusion arises
with ld64's atom-isation of the eh_frame section.
xxxx.eh labels are not needed for darwin ld64 >= 85.2.1 (i.e. darwin9,
xcode 3.1.4) to all intents and purposes, that's all that matters now,
since I think that anyone trying to build on 10.4/darwin8/xcode2.5 would
have to use a later ld64 (from odcctools) for other reasons.
|
| | |
| | |
| | |
| | | |
One more try to get default Darwin to work.
|
| | |
| | |
| | |
| | |
| | | |
Which are unsupported by Darwin cctools as.
Thankfully this doesn't uglify the source too much.
|
| | |
| | |
| | |
| | |
| | |
| | | |
The unwind info isn't 100% correct at all points during the epilogue,
and not annotating is just as incorrect as the annotation. This works
better on systems that do not support DW_OP_call_frame_cfa.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Darwin aligns long-double to 16, and thus all of the long double
tests were failing due to not honoring that. We ought to be able
to devise a test case for GCC using __attribute__((aligned)) that
would have failed too.
|
| | |
| | |
| | |
| | |
| | |
| | | |
The Apple assembler defaults to power of two alignment, rather than
byte alignment like everyone else. Force byte alignment by using
the proper directive.
|
| | | |
|
| |/ |
|
|\ \
| | |
| | | |
x86: MSVC does not support Complex type
|
| | | |
|
|\ \ \
| |_|/
|/| | |
x86: Fix void pointer arithmetic
|
| |/ |
|
|\ \
| |/
|/| |
S390
|
| |
| |
| |
| |
| |
| | |
As per discussion with Ulrich Weigand, document the restrictions
on the code within ffi_call_int as we simultaneously prepare
stack frames for ffi_call_SYSV and the target function.
|
| |
| |
| |
| |
| |
| | |
It's silly to stick to esa/390 features when the compiler won't.
Detect when brasl and larl are used by the compiler and then use
them in the assembly.
|
| |
| |
| |
| |
| |
| | |
Avoid using ffi_prep_args as a callback; do all the work setting
up the frame within ffi_call_int directly. Save fewer registers
in ffi_closure_SYSV.
|
| | |
|
| | |
|
|/ |
|
|\
| |
| | |
Two fixes for x86
|
| |
| |
| |
| |
| |
| | |
Since libffi currently doesn't allow empty structures, libgo
currently maps them to ffi_type_void. Given that we'll abort
on this case, handle it gracefully.
|
| | |
|
|\ \
| |/
|/| |
sparc: Define FFI_TARGET_SPECIFIC_VARIADIC for v9
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is a port of
http://gcc.gnu.org/viewcvs?rev=207763&root=gcc&view=rev
aka GCC PR libffi/60073, to the rewritten Sparc codebase.
Supposedly, we should have seen failures with the existing
libffi.call/cls_double_va.c testcase, but I hadn't.
Perhaps a gcc newer than 4.6.3 is required to see that...
|
| | |
|
|\ \
| | |
| | | |
powerpc: go closures for linux
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Unlike ffi_closure_LINUX64, this entry point is called normally,
so we already have the TOC in R2 and the closure in R11.
* powerpc/linux64_closure.S (ffi_closure_LINUX64): Remove a
register dependency chain.
(ffi_go_closure_linux64): Don't load r11 or r2.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Plus .cfi async unwind info, rearrangement of ffi_call_linux64 and
ffi_call_SYSV function params to avoid register copies, tweaks to
trampolines.
* src/powerpc/ffitarget.h (FFI_GO_CLOSURES): Define.
* src/powerpc/ffi.c (ffi_call_int): New function with extra
closure param, and args rearranged on ffi_call_linux64 and
ffi_call_SYSV calls, extracted from ..
(ffi_call): ..here.
(ffi_call_go, ffi_prep_go_closure): New functions.
* src/powerpc/ffi_linux64.c (ffi_prep_closure_loc_linux64): Make
hidden. Only flush insn part of ELFv2 trampoline. Don't shuffle
ELFv1 trampoline.
(ffi_closure_helper_LINUX64): Replace closure param with cif, fun,
user_data params.
* src/powerpc/ffi_powerpc.h (ffi_go_closure_sysv): Declare.
(ffi_go_closure_linux64): Declare.
(ffi_call_SYSV, fi_call_LINUX64): Update.
(ffi_prep_closure_loc_sysv, ffi_prep_closure_loc_linux64): Declare.
(ffi_closure_helper_SYSV, ffi_closure_helper_LINUX64): Update.
* src/powerpc/ffi_sysv.c (ASM_NEEDS_REGISTERS): Increase to 6.
(ffi_prep_closure_loc_sysv): Use bcl in trampoline, put data words
last, flush just the insn part.
(ffi_closure_helper_SYSV): Replace closure param with cif, fun and
user_data params.
* src/powerpc/linux64.S (ffi_call_LINUX64): Replace hand-written
.eh_frame with .cfi directives. Adjust for changed param order.
Pass extra "closure" param to user function in static chain. Add
.cfi directives to describe epilogue. Don't provide traceback
table for ELFv2 or _CALL_LINUX.
* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Replace
hand-written .eh_frame with .cfi directives. Adjust for changed
ffi_closure_helper_LINUX64 params. Add .cfi directives to
describe epilogue. Don't provide traceback table for ELFv2 or
_CALL_LINUX.
(ffi_go_closure_linux64): New function.
* src/powerpc/sysv.S: Remove redundant .globl ffi_prep_args_SYSV.
(ffi_call_SYSV): Make hidden. Replace hand-written .eh_frame with
.cfi directives. Adjust for changed params. Pass extra "closure"
param to user function in static chain. Add .cfi directives to
describe epilogue.
* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Make hidden.
Replace hand-written .eh_frame with .cfi directives. Adjust for
changed ffi_closure_helper_SYSV params. Add .cfi directives to
describe epilogue. Don't just use nops in the dead __NO_FPRS__
epilogues.
(ffi_go_closure_sysv): New function.
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
* src/powerpc/ffitarget.h: #error on unexpected FFI_TYPE_LAST.
(FFI_PPC_TYPE_LAST): Define.
(FFI_TYPE_UINT128): Define in terms of FFI_PPC_TYPE_LAST.
(FFI_SYSV_TYPE_SMALL_STRUCT, FFI_V2_TYPE_FLOAT_HOMOG): Likewise.
(FFI_V2_TYPE_DOUBLE_HOMOG, FFI_V2_TYPE_SMALL_STRUCT): Likewise.
|
|\ \
| |/
|/| |
dlmalloc: change defined(i386) to defined(__i386__)
|
|/
|
|
| |
When compiling with --std==c99, GCC and clang don't define i386 but __i386__
|
|\
| |
| | |
testsuite: Fix alpha static chain register name
|
|/ |
|
|\
| |
| | |
Configure and testsuite cleanups, v2
|
| |
| |
| |
| | |
Used the wrong register for THISCALL and FASTCALL.
|
| | |
|
| |
| |
| |
| |
| | |
It seems a bit silly to isolate them by globbing vs "*complex*"
when we can just as easily put them in their own subdirectory.
|
| | |
|
| |
| |
| |
| |
| | |
Clang doesn't like the -Wno-psabi argument that we want to pass to GCC.
Since clang is detected as GCC via __GNUC__, use ax_cv_c_compiler_vendor.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This eliminates the AM_CONDITIONAL ugliness, which eliminates
just a bit of extra boilerplate for a new target.
At the same time, properly categorize the EXTRA_DIST files
into SOURCES and HEADERS, for the generation of ctags.
|