File: tg-extern_inline.diff

package info (click to toggle)
glibc 2.24-10
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 223,412 kB
  • sloc: ansic: 991,967; asm: 261,800; sh: 10,385; makefile: 9,710; cpp: 4,169; python: 3,971; perl: 2,254; awk: 1,753; pascal: 1,521; yacc: 291; sed: 80
file content (632 lines) | stat: -rw-r--r-- 17,726 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [PATCH] hurd: take __USE_EXTERN_INLINES into account

* hurd/hurd.h (__hurd_fail): Always declare function, and provide inline
version only if __USE_EXTERN_INLINES is defined.
* hurd/hurd/fd.h (_hurd_fd_get, _hurd_fd_error_signal, _hurd_fd_error,
__hurd_dfail, __hurd_sockfail): Likewise.
* mach/lock-intern.h (__spin_lock_init, __spin_lock, __mutex_lock,
__mutex_unlock, __mutex_trylock): Likewise.
* mach/mach/mig_support.h (__mig_strncpy): Likewise.
* sysdeps/generic/machine-lock.h (__spin_unlock, __spin_try_lock,
__spin_lock_locked): Likewise.
* sysdeps/generic/machine-sp.h (__thread_stack_pointer): Likewise.
* sysdeps/mach/i386/machine-lock.h (__spin_unlock, __spin_try_lock,
__spin_lock_locked): Likewise.

* hurd/hurd/port.h (_hurd_port_init, _hurd_port_locked_get,
_hurd_port_get, _hurd_port_free, _hurd_port_locked_set,
_hurd_port_set): Always declare functions, and provide inline version
only if __USE_EXTERN_INLINES is defined and _LIBC is defined and
NOT_IN_libc is not defined.
* hurd/hurd/signal.h (_hurd_self_sigstate, _hurd_critical_section_lock,
_hurd_critical_section_unlock): Likewise.
* hurd/hurd/threadvar.h (__hurd_threadvar_location_from_sp,
* __hurd_threadvar_location): Likewise.
* hurd/hurd/userlink.h (_hurd_userlink_link, _hurd_userlink_unlink,
_hurd_userlink_clear): Likewise.

* mach/spin-lock.c (__USE_EXTERN_INLINES): Define to 1.

---
 hurd/hurd.h                         |    4 ++++
 hurd/hurd/fd.h                   | 26 ++++++++++++++++++++++++
 hurd/hurd/port.h                 | 43 ++++++++++++++++++++++++++++++++++++++++
 hurd/hurd/signal.h               | 16 +++++++++++++++
 hurd/hurd/threadvar.h            |  9 +++++++++
 hurd/hurd/userlink.h             | 20 +++++++++++++++++++
 mach/lock-intern.h               | 20 +++++++++++++++++++
 mach/mach/mig_support.h             |    3 +++
 mach/spin-lock.c                    |    1 +
 sysdeps/generic/machine-lock.h   | 12 +++++++++++
 sysdeps/generic/machine-sp.h        |    4 ++++
 sysdeps/mach/i386/machine-lock.h | 12 +++++++++++
 13 files changed, 178 insertions(+)

diff --git a/hurd/hurd.h b/hurd/hurd.h
index ec07827..2cd0fdb 100644
--- a/hurd/hurd.h
+++ b/hurd/hurd.h
@@ -46,6 +46,9 @@
 #define _HURD_H_EXTERN_INLINE __extern_inline
 #endif
 
+int __hurd_fail (error_t err);
+
+#ifdef __USE_EXTERN_INLINES
 _HURD_H_EXTERN_INLINE int
 __hurd_fail (error_t err)
 {
@@ -75,6 +78,7 @@ __hurd_fail (error_t err)
   errno = err;
   return -1;
 }
+#endif
 
 /* Basic ports and info, initialized by startup.  */
 
diff --git a/hurd/hurd/fd.h b/hurd/hurd/fd.h
index 6c67b25..e75cb14 100644
--- a/hurd/hurd/fd.h
+++ b/hurd/hurd/fd.h
@@ -59,6 +59,10 @@ extern struct mutex _hurd_dtable_lock; /* Locks those two variables.  */
    NULL.  The cell is unlocked; when ready to use it, lock it and check for
    it being unused.  */
 
