Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Dec 2015 13:18:17 +0100
From:      Zbigniew Bodek <zbb@semihalf.com>
To:        Russell Haley <russ.haley@gmail.com>
Cc:        "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org>
Subject:   Re: RFC: HW watchpoints and single stepping for ARMv6/v7
Message-ID:  <CAG7dG%2Bx5ex2jYgh8EQe2WQEmycZHOTJgG4AoWaUa6ARw_8nVcw@mail.gmail.com>
In-Reply-To: <CABx9NuQ8an-=44cva6nDp6NoPSgewjcoi%2B3mVNfCzxntfzjjNA@mail.gmail.com>
References:  <CAG7dG%2BwpDk7ADEMkxE2qidmESBGLreK-GgCUdHhD1DkHw7zd9w@mail.gmail.com> <CAG7dG%2BxBoL63mWG8cK%2BFh2jRyfBOsxXfWt4aWtwpyrXt3aOW_g@mail.gmail.com> <CAG7dG%2BzReo7M1o=MUnKA=H1BC7XohF-uFR73ucRN8oyc-urUkQ@mail.gmail.com> <CABx9NuSwHnvWHqoYoJpTwpFPaEgjgfPxzsC%2BfZQF-D3TY9hH%2BQ@mail.gmail.com> <CAG7dG%2By=t4iinhQZxFmGjN3fq7QGGTp5F=rdwrQuiGux_T=YHQ@mail.gmail.com> <CABx9NuQ8an-=44cva6nDp6NoPSgewjcoi%2B3mVNfCzxntfzjjNA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello Russel,

I think you are doing something wrong since I've just downloaded the
latest patch from Phabricator, applied it on r291486 and built for
IMX6 successfully (with and without DDB option).
Did you use the latest patch?

Best regards
zbb

2015-12-02 8:19 GMT+01:00 Russell Haley <russ.haley@gmail.com>:
> 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 <zbb@semihalf.com> 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 <russ.haley@gmail.com>:
>> > 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 <zbb@semihalf.com>
>> > 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 <zbb@semihalf.com>:
>> >> > 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 <address>
>> >> > by invoking following command in KDB:
>> >> > db> hwatch <address>, <size>
>> >> >
>> >> > <size> parameter is optional, the default is 4.
>> >> >
>> >> > To display watchpoints:
>> >> > db> show watch
>> >> >
>> >> > To remove watchpoint:
>> >> > db> dhwatch <address>
>> >> >
>> >> > 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 <zbb@semihalf.com>:
>> >> >> 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"
>> >
>> >
>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG7dG%2Bx5ex2jYgh8EQe2WQEmycZHOTJgG4AoWaUa6ARw_8nVcw>