mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Don't take the address of a void object.
GCC 4.5 warns about "extern void _end; &end;". Use char[] instead, as that also doesn't fall foul of a target's .sdata optimizations. Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2010-03-26 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* csu/gmon-start.c (ENTRY_POINT, etext): Declare as char[], not void.
|
||||||
|
* elf/dl-sysdep.c (_end): Likewise.
|
||||||
|
* sysdeps/unix/sysv/dl-sysdep.c (frob_brk): Likewise with locally
|
||||||
|
declared _end, and associated variables.
|
||||||
|
|
||||||
2010-03-26 Ulrich Drepper <drepper@redhat.com>
|
2010-03-26 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/posix/getaddrinfo.c (gaih_inet): Don't assume success always
|
* sysdeps/posix/getaddrinfo.c (gaih_inet): Don't assume success always
|
||||||
|
@ -31,9 +31,9 @@
|
|||||||
#ifdef ENTRY_POINT_DECL
|
#ifdef ENTRY_POINT_DECL
|
||||||
ENTRY_POINT_DECL(extern)
|
ENTRY_POINT_DECL(extern)
|
||||||
#else
|
#else
|
||||||
extern void ENTRY_POINT;
|
extern char ENTRY_POINT[];
|
||||||
#endif
|
#endif
|
||||||
extern void etext;
|
extern char etext[];
|
||||||
|
|
||||||
#ifndef TEXT_START
|
#ifndef TEXT_START
|
||||||
# ifdef ENTRY_POINT_DECL
|
# ifdef ENTRY_POINT_DECL
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern char **_environ attribute_hidden;
|
extern char **_environ attribute_hidden;
|
||||||
extern void _end attribute_hidden;
|
extern char _end[] attribute_hidden;
|
||||||
|
|
||||||
/* Protect SUID program against misuse of file descriptors. */
|
/* Protect SUID program against misuse of file descriptors. */
|
||||||
extern void __libc_check_standard_fds (void);
|
extern void __libc_check_standard_fds (void);
|
||||||
@ -226,14 +226,14 @@ _dl_sysdep_start (void **start_argptr,
|
|||||||
if (GLRO(dl_platform) != NULL)
|
if (GLRO(dl_platform) != NULL)
|
||||||
GLRO(dl_platformlen) = strlen (GLRO(dl_platform));
|
GLRO(dl_platformlen) = strlen (GLRO(dl_platform));
|
||||||
|
|
||||||
if (__sbrk (0) == &_end)
|
if (__sbrk (0) == _end)
|
||||||
/* The dynamic linker was run as a program, and so the initial break
|
/* The dynamic linker was run as a program, and so the initial break
|
||||||
starts just after our bss, at &_end. The malloc in dl-minimal.c
|
starts just after our bss, at &_end. The malloc in dl-minimal.c
|
||||||
will consume the rest of this page, so tell the kernel to move the
|
will consume the rest of this page, so tell the kernel to move the
|
||||||
break up that far. When the user program examines its break, it
|
break up that far. When the user program examines its break, it
|
||||||
will see this new value and not clobber our data. */
|
will see this new value and not clobber our data. */
|
||||||
__sbrk (GLRO(dl_pagesize)
|
__sbrk (GLRO(dl_pagesize)
|
||||||
- ((&_end - (void *) 0) & (GLRO(dl_pagesize) - 1)));
|
- ((_end - (char *) 0) & (GLRO(dl_pagesize) - 1)));
|
||||||
|
|
||||||
/* If this is a SUID program we make sure that FDs 0, 1, and 2 are
|
/* If this is a SUID program we make sure that FDs 0, 1, and 2 are
|
||||||
allocated. If necessary we are doing it ourself. If it is not
|
allocated. If necessary we are doing it ourself. If it is not
|
||||||
|
@ -47,12 +47,12 @@ frob_brk (void)
|
|||||||
Later Linux kernels have changed this behavior so that the initial
|
Later Linux kernels have changed this behavior so that the initial
|
||||||
break value is rounded up to the page boundary before we start. */
|
break value is rounded up to the page boundary before we start. */
|
||||||
|
|
||||||
extern void *__curbrk attribute_hidden;
|
extern char *__curbrk attribute_hidden;
|
||||||
extern void _end attribute_hidden;
|
extern char _end[] attribute_hidden;
|
||||||
void *const endpage = (void *) 0 + (((__curbrk - (void *) 0)
|
char *const endpage = (void *) 0 + (((__curbrk - (char *) 0)
|
||||||
+ GLRO(dl_pagesize) - 1)
|
+ GLRO(dl_pagesize) - 1)
|
||||||
& -GLRO(dl_pagesize));
|
& -GLRO(dl_pagesize));
|
||||||
if (__builtin_expect (__curbrk >= &_end && __curbrk < endpage, 0))
|
if (__builtin_expect (__curbrk >= _end && __curbrk < endpage, 0))
|
||||||
__brk (endpage);
|
__brk (endpage);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user