1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-24 11:29:10 +00:00
freebsd/contrib
Pedro F. Giffuni 5bfc7db451 gcc: Add support for Apple's Block extension
Block objects [1] are a C-level syntactic and runtime feature. They
are similar to standard C functions, but in addition to executable
code they may also contain variable bindings to automatic (stack)
or managed (heap) memory. A block can therefore maintain a set of
state (data) that it can use to impact behavior when executed.

This port is based on Apple's GCC 5646 with some bugfixes from
Apple GCC 5666.3. It has some small differences with the support
in clang, which remains the recommended compiler.

Perhaps the most notable difference is that in GCC that __block
is not actually a keyword, but a macro. There will be workaround
for this issue in a near future. Other issues can be consulted in
the clang documentation [2]

For better compatiblity with Apple's GCC and llvm-gcc some related
fixes and features from Apple have been included. Support for the
non-standard nested functions in GCC is now off by default.

No effort was made to update the ObjC support since FreeBSD doesn't
carry ObjC in the base system, but some of the code crept in and
was more difficult to remove than to adjust.

Reference:
[1]
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html
[2]
http://clang.llvm.org/compatibility.html#block-variable-initialization

Obtained from:	Apple GCC 4.2
MFC after:	3 weeks
2014-01-05 00:43:28 +00:00
..
amd
apr Update subversion-1.8.0 -> 1.8.1. Update supporting 2013-07-28 06:02:40 +00:00
apr-util Import apr-util-1.5.3 from vendor branch (rr258600) 2013-11-25 22:20:34 +00:00
atf Drop all ATF tools code. 2013-11-18 01:28:29 +00:00
binutils Fix cross-compilation of ia64 target code with clang. 2013-12-28 22:52:46 +00:00
bmake Don't SEGV when Hash_Table is uninitialized 2013-11-14 00:29:48 +00:00
bsnmp Fix the -Wconversion warnings produced when compiling the SNMP agent. 2013-10-17 12:03:17 +00:00
byacc Merge byacc 20130925 2013-10-29 08:21:22 +00:00
bzip2
com_err
compiler-rt
dialog Update dialog to 1.2-20130923. 2013-09-24 14:52:43 +00:00
diff
dtc
ee
expat
file Apply upstream commit 33312fd828e59c78ae4ee30fd70d0ca109748cf0 (by 2013-12-22 14:14:53 +00:00
flex
gcc gcc: Add support for Apple's Block extension 2014-01-05 00:43:28 +00:00
gcclibs gcc: Add support for Apple's Block extension 2014-01-05 00:43:28 +00:00
gdb Use sysctl KERN_PROC_SIGTRAMP to retrieve the signal trampoline 2013-11-26 19:54:12 +00:00
gdtoa
gperf Get rid of register keyword usage in gperf, it is totally obsolete for 2013-12-23 00:02:18 +00:00
groff Quiesce warnings -Wdangling-else 2013-10-28 18:10:35 +00:00
ipfilter Hide 'struct ifaddr' definition from userland. Two tools left that use it, 2013-10-15 10:19:24 +00:00
jemalloc Update jemalloc to version 3.4.1. 2013-10-21 05:10:46 +00:00
ldns Build and install drill(1). 2013-09-22 20:30:55 +00:00
ldns-host Import Magerya Vitaly's ldns-host, and build it instead of the BIND version 2013-09-08 19:40:32 +00:00
less
libarchive
libbegemot
libc-pwcache
libc-vis
libc++ In libc++'s type_traits header, avoid warnings (activated by our use of 2013-12-28 20:54:08 +00:00
libcxxrt Since C++ typeinfo objects are currently not guaranteed to be merged at 2013-10-16 17:00:21 +00:00
libexecinfo libexecinfo: Include terminating null in byte count 2013-11-21 14:12:36 +00:00
libgnuregex
libpcap Integrate github revision 0446821e49224c6a29be28760cc9c4cc14f56d8a as 2013-10-31 20:03:59 +00:00
libreadline Quiesce warning about unused argument in call to rl_message() by wrapping 2013-11-04 16:52:27 +00:00
libstdc++ gcc: Bring updates from Google's enhanced gcc-4.2.1. 2013-11-23 18:32:53 +00:00
libyaml
llvm Pull in r183971 from upstream llvm trunk: 2013-12-25 20:58:02 +00:00
lukemftpd
mdocml Please welcome casperd daemon. It (and its services) will be responsible for 2013-12-02 08:21:28 +00:00
mknod
mtree Sync with NetBSD. The funtional change is to make the output when 2013-11-21 19:29:41 +00:00
ncurses
netcat MFV: netcat from OpenBSD 5.4. 2013-11-15 22:45:14 +00:00
ngatm
ntp
nvi Vendor import nvi-2.1.2-c80f493b038 a multikey mapping fix 2013-12-08 00:08:03 +00:00
ofed - Fix compile errors from the clang conversion 2013-08-09 03:29:46 +00:00
one-true-awk
openbsm Remove weirdly-named autofoo file. This is not needed for the (FreeBSD) 2013-07-22 08:46:15 +00:00
openpam MFV (r255387): undo autoprop damage 2013-09-08 16:56:17 +00:00
openresolv
opie Queisce two category of clang warnings: 2013-10-28 18:24:31 +00:00
pam_modules/pam_passwdqc Make the PAM password strength checking module WARNS=2 safe. 2013-08-27 15:50:26 +00:00
pf
pnpinfo
sendmail Temporarily revert sendmail 8.14.7 change to getipnodebyname() flags to 2013-08-12 17:22:39 +00:00
serf Update serf 1.2.1 -> 1.3.0 for svn 2013-08-02 19:21:46 +00:00
smbfs Just disable recoding support in libsmb if built WITHOUT_ICONV. 2013-11-12 15:09:28 +00:00
sqlite3 Introduce svnlite so that we can check out our source code again. 2013-06-18 02:53:45 +00:00
subversion Import svn-1.8.5. This contains a user-visible fix for svn:externals 2013-11-25 17:52:16 +00:00
tcp_wrappers Queisce warning about undeclared function usage. 2013-10-30 22:45:35 +00:00
tcpdump Fix build with WITHOUT_CAPSICUM. 2013-12-21 12:45:35 +00:00
tcsh
telnet Propagate ancient fix from Junos. 2013-11-07 00:36:39 +00:00
texinfo
tnftp
top
traceroute
tzcode tzfile.5: catch up to r204333 2013-12-16 01:58:12 +00:00
tzdata MFV of r259624, tzdata2013i 2013-12-19 20:19:57 +00:00
unbound Regenerate 2013-09-24 09:56:58 +00:00
unvis
vis
wpa Revert to upstream literal $FreeBSD tag 2013-10-30 18:33:40 +00:00
xz