+struct hurd_fd *_hurd_fd_get (int fd);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_FD_H_EXTERN_INLINE struct hurd_fd *
 _hurd_fd_get (int fd)
 {
@@ -91,6 +95,8 @@ _hurd_fd_get (int fd)
 
   return descriptor;
 }
+#  endif
+#endif
 
 
 /* Evaluate EXPR with the variable `descriptor' bound to a pointer to the
@@ -138,6 +144,9 @@ _hurd_fd_get (int fd)
 /* Check if ERR should generate a signal.
    Returns the signal to take, or zero if none.  */
 
+int _hurd_fd_error_signal (error_t err);
+
+#ifdef __USE_EXTERN_INLINES
 _HURD_FD_H_EXTERN_INLINE int
 _hurd_fd_error_signal (error_t err)
 {
@@ -154,11 +163,15 @@ _hurd_fd_error_signal (error_t err)
       return 0;
     }
 }
+#endif
 
 /* Handle an error from an RPC on a file descriptor's port.  You should
    always use this function to handle errors from RPCs made on file
    descriptor ports.  Some errors are translated into signals.  */
 
+error_t _hurd_fd_error (int fd, error_t err);
+
+#ifdef __USE_EXTERN_INLINES
 _HURD_FD_H_EXTERN_INLINE error_t
 _hurd_fd_error (int fd, error_t err)
 {
@@ -171,20 +184,28 @@ _hurd_fd_error (int fd, error_t err)
     }
   return err;
 }
+#endif
 
 /* Handle error code ERR from an RPC on file descriptor FD's port.
    Set `errno' to the appropriate error code, and always return -1.  */
 
+int __hurd_dfail (int fd, error_t err);
+
+#ifdef __USE_EXTERN_INLINES
 _HURD_FD_H_EXTERN_INLINE int
 __hurd_dfail (int fd, error_t err)
 {
   errno = _hurd_fd_error (fd, err);
   return -1;
 }
+#endif
 
 /* Likewise, but do not raise SIGPIPE on EPIPE if flags contain
    MSG_NOSIGNAL.  */
 
+int __hurd_sockfail (int fd, int flags, error_t err);
+
+#ifdef __USE_EXTERN_INLINES
 _HURD_FD_H_EXTERN_INLINE int
 __hurd_sockfail (int fd, int flags, error_t err)
 {
@@ -193,6 +214,7 @@ __hurd_sockfail (int fd, int flags, error_t err)
   errno = err;
   return -1;
 }
+#endif
 
 /* Set up *FD to have PORT its server port, doing appropriate ctty magic.
    Does no locking or unlocking.  */
