diff options
author | Zack Weinberg <zackw@panix.com> | 2017-03-22 09:55:25 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2017-05-20 19:01:46 -0400 |
commit | 500b3a499fff61157db464a99f459c772d7eb6c0 (patch) | |
tree | e083962624bc0aeeacb478c310a2d759365d22df /include/list_t.h | |
parent | 1f655beb087a4ade30a0299d6f92b9916fbf7cc7 (diff) | |
download | glibc-500b3a499fff61157db464a99f459c772d7eb6c0.tar.gz glibc-500b3a499fff61157db464a99f459c772d7eb6c0.tar.xz glibc-500b3a499fff61157db464a99f459c772d7eb6c0.zip |
Remove __need_list_t and __need_res_state.
These __need macros are only used internally, by nptl/descr.h. However, including all of resolv.h from descr.h causes build failures due to resolv.h's dozens of pseudo-struct-field macros, some of which collide with struct fields in NPTL internal data structures. Similarly, including all of list.h from descr.h produces an include cycle, atomic.h -> atomic-machine.h -> tls.h -> descr.h -> list.h -> atomic.h, and then list.h tries to use atomic.h macros that haven't been defined yet. So we do need mini-headers for these. In the list.h case I called it include/list_t.h since it isn't going to be installed. * resolv/resolv.h: Remove __need_res_state logic. Move definition of res_state and related constants to ... * resolv/bits/types/res_state.h: ...this new file. * resolv/Makefile: Install bits/types/res_state.h. * include/bits/types/res_state.h: New wrapper. * include/list.h: Remove __need_list_t logic. Move definition of list_t to ... * include/list_t.h: ...this new file. * nptl/descr.h: Include list_t.h and bits/types/res_state.h instead of list.h and resolv.h.
Diffstat (limited to 'include/list_t.h')
-rw-r--r-- | include/list_t.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/include/list_t.h b/include/list_t.h new file mode 100644 index 0000000000..d737e2e214 --- /dev/null +++ b/include/list_t.h @@ -0,0 +1,31 @@ +/* Copyright (C) 2002-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LIST_T_H +#define _LIST_T_H 1 + +/* Internal: doubly linked lists. */ + +/* Basic type for the double-link list. */ +typedef struct list_head +{ + struct list_head *next; + struct list_head *prev; +} list_t; + +#endif /* list_t.h */ |