/* { dg-do run { target *-*-linux* } } */
/* { dg-options "-O2 -fpic -fno-plt" } */
/* { dg-additional-sources noplt-gd-1.c } */

__thread int gd = 1;
extern void abort (void);
extern int * get_gd (void);
extern void set_gd (int);
extern int test_gd (int);

int
main ()
{
  int *p;
 
  if (gd != 1)
    abort ();

  p = get_gd ();
  if (*p != gd)
    abort ();

  set_gd (4);
  if (*p != 4 || !test_gd (4))
    abort ();

  return 0;
}