@@ -258,6 +280,8 @@ extern int _hurd_select (int nfds, struct pollfd *pollfds,
 /* Apply AT_FLAGS on FLAGS, in preparation for calling
    __hurd_file_name_lookup.  */
 
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_FD_H_EXTERN_INLINE error_t
 __hurd_at_flags (int *at_flags, int *flags)
 {
@@ -274,6 +298,8 @@ __hurd_at_flags (int *at_flags, int *flags)
 
   return 0;
 }
+#  endif
+#endif
 
 /* Variant of file_name_lookup used in *at function implementations.
    AT_FLAGS may only contain AT_SYMLINK_FOLLOW or AT_SYMLINK_NOFOLLOW,
diff --git a/hurd/hurd/port.h b/hurd/hurd/port.h
index 4fea1aa..8afee90 100644
--- a/hurd/hurd/port.h
+++ b/hurd/hurd/port.h
@@ -60,6 +60,10 @@ struct hurd_port
 
 /* Initialize *PORT to INIT.  */
 
+void _hurd_port_init (struct hurd_port *port, mach_port_t init);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_PORT_H_EXTERN_INLINE void
 _hurd_port_init (struct hurd_port *port, mach_port_t init)
 {
@@ -67,6 +71,8 @@ _hurd_port_init (struct hurd_port *port, mach_port_t init)
   port->users = NULL;
   port->port = init;
 }
+#  endif
+#endif
 
 
 /* Cleanup function for non-local exits.  */
@@ -75,6 +81,12 @@ extern void _hurd_port_cleanup (void *, jmp_buf, int);
 /* Get a reference to *PORT, which is locked.
    Pass return value and LINK to _hurd_port_free when done.  */
 
+mach_port_t
+_hurd_port_locked_get (struct hurd_port *port,
+		       struct hurd_userlink *link);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_PORT_H_EXTERN_INLINE mach_port_t
 _hurd_port_locked_get (struct hurd_port *port,
 		       struct hurd_userlink *link)
@@ -90,9 +102,17 @@ _hurd_port_locked_get (struct hurd_port *port,
   __spin_unlock (&port->lock);
   return result;
 }
+#  endif
+#endif
 
 /* Same, but locks PORT first.  */
 
+mach_port_t
+_hurd_port_get (struct hurd_port *port,
+		struct hurd_userlink *link);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_PORT_H_EXTERN_INLINE mach_port_t
 _hurd_port_get (struct hurd_port *port,
 		struct hurd_userlink *link)
@@ -104,10 +124,19 @@ _hurd_port_get (struct hurd_port *port,
   HURD_CRITICAL_END;
   return result;
 }
+#  endif
+#endif
 
 
 /* Free a reference gotten with `USED_PORT = _hurd_port_get (PORT, LINK);' */
 
+void
+_hurd_port_free (struct hurd_port *port,
+		 struct hurd_userlink *link,
+		 mach_port_t used_port);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_PORT_H_EXTERN_INLINE void
 _hurd_port_free (struct hurd_port *port,
 		 struct hurd_userlink *link,
@@ -127,11 +156,17 @@ _hurd_port_free (struct hurd_port *port,
   if (dealloc)
     __mach_port_deallocate (__mach_task_self (), used_port);
 }
+#  endif
+#endif
 
 
 /* Set *PORT's port to NEWPORT.  NEWPORT's reference is consumed by PORT->port.
    PORT->lock is locked.  */
 
+void _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_PORT_H_EXTERN_INLINE void
 _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport)
 {
@@ -142,9 +177,15 @@ _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport)
   if (old != MACH_PORT_NULL)
     __mach_port_deallocate (__mach_task_self (), old);
 }
+#  endif
+#endif
 
 /* Same, but locks PORT first.  */
 
+void _hurd_port_set (struct hurd_port *port, mach_port_t newport);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_PORT_H_EXTERN_INLINE void
 _hurd_port_set (struct hurd_port *port, mach_port_t newport)
 {
@@ -153,6 +194,8 @@ _hurd_port_set (struct hurd_port *port, mach_port_t newport)
   _hurd_port_locked_set (port, newport);
   HURD_CRITICAL_END;
 }
+#  endif
+#endif
 
 
 #endif	/* hurd/port.h */
diff --git a/hurd/hurd/signal.h b/hurd/hurd/signal.h
index 85e5152..09fb827 100644
--- a/hurd/hurd/signal.h
+++ b/hurd/hurd/signal.h
@@ -129,6 +129,8 @@ extern struct hurd_sigstate *_hurd_self_sigstate (void)
 #define _HURD_SIGNAL_H_EXTERN_INLINE __extern_inline
 #endif
 
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_SIGNAL_H_EXTERN_INLINE struct hurd_sigstate *
 _hurd_self_sigstate (void)
 {
@@ -138,6 +140,8 @@ _hurd_self_sigstate (void)
     }
   return THREAD_SELF->_hurd_sigstate;
 }
+#  endif
+#endif
 
 /* Thread listening on our message port; also called the "signal thread".  */
 
@@ -164,6 +168,10 @@ extern int _hurd_core_limit;
    interrupted lest the signal handler try to take the same lock and
    deadlock result.  */
 
+void *_hurd_critical_section_lock (void);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_SIGNAL_H_EXTERN_INLINE void *
 _hurd_critical_section_lock (void)
 {
@@ -188,7 +196,13 @@ _hurd_critical_section_lock (void)
      _hurd_critical_section_unlock to unlock it.  */
   return ss;
 }
+#  endif
+#endif
 
+void _hurd_critical_section_unlock (void *our_lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_SIGNAL_H_EXTERN_INLINE void
 _hurd_critical_section_unlock (void *our_lock)
 {
@@ -211,6 +225,8 @@ _hurd_critical_section_unlock (void *our_lock)
 	__msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ());
     }
 }
+#  endif
+#endif
 
 /* Convenient macros for simple uses of critical sections.
    These two must be used as a pair at the same C scoping level.  */
