Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Ensure `wint_t' is defined before use in include/stdio.h
While trying to get nptl/tst-initializers1.c to include the test skeleton, I
came across a couple of speed bumps. Firstly: after making the appropriate
changes to the test, running `make check' led to this error:

> In file included from ../malloc/malloc.h:24:0,
..
>                  from tst-initializers1.c:60:
> ../include/stdio.h:111:1: error: unknown type name `wint_t'
>  extern wint_t __getwc_unlocked (FILE *__fp);

So, `wint_t' is used before being defined. Question: Why did test-skeleton.c
not cause this error in any of the other tests that include it?

Anyway, I noticed include/stdio.h includes stddef.h, which in turn defines
`wint_t', but only if `__need_wint_t' is defined. So I put in a
`#define __need_wint_t' before the include to get rid of the error. Is that
the correct fix?

A subsequent `make && make check' led to this second error:

>                  from tst-initializers1-c89.c:1:
> ../test-skeleton.c: In function `main':
> ../test-skeleton.c:356:11: error: `for' loop initial declarations are only
>  allowed in C99 mode
>            for (struct temp_name_list *n = temp_name_list;

Although there seem to be several other C89 no-noes in test-skeleton.c, I
needed only to fix this specific one for gcc-4.8.3 to stop complaining.
  • Loading branch information
Arjun Shankar authored and Siddhesh Poyarekar committed May 18, 2015
1 parent b40a4e1 commit 330fadf
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 3 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
@@ -1,3 +1,9 @@
2015-05-18 Arjun Shankar <arjun.is@lostca.se>

* include/stdio.h: Define __need_wint_t.
* test-skeleton.c: Avoid `for' loop initial declaration.
* nptl/tst-initializers1.c: Use test-skeleton.c.

2015-05-17 Adhemerval Zanella <adhemerval.zanella@linaro.org>

[BZ #18418]
Expand Down
1 change: 1 addition & 0 deletions include/stdio.h
Expand Up @@ -76,6 +76,7 @@ extern FILE *__old_tmpfile (void);


# define __need_size_t
# define __need_wint_t
# include <stddef.h>
/* Generate a unique file name (and possibly open it). */
extern int __path_search (char *__tmpl, size_t __tmpl_len,
Expand Down
7 changes: 5 additions & 2 deletions nptl/tst-initializers1.c
Expand Up @@ -30,8 +30,8 @@ pthread_rwlock_t rwl_writer
= PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

int
main (void)
static int
do_test (void)
{
if (mtx_normal.__data.__kind != PTHREAD_MUTEX_TIMED_NP)
return 1;
Expand All @@ -55,3 +55,6 @@ main (void)
return 7;
return 0;
}

#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
3 changes: 2 additions & 1 deletion test-skeleton.c
Expand Up @@ -352,8 +352,9 @@ main (int argc, char *argv[])

if (temp_name_list != NULL)
{
struct temp_name_list *n;
fprintf (f, "temp_files=(\n");
for (struct temp_name_list *n = temp_name_list;
for (n = temp_name_list;
n != NULL;
n = (struct temp_name_list *) n->q.q_forw)
fprintf (f, " '%s'\n", n->name);
Expand Down

0 comments on commit 330fadf

Please sign in to comment.