svn commit: r244677 - in projects/calloutng: . bin/date contrib/binutils/bfd contrib/gdb/gdb contrib/libc-vis contrib/libstdc++/include/std contrib/llvm/include/llvm/MC contrib/llvm/lib/ExecutionEn...
Alexander Motin
mav at FreeBSD.org
Tue Dec 25 13:00:25 UTC 2012
Author: mav
Date: Tue Dec 25 13:00:19 2012
New Revision: 244677
URL: http://svnweb.freebsd.org/changeset/base/244677
Log:
MFC @ r244676
Added:
projects/calloutng/contrib/libc-vis/
- copied from r244676, head/contrib/libc-vis/
projects/calloutng/contrib/mknod/
- copied from r244676, head/contrib/mknod/
projects/calloutng/contrib/mtree/
- copied from r244676, head/contrib/mtree/
projects/calloutng/lib/libc/gen/unvis-compat.c
- copied unchanged from r244676, head/lib/libc/gen/unvis-compat.c
projects/calloutng/lib/libnetbsd/
- copied from r244676, head/lib/libnetbsd/
projects/calloutng/lib/libstand/amd64/
- copied from r244676, head/lib/libstand/amd64/
projects/calloutng/sys/arm/arm/cpufunc_asm_arm11x6.S
- copied unchanged from r244676, head/sys/arm/arm/cpufunc_asm_arm11x6.S
projects/calloutng/sys/boot/ficl64/
- copied from r244676, head/sys/boot/ficl64/
projects/calloutng/sys/kern/subr_busdma_bufalloc.c
- copied unchanged from r244676, head/sys/kern/subr_busdma_bufalloc.c
projects/calloutng/sys/sys/busdma_bufalloc.h
- copied unchanged from r244676, head/sys/sys/busdma_bufalloc.h
projects/calloutng/tools/regression/usr.bin/printf/regress.zero.out
- copied unchanged from r244676, head/tools/regression/usr.bin/printf/regress.zero.out
projects/calloutng/usr.sbin/nmtree/
- copied from r244676, head/usr.sbin/nmtree/
Deleted:
projects/calloutng/include/vis.h
projects/calloutng/lib/libc/gen/unvis.3
projects/calloutng/lib/libc/gen/unvis.c
projects/calloutng/lib/libc/gen/vis.3
projects/calloutng/lib/libc/gen/vis.c
projects/calloutng/sys/boot/userboot/libstand/amd64/
Modified:
projects/calloutng/UPDATING
projects/calloutng/bin/date/netdate.c
projects/calloutng/contrib/binutils/bfd/elflink.c
projects/calloutng/contrib/gdb/gdb/dwarf2read.c
projects/calloutng/contrib/gdb/gdb/gdbtypes.c
projects/calloutng/contrib/gdb/gdb/gdbtypes.h
projects/calloutng/contrib/gdb/gdb/hpread.c
projects/calloutng/contrib/gdb/gdb/parse.c
projects/calloutng/contrib/gdb/gdb/stabsread.c
projects/calloutng/contrib/libstdc++/include/std/std_limits.h
projects/calloutng/contrib/llvm/include/llvm/MC/MCExpr.h
projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
projects/calloutng/contrib/llvm/lib/MC/MCExpr.cpp
projects/calloutng/contrib/llvm/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h
projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h
projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
projects/calloutng/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td
projects/calloutng/contrib/llvm/lib/Target/Mips/MipsCodeEmitter.cpp
projects/calloutng/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
projects/calloutng/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td
projects/calloutng/contrib/llvm/lib/Target/Mips/MipsJITInfo.cpp
projects/calloutng/contrib/llvm/lib/Target/Mips/MipsJITInfo.h
projects/calloutng/contrib/llvm/lib/Target/Mips/MipsMCInstLower.cpp
projects/calloutng/contrib/llvm/lib/Transforms/Scalar/SROA.cpp
projects/calloutng/contrib/llvm/tools/clang/include/clang/Sema/Scope.h
projects/calloutng/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
projects/calloutng/contrib/llvm/tools/clang/lib/Basic/Version.cpp
projects/calloutng/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
projects/calloutng/contrib/llvm/tools/clang/lib/Driver/ToolChains.h
projects/calloutng/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
projects/calloutng/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp
projects/calloutng/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp
projects/calloutng/contrib/llvm/tools/clang/lib/Sema/IdentifierResolver.cpp
projects/calloutng/contrib/xz/AUTHORS
projects/calloutng/contrib/xz/ChangeLog
projects/calloutng/contrib/xz/README
projects/calloutng/contrib/xz/THANKS
projects/calloutng/contrib/xz/po/de.po
projects/calloutng/contrib/xz/po/fr.po
projects/calloutng/contrib/xz/po/it.po
projects/calloutng/contrib/xz/po/pl.po
projects/calloutng/contrib/xz/src/common/sysdefs.h
projects/calloutng/contrib/xz/src/liblzma/api/lzma/version.h
projects/calloutng/contrib/xz/src/liblzma/simple/simple_coder.c
projects/calloutng/contrib/xz/src/liblzma/simple/simple_private.h
projects/calloutng/contrib/xz/src/xz/args.c
projects/calloutng/contrib/xz/src/xz/coder.c
projects/calloutng/contrib/xz/src/xz/message.c
projects/calloutng/contrib/xz/src/xz/xz.1
projects/calloutng/etc/defaults/rc.conf
projects/calloutng/etc/login.conf
projects/calloutng/etc/newsyslog.conf
projects/calloutng/etc/periodic/daily/Makefile
projects/calloutng/gnu/lib/libgcc/Makefile
projects/calloutng/gnu/usr.bin/binutils/as/Makefile
projects/calloutng/include/Makefile
projects/calloutng/lib/Makefile
projects/calloutng/lib/clang/include/clang/Basic/Version.inc
projects/calloutng/lib/libc/gen/Makefile.inc
projects/calloutng/lib/libc/gen/Symbol.map
projects/calloutng/lib/libc/gen/check_utility_compat.c
projects/calloutng/lib/libc/iconv/citrus_mmap.c
projects/calloutng/lib/libc/nls/msgcat.c
projects/calloutng/lib/libcompiler_rt/Makefile
projects/calloutng/lib/libnetgraph/sock.c
projects/calloutng/release/picobsd/build/picobsd
projects/calloutng/sbin/hastd/parse.y
projects/calloutng/sbin/ifconfig/af_nd6.c
projects/calloutng/sbin/ifconfig/ifconfig.c
projects/calloutng/sbin/route/route.c
projects/calloutng/sbin/savecore/savecore.8
projects/calloutng/sbin/savecore/savecore.c
projects/calloutng/sbin/setkey/setkey.8
projects/calloutng/share/i18n/csmapper/Makefile.part
projects/calloutng/share/man/man4/arcmsr.4
projects/calloutng/share/man/man9/lock.9
projects/calloutng/share/man/man9/make_dev.9
projects/calloutng/share/misc/committers-src.dot
projects/calloutng/share/mk/bsd.lib.mk
projects/calloutng/share/mk/bsd.own.mk
projects/calloutng/share/mk/sys.mk
projects/calloutng/sys/arm/arm/busdma_machdep-v6.c
projects/calloutng/sys/arm/arm/busdma_machdep.c
projects/calloutng/sys/arm/arm/cpufunc.c
projects/calloutng/sys/arm/arm/elf_trampoline.c
projects/calloutng/sys/arm/arm/identcpu.c
projects/calloutng/sys/arm/arm/locore.S
projects/calloutng/sys/arm/arm/pmap-v6.c
projects/calloutng/sys/arm/arm/pmap.c
projects/calloutng/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
projects/calloutng/sys/arm/broadcom/bcm2835/files.bcm2835
projects/calloutng/sys/arm/conf/PANDABOARD
projects/calloutng/sys/arm/conf/RPI-B
projects/calloutng/sys/arm/conf/VERSATILEPB
projects/calloutng/sys/arm/include/armreg.h
projects/calloutng/sys/arm/include/cpuconf.h
projects/calloutng/sys/arm/include/cpufunc.h
projects/calloutng/sys/arm/include/intr.h
projects/calloutng/sys/arm/include/pmap.h
projects/calloutng/sys/arm/include/vm.h
projects/calloutng/sys/arm/versatile/files.versatile
projects/calloutng/sys/boot/ficl/Makefile
projects/calloutng/sys/boot/i386/efi/ldscript.amd64
projects/calloutng/sys/boot/userboot/libstand/Makefile
projects/calloutng/sys/cam/scsi/scsi_enc_ses.c
projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
projects/calloutng/sys/cddl/dev/dtrace/dtrace_debug.c
projects/calloutng/sys/conf/files
projects/calloutng/sys/conf/files.arm
projects/calloutng/sys/conf/options.arm
projects/calloutng/sys/dev/ale/if_ale.c
projects/calloutng/sys/dev/arcmsr/arcmsr.c
projects/calloutng/sys/dev/arcmsr/arcmsr.h
projects/calloutng/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
projects/calloutng/sys/dev/atkbdc/psm.c
projects/calloutng/sys/dev/cxgbe/t4_l2t.c
projects/calloutng/sys/dev/cxgbe/t4_main.c
projects/calloutng/sys/dev/ixgbe/ixgbe.c
projects/calloutng/sys/dev/ixgbe/ixgbe.h
projects/calloutng/sys/dev/mii/brgphy.c
projects/calloutng/sys/dev/mii/miidevs
projects/calloutng/sys/dev/netmap/ixgbe_netmap.h
projects/calloutng/sys/dev/nvme/nvme.c
projects/calloutng/sys/dev/nvme/nvme_ctrlr.c
projects/calloutng/sys/dev/nvme/nvme_private.h
projects/calloutng/sys/dev/nvme/nvme_test.c
projects/calloutng/sys/dev/sound/usb/uaudio.c
projects/calloutng/sys/dev/usb/serial/usb_serial.c
projects/calloutng/sys/dev/usb/serial/usb_serial.h
projects/calloutng/sys/dev/usb/storage/umass.c
projects/calloutng/sys/dev/usb/storage/ustorage_fs.c
projects/calloutng/sys/dev/usb/usb_busdma.c
projects/calloutng/sys/dev/usb/usb_msctest.c
projects/calloutng/sys/dev/usb/usb_transfer.c
projects/calloutng/sys/dev/usb/usbdi.h
projects/calloutng/sys/dev/usb/wlan/if_uath.c
projects/calloutng/sys/dev/usb/wlan/if_uathvar.h
projects/calloutng/sys/dev/usb/wlan/if_upgt.c
projects/calloutng/sys/dev/usb/wlan/if_upgtvar.h
projects/calloutng/sys/dev/usb/wlan/if_urtw.c
projects/calloutng/sys/dev/usb/wlan/if_urtwvar.h
projects/calloutng/sys/dev/wtap/if_wtap.c
projects/calloutng/sys/fs/devfs/devfs_vnops.c
projects/calloutng/sys/fs/ext2fs/ext2_dinode.h
projects/calloutng/sys/fs/ext2fs/ext2_inode_cnv.c
projects/calloutng/sys/fs/ext2fs/ext2_vfsops.c
projects/calloutng/sys/fs/ext2fs/ext2fs.h
projects/calloutng/sys/geom/label/g_label.c
projects/calloutng/sys/kern/kern_conf.c
projects/calloutng/sys/kern/kern_descrip.c
projects/calloutng/sys/kern/kern_jail.c
projects/calloutng/sys/kern/kern_lock.c
projects/calloutng/sys/kern/kern_mutex.c
projects/calloutng/sys/kern/kern_priv.c
projects/calloutng/sys/kern/kern_rmlock.c
projects/calloutng/sys/kern/kern_rwlock.c
projects/calloutng/sys/kern/kern_sig.c
projects/calloutng/sys/kern/kern_sx.c
projects/calloutng/sys/kern/subr_smp.c
projects/calloutng/sys/kern/subr_syscall.c
projects/calloutng/sys/kern/sys_generic.c
projects/calloutng/sys/kern/vfs_bio.c
projects/calloutng/sys/kern/vfs_mount.c
projects/calloutng/sys/kern/vfs_subr.c
projects/calloutng/sys/kgssapi/gss_accept_sec_context.c
projects/calloutng/sys/kgssapi/gss_acquire_cred.c
projects/calloutng/sys/kgssapi/gss_canonicalize_name.c
projects/calloutng/sys/kgssapi/gss_delete_sec_context.c
projects/calloutng/sys/kgssapi/gss_display_status.c
projects/calloutng/sys/kgssapi/gss_export_name.c
projects/calloutng/sys/kgssapi/gss_impl.c
projects/calloutng/sys/kgssapi/gss_import_name.c
projects/calloutng/sys/kgssapi/gss_init_sec_context.c
projects/calloutng/sys/kgssapi/gss_pname_to_uid.c
projects/calloutng/sys/kgssapi/gss_release_cred.c
projects/calloutng/sys/kgssapi/gss_release_name.c
projects/calloutng/sys/kgssapi/gss_set_cred_option.c
projects/calloutng/sys/kgssapi/gssapi_impl.h
projects/calloutng/sys/mips/include/param.h
projects/calloutng/sys/net/if_bridge.c
projects/calloutng/sys/net80211/ieee80211_hostap.c
projects/calloutng/sys/net80211/ieee80211_proto.c
projects/calloutng/sys/netinet/in.c
projects/calloutng/sys/netinet/tcp_input.c
projects/calloutng/sys/netinet6/ip6_output.c
projects/calloutng/sys/netinet6/ip6_var.h
projects/calloutng/sys/netpfil/ipfw/ip_fw2.c
projects/calloutng/sys/netpfil/ipfw/ip_fw_dynamic.c
projects/calloutng/sys/netpfil/ipfw/ip_fw_log.c
projects/calloutng/sys/netpfil/ipfw/ip_fw_private.h
projects/calloutng/sys/netpfil/pf/pf.c
projects/calloutng/sys/netpfil/pf/pf_norm.c
projects/calloutng/sys/sys/file.h
projects/calloutng/sys/sys/ktr.h
projects/calloutng/sys/tools/vnode_if.awk
projects/calloutng/sys/ufs/ffs/ffs_softdep.c
projects/calloutng/sys/vm/uma_int.h
projects/calloutng/sys/vm/vm.h
projects/calloutng/sys/vm/vm_map.c
projects/calloutng/sys/vm/vm_mmap.c
projects/calloutng/sys/vm/vm_unix.c
projects/calloutng/tools/build/mk/OptionalObsoleteFiles.inc
projects/calloutng/tools/regression/usr.bin/printf/regress.sh
projects/calloutng/tools/tools/netrate/netreceive/Makefile
projects/calloutng/tools/tools/netrate/netreceive/netreceive.c
projects/calloutng/usr.bin/clang/clang/clang.1
projects/calloutng/usr.bin/grep/grep.c
projects/calloutng/usr.bin/grep/grep.h
projects/calloutng/usr.bin/grep/util.c
projects/calloutng/usr.bin/indent/indent_globs.h
projects/calloutng/usr.bin/printf/printf.c
projects/calloutng/usr.bin/sort/sort.c
projects/calloutng/usr.bin/sort/sort.h
projects/calloutng/usr.sbin/Makefile
projects/calloutng/usr.sbin/acpi/acpidump/acpi.c
projects/calloutng/usr.sbin/acpi/acpidump/acpidump.8
projects/calloutng/usr.sbin/bsdconfig/bsdconfig
projects/calloutng/usr.sbin/bsdconfig/console/console
projects/calloutng/usr.sbin/bsdconfig/console/font
projects/calloutng/usr.sbin/bsdconfig/console/keymap
projects/calloutng/usr.sbin/bsdconfig/console/repeat
projects/calloutng/usr.sbin/bsdconfig/console/saver
projects/calloutng/usr.sbin/bsdconfig/console/screenmap
projects/calloutng/usr.sbin/bsdconfig/console/ttys
projects/calloutng/usr.sbin/bsdconfig/diskmgmt/diskmgmt
projects/calloutng/usr.sbin/bsdconfig/docsinstall/docsinstall
projects/calloutng/usr.sbin/bsdconfig/dot/dot
projects/calloutng/usr.sbin/bsdconfig/examples/bsdconfigrc
projects/calloutng/usr.sbin/bsdconfig/mouse/disable
projects/calloutng/usr.sbin/bsdconfig/mouse/enable
projects/calloutng/usr.sbin/bsdconfig/mouse/flags
projects/calloutng/usr.sbin/bsdconfig/mouse/mouse
projects/calloutng/usr.sbin/bsdconfig/mouse/port
projects/calloutng/usr.sbin/bsdconfig/mouse/type
projects/calloutng/usr.sbin/bsdconfig/networking/defaultrouter
projects/calloutng/usr.sbin/bsdconfig/networking/devices
projects/calloutng/usr.sbin/bsdconfig/networking/hostname
projects/calloutng/usr.sbin/bsdconfig/networking/nameservers
projects/calloutng/usr.sbin/bsdconfig/networking/networking
projects/calloutng/usr.sbin/bsdconfig/networking/share/common.subr
projects/calloutng/usr.sbin/bsdconfig/networking/share/device.subr
projects/calloutng/usr.sbin/bsdconfig/networking/share/hostname.subr
projects/calloutng/usr.sbin/bsdconfig/networking/share/ipaddr.subr
projects/calloutng/usr.sbin/bsdconfig/networking/share/media.subr
projects/calloutng/usr.sbin/bsdconfig/networking/share/netmask.subr
projects/calloutng/usr.sbin/bsdconfig/networking/share/resolv.subr
projects/calloutng/usr.sbin/bsdconfig/networking/share/routing.subr
projects/calloutng/usr.sbin/bsdconfig/password/password
projects/calloutng/usr.sbin/bsdconfig/password/share/password.subr
projects/calloutng/usr.sbin/bsdconfig/security/kern_securelevel
projects/calloutng/usr.sbin/bsdconfig/security/security
projects/calloutng/usr.sbin/bsdconfig/share/common.subr
projects/calloutng/usr.sbin/bsdconfig/share/dialog.subr
projects/calloutng/usr.sbin/bsdconfig/share/mustberoot.subr
projects/calloutng/usr.sbin/bsdconfig/share/strings.subr
projects/calloutng/usr.sbin/bsdconfig/share/sysrc.subr
projects/calloutng/usr.sbin/bsdconfig/startup/misc
projects/calloutng/usr.sbin/bsdconfig/startup/rcadd
projects/calloutng/usr.sbin/bsdconfig/startup/rcconf
projects/calloutng/usr.sbin/bsdconfig/startup/rcdelete
projects/calloutng/usr.sbin/bsdconfig/startup/rcedit
projects/calloutng/usr.sbin/bsdconfig/startup/rcvar
projects/calloutng/usr.sbin/bsdconfig/startup/share/rcconf.subr
projects/calloutng/usr.sbin/bsdconfig/startup/share/rcedit.subr
projects/calloutng/usr.sbin/bsdconfig/startup/share/rcvar.subr
projects/calloutng/usr.sbin/bsdconfig/startup/startup
projects/calloutng/usr.sbin/bsdconfig/timezone/share/continents.subr
projects/calloutng/usr.sbin/bsdconfig/timezone/share/countries.subr
projects/calloutng/usr.sbin/bsdconfig/timezone/share/iso3166.subr
projects/calloutng/usr.sbin/bsdconfig/timezone/share/menus.subr
projects/calloutng/usr.sbin/bsdconfig/timezone/share/zones.subr
projects/calloutng/usr.sbin/bsdconfig/timezone/timezone
projects/calloutng/usr.sbin/bsdconfig/ttys/ttys
projects/calloutng/usr.sbin/bsdconfig/usermgmt/groupadd
projects/calloutng/usr.sbin/bsdconfig/usermgmt/groupdel
projects/calloutng/usr.sbin/bsdconfig/usermgmt/groupedit
projects/calloutng/usr.sbin/bsdconfig/usermgmt/groupinput
projects/calloutng/usr.sbin/bsdconfig/usermgmt/share/group_input.subr
projects/calloutng/usr.sbin/bsdconfig/usermgmt/share/user_input.subr
projects/calloutng/usr.sbin/bsdconfig/usermgmt/useradd
projects/calloutng/usr.sbin/bsdconfig/usermgmt/userdel
projects/calloutng/usr.sbin/bsdconfig/usermgmt/useredit
projects/calloutng/usr.sbin/bsdconfig/usermgmt/userinput
projects/calloutng/usr.sbin/bsdconfig/usermgmt/usermgmt
projects/calloutng/usr.sbin/gssd/Makefile
projects/calloutng/usr.sbin/gssd/gssd.8
projects/calloutng/usr.sbin/gssd/gssd.c
projects/calloutng/usr.sbin/mountd/mountd.c
projects/calloutng/usr.sbin/mptable/mptable.c
projects/calloutng/usr.sbin/mtest/mtest.c
projects/calloutng/usr.sbin/ndp/ndp.8
projects/calloutng/usr.sbin/nfsd/nfsd.c
projects/calloutng/usr.sbin/pkg/pkg.c
projects/calloutng/usr.sbin/rpcbind/rpcbind.c
projects/calloutng/usr.sbin/syslogd/syslogd.c
projects/calloutng/usr.sbin/ypserv/yp_main.c
Directory Properties:
projects/calloutng/ (props changed)
projects/calloutng/contrib/binutils/ (props changed)
projects/calloutng/contrib/gdb/ (props changed)
projects/calloutng/contrib/libstdc++/ (props changed)
projects/calloutng/contrib/llvm/ (props changed)
projects/calloutng/contrib/llvm/tools/clang/ (props changed)
projects/calloutng/contrib/xz/ (props changed)
projects/calloutng/gnu/lib/ (props changed)
projects/calloutng/gnu/usr.bin/binutils/ (props changed)
projects/calloutng/lib/libc/ (props changed)
projects/calloutng/sbin/ (props changed)
projects/calloutng/share/man/man4/ (props changed)
projects/calloutng/sys/ (props changed)
projects/calloutng/sys/boot/ (props changed)
projects/calloutng/sys/boot/i386/efi/ (props changed)
projects/calloutng/sys/cddl/contrib/opensolaris/ (props changed)
projects/calloutng/sys/conf/ (props changed)
Modified: projects/calloutng/UPDATING
==============================================================================
--- projects/calloutng/UPDATING Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/UPDATING Tue Dec 25 13:00:19 2012 (r244677)
@@ -26,6 +26,24 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
disable the most expensive debugging functionality run
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
+20121223:
+ After switching to Clang as the default compiler some users of ZFS
+ on i386 systems started to experience stack overflow kernel panics.
+ Please consider using 'options KSTACK_PAGES=4' in such configurations.
+
+20121222:
+ GEOM_LABEL now mangles label names read from file system metadata.
+ Mangling affect labels containing spaces, non-printable characters,
+ '%' or '"'. Device names in /etc/fstab and other places may need to
+ be updated.
+
+20121217:
+ By default, only the 10 most recent kernel dumps will be saved. To
+ restore the previous behaviour (no limit on the number of kernel dumps
+ stored in the dump directory) add the following line to /etc/rc.conf:
+
+ savecore_flags=""
+
20121201:
With the addition of auditdistd(8), a new auditdistd user is now
depended on during installworld. "mergemaster -p" can be used to add
Modified: projects/calloutng/bin/date/netdate.c
==============================================================================
--- projects/calloutng/bin/date/netdate.c Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/bin/date/netdate.c Tue Dec 25 13:00:19 2012 (r244677)
@@ -85,7 +85,7 @@ netsettime(time_t tval)
dest.sin_addr.s_addr = htonl((u_long)INADDR_ANY);
s = socket(AF_INET, SOCK_DGRAM, 0);
if (s < 0) {
- if (errno != EPROTONOSUPPORT)
+ if (errno != EAFNOSUPPORT)
warn("timed");
return (retval = 2);
}
Modified: projects/calloutng/contrib/binutils/bfd/elflink.c
==============================================================================
--- projects/calloutng/contrib/binutils/bfd/elflink.c Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/binutils/bfd/elflink.c Tue Dec 25 13:00:19 2012 (r244677)
@@ -10584,6 +10584,7 @@ elf_gc_sweep (bfd *abfd, struct bfd_link
{
/* Keep debug and special sections. */
if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
+ || elf_section_data (o)->this_hdr.sh_type == SHT_NOTE
|| (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
o->gc_mark = 1;
Modified: projects/calloutng/contrib/gdb/gdb/dwarf2read.c
==============================================================================
--- projects/calloutng/contrib/gdb/gdb/dwarf2read.c Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/gdb/gdb/dwarf2read.c Tue Dec 25 13:00:19 2012 (r244677)
@@ -834,6 +834,8 @@ static void read_tag_const_type (struct
static void read_tag_volatile_type (struct die_info *, struct dwarf2_cu *);
+static void read_tag_restrict_type (struct die_info *, struct dwarf2_cu *);
+
static void read_tag_string_type (struct die_info *, struct dwarf2_cu *);
static void read_subroutine_type (struct die_info *, struct dwarf2_cu *);
@@ -3729,7 +3731,8 @@ read_tag_const_type (struct die_info *di
}
base_type = die_type (die, cu);
- die->type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
+ die->type = make_cvr_type (1, TYPE_VOLATILE (base_type),
+ TYPE_RESTRICT (base_type), base_type, 0);
}
static void
@@ -3743,7 +3746,23 @@ read_tag_volatile_type (struct die_info
}
base_type = die_type (die, cu);
- die->type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
+ die->type = make_cvr_type (TYPE_CONST (base_type), 1,
+ TYPE_RESTRICT (base_type), base_type, 0);
+}
+
+static void
+read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+ struct type *base_type;
+
+ if (die->type)
+ {
+ return;
+ }
+
+ base_type = die_type (die, cu);
+ die->type = make_cvr_type (TYPE_CONST (base_type), TYPE_VOLATILE (base_type),
+ 1, base_type, 0);
}
/* Extract all information from a DW_TAG_string_type DIE and add to
@@ -6086,6 +6105,9 @@ read_type_die (struct die_info *die, str
case DW_TAG_volatile_type:
read_tag_volatile_type (die, cu);
break;
+ case DW_TAG_restrict_type:
+ read_tag_restrict_type (die, cu);
+ break;
case DW_TAG_string_type:
read_tag_string_type (die, cu);
break;
Modified: projects/calloutng/contrib/gdb/gdb/gdbtypes.c
==============================================================================
--- projects/calloutng/contrib/gdb/gdb/gdbtypes.c Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/gdb/gdb/gdbtypes.c Tue Dec 25 13:00:19 2012 (r244677)
@@ -502,7 +502,8 @@ make_type_with_address_space (struct typ
We allocate new memory if needed. */
struct type *
-make_cv_type (int cnst, int voltl, struct type *type, struct type **typeptr)
+make_cvr_type (int cnst, int voltl, int restrct, struct type *type,
+ struct type **typeptr)
{
struct type *ntype; /* New type */
struct type *tmp_type = type; /* tmp type */
@@ -517,6 +518,9 @@ make_cv_type (int cnst, int voltl, struc
if (voltl)
new_flags |= TYPE_FLAG_VOLATILE;
+ if (restrct)
+ new_flags |= TYPE_FLAG_RESTRICT;
+
if (typeptr && *typeptr != NULL)
{
/* Objfile is per-core-type. This const-qualified type had best
@@ -1371,7 +1375,7 @@ struct type *
check_typedef (struct type *type)
{
struct type *orig_type = type;
- int is_const, is_volatile;
+ int is_const, is_volatile, is_restrict;
while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
{
@@ -1407,6 +1411,7 @@ check_typedef (struct type *type)
is_const = TYPE_CONST (type);
is_volatile = TYPE_VOLATILE (type);
+ is_restrict = TYPE_RESTRICT (type);
/* If this is a struct/class/union with no fields, then check whether a
full definition exists somewhere else. This is for systems where a
@@ -1424,7 +1429,7 @@ check_typedef (struct type *type)
}
newtype = lookup_transparent_type (name);
if (newtype)
- make_cv_type (is_const, is_volatile, newtype, &type);
+ make_cvr_type (is_const, is_volatile, is_restrict, newtype, &type);
}
/* Otherwise, rely on the stub flag being set for opaque/stubbed types */
else if (TYPE_STUB (type) && !currently_reading_symtab)
@@ -1442,7 +1447,8 @@ check_typedef (struct type *type)
}
sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0, (struct symtab **) NULL);
if (sym)
- make_cv_type (is_const, is_volatile, SYMBOL_TYPE (sym), &type);
+ make_cvr_type (is_const, is_volatile, is_restrict, SYMBOL_TYPE (sym),
+ &type);
}
if (TYPE_TARGET_STUB (type))
Modified: projects/calloutng/contrib/gdb/gdb/gdbtypes.h
==============================================================================
--- projects/calloutng/contrib/gdb/gdb/gdbtypes.h Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/gdb/gdb/gdbtypes.h Tue Dec 25 13:00:19 2012 (r244677)
@@ -273,6 +273,13 @@ enum type_code
#define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \
& TYPE_FLAG_ADDRESS_CLASS_ALL)
+/* Restrict type. If this is set, the corresponding type has a
+ * restrict modifier.
+ */
+
+#define TYPE_FLAG_RESTRICT (1 << 17)
+#define TYPE_RESTRICT(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_FLAG_RESTRICT)
+
/* Array bound type. */
enum array_bound_type
{
@@ -1099,7 +1106,8 @@ extern struct type *lookup_reference_typ
extern struct type *make_reference_type (struct type *, struct type **);
-extern struct type *make_cv_type (int, int, struct type *, struct type **);
+extern struct type *make_cvr_type (int, int, int, struct type *,
+ struct type **);
extern void replace_type (struct type *, struct type *);
Modified: projects/calloutng/contrib/gdb/gdb/hpread.c
==============================================================================
--- projects/calloutng/contrib/gdb/gdb/hpread.c Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/gdb/gdb/hpread.c Tue Dec 25 13:00:19 2012 (r244677)
@@ -4939,8 +4939,9 @@ hpread_type_lookup (dnttpointer hp_type,
* "m_void" modifiers? Is static_flag really needed here?
* (m_static used for methods of classes, elsewhere).
*/
- tmp_type = make_cv_type (dn_bufp->dmodifier.m_const,
+ tmp_type = make_cvr_type (dn_bufp->dmodifier.m_const,
dn_bufp->dmodifier.m_volatile,
+ 0,
hpread_type_lookup (dn_bufp->dmodifier.type, objfile),
0);
return tmp_type;
Modified: projects/calloutng/contrib/gdb/gdb/parse.c
==============================================================================
--- projects/calloutng/contrib/gdb/gdb/parse.c Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/gdb/gdb/parse.c Tue Dec 25 13:00:19 2012 (r244677)
@@ -1167,13 +1167,15 @@ follow_types (struct type *follow_type)
case tp_end:
done = 1;
if (make_const)
- follow_type = make_cv_type (make_const,
- TYPE_VOLATILE (follow_type),
- follow_type, 0);
+ follow_type = make_cvr_type (make_const,
+ TYPE_VOLATILE (follow_type),
+ TYPE_RESTRICT (follow_type),
+ follow_type, 0);
if (make_volatile)
- follow_type = make_cv_type (TYPE_CONST (follow_type),
- make_volatile,
- follow_type, 0);
+ follow_type = make_cvr_type (TYPE_CONST (follow_type),
+ make_volatile,
+ TYPE_RESTRICT (follow_type),
+ follow_type, 0);
if (make_addr_space)
follow_type = make_type_with_address_space (follow_type,
make_addr_space);
@@ -1192,13 +1194,15 @@ follow_types (struct type *follow_type)
case tp_pointer:
follow_type = lookup_pointer_type (follow_type);
if (make_const)
- follow_type = make_cv_type (make_const,
- TYPE_VOLATILE (follow_type),
- follow_type, 0);
+ follow_type = make_cvr_type (make_const,
+ TYPE_VOLATILE (follow_type),
+ TYPE_RESTRICT (follow_type),
+ follow_type, 0);
if (make_volatile)
- follow_type = make_cv_type (TYPE_CONST (follow_type),
- make_volatile,
- follow_type, 0);
+ follow_type = make_cvr_type (TYPE_CONST (follow_type),
+ make_volatile,
+ TYPE_RESTRICT (follow_type),
+ follow_type, 0);
if (make_addr_space)
follow_type = make_type_with_address_space (follow_type,
make_addr_space);
@@ -1208,13 +1212,15 @@ follow_types (struct type *follow_type)
case tp_reference:
follow_type = lookup_reference_type (follow_type);
if (make_const)
- follow_type = make_cv_type (make_const,
- TYPE_VOLATILE (follow_type),
- follow_type, 0);
+ follow_type = make_cvr_type (make_const,
+ TYPE_VOLATILE (follow_type),
+ TYPE_RESTRICT (follow_type),
+ follow_type, 0);
if (make_volatile)
- follow_type = make_cv_type (TYPE_CONST (follow_type),
- make_volatile,
- follow_type, 0);
+ follow_type = make_cvr_type (TYPE_CONST (follow_type),
+ make_volatile,
+ TYPE_RESTRICT (follow_type),
+ follow_type, 0);
if (make_addr_space)
follow_type = make_type_with_address_space (follow_type,
make_addr_space);
Modified: projects/calloutng/contrib/gdb/gdb/stabsread.c
==============================================================================
--- projects/calloutng/contrib/gdb/gdb/stabsread.c Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/gdb/gdb/stabsread.c Tue Dec 25 13:00:19 2012 (r244677)
@@ -1750,13 +1750,13 @@ again:
case 'k': /* Const qualifier on some type (Sun) */
type = read_type (pp, objfile);
- type = make_cv_type (1, TYPE_VOLATILE (type), type,
+ type = make_cvr_type (1, TYPE_VOLATILE (type), TYPE_RESTRICT(type), type,
dbx_lookup_type (typenums));
break;
case 'B': /* Volatile qual on some type (Sun) */
type = read_type (pp, objfile);
- type = make_cv_type (TYPE_CONST (type), 1, type,
+ type = make_cvr_type (TYPE_CONST (type), 1, TYPE_RESTRICT(type), type,
dbx_lookup_type (typenums));
break;
Modified: projects/calloutng/contrib/libstdc++/include/std/std_limits.h
==============================================================================
--- projects/calloutng/contrib/libstdc++/include/std/std_limits.h Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/libstdc++/include/std/std_limits.h Tue Dec 25 13:00:19 2012 (r244677)
@@ -134,10 +134,11 @@
#define __glibcxx_signed(T) ((T)(-1) < 0)
#define __glibcxx_min(T) \
- (__glibcxx_signed (T) ? (T)1 << __glibcxx_digits (T) : (T)0)
+ (__glibcxx_signed (T) ? (((T)1 << (__glibcxx_digits (T) - 1)) << 1) : (T)0)
#define __glibcxx_max(T) \
- (__glibcxx_signed (T) ? ((T)1 << __glibcxx_digits (T)) - 1 : ~(T)0)
+ (__glibcxx_signed (T) ? \
+ (((((T)1 << (__glibcxx_digits (T) - 1)) - 1) << 1) + 1) : ~(T)0)
#define __glibcxx_digits(T) \
(sizeof(T) * __CHAR_BIT__ - __glibcxx_signed (T))
Modified: projects/calloutng/contrib/llvm/include/llvm/MC/MCExpr.h
==============================================================================
--- projects/calloutng/contrib/llvm/include/llvm/MC/MCExpr.h Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/include/llvm/MC/MCExpr.h Tue Dec 25 13:00:19 2012 (r244677)
@@ -197,7 +197,11 @@ public:
VK_Mips_GOT_PAGE,
VK_Mips_GOT_OFST,
VK_Mips_HIGHER,
- VK_Mips_HIGHEST
+ VK_Mips_HIGHEST,
+ VK_Mips_GOT_HI16,
+ VK_Mips_GOT_LO16,
+ VK_Mips_CALL_HI16,
+ VK_Mips_CALL_LO16
};
private:
Modified: projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -346,7 +346,7 @@ uint8_t *RuntimeDyldImpl::createStubFunc
uint32_t *StubAddr = (uint32_t*)Addr;
*StubAddr = 0xe51ff004; // ldr pc,<label>
return (uint8_t*)++StubAddr;
- } else if (Arch == Triple::mipsel) {
+ } else if (Arch == Triple::mipsel || Arch == Triple::mips) {
uint32_t *StubAddr = (uint32_t*)Addr;
// 0: 3c190000 lui t9,%hi(addr).
// 4: 27390000 addiu t9,t9,%lo(addr).
Modified: projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -676,7 +676,8 @@ void RuntimeDyldELF::processRelocationRe
RelType, 0);
Section.StubOffset += getMaxStubSize();
}
- } else if (Arch == Triple::mipsel && RelType == ELF::R_MIPS_26) {
+ } else if ((Arch == Triple::mipsel || Arch == Triple::mips) &&
+ RelType == ELF::R_MIPS_26) {
// This is an Mips branch relocation, need to use a stub function.
DEBUG(dbgs() << "\t\tThis is a Mips branch relocation.");
SectionEntry &Section = Sections[Rel.SectionID];
Modified: projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
==============================================================================
--- projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h Tue Dec 25 13:00:19 2012 (r244677)
@@ -168,7 +168,7 @@ protected:
inline unsigned getMaxStubSize() {
if (Arch == Triple::arm || Arch == Triple::thumb)
return 8; // 32-bit instruction and 32-bit address
- else if (Arch == Triple::mipsel)
+ else if (Arch == Triple::mipsel || Arch == Triple::mips)
return 16;
else if (Arch == Triple::ppc64)
return 44;
Modified: projects/calloutng/contrib/llvm/lib/MC/MCExpr.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/MC/MCExpr.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/MC/MCExpr.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -229,6 +229,10 @@ StringRef MCSymbolRefExpr::getVariantKin
case VK_Mips_GOT_OFST: return "GOT_OFST";
case VK_Mips_HIGHER: return "HIGHER";
case VK_Mips_HIGHEST: return "HIGHEST";
+ case VK_Mips_GOT_HI16: return "GOT_HI16";
+ case VK_Mips_GOT_LO16: return "GOT_LO16";
+ case VK_Mips_CALL_HI16: return "CALL_HI16";
+ case VK_Mips_CALL_LO16: return "CALL_LO16";
}
llvm_unreachable("Invalid variant kind");
}
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -128,6 +128,10 @@ static void printExpr(const MCExpr *Expr
case MCSymbolRefExpr::VK_Mips_GOT_OFST: OS << "%got_ofst("; break;
case MCSymbolRefExpr::VK_Mips_HIGHER: OS << "%higher("; break;
case MCSymbolRefExpr::VK_Mips_HIGHEST: OS << "%highest("; break;
+ case MCSymbolRefExpr::VK_Mips_GOT_HI16: OS << "%got_hi("; break;
+ case MCSymbolRefExpr::VK_Mips_GOT_LO16: OS << "%got_lo("; break;
+ case MCSymbolRefExpr::VK_Mips_CALL_HI16: OS << "%call_hi("; break;
+ case MCSymbolRefExpr::VK_Mips_CALL_LO16: OS << "%call_lo("; break;
}
OS << SRE->getSymbol();
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -42,6 +42,8 @@ static unsigned adjustFixupValue(unsigne
case Mips::fixup_Mips_GOT_PAGE:
case Mips::fixup_Mips_GOT_OFST:
case Mips::fixup_Mips_GOT_DISP:
+ case Mips::fixup_Mips_GOT_LO16:
+ case Mips::fixup_Mips_CALL_LO16:
break;
case Mips::fixup_Mips_PC16:
// So far we are only using this type for branches.
@@ -60,6 +62,8 @@ static unsigned adjustFixupValue(unsigne
break;
case Mips::fixup_Mips_HI16:
case Mips::fixup_Mips_GOT_Local:
+ case Mips::fixup_Mips_GOT_HI16:
+ case Mips::fixup_Mips_CALL_HI16:
// Get the 2nd 16-bits. Also add 1 if bit 15 is 1.
Value = ((Value + 0x8000) >> 16) & 0xffff;
break;
@@ -179,7 +183,11 @@ public:
{ "fixup_Mips_GOT_OFST", 0, 16, 0 },
{ "fixup_Mips_GOT_DISP", 0, 16, 0 },
{ "fixup_Mips_HIGHER", 0, 16, 0 },
- { "fixup_Mips_HIGHEST", 0, 16, 0 }
+ { "fixup_Mips_HIGHEST", 0, 16, 0 },
+ { "fixup_Mips_GOT_HI16", 0, 16, 0 },
+ { "fixup_Mips_GOT_LO16", 0, 16, 0 },
+ { "fixup_Mips_CALL_HI16", 0, 16, 0 },
+ { "fixup_Mips_CALL_LO16", 0, 16, 0 }
};
if (Kind < FirstTargetFixupKind)
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h Tue Dec 25 13:00:19 2012 (r244677)
@@ -84,7 +84,13 @@ namespace MipsII {
/// MO_HIGHER/HIGHEST - Represents the highest or higher half word of a
/// 64-bit symbol address.
MO_HIGHER,
- MO_HIGHEST
+ MO_HIGHEST,
+
+ /// MO_GOT_HI16/LO16, MO_CALL_HI16/LO16 - Relocations used for large GOTs.
+ MO_GOT_HI16,
+ MO_GOT_LO16,
+ MO_CALL_HI16,
+ MO_CALL_LO16
};
enum {
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -179,6 +179,18 @@ unsigned MipsELFObjectWriter::GetRelocTy
case Mips::fixup_Mips_HIGHEST:
Type = ELF::R_MIPS_HIGHEST;
break;
+ case Mips::fixup_Mips_GOT_HI16:
+ Type = ELF::R_MIPS_GOT_HI16;
+ break;
+ case Mips::fixup_Mips_GOT_LO16:
+ Type = ELF::R_MIPS_GOT_LO16;
+ break;
+ case Mips::fixup_Mips_CALL_HI16:
+ Type = ELF::R_MIPS_CALL_HI16;
+ break;
+ case Mips::fixup_Mips_CALL_LO16:
+ Type = ELF::R_MIPS_CALL_LO16;
+ break;
}
return Type;
}
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h Tue Dec 25 13:00:19 2012 (r244677)
@@ -116,6 +116,18 @@ namespace Mips {
// resulting in - R_MIPS_HIGHEST
fixup_Mips_HIGHEST,
+ // resulting in - R_MIPS_GOT_HI16
+ fixup_Mips_GOT_HI16,
+
+ // resulting in - R_MIPS_GOT_LO16
+ fixup_Mips_GOT_LO16,
+
+ // resulting in - R_MIPS_CALL_HI16
+ fixup_Mips_CALL_HI16,
+
+ // resulting in - R_MIPS_CALL_LO16
+ fixup_Mips_CALL_LO16,
+
// Marker
LastTargetFixupKind,
NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -287,6 +287,18 @@ getMachineOpValue(const MCInst &MI, cons
case MCSymbolRefExpr::VK_Mips_HIGHEST:
FixupKind = Mips::fixup_Mips_HIGHEST;
break;
+ case MCSymbolRefExpr::VK_Mips_GOT_HI16:
+ FixupKind = Mips::fixup_Mips_GOT_HI16;
+ break;
+ case MCSymbolRefExpr::VK_Mips_GOT_LO16:
+ FixupKind = Mips::fixup_Mips_GOT_LO16;
+ break;
+ case MCSymbolRefExpr::VK_Mips_CALL_HI16:
+ FixupKind = Mips::fixup_Mips_CALL_HI16;
+ break;
+ case MCSymbolRefExpr::VK_Mips_CALL_LO16:
+ FixupKind = Mips::fixup_Mips_CALL_LO16;
+ break;
} // switch
Fixups.push_back(MCFixup::Create(0, MO.getExpr(), MCFixupKind(FixupKind)));
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td Tue Dec 25 13:00:19 2012 (r244677)
@@ -255,6 +255,7 @@ def : MipsPat<(MipsHi tblockaddress:$in)
def : MipsPat<(MipsHi tjumptable:$in), (LUi64 tjumptable:$in)>;
def : MipsPat<(MipsHi tconstpool:$in), (LUi64 tconstpool:$in)>;
def : MipsPat<(MipsHi tglobaltlsaddr:$in), (LUi64 tglobaltlsaddr:$in)>;
+def : MipsPat<(MipsHi texternalsym:$in), (LUi64 texternalsym:$in)>;
def : MipsPat<(MipsLo tglobaladdr:$in), (DADDiu ZERO_64, tglobaladdr:$in)>;
def : MipsPat<(MipsLo tblockaddress:$in), (DADDiu ZERO_64, tblockaddress:$in)>;
@@ -262,6 +263,7 @@ def : MipsPat<(MipsLo tjumptable:$in), (
def : MipsPat<(MipsLo tconstpool:$in), (DADDiu ZERO_64, tconstpool:$in)>;
def : MipsPat<(MipsLo tglobaltlsaddr:$in),
(DADDiu ZERO_64, tglobaltlsaddr:$in)>;
+def : MipsPat<(MipsLo texternalsym:$in), (DADDiu ZERO_64, texternalsym:$in)>;
def : MipsPat<(add CPU64Regs:$hi, (MipsLo tglobaladdr:$lo)),
(DADDiu CPU64Regs:$hi, tglobaladdr:$lo)>;
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/MipsCodeEmitter.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/MipsCodeEmitter.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/MipsCodeEmitter.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -85,7 +85,7 @@ class MipsCodeEmitter : public MachineFu
private:
- void emitWordLE(unsigned Word);
+ void emitWord(unsigned Word);
/// Routines that handle operands which add machine relocations which are
/// fixed up by the relocation stage.
@@ -112,12 +112,6 @@ class MipsCodeEmitter : public MachineFu
unsigned getSizeExtEncoding(const MachineInstr &MI, unsigned OpNo) const;
unsigned getSizeInsEncoding(const MachineInstr &MI, unsigned OpNo) const;
- int emitULW(const MachineInstr &MI);
- int emitUSW(const MachineInstr &MI);
- int emitULH(const MachineInstr &MI);
- int emitULHu(const MachineInstr &MI);
- int emitUSH(const MachineInstr &MI);
-
void emitGlobalAddressUnaligned(const GlobalValue *GV, unsigned Reloc,
int Offset) const;
};
@@ -133,7 +127,7 @@ bool MipsCodeEmitter::runOnMachineFuncti
MCPEs = &MF.getConstantPool()->getConstants();
MJTEs = 0;
if (MF.getJumpTableInfo()) MJTEs = &MF.getJumpTableInfo()->getJumpTables();
- JTI->Initialize(MF, IsPIC);
+ JTI->Initialize(MF, IsPIC, Subtarget->isLittle());
MCE.setModuleInfo(&getAnalysis<MachineModuleInfo> ());
do {
@@ -271,103 +265,6 @@ void MipsCodeEmitter::emitMachineBasicBl
Reloc, BB));
}
-int MipsCodeEmitter::emitUSW(const MachineInstr &MI) {
- unsigned src = getMachineOpValue(MI, MI.getOperand(0));
- unsigned base = getMachineOpValue(MI, MI.getOperand(1));
- unsigned offset = getMachineOpValue(MI, MI.getOperand(2));
- // swr src, offset(base)
- // swl src, offset+3(base)
- MCE.emitWordLE(
- (0x2e << 26) | (base << 21) | (src << 16) | (offset & 0xffff));
- MCE.emitWordLE(
- (0x2a << 26) | (base << 21) | (src << 16) | ((offset+3) & 0xffff));
- return 2;
-}
-
-int MipsCodeEmitter::emitULW(const MachineInstr &MI) {
- unsigned dst = getMachineOpValue(MI, MI.getOperand(0));
- unsigned base = getMachineOpValue(MI, MI.getOperand(1));
- unsigned offset = getMachineOpValue(MI, MI.getOperand(2));
- unsigned at = 1;
- if (dst != base) {
- // lwr dst, offset(base)
- // lwl dst, offset+3(base)
- MCE.emitWordLE(
- (0x26 << 26) | (base << 21) | (dst << 16) | (offset & 0xffff));
- MCE.emitWordLE(
- (0x22 << 26) | (base << 21) | (dst << 16) | ((offset+3) & 0xffff));
- return 2;
- } else {
- // lwr at, offset(base)
- // lwl at, offset+3(base)
- // addu dst, at, $zero
- MCE.emitWordLE(
- (0x26 << 26) | (base << 21) | (at << 16) | (offset & 0xffff));
- MCE.emitWordLE(
- (0x22 << 26) | (base << 21) | (at << 16) | ((offset+3) & 0xffff));
- MCE.emitWordLE(
- (0x0 << 26) | (at << 21) | (0x0 << 16) | (dst << 11) | (0x0 << 6) | 0x21);
- return 3;
- }
-}
-
-int MipsCodeEmitter::emitUSH(const MachineInstr &MI) {
- unsigned src = getMachineOpValue(MI, MI.getOperand(0));
- unsigned base = getMachineOpValue(MI, MI.getOperand(1));
- unsigned offset = getMachineOpValue(MI, MI.getOperand(2));
- unsigned at = 1;
- // sb src, offset(base)
- // srl at,src,8
- // sb at, offset+1(base)
- MCE.emitWordLE(
- (0x28 << 26) | (base << 21) | (src << 16) | (offset & 0xffff));
- MCE.emitWordLE(
- (0x0 << 26) | (0x0 << 21) | (src << 16) | (at << 11) | (0x8 << 6) | 0x2);
- MCE.emitWordLE(
- (0x28 << 26) | (base << 21) | (at << 16) | ((offset+1) & 0xffff));
- return 3;
-}
-
-int MipsCodeEmitter::emitULH(const MachineInstr &MI) {
- unsigned dst = getMachineOpValue(MI, MI.getOperand(0));
- unsigned base = getMachineOpValue(MI, MI.getOperand(1));
- unsigned offset = getMachineOpValue(MI, MI.getOperand(2));
- unsigned at = 1;
- // lbu at, offset(base)
- // lb dst, offset+1(base)
- // sll dst,dst,8
- // or dst,dst,at
- MCE.emitWordLE(
- (0x24 << 26) | (base << 21) | (at << 16) | (offset & 0xffff));
- MCE.emitWordLE(
- (0x20 << 26) | (base << 21) | (dst << 16) | ((offset+1) & 0xffff));
- MCE.emitWordLE(
- (0x0 << 26) | (0x0 << 21) | (dst << 16) | (dst << 11) | (0x8 << 6) | 0x0);
- MCE.emitWordLE(
- (0x0 << 26) | (dst << 21) | (at << 16) | (dst << 11) | (0x0 << 6) | 0x25);
- return 4;
-}
-
-int MipsCodeEmitter::emitULHu(const MachineInstr &MI) {
- unsigned dst = getMachineOpValue(MI, MI.getOperand(0));
- unsigned base = getMachineOpValue(MI, MI.getOperand(1));
- unsigned offset = getMachineOpValue(MI, MI.getOperand(2));
- unsigned at = 1;
- // lbu at, offset(base)
- // lbu dst, offset+1(base)
- // sll dst,dst,8
- // or dst,dst,at
- MCE.emitWordLE(
- (0x24 << 26) | (base << 21) | (at << 16) | (offset & 0xffff));
- MCE.emitWordLE(
- (0x24 << 26) | (base << 21) | (dst << 16) | ((offset+1) & 0xffff));
- MCE.emitWordLE(
- (0x0 << 26) | (0x0 << 21) | (dst << 16) | (dst << 11) | (0x8 << 6) | 0x0);
- MCE.emitWordLE(
- (0x0 << 26) | (dst << 21) | (at << 16) | (dst << 11) | (0x0 << 6) | 0x25);
- return 4;
-}
-
void MipsCodeEmitter::emitInstruction(const MachineInstr &MI) {
DEBUG(errs() << "JIT: " << (void*)MCE.getCurrentPCValue() << ":\t" << MI);
@@ -377,16 +274,19 @@ void MipsCodeEmitter::emitInstruction(co
if ((MI.getDesc().TSFlags & MipsII::FormMask) == MipsII::Pseudo)
return;
- emitWordLE(getBinaryCodeForInstr(MI));
+ emitWord(getBinaryCodeForInstr(MI));
++NumEmitted; // Keep track of the # of mi's emitted
MCE.processDebugLoc(MI.getDebugLoc(), false);
}
-void MipsCodeEmitter::emitWordLE(unsigned Word) {
+void MipsCodeEmitter::emitWord(unsigned Word) {
DEBUG(errs() << " 0x";
errs().write_hex(Word) << "\n");
- MCE.emitWordLE(Word);
+ if (Subtarget->isLittle())
+ MCE.emitWordLE(Word);
+ else
+ MCE.emitWordBE(Word);
}
/// createMipsJITCodeEmitterPass - Return a pass that emits the collected Mips
Modified: projects/calloutng/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
==============================================================================
--- projects/calloutng/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp Tue Dec 25 11:11:26 2012 (r244676)
+++ projects/calloutng/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp Tue Dec 25 13:00:19 2012 (r244677)
@@ -46,6 +46,10 @@ static cl::opt<bool>
EnableMipsTailCalls("enable-mips-tail-calls", cl::Hidden,
cl::desc("MIPS: Enable tail calls."), cl::init(false));
+static cl::opt<bool>
+LargeGOT("mxgot", cl::Hidden,
+ cl::desc("MIPS: Enable GOT larger than 64k."), cl::init(false));
+
static const uint16_t O32IntRegs[4] = {
Mips::A0, Mips::A1, Mips::A2, Mips::A3
};
@@ -77,6 +81,71 @@ static SDValue GetGlobalReg(SelectionDAG
return DAG.getRegister(FI->getGlobalBaseReg(), Ty);
}
+static SDValue getTargetNode(SDValue Op, SelectionDAG &DAG, unsigned Flag) {
+ EVT Ty = Op.getValueType();
+
+ if (GlobalAddressSDNode *N = dyn_cast<GlobalAddressSDNode>(Op))
+ return DAG.getTargetGlobalAddress(N->getGlobal(), Op.getDebugLoc(), Ty, 0,
+ Flag);
+ if (ExternalSymbolSDNode *N = dyn_cast<ExternalSymbolSDNode>(Op))
+ return DAG.getTargetExternalSymbol(N->getSymbol(), Ty, Flag);
+ if (BlockAddressSDNode *N = dyn_cast<BlockAddressSDNode>(Op))
+ return DAG.getTargetBlockAddress(N->getBlockAddress(), Ty, 0, Flag);
+ if (JumpTableSDNode *N = dyn_cast<JumpTableSDNode>(Op))
+ return DAG.getTargetJumpTable(N->getIndex(), Ty, Flag);
+ if (ConstantPoolSDNode *N = dyn_cast<ConstantPoolSDNode>(Op))
+ return DAG.getTargetConstantPool(N->getConstVal(), Ty, N->getAlignment(),
+ N->getOffset(), Flag);
+
+ llvm_unreachable("Unexpected node type.");
+ return SDValue();
+}
+
+static SDValue getAddrNonPIC(SDValue Op, SelectionDAG &DAG) {
+ DebugLoc DL = Op.getDebugLoc();
+ EVT Ty = Op.getValueType();
+ SDValue Hi = getTargetNode(Op, DAG, MipsII::MO_ABS_HI);
+ SDValue Lo = getTargetNode(Op, DAG, MipsII::MO_ABS_LO);
+ return DAG.getNode(ISD::ADD, DL, Ty,
+ DAG.getNode(MipsISD::Hi, DL, Ty, Hi),
+ DAG.getNode(MipsISD::Lo, DL, Ty, Lo));
+}
+
+static SDValue getAddrLocal(SDValue Op, SelectionDAG &DAG, bool HasMips64) {
+ DebugLoc DL = Op.getDebugLoc();
+ EVT Ty = Op.getValueType();
+ unsigned GOTFlag = HasMips64 ? MipsII::MO_GOT_PAGE : MipsII::MO_GOT;
+ SDValue GOT = DAG.getNode(MipsISD::Wrapper, DL, Ty, GetGlobalReg(DAG, Ty),
+ getTargetNode(Op, DAG, GOTFlag));
+ SDValue Load = DAG.getLoad(Ty, DL, DAG.getEntryNode(), GOT,
+ MachinePointerInfo::getGOT(), false, false, false,
+ 0);
+ unsigned LoFlag = HasMips64 ? MipsII::MO_GOT_OFST : MipsII::MO_ABS_LO;
+ SDValue Lo = DAG.getNode(MipsISD::Lo, DL, Ty, getTargetNode(Op, DAG, LoFlag));
+ return DAG.getNode(ISD::ADD, DL, Ty, Load, Lo);
+}
+
+static SDValue getAddrGlobal(SDValue Op, SelectionDAG &DAG, unsigned Flag) {
+ DebugLoc DL = Op.getDebugLoc();
+ EVT Ty = Op.getValueType();
+ SDValue Tgt = DAG.getNode(MipsISD::Wrapper, DL, Ty, GetGlobalReg(DAG, Ty),
+ getTargetNode(Op, DAG, Flag));
+ return DAG.getLoad(Ty, DL, DAG.getEntryNode(), Tgt,
+ MachinePointerInfo::getGOT(), false, false, false, 0);
+}
+
+static SDValue getAddrGlobalLargeGOT(SDValue Op, SelectionDAG &DAG,
+ unsigned HiFlag, unsigned LoFlag) {
+ DebugLoc DL = Op.getDebugLoc();
+ EVT Ty = Op.getValueType();
+ SDValue Hi = DAG.getNode(MipsISD::Hi, DL, Ty, getTargetNode(Op, DAG, HiFlag));
+ Hi = DAG.getNode(ISD::ADD, DL, Ty, Hi, GetGlobalReg(DAG, Ty));
+ SDValue Wrapper = DAG.getNode(MipsISD::Wrapper, DL, Ty, Hi,
+ getTargetNode(Op, DAG, LoFlag));
+ return DAG.getLoad(Ty, DL, DAG.getEntryNode(), Wrapper,
+ MachinePointerInfo::getGOT(), false, false, false, 0);
+}
+
const char *MipsTargetLowering::getTargetNodeName(unsigned Opcode) const {
switch (Opcode) {
case MipsISD::JmpLink: return "MipsISD::JmpLink";
@@ -1743,8 +1812,6 @@ SDValue MipsTargetLowering::LowerGlobalA
const GlobalValue *GV = cast<GlobalAddressSDNode>(Op)->getGlobal();
if (getTargetMachine().getRelocationModel() != Reloc::PIC_ && !IsN64) {
- SDVTList VTs = DAG.getVTList(MVT::i32);
-
const MipsTargetObjectFile &TLOF =
(const MipsTargetObjectFile&)getObjFileLowering();
@@ -1752,69 +1819,33 @@ SDValue MipsTargetLowering::LowerGlobalA
if (TLOF.IsGlobalInSmallSection(GV, getTargetMachine())) {
SDValue GA = DAG.getTargetGlobalAddress(GV, dl, MVT::i32, 0,
MipsII::MO_GPREL);
- SDValue GPRelNode = DAG.getNode(MipsISD::GPRel, dl, VTs, &GA, 1);
+ SDValue GPRelNode = DAG.getNode(MipsISD::GPRel, dl,
+ DAG.getVTList(MVT::i32), &GA, 1);
SDValue GPReg = DAG.getRegister(Mips::GP, MVT::i32);
return DAG.getNode(ISD::ADD, dl, MVT::i32, GPReg, GPRelNode);
}
+
// %hi/%lo relocation
- SDValue GAHi = DAG.getTargetGlobalAddress(GV, dl, MVT::i32, 0,
- MipsII::MO_ABS_HI);
- SDValue GALo = DAG.getTargetGlobalAddress(GV, dl, MVT::i32, 0,
- MipsII::MO_ABS_LO);
- SDValue HiPart = DAG.getNode(MipsISD::Hi, dl, VTs, &GAHi, 1);
- SDValue Lo = DAG.getNode(MipsISD::Lo, dl, MVT::i32, GALo);
- return DAG.getNode(ISD::ADD, dl, MVT::i32, HiPart, Lo);
- }
-
- EVT ValTy = Op.getValueType();
- bool HasGotOfst = (GV->hasInternalLinkage() ||
- (GV->hasLocalLinkage() && !isa<Function>(GV)));
- unsigned GotFlag = HasMips64 ?
- (HasGotOfst ? MipsII::MO_GOT_PAGE : MipsII::MO_GOT_DISP) :
- (HasGotOfst ? MipsII::MO_GOT : MipsII::MO_GOT16);
- SDValue GA = DAG.getTargetGlobalAddress(GV, dl, ValTy, 0, GotFlag);
- GA = DAG.getNode(MipsISD::Wrapper, dl, ValTy, GetGlobalReg(DAG, ValTy), GA);
- SDValue ResNode = DAG.getLoad(ValTy, dl, DAG.getEntryNode(), GA,
- MachinePointerInfo(), false, false, false, 0);
- // On functions and global targets not internal linked only
- // a load from got/GP is necessary for PIC to work.
- if (!HasGotOfst)
- return ResNode;
- SDValue GALo = DAG.getTargetGlobalAddress(GV, dl, ValTy, 0,
- HasMips64 ? MipsII::MO_GOT_OFST :
- MipsII::MO_ABS_LO);
- SDValue Lo = DAG.getNode(MipsISD::Lo, dl, ValTy, GALo);
- return DAG.getNode(ISD::ADD, dl, ValTy, ResNode, Lo);
+ return getAddrNonPIC(Op, DAG);
+ }
+
+ if (GV->hasInternalLinkage() || (GV->hasLocalLinkage() && !isa<Function>(GV)))
+ return getAddrLocal(Op, DAG, HasMips64);
+
+ if (LargeGOT)
+ return getAddrGlobalLargeGOT(Op, DAG, MipsII::MO_GOT_HI16,
+ MipsII::MO_GOT_LO16);
+
+ return getAddrGlobal(Op, DAG,
+ HasMips64 ? MipsII::MO_GOT_DISP : MipsII::MO_GOT16);
}
SDValue MipsTargetLowering::LowerBlockAddress(SDValue Op,
SelectionDAG &DAG) const {
- const BlockAddress *BA = cast<BlockAddressSDNode>(Op)->getBlockAddress();
- // FIXME there isn't actually debug info here
- DebugLoc dl = Op.getDebugLoc();
+ if (getTargetMachine().getRelocationModel() != Reloc::PIC_ && !IsN64)
+ return getAddrNonPIC(Op, DAG);
- if (getTargetMachine().getRelocationModel() != Reloc::PIC_ && !IsN64) {
- // %hi/%lo relocation
- SDValue BAHi =
- DAG.getTargetBlockAddress(BA, MVT::i32, 0, MipsII::MO_ABS_HI);
- SDValue BALo =
- DAG.getTargetBlockAddress(BA, MVT::i32, 0, MipsII::MO_ABS_LO);
- SDValue Hi = DAG.getNode(MipsISD::Hi, dl, MVT::i32, BAHi);
- SDValue Lo = DAG.getNode(MipsISD::Lo, dl, MVT::i32, BALo);
- return DAG.getNode(ISD::ADD, dl, MVT::i32, Hi, Lo);
- }
-
- EVT ValTy = Op.getValueType();
- unsigned GOTFlag = HasMips64 ? MipsII::MO_GOT_PAGE : MipsII::MO_GOT;
- unsigned OFSTFlag = HasMips64 ? MipsII::MO_GOT_OFST : MipsII::MO_ABS_LO;
- SDValue BAGOTOffset = DAG.getTargetBlockAddress(BA, ValTy, 0, GOTFlag);
- BAGOTOffset = DAG.getNode(MipsISD::Wrapper, dl, ValTy,
- GetGlobalReg(DAG, ValTy), BAGOTOffset);
- SDValue BALOOffset = DAG.getTargetBlockAddress(BA, ValTy, 0, OFSTFlag);
- SDValue Load = DAG.getLoad(ValTy, dl, DAG.getEntryNode(), BAGOTOffset,
- MachinePointerInfo(), false, false, false, 0);
- SDValue Lo = DAG.getNode(MipsISD::Lo, dl, ValTy, BALOOffset);
- return DAG.getNode(ISD::ADD, dl, ValTy, Load, Lo);
+ return getAddrLocal(Op, DAG, HasMips64);
}
SDValue MipsTargetLowering::
@@ -1901,41 +1932,15 @@ LowerGlobalTLSAddress(SDValue Op, Select
SDValue MipsTargetLowering::
LowerJumpTable(SDValue Op, SelectionDAG &DAG) const
{
- SDValue HiPart, JTI, JTILo;
- // FIXME there isn't actually debug info here
- DebugLoc dl = Op.getDebugLoc();
- bool IsPIC = getTargetMachine().getRelocationModel() == Reloc::PIC_;
- EVT PtrVT = Op.getValueType();
- JumpTableSDNode *JT = cast<JumpTableSDNode>(Op);
-
- if (!IsPIC && !IsN64) {
- JTI = DAG.getTargetJumpTable(JT->getIndex(), PtrVT, MipsII::MO_ABS_HI);
- HiPart = DAG.getNode(MipsISD::Hi, dl, PtrVT, JTI);
- JTILo = DAG.getTargetJumpTable(JT->getIndex(), PtrVT, MipsII::MO_ABS_LO);
- } else {// Emit Load from Global Pointer
- unsigned GOTFlag = HasMips64 ? MipsII::MO_GOT_PAGE : MipsII::MO_GOT;
- unsigned OfstFlag = HasMips64 ? MipsII::MO_GOT_OFST : MipsII::MO_ABS_LO;
- JTI = DAG.getTargetJumpTable(JT->getIndex(), PtrVT, GOTFlag);
- JTI = DAG.getNode(MipsISD::Wrapper, dl, PtrVT, GetGlobalReg(DAG, PtrVT),
- JTI);
- HiPart = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), JTI,
- MachinePointerInfo(), false, false, false, 0);
- JTILo = DAG.getTargetJumpTable(JT->getIndex(), PtrVT, OfstFlag);
- }
+ if (getTargetMachine().getRelocationModel() != Reloc::PIC_ && !IsN64)
+ return getAddrNonPIC(Op, DAG);
- SDValue Lo = DAG.getNode(MipsISD::Lo, dl, PtrVT, JTILo);
- return DAG.getNode(ISD::ADD, dl, PtrVT, HiPart, Lo);
+ return getAddrLocal(Op, DAG, HasMips64);
}
SDValue MipsTargetLowering::
LowerConstantPool(SDValue Op, SelectionDAG &DAG) const
{
- SDValue ResNode;
- ConstantPoolSDNode *N = cast<ConstantPoolSDNode>(Op);
- const Constant *C = N->getConstVal();
- // FIXME there isn't actually debug info here
- DebugLoc dl = Op.getDebugLoc();
-
// gp_rel relocation
// FIXME: we should reference the constant pool using small data sections,
// but the asm printer currently doesn't support this feature without
@@ -1946,31 +1951,10 @@ LowerConstantPool(SDValue Op, SelectionD
// SDValue GOT = DAG.getGLOBAL_OFFSET_TABLE(MVT::i32);
// ResNode = DAG.getNode(ISD::ADD, MVT::i32, GOT, GPRelNode);
- if (getTargetMachine().getRelocationModel() != Reloc::PIC_ && !IsN64) {
- SDValue CPHi = DAG.getTargetConstantPool(C, MVT::i32, N->getAlignment(),
- N->getOffset(), MipsII::MO_ABS_HI);
- SDValue CPLo = DAG.getTargetConstantPool(C, MVT::i32, N->getAlignment(),
- N->getOffset(), MipsII::MO_ABS_LO);
- SDValue HiPart = DAG.getNode(MipsISD::Hi, dl, MVT::i32, CPHi);
- SDValue Lo = DAG.getNode(MipsISD::Lo, dl, MVT::i32, CPLo);
- ResNode = DAG.getNode(ISD::ADD, dl, MVT::i32, HiPart, Lo);
- } else {
- EVT ValTy = Op.getValueType();
- unsigned GOTFlag = HasMips64 ? MipsII::MO_GOT_PAGE : MipsII::MO_GOT;
- unsigned OFSTFlag = HasMips64 ? MipsII::MO_GOT_OFST : MipsII::MO_ABS_LO;
- SDValue CP = DAG.getTargetConstantPool(C, ValTy, N->getAlignment(),
- N->getOffset(), GOTFlag);
- CP = DAG.getNode(MipsISD::Wrapper, dl, ValTy, GetGlobalReg(DAG, ValTy), CP);
- SDValue Load = DAG.getLoad(ValTy, dl, DAG.getEntryNode(), CP,
- MachinePointerInfo::getConstantPool(), false,
- false, false, 0);
- SDValue CPLo = DAG.getTargetConstantPool(C, ValTy, N->getAlignment(),
- N->getOffset(), OFSTFlag);
- SDValue Lo = DAG.getNode(MipsISD::Lo, dl, ValTy, CPLo);
- ResNode = DAG.getNode(ISD::ADD, dl, ValTy, Load, Lo);
- }
+ if (getTargetMachine().getRelocationModel() != Reloc::PIC_ && !IsN64)
+ return getAddrNonPIC(Op, DAG);
- return ResNode;
+ return getAddrLocal(Op, DAG, HasMips64);
}
SDValue MipsTargetLowering::LowerVASTART(SDValue Op, SelectionDAG &DAG) const {
@@ -2862,60 +2846,41 @@ MipsTargetLowering::LowerCall(TargetLowe
// If the callee is a GlobalAddress/ExternalSymbol node (quite common, every
// direct call is) turn it into a TargetGlobalAddress/TargetExternalSymbol
// node so that legalize doesn't hack it.
- unsigned char OpFlag;
bool IsPICCall = (IsN64 || IsPIC); // true if calls are translated to jalr $25
bool GlobalOrExternal = false;
SDValue CalleeLo;
if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) {
- if (IsPICCall && G->getGlobal()->hasInternalLinkage()) {
- OpFlag = IsO32 ? MipsII::MO_GOT : MipsII::MO_GOT_PAGE;
- unsigned char LoFlag = IsO32 ? MipsII::MO_ABS_LO : MipsII::MO_GOT_OFST;
+ if (IsPICCall) {
+ if (G->getGlobal()->hasInternalLinkage())
+ Callee = getAddrLocal(Callee, DAG, HasMips64);
+ else if (LargeGOT)
+ Callee = getAddrGlobalLargeGOT(Callee, DAG, MipsII::MO_CALL_HI16,
+ MipsII::MO_CALL_LO16);
+ else
+ Callee = getAddrGlobal(Callee, DAG, MipsII::MO_GOT_CALL);
+ } else
Callee = DAG.getTargetGlobalAddress(G->getGlobal(), dl, getPointerTy(), 0,
- OpFlag);
- CalleeLo = DAG.getTargetGlobalAddress(G->getGlobal(), dl, getPointerTy(),
- 0, LoFlag);
- } else {
- OpFlag = IsPICCall ? MipsII::MO_GOT_CALL : MipsII::MO_NO_FLAG;
- Callee = DAG.getTargetGlobalAddress(G->getGlobal(), dl,
- getPointerTy(), 0, OpFlag);
- }
-
+ MipsII::MO_NO_FLAG);
GlobalOrExternal = true;
}
else if (ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>(Callee)) {
- if (IsN64 || (!IsO32 && IsPIC))
- OpFlag = MipsII::MO_GOT_DISP;
- else if (!IsPIC) // !N64 && static
- OpFlag = MipsII::MO_NO_FLAG;
+ if (!IsN64 && !IsPIC) // !N64 && static
+ Callee = DAG.getTargetExternalSymbol(S->getSymbol(), getPointerTy(),
+ MipsII::MO_NO_FLAG);
+ else if (LargeGOT)
+ Callee = getAddrGlobalLargeGOT(Callee, DAG, MipsII::MO_CALL_HI16,
+ MipsII::MO_CALL_LO16);
+ else if (HasMips64)
+ Callee = getAddrGlobal(Callee, DAG, MipsII::MO_GOT_DISP);
else // O32 & PIC
- OpFlag = MipsII::MO_GOT_CALL;
- Callee = DAG.getTargetExternalSymbol(S->getSymbol(), getPointerTy(),
- OpFlag);
+ Callee = getAddrGlobal(Callee, DAG, MipsII::MO_GOT_CALL);
+
GlobalOrExternal = true;
}
SDValue InFlag;
- // Create nodes that load address of callee and copy it to T9
- if (IsPICCall) {
- if (GlobalOrExternal) {
- // Load callee address
- Callee = DAG.getNode(MipsISD::Wrapper, dl, getPointerTy(),
- GetGlobalReg(DAG, getPointerTy()), Callee);
- SDValue LoadValue = DAG.getLoad(getPointerTy(), dl, DAG.getEntryNode(),
- Callee, MachinePointerInfo::getGOT(),
- false, false, false, 0);
-
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list