diff --git a/hurd/hurd/userlink.h b/hurd/hurd/userlink.h
index 275ce0c..d2610d7 100644
--- a/hurd/hurd/userlink.h
+++ b/hurd/hurd/userlink.h
@@ -76,6 +76,12 @@ struct hurd_userlink
 
 /* Attach LINK to the chain of users at *CHAINP.  */
 
+void
+_hurd_userlink_link (struct hurd_userlink **chainp,
+		     struct hurd_userlink *link);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_USERLINK_H_EXTERN_INLINE void
 _hurd_userlink_link (struct hurd_userlink **chainp,
 		     struct hurd_userlink *link)
@@ -96,11 +102,17 @@ _hurd_userlink_link (struct hurd_userlink **chainp,
   link->thread.prevp = thread_chainp;
   *thread_chainp = link;
 }
+#  endif
+#endif
 
 
 /* Detach LINK from its chain.  Returns nonzero iff this was the
    last user of the resource and it should be deallocated.  */
 
+int _hurd_userlink_unlink (struct hurd_userlink *link);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_USERLINK_H_EXTERN_INLINE int
 _hurd_userlink_unlink (struct hurd_userlink *link)
 {
@@ -123,6 +135,8 @@ _hurd_userlink_unlink (struct hurd_userlink *link)
 
   return dealloc;
 }
+#  endif
+#endif
 
 
 /* Clear all users from *CHAINP.  Call this when the resource *CHAINP
@@ -131,6 +145,10 @@ _hurd_userlink_unlink (struct hurd_userlink *link)
    value is zero, someone is still using the resource and they will
    deallocate it when they are finished.  */
 
+int _hurd_userlink_clear (struct hurd_userlink **chainp);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
+#  if IS_IN (libc)
 _HURD_USERLINK_H_EXTERN_INLINE int
 _hurd_userlink_clear (struct hurd_userlink **chainp)
 {
@@ -143,5 +161,7 @@ _hurd_userlink_clear (struct hurd_userlink **chainp)
   *chainp = NULL;
   return 0;
 }
+#  endif
+#endif
 
 #endif	/* hurd/userlink.h */
diff --git a/mach/lock-intern.h b/mach/lock-intern.h
index 426628b..02f4b7a 100644
--- a/mach/lock-intern.h
+++ b/mach/lock-intern.h
@@ -28,11 +28,15 @@
 
 /* Initialize LOCK.  */
 
