Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 19 Jan 2020 15:24:01 +0100
From: Markus Wichmann <nullplan@....net>
To: musl@...ts.openwall.com
Subject: Re: Minor style patch to exit.c

On Sun, Jan 19, 2020 at 04:33:47PM +0300, Alexander Cherepanov wrote:
> Couldn't _start defined as an array? Then separate values could be accessed
> simply as elements of this array. And casts to integers could be limited to
> calculating the number of elements, the terminating value or something.
>

That reminds me of something I read in the C standard: Two pointers must
compare equal if, among other possibilities, one is a pointer to
one-past its underlying array, and the other is a pointer to the start
of its array, and the arrays happen to lie behind one another in address
space.

Therefore, if _start and _end were arrays, even the GCC devs must agree
that there might be an integer i such that _start + i == _end. For the C
language, _start and _end would be arrays that happen to lie adjacent in
address space.

And if we have guarantees from the outside attesting to that, then
_end - _start is no longer an undefined expression, right?

Ciao,
Markus

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.