Home | History | Annotate | Line # | Download | only in gdb.dwarf2
dw2-dir-file-name.c revision 1.6
      1  1.1  christos /* This testcase is part of GDB, the GNU debugger.
      2  1.1  christos 
      3  1.6  christos    Copyright 2012-2016 Free Software Foundation, Inc.
      4  1.1  christos 
      5  1.1  christos    This program is free software; you can redistribute it and/or modify
      6  1.1  christos    it under the terms of the GNU General Public License as published by
      7  1.1  christos    the Free Software Foundation; either version 3 of the License, or
      8  1.1  christos    (at your option) any later version.
      9  1.1  christos 
     10  1.1  christos    This program is distributed in the hope that it will be useful,
     11  1.1  christos    but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  1.1  christos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  1.1  christos    GNU General Public License for more details.
     14  1.1  christos 
     15  1.1  christos    You should have received a copy of the GNU General Public License
     16  1.1  christos    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     17  1.1  christos 
     18  1.1  christos volatile int v;
     19  1.1  christos 
     20  1.1  christos static void
     21  1.1  christos marker (void)
     22  1.1  christos {
     23  1.1  christos   v++;
     24  1.1  christos }
     25  1.1  christos 
     26  1.1  christos /* *R* marks possibly invalid compiler output as the first path component is
     27  1.1  christos    not absolute.  Still DWARF-4 does not forbid such DWARF; GCC does not
     28  1.1  christos    produce it.  */
     29  1.1  christos 
     30  1.1  christos #define FUNCBLOCK						\
     31  1.1  christos FUNC (compdir_missing__ldir_missing__file_basename)	   /*R*/\
     32  1.1  christos FUNC (compdir_missing__ldir_missing__file_relative)	   /*R*/\
     33  1.1  christos FUNC (compdir_missing__ldir_missing__file_absolute)		\
     34  1.1  christos FUNC (compdir_missing__ldir_relative_file_basename)	   /*R*/\
     35  1.1  christos FUNC (compdir_missing__ldir_relative_file_relative)	   /*R*/\
     36  1.1  christos FUNC (compdir_missing__ldir_relative_file_absolute)	   /*R*/\
     37  1.1  christos FUNC (compdir_missing__ldir_absolute_file_basename)		\
     38  1.1  christos FUNC (compdir_missing__ldir_absolute_file_relative)		\
     39  1.1  christos FUNC (compdir_missing__ldir_absolute_file_absolute_same)	\
     40  1.1  christos FUNC (compdir_missing__ldir_absolute_file_absolute_different)	\
     41  1.1  christos FUNC (compdir_relative_ldir_missing__file_basename)	   /*R*/\
     42  1.1  christos FUNC (compdir_relative_ldir_missing__file_relative)	   /*R*/\
     43  1.1  christos FUNC (compdir_relative_ldir_missing__file_absolute)	   /*R*/\
     44  1.1  christos FUNC (compdir_relative_ldir_relative_file_basename)	   /*R*/\
     45  1.1  christos FUNC (compdir_relative_ldir_relative_file_relative)	   /*R*/\
     46  1.1  christos FUNC (compdir_relative_ldir_relative_file_absolute)	   /*R*/\
     47  1.1  christos FUNC (compdir_relative_ldir_absolute_file_basename)	   /*R*/\
     48  1.1  christos FUNC (compdir_relative_ldir_absolute_file_relative)	   /*R*/\
     49  1.1  christos FUNC (compdir_relative_ldir_absolute_file_absolute_same)   /*R*/\
     50  1.1  christos FUNC (compdir_relative_ldir_absolute_file_absolute_different) /*R*/\
     51  1.1  christos FUNC (compdir_absolute_ldir_missing__file_basename)		\
     52  1.1  christos FUNC (compdir_absolute_ldir_missing__file_relative)		\
     53  1.1  christos FUNC (compdir_absolute_ldir_missing__file_absolute_same)	\
     54  1.1  christos FUNC (compdir_absolute_ldir_missing__file_absolute_different)	\
     55  1.1  christos FUNC (compdir_absolute_ldir_relative_file_basename)		\
     56  1.1  christos FUNC (compdir_absolute_ldir_relative_file_relative)		\
     57  1.1  christos FUNC (compdir_absolute_ldir_relative_file_absolute_same)	\
     58  1.1  christos FUNC (compdir_absolute_ldir_relative_file_absolute_different)	\
     59  1.1  christos FUNC (compdir_absolute_ldir_absolute_file_basename_same)	\
     60  1.1  christos FUNC (compdir_absolute_ldir_absolute_file_basename_different)	\
     61  1.1  christos FUNC (compdir_absolute_ldir_absolute_file_relative_same)	\
     62  1.1  christos FUNC (compdir_absolute_ldir_absolute_file_relative_different)	\
     63  1.1  christos FUNC (compdir_absolute_ldir_absolute_file_absolute_same)	\
     64  1.1  christos FUNC (compdir_absolute_ldir_absolute_file_absolute_different)
     65  1.1  christos 
     66  1.3  christos #ifdef __mips__
     67  1.3  christos #define START_INSNS asm (".insn\n");
     68  1.3  christos #else
     69  1.3  christos #define START_INSNS
     70  1.3  christos #endif
     71  1.3  christos 
     72  1.3  christos /* Notes: (1) The '*_start' label below is needed because 'name' may
     73  1.3  christos    point to a function descriptor instead of to the actual code.  (2)
     74  1.3  christos    The '.balign' should specify the highest possible function
     75  1.3  christos    alignment across all supported architectures, such that the label
     76  1.3  christos    never points into the alignment gap.  */
     77  1.3  christos 
     78  1.1  christos #define FUNC(name)					\
     79  1.3  christos   asm (".balign 8");					\
     80  1.1  christos   asm (#name "_start: .globl " #name "_start\n");	\
     81  1.3  christos   START_INSNS						\
     82  1.1  christos   static void						\
     83  1.1  christos   name (void)						\
     84  1.1  christos   {							\
     85  1.1  christos     v++;						\
     86  1.1  christos   }							\
     87  1.1  christos   asm (#name "_end: .globl " #name "_end\n");
     88  1.1  christos FUNCBLOCK
     89  1.1  christos #undef FUNC
     90  1.1  christos 
     91  1.1  christos int
     92  1.1  christos main (void)
     93  1.1  christos {
     94  1.1  christos 
     95  1.1  christos #define FUNC(name)					\
     96  1.1  christos   name ();
     97  1.1  christos FUNCBLOCK
     98  1.1  christos #undef FUNC
     99  1.1  christos 
    100  1.1  christos   return 0;
    101  1.1  christos }
    102