+void __spin_lock_init (__spin_lock_t *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE void
 __spin_lock_init (__spin_lock_t *__lock)
 {
   *__lock = __SPIN_LOCK_INITIALIZER;
 }
+#endif
 
 
 /* Lock LOCK, blocking if we can't get it.  */
@@ -40,12 +44,16 @@ extern void __spin_lock_solid (__spin_lock_t *__lock);
 
 /* Lock the spin lock LOCK.  */
 
+void __spin_lock (__spin_lock_t *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE void
 __spin_lock (__spin_lock_t *__lock)
 {
   if (! __spin_try_lock (__lock))
     __spin_lock_solid (__lock);
 }
+#endif
 
 /* Name space-clean internal interface to mutex locks.
 
@@ -70,27 +78,39 @@ extern void __mutex_unlock_solid (void *__lock);
 
 /* Lock the mutex lock LOCK.  */
 
+void __mutex_lock (void *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE void
 __mutex_lock (void *__lock)
 {
   if (! __spin_try_lock ((__spin_lock_t *) __lock))
     __mutex_lock_solid (__lock);
 }
+#endif
 
 /* Unlock the mutex lock LOCK.  */
 
+void __mutex_unlock (void *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE void
 __mutex_unlock (void *__lock)
 {
   __spin_unlock ((__spin_lock_t *) __lock);
   __mutex_unlock_solid (__lock);
 }
+#endif
 
 
+int __mutex_trylock (void *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE int
 __mutex_trylock (void *__lock)
 {
   return __spin_try_lock ((__spin_lock_t *) __lock);
 }
+#endif
 
 #endif /* lock-intern.h */
diff --git a/mach/mach/mig_support.h b/mach/mach/mig_support.h
index b83b1d0..01c452a 100644
--- a/mach/mach/mig_support.h
+++ b/mach/mach/mig_support.h
@@ -66,6 +66,8 @@ extern void mig_reply_setup (const mach_msg_header_t *__request,
 /* Idiocy support function.  */
 extern vm_size_t mig_strncpy (char *__dst, const char *__src, vm_size_t __len);
 extern vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 __extern_inline vm_size_t
 __mig_strncpy (char *__dst, const char *__src, vm_size_t __len)
 {
@@ -76,6 +78,7 @@ mig_strncpy (char *__dst, const char *__src, vm_size_t __len)
 {
   return __mig_strncpy (__dst, __src, __len);
 }
+#endif
 
 
 
diff --git a/mach/spin-lock.c b/mach/spin-lock.c
index aaebc55..1b1e69c 100644
--- a/mach/spin-lock.c
+++ b/mach/spin-lock.c
@@ -1,3 +1,4 @@
+#define __USE_EXTERN_INLINES 1
 #define _EXTERN_INLINE /* Empty to define the real functions.  */
 #include "spin-lock.h"
 
diff --git a/sysdeps/generic/machine-lock.h b/sysdeps/generic/machine-lock.h
index 8497a72..883b63b 100644
--- a/sysdeps/generic/machine-lock.h
+++ b/sysdeps/generic/machine-lock.h
@@ -34,14 +34,21 @@ typedef volatile int __spin_lock_t;
 
 /* Unlock LOCK.  */
 
+void __spin_unlock (__spin_lock_t *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE void
 __spin_unlock (__spin_lock_t *__lock)
 {
   *__lock = 0;
 }
+#endif
 
 /* Try to lock LOCK; return nonzero if we locked it, zero if another has.  */
 
+int __spin_try_lock (__spin_lock_t *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE int
 __spin_try_lock (__spin_lock_t *__lock)
 {
@@ -50,14 +57,19 @@ __spin_try_lock (__spin_lock_t *__lock)
   *__lock = 1;
   return 1;
 }
+#endif
 
 /* Return nonzero if LOCK is locked.  */
 
+int __spin_lock_locked (__spin_lock_t *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE int
 __spin_lock_locked (__spin_lock_t *__lock)
 {
   return *__lock != 0;
 }
+#endif
 
 
 #endif /* machine-lock.h */
diff --git a/sysdeps/generic/machine-sp.h b/sysdeps/generic/machine-sp.h
index f7d8449..f9beec4 100644
--- a/sysdeps/generic/machine-sp.h
+++ b/sysdeps/generic/machine-sp.h
@@ -25,11 +25,15 @@
 #define _EXTERN_INLINE __extern_inline
 #endif
 
+void * __thread_stack_pointer (void);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE void *
 __thread_stack_pointer (void)
 {
   register void *__sp__ ("{STACK-POINTER}");
   return __sp__;
 }
+#endif
 
 #endif	/* machine-sp.h */
diff --git a/sysdeps/mach/i386/machine-lock.h b/sysdeps/mach/i386/machine-lock.h
index 966f128..12f06b5 100644
--- a/sysdeps/mach/i386/machine-lock.h
+++ b/sysdeps/mach/i386/machine-lock.h
@@ -34,6 +34,9 @@ typedef volatile int __spin_lock_t;
 
 /* Unlock LOCK.  */
 
+void __spin_unlock (__spin_lock_t *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE void
 __spin_unlock (__spin_lock_t *__lock)
 {
@@ -42,9 +45,13 @@ __spin_unlock (__spin_lock_t *__lock)
 		       : "=&r" (__unlocked), "=m" (*__lock) : "0" (0)
 		       : "memory");
 }
+#endif
 
 /* Try to lock LOCK; return nonzero if we locked it, zero if another has.  */
 
+int __spin_try_lock (__spin_lock_t *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE int
 __spin_try_lock (__spin_lock_t *__lock)
 {
@@ -54,14 +61,19 @@ __spin_try_lock (__spin_lock_t *__lock)
 		      : "memory");
   return !__locked;
 }
+#endif
 
 /* Return nonzero if LOCK is locked.  */
 
+int __spin_lock_locked (__spin_lock_t *__lock);
+
+#if defined __USE_EXTERN_INLINES && defined _LIBC
 _EXTERN_INLINE int
 __spin_lock_locked (__spin_lock_t *__lock)
 {
   return *__lock != 0;
 }
+#endif
 
 
 #endif /* machine-lock.h */
-- 
tg: (258b100..) t/extern_inline (depends on: t/faccessat)