Hi Michael, On Mon, Aug 3, 2020 at 1:09 PM Michael Ellerman <m...@ellerman.id.au> wrote: > Geert Uytterhoeven <ge...@linux-m68k.org> writes: > > On Mon, Jul 20, 2020 at 11:03 PM Segher Boessenkool > > <seg...@kernel.crashing.org> wrote: > >> On Sat, Jul 18, 2020 at 09:50:50AM +0200, Geert Uytterhoeven wrote: > >> > On Wed, Jun 24, 2020 at 6:02 AM Nathan Chancellor > >> > <natechancel...@gmail.com> wrote: > >> > > /* If we have an image attached to us, it overrides anything > >> > > * supplied by the loader. */ > >> > > - if (_initrd_end > _initrd_start) { > >> > > + if (&_initrd_end > &_initrd_start) { > >> > > >> > Are you sure that fix is correct? > >> > > >> > extern char _initrd_start[]; > >> > extern char _initrd_end[]; > >> > extern char _esm_blob_start[]; > >> > extern char _esm_blob_end[]; > >> > > >> > Of course the result of their comparison is a constant, as the addresses > >> > are constant. If clangs warns about it, perhaps that warning should be > >> > moved > >> > to W=1? > >> > > >> > But adding "&" is not correct, according to C. > >> > >> Why not? > >> > >> 6.5.3.2/3 > >> The unary & operator yields the address of its operand. [...] > >> Otherwise, the result is a pointer to the object or function designated > >> by its operand. > >> > >> This is the same as using the name of an array without anything else, > >> yes. It is a bit clearer if it would not be declared as array, perhaps, > >> but it is correct just fine like this. > > > > Thanks, I stand corrected. > > > > Regardless, the comparison is still a comparison between two constant > > addresses, so my fear is that the compiler will start generating > > warnings for that in the near or distant future, making this change > > futile. > > They're not constant at compile time though. So I don't think the > compiler could (sensibly) warn about that? (surely!)
They're constant, but the compiler doesn't know their value. That doesn't change by (not) using the address-of operator. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds