Date: Sat, 10 May 2008 18:59:34 GMT From: John Birrell <jb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 141427 for review Message-ID: <200805101859.m4AIxY64064011@repoman.freebsd.org>
index | next in thread | raw e-mail
http://perforce.freebsd.org/chv.cgi?CH=141427 Change 141427 by jb@freebsd3 on 2008/05/10 18:58:49 IF7 Affected files ... .. //depot/projects/dtrace7/src/etc/defaults/rc.conf#7 integrate .. //depot/projects/dtrace7/src/etc/network.subr#2 integrate .. //depot/projects/dtrace7/src/etc/rc.d/ipfw#2 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/kgdb.h#4 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/kld.c#3 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/kthr.c#4 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/main.c#4 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/trgt.c#3 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/trgt_amd64.c#2 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/trgt_arm.c#2 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/trgt_i386.c#4 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/trgt_ia64.c#2 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c#2 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c#2 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#2 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_entry_private.h#3 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_entry_strmode.c#2 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_read.c#3 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_read_private.h#3 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_read_support_format_iso9660.c#3 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_string.h#2 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_string_sprintf.c#2 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_write.c#2 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_write_set_format_ar.c#3 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_write_set_format_cpio.c#3 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_write_set_format_cpio_newc.c#3 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_write_set_format_shar.c#2 integrate .. //depot/projects/dtrace7/src/lib/libarchive/archive_write_set_format_ustar.c#3 integrate .. //depot/projects/dtrace7/src/lib/libc/gen/scandir.c#2 integrate .. //depot/projects/dtrace7/src/lib/libc/locale/wctype.c#2 integrate .. //depot/projects/dtrace7/src/lib/libc/net/nsdispatch.c#2 integrate .. //depot/projects/dtrace7/src/lib/libc/stdio/fopen.c#3 integrate .. //depot/projects/dtrace7/src/lib/libc/sys/mkdir.2#2 integrate .. //depot/projects/dtrace7/src/lib/libc/sys/sctp_generic_recvmsg.2#2 integrate .. //depot/projects/dtrace7/src/lib/libc/sys/sctp_peeloff.2#2 integrate .. //depot/projects/dtrace7/src/lib/libdisk/open_ia64_disk.c#2 integrate .. //depot/projects/dtrace7/src/lib/libstand/Makefile#3 integrate .. //depot/projects/dtrace7/src/sbin/dhclient/bpf.c#2 integrate .. //depot/projects/dtrace7/src/share/man/man4/Makefile#7 integrate .. //depot/projects/dtrace7/src/share/man/man4/geom_linux_lvm.4#1 branch .. //depot/projects/dtrace7/src/share/man/man4/malo.4#1 branch .. //depot/projects/dtrace7/src/share/man/man5/rc.conf.5#5 integrate .. //depot/projects/dtrace7/src/share/man/man9/lock.9#2 integrate .. //depot/projects/dtrace7/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#3 integrate .. //depot/projects/dtrace7/src/sys/conf/NOTES#5 integrate .. //depot/projects/dtrace7/src/sys/conf/files#10 integrate .. //depot/projects/dtrace7/src/sys/conf/files.sun4v#3 integrate .. //depot/projects/dtrace7/src/sys/conf/options#5 integrate .. //depot/projects/dtrace7/src/sys/dev/bfe/if_bfe.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/LICENSE#2 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_80003es2lan.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_80003es2lan.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82540.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82541.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82541.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82542.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82543.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82543.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82571.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82571.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82575.c#3 delete .. //depot/projects/dtrace7/src/sys/dev/em/e1000_82575.h#3 delete .. //depot/projects/dtrace7/src/sys/dev/em/e1000_api.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_api.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_defines.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_hw.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_ich8lan.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_ich8lan.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_mac.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_mac.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_manage.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_manage.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_nvm.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_nvm.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_osdep.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/em/e1000_osdep.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_phy.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_phy.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/e1000_regs.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/if_em.c#3 integrate .. //depot/projects/dtrace7/src/sys/dev/em/if_em.h#3 integrate .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_82575.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_82575.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_api.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_api.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_defines.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_hw.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_mac.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_mac.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_manage.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_manage.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_nvm.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_nvm.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_osdep.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_osdep.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_phy.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_phy.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/e1000_regs.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/if_igb.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/igb/if_igb.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/malo/if_malo.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/malo/if_malo.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/malo/if_malo_pci.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/malo/if_malohal.c#1 branch .. //depot/projects/dtrace7/src/sys/dev/malo/if_malohal.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/malo/if_maloioctl.h#1 branch .. //depot/projects/dtrace7/src/sys/dev/usb/ehci.c#2 integrate .. //depot/projects/dtrace7/src/sys/dev/vx/if_vx.c#2 integrate .. //depot/projects/dtrace7/src/sys/fs/fifofs/fifo_vnops.c#2 integrate .. //depot/projects/dtrace7/src/sys/fs/nwfs/nwfs_subr.c#2 integrate .. //depot/projects/dtrace7/src/sys/fs/unionfs/union.h#2 integrate .. //depot/projects/dtrace7/src/sys/fs/unionfs/union_subr.c#3 integrate .. //depot/projects/dtrace7/src/sys/fs/unionfs/union_vnops.c#2 integrate .. //depot/projects/dtrace7/src/sys/gdb/gdb_main.c#2 integrate .. //depot/projects/dtrace7/src/sys/geom/linux_lvm/g_linux_lvm.c#1 branch .. //depot/projects/dtrace7/src/sys/geom/linux_lvm/g_linux_lvm.h#1 branch .. //depot/projects/dtrace7/src/sys/ia64/ia64/elf_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/ia64/ia64/machdep.c#6 integrate .. //depot/projects/dtrace7/src/sys/ia64/ia64/pmap.c#4 integrate .. //depot/projects/dtrace7/src/sys/ia64/include/md_var.h#2 integrate .. //depot/projects/dtrace7/src/sys/kern/kern_cpu.c#3 integrate .. //depot/projects/dtrace7/src/sys/kern/kern_kse.c#3 integrate .. //depot/projects/dtrace7/src/sys/kern/uipc_socket.c#3 integrate .. //depot/projects/dtrace7/src/sys/kern/uipc_syscalls.c#3 integrate .. //depot/projects/dtrace7/src/sys/kern/vfs_subr.c#4 integrate .. //depot/projects/dtrace7/src/sys/modules/Makefile#10 integrate .. //depot/projects/dtrace7/src/sys/modules/em/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/modules/esp/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/modules/geom/Makefile#3 integrate .. //depot/projects/dtrace7/src/sys/modules/geom/geom_linux_lvm/Makefile#1 branch .. //depot/projects/dtrace7/src/sys/modules/hfa/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/modules/hme/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/modules/igb/Makefile#1 branch .. //depot/projects/dtrace7/src/sys/modules/isp/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/modules/ispfw/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/modules/le/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/modules/malo/Makefile#1 branch .. //depot/projects/dtrace7/src/sys/modules/scc/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/modules/sound/driver/Makefile#2 integrate .. //depot/projects/dtrace7/src/sys/net/bpf.c#3 integrate .. //depot/projects/dtrace7/src/sys/net/if.c#2 integrate .. //depot/projects/dtrace7/src/sys/net/if_loop.c#2 integrate .. //depot/projects/dtrace7/src/sys/netinet/in_pcb.c#4 integrate .. //depot/projects/dtrace7/src/sys/netinet/sctp_constants.h#2 integrate .. //depot/projects/dtrace7/src/sys/netinet/sctp_indata.c#4 integrate .. //depot/projects/dtrace7/src/sys/netinet/sctp_input.c#3 integrate .. //depot/projects/dtrace7/src/sys/netinet/sctp_output.c#4 integrate .. //depot/projects/dtrace7/src/sys/netinet/sctp_usrreq.c#4 integrate .. //depot/projects/dtrace7/src/sys/netinet/sctp_var.h#2 integrate .. //depot/projects/dtrace7/src/sys/netinet/tcp.h#2 integrate .. //depot/projects/dtrace7/src/sys/netinet/tcp_input.c#3 integrate .. //depot/projects/dtrace7/src/sys/netinet/tcp_output.c#5 integrate .. //depot/projects/dtrace7/src/sys/netinet6/in6_pcb.c#3 integrate .. //depot/projects/dtrace7/src/sys/netinet6/sctp6_usrreq.c#2 integrate .. //depot/projects/dtrace7/src/sys/netncp/ncp_conn.h#2 integrate .. //depot/projects/dtrace7/src/sys/netsmb/smb_conn.h#3 integrate .. //depot/projects/dtrace7/src/sys/nfs4client/nfs4_idmap.c#2 integrate .. //depot/projects/dtrace7/src/sys/security/audit/audit.h#2 integrate .. //depot/projects/dtrace7/src/sys/sparc64/include/sysarch.h#2 integrate .. //depot/projects/dtrace7/src/sys/sparc64/pci/ofw_pcibus.c#3 integrate .. //depot/projects/dtrace7/src/sys/sun4v/include/bus_common.h#2 delete .. //depot/projects/dtrace7/src/sys/sun4v/include/pcpu.h#2 integrate .. //depot/projects/dtrace7/src/sys/sun4v/sun4v/nexus.c#2 integrate .. //depot/projects/dtrace7/src/sys/sun4v/sun4v/vnex.c#2 integrate .. //depot/projects/dtrace7/src/sys/sys/bufobj.h#2 integrate .. //depot/projects/dtrace7/src/sys/sys/lockmgr.h#2 integrate .. //depot/projects/dtrace7/src/sys/sys/mount.h#2 integrate .. //depot/projects/dtrace7/src/sys/sys/param.h#8 integrate .. //depot/projects/dtrace7/src/sys/sys/protosw.h#2 integrate .. //depot/projects/dtrace7/src/sys/sys/socket.h#2 integrate .. //depot/projects/dtrace7/src/sys/sys/vnode.h#3 integrate .. //depot/projects/dtrace7/src/sys/ufs/ffs/ffs_softdep.c#4 integrate .. //depot/projects/dtrace7/src/usr.bin/calendar/calendars/calendar.christian#2 integrate .. //depot/projects/dtrace7/src/usr.bin/procstat/procstat.1#3 integrate .. //depot/projects/dtrace7/src/usr.bin/ruptime/ruptime.c#2 integrate .. //depot/projects/dtrace7/src/usr.bin/unifdef/unifdef.1#2 integrate .. //depot/projects/dtrace7/src/usr.sbin/fwcontrol/fwcontrol.8#2 integrate .. //depot/projects/dtrace7/src/usr.sbin/fwcontrol/fwcontrol.c#2 integrate Differences ... ==== //depot/projects/dtrace7/src/etc/defaults/rc.conf#7 (text+ko) ==== @@ -15,7 +15,7 @@ # For a more detailed explanation of all the rc.conf variables, please # refer to the rc.conf(5) manual page. # -# $FreeBSD: src/etc/defaults/rc.conf,v 1.318.2.7 2008/04/15 20:23:58 emax Exp $ +# $FreeBSD: src/etc/defaults/rc.conf,v 1.318.2.9 2008/05/06 10:50:51 mtm Exp $ ############################################################## ### Important initial Boot-time options #################### @@ -124,6 +124,7 @@ firewall_nat_enable="NO" # Enable kernel NAT (if firewall_enable == YES) firewall_nat_interface="" # Public interface or IPaddress to use firewall_nat_flags="" # Additional configuration parameters +dummynet_enable="NO" # Load the dummynet(4) module ip_portrange_first="NO" # Set first dynamically allocated port ip_portrange_last="NO" # Set last dynamically allocated port ike_enable="NO" # Enable IKE daemon (usually racoon or isakmpd) @@ -250,7 +251,7 @@ rwhod_enable="NO" # Run the rwho daemon (or NO). rwhod_flags="" # Flags for rwhod rarpd_enable="NO" # Run rarpd (or NO). -rarpd_flags="" # Flags to rarpd. +rarpd_flags="-a" # Flags to rarpd. bootparamd_enable="NO" # Run bootparamd (or NO). bootparamd_flags="" # Flags to bootparamd pppoed_enable="NO" # Run the PPP over Ethernet daemon. ==== //depot/projects/dtrace7/src/etc/network.subr#2 (text+ko) ==== @@ -22,7 +22,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/network.subr,v 1.180.2.1 2007/11/08 05:52:23 thompsa Exp $ +# $FreeBSD: src/etc/network.subr,v 1.180.2.2 2008/05/04 16:14:24 brooks Exp $ # # @@ -638,6 +638,10 @@ _tmplist="${_lo}${_tmplist}" ;; *) + if [ -z "$type"]; then + warn "Values of network_interfaces other than" \ + "AUTO are deprecated" + fi _tmplist="${network_interfaces} ${cloned_interfaces}" ;; esac ==== //depot/projects/dtrace7/src/etc/rc.d/ipfw#2 (text+ko) ==== @@ -1,6 +1,6 @@ #!/bin/sh # -# $FreeBSD: src/etc/rc.d/ipfw,v 1.15 2007/04/02 15:38:53 mtm Exp $ +# $FreeBSD: src/etc/rc.d/ipfw,v 1.15.2.1 2008/05/06 10:50:51 mtm Exp $ # # PROVIDE: ipfw @@ -14,9 +14,17 @@ name="ipfw" rcvar="firewall_enable" start_cmd="ipfw_start" +start_precmd="ipfw_prestart" stop_cmd="ipfw_stop" required_modules="ipfw" +ipfw_prestart() +{ + if checkyesno dummynet_enable; then + required_modules="$required_modules dummynet" + fi +} + ipfw_start() { # set the firewall rules script if none was specified ==== //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/kgdb.h#4 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/gnu/usr.bin/gdb/kgdb/kgdb.h,v 1.5.2.2 2008/02/25 22:19:56 jhb Exp $ + * $FreeBSD: src/gnu/usr.bin/gdb/kgdb/kgdb.h,v 1.5.2.3 2008/05/09 18:41:36 jhb Exp $ */ #ifndef _KGDB_H_ @@ -32,8 +32,6 @@ struct thread_info; extern kvm_t *kvm; -extern char *kernel; -extern bfd *kern_bfd; struct kthr { struct kthr *next; @@ -48,11 +46,14 @@ extern struct kthr *curkthr; -void kgdb_add_kld_cmd(char *, int); -void kgdb_kld_init(void); -void kgdb_target(void); +void initialize_kld_target(void); +void initialize_kgdb_target(void); +void kgdb_dmesg(void); +void kgdb_trgt_new_objfile(struct objfile *); void kgdb_trgt_fetch_registers(int); void kgdb_trgt_store_registers(int); +void kld_init(void); +void kld_new_objfile(struct objfile *); frame_unwind_sniffer_ftype kgdb_trgt_trapframe_sniffer; @@ -67,6 +68,9 @@ char *kgdb_thr_extra_thread_info(int); uintptr_t kgdb_lookup(const char *sym); -CORE_ADDR kgdb_parse(const char *exp); +CORE_ADDR kgdb_parse_1(const char *, int); + +#define kgdb_parse(exp) kgdb_parse_1((exp), 0) +#define kgdb_parse_quiet(exp) kgdb_parse_1((exp), 1) #endif /* _KGDB_H_ */ ==== //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/kld.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/kld.c,v 1.6.2.2 2008/04/03 18:46:51 jhb Exp $"); +__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/kld.c,v 1.6.2.4 2008/05/09 18:41:36 jhb Exp $"); #include <sys/param.h> #include <sys/stat.h> @@ -55,6 +55,8 @@ /* KVA of 'linker_path' which corresponds to the kern.module_path sysctl .*/ static CORE_ADDR module_path_addr; +static CORE_ADDR linker_files_addr; +static CORE_ADDR kernel_file_addr; static struct target_so_ops kld_so_ops; @@ -70,7 +72,6 @@ /* * Look for a matching file checking for debug suffixes before the raw file: - * - filename + ".symbols" (e.g. foo.ko.symbols) * - filename + ".debug" (e.g. foo.ko.debug) * - filename (e.g. foo.ko) */ @@ -112,11 +113,14 @@ char *kernel_dir, *module_dir, *cp; int error; - kernel_dir = dirname(kernel); - if (kernel_dir != NULL) { - snprintf(path, path_size, "%s/%s", kernel_dir, filename); - if (check_kld_path(path, path_size)) - return (1); + if (exec_bfd) { + kernel_dir = dirname(bfd_get_filename(exec_bfd)); + if (kernel_dir != NULL) { + snprintf(path, path_size, "%s/%s", kernel_dir, + filename); + if (check_kld_path(path, path_size)) + return (1); + } } if (module_path_addr != 0) { target_read_string(module_path_addr, &module_path, PATH_MAX, @@ -160,11 +164,12 @@ char *filename; int error; - if (off_address == 0 || off_filename == 0 || off_next == 0) + if (linker_files_addr == 0 || off_address == 0 || off_filename == 0 || + off_next == 0) return (0); filename = basename(arg); - for (kld = kgdb_parse("linker_files.tqh_first"); kld != 0; + for (kld = read_pointer(linker_files_addr); kld != 0; kld = read_pointer(kld + off_next)) { /* Try to read this linker file's filename. */ target_read_string(read_pointer(kld + off_filename), @@ -195,7 +200,6 @@ struct section_addr_info *section_addrs; int sect_index; CORE_ADDR base_addr; - int add_kld_command; }; static void @@ -215,14 +219,12 @@ asi->section_addrs->other[asi->sect_index].name = name; asi->section_addrs->other[asi->sect_index].addr = address; asi->section_addrs->other[asi->sect_index].sectindex = sect->index; - if (asi->add_kld_command) - printf_unfiltered("\t%s_addr = %s\n", name, - local_hex_string(address)); + printf_unfiltered("\t%s_addr = %s\n", name, local_hex_string(address)); asi->sect_index++; } static void -load_kld (char *path, CORE_ADDR base_addr, int from_tty, int add_kld_command) +load_kld (char *path, CORE_ADDR base_addr, int from_tty) { struct add_section_info asi; struct cleanup *cleanup; @@ -242,33 +244,32 @@ if (bfd_get_section_by_name (bfd, ".text") == NULL) error("\"%s\": can't find text section", path); - if (add_kld_command) - printf_unfiltered("add symbol table from file \"%s\" at\n", - path); + printf_unfiltered("add symbol table from file \"%s\" at\n", path); /* Build a section table for symbol_file_add() from the bfd sections. */ asi.section_addrs = alloc_section_addr_info(bfd_count_sections(bfd)); cleanup = make_cleanup(xfree, asi.section_addrs); asi.sect_index = 0; asi.base_addr = base_addr; - asi.add_kld_command = add_kld_command; bfd_map_over_sections(bfd, add_section, &asi); if (from_tty && (!query("%s", ""))) error("Not confirmed."); - symbol_file_add(path, from_tty, asi.section_addrs, 0, - add_kld_command ? OBJF_USERLOADED : 0); + symbol_file_add(path, from_tty, asi.section_addrs, 0, OBJF_USERLOADED); do_cleanups(cleanup); } -void +static void kgdb_add_kld_cmd (char *arg, int from_tty) { char path[PATH_MAX]; CORE_ADDR base_addr; + if (!exec_bfd) + error("No kernel symbol file"); + /* Try to open the raw path to handle absolute paths first. */ snprintf(path, sizeof(path), "%s", arg); if (!check_kld_path(path, sizeof(path))) { @@ -288,7 +289,7 @@ return; } - load_kld(path, base_addr, from_tty, 1); + load_kld(path, base_addr, from_tty); reinit_frame_cache(); } @@ -331,6 +332,10 @@ char *path; int error; + if (linker_files_addr == 0 || kernel_file_addr == 0 || + off_address == 0 || off_filename == 0 || off_next == 0) + return (NULL); + head = NULL; prev = &head; @@ -338,8 +343,8 @@ * Walk the list of linker files creating so_list entries for * each non-kernel file. */ - kernel = kgdb_parse("linker_kernel_file"); - for (kld = kgdb_parse("linker_files.tqh_first"); kld != 0; + kernel = read_pointer(kernel_file_addr); + for (kld = read_pointer(linker_files_addr); kld != 0; kld = read_pointer(kld + off_next)) { /* Skip the main kernel file. */ if (kld == kernel) @@ -436,6 +441,28 @@ return (fd); } +void +kld_new_objfile (struct objfile *objfile) +{ + + if (!have_partial_symbols()) + return; + + /* + * Compute offsets of relevant members in struct linker_file + * and the addresses of global variables. Don't warn about + * kernels that don't have 'pathname' in the linker_file + * struct since 6.x kernels don't have it. + */ + off_address = kgdb_parse("&((struct linker_file *)0)->address"); + off_filename = kgdb_parse("&((struct linker_file *)0)->filename"); + off_pathname = kgdb_parse_quiet("&((struct linker_file *)0)->pathname"); + off_next = kgdb_parse("&((struct linker_file *)0)->link.tqe_next"); + module_path_addr = kgdb_parse("linker_path"); + linker_files_addr = kgdb_parse("&linker_files.tqh_first"); + kernel_file_addr = kgdb_parse("&linker_kernel_file"); +} + static int load_klds_stub (void *arg) { @@ -445,19 +472,16 @@ } void -kgdb_kld_init (void) +kld_init (void) { - struct cmd_list_element *c; - /* Compute offsets of relevant members in struct linker_file. */ - off_address = kgdb_parse("&((struct linker_file *)0)->address"); - off_filename = kgdb_parse("&((struct linker_file *)0)->filename"); - off_pathname = kgdb_parse("&((struct linker_file *)0)->pathname"); - off_next = kgdb_parse("&((struct linker_file *)0)->link.tqe_next"); - if (off_address == 0 || off_filename == 0 || off_next == 0) - return; + catch_errors(load_klds_stub, NULL, NULL, RETURN_MASK_ALL); +} - module_path_addr = kgdb_parse("linker_path"); +void +initialize_kld_target(void) +{ + struct cmd_list_element *c; kld_so_ops.relocate_section_addresses = kld_relocate_section_addresses; kld_so_ops.free_so = kld_free_so; @@ -471,8 +495,6 @@ current_target_so_ops = &kld_so_ops; - catch_errors(load_klds_stub, NULL, NULL, RETURN_MASK_ALL); - c = add_com("add-kld", class_files, kgdb_add_kld_cmd, "Usage: add-kld FILE\n\ Load the symbols from the kernel loadable module FILE."); ==== //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/kthr.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/kthr.c,v 1.7.2.2 2008/02/25 22:19:56 jhb Exp $"); +__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/kthr.c,v 1.7.2.4 2008/05/09 18:57:06 jhb Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -36,6 +36,7 @@ #include <kvm.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <defs.h> #include <frame-unwind.h> @@ -77,6 +78,12 @@ struct thread td; struct kthr *kt; uintptr_t addr, paddr; + + while (first != NULL) { + kt = first; + first = kt->next; + free(kt); + } addr = kgdb_lookup("_allproc"); if (addr == 0) { @@ -206,17 +213,20 @@ char * kgdb_thr_extra_thread_info(int tid) { + char comm[MAXCOMLEN + 1]; struct kthr *kt; struct proc *p; - static char comm[MAXCOMLEN + 1]; + static char buf[64]; kt = kgdb_thr_lookup_tid(tid); if (kt == NULL) - return (NULL); + return (NULL); + snprintf(buf, sizeof(buf), "PID=%d", kt->pid); p = (struct proc *)kt->paddr; if (kvm_read(kvm, (uintptr_t)&p->p_comm[0], &comm, sizeof(comm)) != sizeof(comm)) - return (NULL); - - return (comm); + return (buf); + strlcat(buf, ": ", sizeof(buf)); + strlcat(buf, comm, sizeof(buf)); + return (buf); } ==== //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/main.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/main.c,v 1.11.2.2 2008/04/03 18:46:51 jhb Exp $"); +__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/main.c,v 1.11.2.3 2008/05/09 18:41:36 jhb Exp $"); #include <sys/param.h> #include <sys/stat.h> @@ -37,7 +37,6 @@ #include <sys/wait.h> #include <errno.h> #include <err.h> -#include <fcntl.h> #include <inttypes.h> #include <kvm.h> #include <limits.h> @@ -55,42 +54,31 @@ #include <interps.h> #include <cli-out.h> #include <main.h> +#include <objfiles.h> #include <target.h> #include <top.h> +#include <ui-file.h> #include <bfd.h> #include <gdbcore.h> #include <wrapper.h> -extern void (*init_ui_hook)(char *); - extern frame_unwind_sniffer_ftype *kgdb_sniffer_kluge; -extern void symbol_file_add_main (char *args, int from_tty); - #include "kgdb.h" -kvm_t *kvm; -static char kvm_err[_POSIX2_LINE_MAX]; - static int dumpnr; static int quiet; static int verbose; static char crashdir[PATH_MAX]; -char *kernel; +static char *kernel; static char *remote; static char *vmcore; +static struct ui_file *parse_gdberr; static void (*kgdb_new_objfile_chain)(struct objfile * objfile); static void -kgdb_atexit(void) -{ - if (kvm != NULL) - kvm_close(kvm); -} - -static void usage(void) { @@ -168,27 +156,42 @@ static void kgdb_new_objfile(struct objfile *objfile) { -#if 0 - printf("XXX: %s(%p)\n", __func__, objfile); - if (objfile != NULL) { - goto out; - } + static int once = 1; + + kld_new_objfile(objfile); + kgdb_trgt_new_objfile(objfile); -out: -#endif if (kgdb_new_objfile_chain != NULL) kgdb_new_objfile_chain(objfile); + + if (once && objfile != NULL && objfile == symfile_objfile) { + /* + * The initial kernel has just been loaded. Start the + * remote target if we have one. + */ + once = 0; + if (remote != NULL) + push_remote_target (remote, 0); + } } +/* + * Parse an expression and return its value. If 'quiet' is true, then + * any error messages from the parser are masked. + */ CORE_ADDR -kgdb_parse(const char *exp) +kgdb_parse_1(const char *exp, int quiet) { + struct ui_file *old_stderr; struct cleanup *old_chain; struct expression *expr; struct value *val; char *s; CORE_ADDR n; + old_stderr = gdb_stderr; + if (quiet) + gdb_stderr = parse_gdberr; n = 0; s = xstrdup(exp); old_chain = make_cleanup(xfree, s); @@ -198,45 +201,19 @@ n = value_as_address(val); } do_cleanups(old_chain); + gdb_stderr = old_stderr; return (n); } #define MSGBUF_SEQ_TO_POS(size, seq) ((seq) % (size)) -static void -kgdb_init_target(void) +void +kgdb_dmesg(void) { CORE_ADDR bufp; int size, rseq, wseq; - int kern_desc; char c; - kern_desc = open(kernel, O_RDONLY); - if (kern_desc == -1) - errx(1, "couldn't open a kernel image"); - - kern_bfd = bfd_fdopenr(kernel, gnutarget, kern_desc); - if (kern_bfd == NULL) { - close(kern_desc); - errx(1, "\"%s\": can't open to probe ABI: %s.", kernel, - bfd_errmsg (bfd_get_error ())); - } - bfd_set_cacheable(kern_bfd, 1); - - if (!bfd_check_format (kern_bfd, bfd_object)) { - bfd_close(kern_bfd); - errx(1, "\"%s\": not in executable format: %s", kernel, - bfd_errmsg(bfd_get_error())); - } - - set_gdbarch_from_file (kern_bfd); - - symbol_file_add_main (kernel, 0); - if (remote) - push_remote_target (remote, 0); - else - kgdb_target(); - /* * Display the unread portion of the message buffer. This gives the * user a some initial data to work from. @@ -266,37 +243,54 @@ } static void -kgdb_interp_command_loop(void *data) +kgdb_init(char *argv0 __unused) +{ + + parse_gdberr = mem_fileopen(); + set_prompt("(kgdb) "); + initialize_kgdb_target(); + initialize_kld_target(); + kgdb_new_objfile_chain = target_new_objfile_hook; + target_new_objfile_hook = kgdb_new_objfile; +} + +/* + * Remote targets can support any number of syntaxes and we want to + * support them all with one addition: we support specifying a device + * node for a serial device without the "/dev/" prefix. + * + * What we do is to stat(2) the existing remote target first. If that + * fails, we try it with "/dev/" prepended. If that succeeds we use + * the resulting path, otherwise we use the original target. If + * either stat(2) succeeds make sure the file is either a character + * device or a FIFO. + */ +static void +verify_remote(void) { - static int once = 0; + char path[PATH_MAX]; + struct stat st; - if (!once) { - once = 1; - kgdb_init_target(); - print_stack_frame(get_selected_frame(), - frame_relative_level(get_selected_frame()), 1); + if (stat(remote, &st) != 0) { + snprintf(path, sizeof(path), "/dev/%s", remote); + if (stat(path, &st) != 0) + return; + free(remote); + remote = strdup(path); } - command_loop(); + if (!S_ISCHR(st.st_mode) && !S_ISFIFO(st.st_mode)) + errx(1, "%s: not a special file, FIFO or socket", remote); } static void -kgdb_init(char *argv0 __unused) +add_arg(struct captured_main_args *args, char *arg) { - static struct interp_procs procs = { - NULL, - NULL, - NULL, - NULL, - NULL, - kgdb_interp_command_loop - }; - struct interp *kgdb; - kgdb = interp_new("kgdb", NULL, cli_out_new(gdb_stdout), &procs); - interp_add(kgdb); - set_prompt("(kgdb) "); - kgdb_new_objfile_chain = target_new_objfile_hook; - target_new_objfile_hook = kgdb_new_objfile; + args->argc++; + args->argv = reallocf(args->argv, (args->argc + 1) * sizeof(char *)); + if (args->argv == NULL) + err(1, "Out of memory building argument list"); + args->argv[args->argc] = arg; } int @@ -306,7 +300,7 @@ struct stat st; struct captured_main_args args; char *s; - int a, ch, writecore; + int a, ch; dumpnr = -1; @@ -331,7 +325,11 @@ } quiet = 0; - writecore = 0; + memset (&args, 0, sizeof args); + args.use_windows = 0; + args.interpreter_p = INTERP_CONSOLE; + args.argv = malloc(sizeof(char *)); + args.argv[0] = argv[0]; while ((ch = getopt(argc, argv, "ac:d:fn:qr:vw")) != -1) { switch (ch) { @@ -364,6 +362,7 @@ break; case 'q': quiet = 1; + add_arg(&args, "-q"); break; case 'r': /* use given device for remote session. */ if (remote != NULL) { @@ -378,7 +377,7 @@ verbose++; break; case 'w': /* core file is writeable. */ - writecore = 1; + add_arg(&args, "--write"); break; case '?': default: @@ -411,21 +410,8 @@ if (!S_ISREG(st.st_mode)) errx(1, "%s: not a regular file", path); vmcore = strdup(path); - } else if (remote != NULL && remote[0] != ':' && remote[0] != '|') { - if (stat(remote, &st) != 0) { - snprintf(path, sizeof(path), "/dev/%s", remote); - if (stat(path, &st) != 0) { - err(1, "%s", remote); - /* NOTREACHED */ - } - free(remote); - remote = strdup(path); - } - if (!S_ISCHR(st.st_mode) && !S_ISFIFO(st.st_mode)) { - errx(1, "%s: not a special file, FIFO or socket", - remote); - /* NOTREACHED */ - } + } else if (remote != NULL) { + verify_remote(); } else if (argc > optind) { if (vmcore == NULL) vmcore = strdup(argv[optind++]); @@ -445,20 +431,12 @@ warnx("kernel image: %s", kernel); } - /* - * At this point we must either have a core file or have a kernel - * with a remote target. - */ + /* A remote target requires an explicit kernel argument. */ if (remote != NULL && kernel == NULL) { warnx("remote debugging requires a kernel"); usage(); /* NOTREACHED */ } - if (vmcore == NULL && remote == NULL) { - warnx("need a core file or a device for remote debugging"); - usage(); - /* NOTREACHED */ - } /* If we don't have a kernel image yet, try to find one. */ if (kernel == NULL) { @@ -470,27 +448,16 @@ if (verbose) warnx("kernel image: %s", kernel); } + add_arg(&args, kernel); - if (remote == NULL) { - kvm = kvm_openfiles(kernel, vmcore, NULL, - writecore ? O_RDWR : O_RDONLY, kvm_err); - if (kvm == NULL) - errx(1, kvm_err); - atexit(kgdb_atexit); - kgdb_thr_init(); - } + if (vmcore != NULL) + add_arg(&args, vmcore); /* The libgdb code uses optind too. Reset it... */ optind = 0; - memset (&args, 0, sizeof args); - args.argv = argv; - args.argc = 1 + quiet; - if (quiet) - argv[1] = "-q"; - argv[args.argc] = NULL; - args.use_windows = 0; - args.interpreter_p = "kgdb"; + /* Terminate argv list. */ + add_arg(&args, NULL); init_ui_hook = kgdb_init; ==== //depot/projects/dtrace7/src/gnu/usr.bin/gdb/kgdb/trgt.c#3 (text+ko) ==== @@ -25,29 +25,41 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/trgt.c,v 1.5.2.1 2008/02/25 22:19:56 jhb Exp $"); +__FBSDID("$FreeBSD: src/gnu/usr.bin/gdb/kgdb/trgt.c,v 1.5.2.3 2008/05/09 18:57:06 jhb Exp $"); #include <sys/param.h> #include <sys/proc.h> #include <sys/sysctl.h> #include <sys/user.h> #include <err.h> +#include <fcntl.h> #include <kvm.h> #include <defs.h> +#include <readline/readline.h> +#include <readline/tilde.h> #include <command.h> #include <exec.h> #include <frame-unwind.h> +#include <gdb.h> +#include <gdbcore.h> #include <gdbthread.h> #include <inferior.h> +#include <language.h> #include <regcache.h> +#include <solib.h> #include <target.h> +#include <ui-out.h> #include "kgdb.h" >>> TRUNCATED FOR MAIL (1000 lines) <<<help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200805101859.m4AIxY64064011>
