From owner-freebsd-arm@freebsd.org Wed Dec 2 07:19:30 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4C975A3EC96 for ; Wed, 2 Dec 2015 07:19:30 +0000 (UTC) (envelope-from russ.haley@gmail.com) Received: from mail-vk0-x22b.google.com (mail-vk0-x22b.google.com [IPv6:2607:f8b0:400c:c05::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EE5641C00 for ; Wed, 2 Dec 2015 07:19:29 +0000 (UTC) (envelope-from russ.haley@gmail.com) Received: by vkbs1 with SMTP id s1so19426049vkb.1 for ; Tue, 01 Dec 2015 23:19:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=yR2QASRTG/2FLYjoX0zf3tDSwtjHVU22RcXvzY5P+Dg=; b=f5dtrOvaGvX7dd/iShZUWT0YR6Q9XqmF+AHUQVSFiZGIeQQOSuhdzafjb1Ojc20Ysi TgPkdfFQUD+SH4zamIv3OVDJWqiLisXo0rN6rcLVRWkBbRRnBPLTjkI7lJJSR4EHY4k8 ZICAg/rh4j9qGm2HRJucvetbceXKrP2V1CMekng6Ex9DAM/Cc3rqK3PiVAfFOYmU9HlS VyNm337uQsNVDRcEaJz3eq9iMgAWhRk+ZUf+2MR34imUscQzjWS+TSk2LQ/lPCW+xrhp A7w92Qcz3uKgZsHBAX9/gMCq6kBMt8VI12XPK46ioyWqKxJaJ91ZlNm4ZFnpf0A2Pj4W i00w== MIME-Version: 1.0 X-Received: by 10.31.169.137 with SMTP id s131mr1054375vke.144.1449040768861; Tue, 01 Dec 2015 23:19:28 -0800 (PST) Received: by 10.31.47.137 with HTTP; Tue, 1 Dec 2015 23:19:28 -0800 (PST) In-Reply-To: References: Date: Tue, 1 Dec 2015 23:19:28 -0800 Message-ID: Subject: Re: RFC: HW watchpoints and single stepping for ARMv6/v7 From: Russell Haley To: Zbigniew Bodek Cc: "freebsd-arm@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Dec 2015 07:19:30 -0000 Okay, so I wasn't too successfull: What I did: - update to latest revision (291642) - I couldn't get installworld to complete (separate email). Instead, I downloaded the current image for the hummingboard and mounted the image and was preparing to run installkernel - I ran buildkernel to success - I applied the patch. It applied successfully - I ran buildkernel again and got the following error: cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/db_trace.c /usr/src/sys/arm/arm/db_trace.c:135:2: error: implicit declaration of function 'dbg_show_watchpoint' is invalid in C99 [-Werror,-Wimplicit-function-declaration] dbg_show_watchpoint(); ^ /usr/src/sys/arm/arm/db_trace.c:135:2: note: did you mean 'db_set_watchpoints'? /usr/src/sys/ddb/ddb.h:216:7: note: 'db_set_watchpoints' declared here void db_set_watchpoints(void); ^ /usr/src/sys/arm/arm/db_trace.c:142:10: error: implicit declaration of function 'dbg_remove_watchpoint' is invalid in C99 [-Werror,-Wimplicit-function-declaration] return (dbg_remove_watchpoint(addr, size)); ^ /usr/src/sys/arm/arm/db_trace.c:142:10: note: did you mean 'dbg_show_watchpoint'? /usr/src/sys/arm/arm/db_trace.c:135:2: note: 'dbg_show_watchpoint' declared here dbg_show_watchpoint(); ^ /usr/src/sys/arm/arm/db_trace.c:149:10: error: implicit declaration of function 'dbg_setup_watchpoint' is invalid in C99 [-Werror,-Wimplicit-function-declaration] return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW)); ^ /usr/src/sys/arm/arm/db_trace.c:149:43: error: use of undeclared identifier 'HW_WATCHPOINT_RW' return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW)); ^ 4 errors generated. *** Error code 1 Stop. make[2]: stopped in /usr/obj/arm.armv6/usr/src/sys/IMX6 *** Error code 1 Stop. make[1]: stopped in /usr/src *** Error code 1 Stop. make: stopped in /usr/src ---------------------------------------------- I ran buildkernel in various configurations (with and without -DNO_CLEAN, with and without -j10) and received variations on the same error. The last one I tried was without NO_CLEAN and single threaded: ctfconvert -L VERSION -g cpufunc_asm.o cc -c -x assembler-with-cpp -DLOCORE -O -pipe -g -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/cpufunc_asm_armv7.S ctfconvert -L VERSION -g cpufunc_asm_armv7.o cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/cpuinfo.c ctfconvert -L VERSION -g cpuinfo.o cc -c -x assembler-with-cpp -DLOCORE -O -pipe -g -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/cpu_asm-v6.S ctfconvert -L VERSION -g cpu_asm-v6.o cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/db_disasm.c ctfconvert -L VERSION -g db_disasm.o cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/db_interface.c ctfconvert -L VERSION -g db_interface.o cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/db_trace.c /usr/src/sys/arm/arm/db_trace.c:135:2: error: implicit declaration of function 'dbg_show_watchpoint' is invalid in C99 [-Werror,-Wimplicit-function-declaration] dbg_show_watchpoint(); ^ /usr/src/sys/arm/arm/db_trace.c:135:2: note: did you mean 'db_set_watchpoints'? /usr/src/sys/ddb/ddb.h:216:7: note: 'db_set_watchpoints' declared here void db_set_watchpoints(void); ^ /usr/src/sys/arm/arm/db_trace.c:142:10: error: implicit declaration of function 'dbg_remove_watchpoint' is invalid in C99 [-Werror,-Wimplicit-function-declaration] return (dbg_remove_watchpoint(addr, size)); ^ /usr/src/sys/arm/arm/db_trace.c:142:10: note: did you mean 'dbg_show_watchpoint'? /usr/src/sys/arm/arm/db_trace.c:135:2: note: 'dbg_show_watchpoint' declared here dbg_show_watchpoint(); ^ /usr/src/sys/arm/arm/db_trace.c:149:10: error: implicit declaration of function 'dbg_setup_watchpoint' is invalid in C99 [-Werror,-Wimplicit-function-declaration] return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW)); ^ /usr/src/sys/arm/arm/db_trace.c:149:43: error: use of undeclared identifier 'HW_WATCHPOINT_RW' return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW)); ^ 4 errors generated. *** Error code 1 Stop. make[2]: stopped in /usr/obj/arm.armv6/usr/src/sys/IMX6 *** Error code 1 Stop. make[1]: stopped in /usr/src *** Error code 1 Stop. make: stopped in /usr/src So if it's NOT an undeclared identifier, then let me know what I've done wrong. Cheers, Russ On Tue, Dec 1, 2015 at 3:28 AM, Zbigniew Bodek wrote: > Hello Russell, > > That will be a good sign if it doesn't explode (if you see undefined > instruction on boot then there's something wrong). > More extended description what you can do with HW watchpoints is in > this thread. For example you can check: > https://lists.freebsd.org/pipermail/freebsd-arm/2015-November/012724.html > > Best regards > zbb > > 2015-11-30 19:03 GMT+01:00 Russell Haley : > > Cool. I have a hummingboard (iMX6). Do I need to know what I'm looking > for > > or am I just making sure it doesn't explode? > > > > Russ > > > > On Mon, Nov 30, 2015 at 6:41 AM, Zbigniew Bodek > wrote: > >> > >> Hello again, > >> > >> It seems that this is the last chance to test this patch on other > >> platforms than Rpi, Arndale and Pandaboard. > >> Please check out this https://reviews.freebsd.org/D4037 > >> I will be grateful if you had a chance to test this on something else > >> than the above mentioned. > >> > >> Best regards > >> zbb > >> > >> 2015-10-31 17:21 GMT+01:00 Zbigniew Bodek : > >> > Hello again, > >> > > >> > I should have post some more information about testing this patch. > Here > >> > it goes: > >> > ------------------------------------------------------------------ > >> > One can enter kernel debugger by one of those: > >> > > >> > press: ~, ctrl + b > >> > or > >> > type: sysctl -w debug.kdb.enter=1 > >> > > >> > You can then set a HW watchpoint on any memory location at
> >> > by invoking following command in KDB: > >> > db> hwatch
, > >> > > >> > parameter is optional, the default is 4. > >> > > >> > To display watchpoints: > >> > db> show watch > >> > > >> > To remove watchpoint: > >> > db> dhwatch
> >> > > >> > Press "c" to continue. > >> > > >> > ------------------------------------------------------------------ > >> > While in KDB you can step through the kernel code using "s" BUT you > >> > need to apply a dependent patch: https://reviews.freebsd.org/D4036 > >> > otherwise you will cause the kernel panic. > >> > > >> > Thanks again > >> > zbb > >> > > >> > 2015-10-30 17:25 GMT+01:00 Zbigniew Bodek : > >> >> Hello, > >> >> > >> >> We would like to add HW watchpoints and HW single step support to > ARMv6 > >> >> kernel. > >> >> Please check this review: https://reviews.freebsd.org/D4037 > >> >> > >> >> Since there are differences between debug architectures on ARM (v6, > >> >> v6.1, v7, v7.1) I would like to ask for some testing on your > machines. > >> >> I was able to test this on Pandaboard and Arndale but please check > >> >> whether this works on your targets as well. > >> >> > >> >> Rise a red flag if you see any issues or in worst case scenario - > >> >> "undefined instruction" error. > >> >> > >> >> Best regards > >> >> zbb > >> _______________________________________________ > >> freebsd-arm@freebsd.org mailing list > >> https://lists.freebsd.org/mailman/listinfo/freebsd-arm > >> To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org" > > > > >