(root)/
binutils-2.41/
gold/
testsuite/
justsyms_exec.c
       1  // justsyms_exec.c -- test --just-symbols for gold
       2  
       3  // Copyright (C) 2011-2023 Free Software Foundation, Inc.
       4  // Written by Cary Coutant <ccoutant@google.com>.
       5  
       6  // This file is part of gold.
       7  
       8  // This program is free software; you can redistribute it and/or modify
       9  // it under the terms of the GNU General Public License as published by
      10  // the Free Software Foundation; either version 3 of the License, or
      11  // (at your option) any later version.
      12  
      13  // This program is distributed in the hope that it will be useful,
      14  // but WITHOUT ANY WARRANTY; without even the implied warranty of
      15  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16  // GNU General Public License for more details.
      17  
      18  // You should have received a copy of the GNU General Public License
      19  // along with this program; if not, write to the Free Software
      20  // Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
      21  // MA 02110-1301, USA.
      22  
      23  // The Linux kernel builds an executable file using a linker script, and
      24  // then links against that object file using the -R option.  This is a
      25  // test for that usage.
      26  
      27  #include <stdio.h>
      28  
      29  extern int exported_func(void);
      30  
      31  extern int exported_data;
      32  
      33  static int errs = 0;
      34  
      35  void check(void *sym, long v, const char *name);
      36  
      37  void
      38  check(void *sym, long v, const char *name)
      39  {
      40    if (sym != (void *)v)
      41      {
      42        fprintf(stderr, "&%s is %8p, expected %08lx\n", name, sym, v);
      43        errs++;
      44      }
      45  }
      46  
      47  int
      48  main(void)
      49  {
      50  #if !defined (__powerpc64__) || (defined (_CALL_ELF) && _CALL_ELF == 2)
      51    /* PowerPC64 ELFv1 uses function descriptors.  */
      52    check(exported_func, 0x1000200, "exported_func");
      53  #endif
      54    check(&exported_data, 0x2000000, "exported_data");
      55    return errs;
      56  }