[uclibc-ng-devel] [PATCH] valloc declaration in stdlib.h

Eugene Yudin e.yudin at ndmsystems.com
Tue Jul 25 11:11:50 CEST 2017


Sorry. I made a typo. Of course It's a runtime error.

Requirements:
 * uClibc-ng with disabled option "Enable SuSv2 LEGACY functions"
(UCLIBC_SUSV2_LEGACY symbol).

Test progam:
$ cat test_valloc.c
#include <stdlib.h>

int main(int argc, char *argv[])
{
void *p;

p = valloc(1);
if (p == NULL)
return EXIT_FAILURE;

free(p);

return EXIT_SUCCESS;
}

The program above compiles without problems because of declaration in
"stdio.h", but it segfaults in runtime:
$ ./test_valloc
Segmentation fault

Definition of valloc also depends from UCLIBC_SUSV2_LEGACY
(libc/stdlib/Makefile.in):
CSRC-$(UCLIBC_SUSV2_LEGACY) += valloc.c

The patch transforms the issue to compile time error.

On Mon, Jul 24, 2017 at 11:29 PM, Waldemar Brodkorb <wbx at uclibc-ng.org>
wrote:

> Hi Eugene,
> Eugene Yudin wrote,
>
> > Hi,
> >
> > Current uClibc-ng have issue with several different valloc declarations.
> >
> > malloc.h:
> > #ifdef __UCLIBC_SUSV2_LEGACY__
> > /* Allocate SIZE bytes on a page boundary.  */
> > extern __malloc_ptr_t valloc __MALLOC_P ((size_t __size))
> __attribute_malloc__;
> > #endif
> >
> > stdlib.h:
> >  #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
> >  /* Allocate SIZE bytes on a page boundary.  The storage cannot be
> freed.  */
> >  extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur;
> >  #endif
> >
> > The second declaration doesn't use the define __UCLIBC_SUSV2_LEGACY__.
> > That leads to compile time problems.
>
> Can you explain in which situations this leads to compile time
> problems?
>
> best regards
>  Waldemar
>



-- 
С уважением,
Евгений Юдин
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.uclibc-ng.org/pipermail/devel/attachments/20170725/0993f810/attachment-0001.html>


More information about the devel mailing list