Avoid undefined behaviour in m68hc11 md_begin
Alan Modra
amodra@gmail.com
Tue Mar 28 21:56:40 GMT 2023
On Tue, Mar 28, 2023 at 02:30:10PM +0200, Andreas Schwab wrote:
> On Mär 28 2023, Alan Modra wrote:
>
> > On Tue, Mar 28, 2023 at 01:19:38PM +0200, Andreas Schwab wrote:
> >> On Mär 28 2023, Alan Modra via Binutils wrote:
> >>
> >> > Given p = A where p is a pointer to some type and A is an array of
> >> > that type, then the expression p - 1 + 1 evokes undefined behaviour
> >> > according to the C standard.
> >> >
> >> > gcc-13 -fsanitize=address,undefined complains about this, but not
> >> > where the undefined behaviour actually occurs at tc-m68hc11.c:646.
> >> > Instead you get an error: "tc-m68hc11.c:708:20: runtime error: store
> >> > to address 0x62600000016c with insufficient space for an object of
> >> > type 'int'". Which is a lie.
> >>
> >> It's not a lie if you regard p-1 as no longer being associated with A,
> >> so that p-1+1 cannot move back into it any more.
> >
> > The error message specifies an address. That address is part of the
> > memory allocated. To say there is insufficient space at that address
> > is indeed a lie.
>
> It's the same lie when you fall off the end of an array into a
> neighboring array.
I'm beginning to think you are deliberately provoking me. There is no
falling off the end of an array here. See the testcase in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109308.
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list