Bug 24070 - [4.0/4.1 Regression] Dwarf macro info has bad file numbers
Summary: [4.0/4.1 Regression] Dwarf macro info has bad file numbers
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: debug (show other bugs)
Version: 4.0.1
: P2 normal
Target Milestone: 4.0.3
Assignee: Richard Henderson
URL:
Keywords: wrong-debug
: 24400 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-09-26 22:56 UTC by Jim Blandy
Modified: 2005-10-16 14:19 UTC (History)
3 users (show)

See Also:
Host: x86_64-redhat-linux
Target: x86_64-redhat-linux
Build: x86_64-redhat-linux
Known to work: 4.0.0 3.3.6 3.4.5
Known to fail: 4.1.0 4.0.2
Last reconfirmed: 2005-10-06 19:07:51


Attachments
Preprocessed input file for the bug report. (7.57 KB, application/octet-stream)
2005-09-26 22:57 UTC, Jim Blandy
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jim Blandy 2005-09-26 22:56:22 UTC
When passed the -g3 flag, GCC can generate Dwarf macro info that contains bad
file numbers.

The test input file bad-macro-file.i is included at the bottom.

$ gcc --version
gcc (GCC) 4.0.1 20050727 (Red Hat 4.0.1-5)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-libgcj-multifile
--enable-languages=c,c++,objc,java,f95,ada --enable-java-awt=gtk
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --host=x86_64-redhat-linux
Thread model: posix
gcc version 4.0.1 20050727 (Red Hat 4.0.1-5)
$ gcc -g3 -S -dA bad-macro-file.i
$ 

Look at the .debug_macro section in bad-macro-file.s.  After the #inclusion of
stdarg.h, the numbers used to refer to files in the dwarf info no longer match
the numbers used in the .file directives.  If we proceed with the link, readelf
-wml shows that this has indeed produced bogus info.  Note that the line info
file table has only 18 entries, but the macro information refers to file number
19 (file numbers start with one, not zero).

Things start to go bad after the data for <stdarg.h>:

 DW_MACINFO_start_file - lineno: 139 filenum: 18
 DW_MACINFO_define - lineno : 24 macro : L_tmpnam 20
 DW_MACINFO_define - lineno : 25 macro : TMP_MAX 238328

file number 18 is sys_errlist.h, but L_tmpnam is defined on line 24 of
/usr/include/bits/stdio_lim.h.

Dump of debug contents of section .debug_line:

...
 The File Name Table:
  Entry	Dir	Time	Size	Name
  1	0	0	0	bad-macro-file.c
  2	1	0	0	stdio.h
  3	1	0	0	features.h
  4	2	0	0	cdefs.h
  5	3	0	0	stubs.h
  6	4	0	0	wordsize.h
  7	3	0	0	stubs-64.h
  8	5	0	0	stddef.h
  9	4	0	0	types.h
  10	4	0	0	typesizes.h
  11	1	0	0	libio.h
  12	1	0	0	_G_config.h
  13	1	0	0	wchar.h
  14	4	0	0	wchar.h
  15	1	0	0	gconv.h
  16	5	0	0	stdarg.h
  17	4	0	0	stdio_lim.h
  18	4	0	0	sys_errlist.h

 Line Number Statements:
  Extended opcode 2: set Address to 0x400468
  Special opcode 8: advance Address by 0 to 0x400468 and Line by 3 to 4
  Special opcode 61: advance Address by 4 to 0x40046c and Line by 0 to 4
  Advance PC by 2 to 40046e
  Extended opcode 1: End of Sequence


Contents of the .debug_macinfo section:

 DW_MACINFO_start_file - lineno: 0 filenum: 1
 DW_MACINFO_define - lineno : 1 macro : __STDC_HOSTED__ 1
 DW_MACINFO_define - lineno : 1 macro : __GNUC__ 4
 DW_MACINFO_define - lineno : 1 macro : __GNUC_MINOR__ 0
 DW_MACINFO_define - lineno : 1 macro : __GNUC_PATCHLEVEL__ 1
 DW_MACINFO_define - lineno : 1 macro : __GNUC_RH_RELEASE__ 5
 DW_MACINFO_define - lineno : 1 macro : __SIZE_TYPE__ long unsigned int
 DW_MACINFO_define - lineno : 1 macro : __PTRDIFF_TYPE__ long int
 DW_MACINFO_define - lineno : 1 macro : __WCHAR_TYPE__ int
 DW_MACINFO_define - lineno : 1 macro : __WINT_TYPE__ unsigned int
 DW_MACINFO_define - lineno : 1 macro : __INTMAX_TYPE__ long int
 DW_MACINFO_define - lineno : 1 macro : __UINTMAX_TYPE__ long unsigned int
 DW_MACINFO_define - lineno : 1 macro : __GXX_ABI_VERSION 1002
 DW_MACINFO_define - lineno : 1 macro : __SCHAR_MAX__ 127
 DW_MACINFO_define - lineno : 1 macro : __SHRT_MAX__ 32767
 DW_MACINFO_define - lineno : 1 macro : __INT_MAX__ 2147483647
 DW_MACINFO_define - lineno : 1 macro : __LONG_MAX__ 9223372036854775807L
 DW_MACINFO_define - lineno : 1 macro : __LONG_LONG_MAX__ 9223372036854775807LL
 DW_MACINFO_define - lineno : 1 macro : __WCHAR_MAX__ 2147483647
 DW_MACINFO_define - lineno : 1 macro : __CHAR_BIT__ 8
 DW_MACINFO_define - lineno : 1 macro : __INTMAX_MAX__ 9223372036854775807L
 DW_MACINFO_define - lineno : 1 macro : __FLT_EVAL_METHOD__ 0
 DW_MACINFO_define - lineno : 1 macro : __FLT_RADIX__ 2
 DW_MACINFO_define - lineno : 1 macro : __FLT_MANT_DIG__ 24
 DW_MACINFO_define - lineno : 1 macro : __FLT_DIG__ 6
 DW_MACINFO_define - lineno : 1 macro : __FLT_MIN_EXP__ (-125)
 DW_MACINFO_define - lineno : 1 macro : __FLT_MIN_10_EXP__ (-37)
 DW_MACINFO_define - lineno : 1 macro : __FLT_MAX_EXP__ 128
 DW_MACINFO_define - lineno : 1 macro : __FLT_MAX_10_EXP__ 38
 DW_MACINFO_define - lineno : 1 macro : __FLT_MAX__ 3.40282347e+38F
 DW_MACINFO_define - lineno : 1 macro : __FLT_MIN__ 1.17549435e-38F
 DW_MACINFO_define - lineno : 1 macro : __FLT_EPSILON__ 1.19209290e-7F
 DW_MACINFO_define - lineno : 1 macro : __FLT_DENORM_MIN__ 1.40129846e-45F
 DW_MACINFO_define - lineno : 1 macro : __FLT_HAS_INFINITY__ 1
 DW_MACINFO_define - lineno : 1 macro : __FLT_HAS_QUIET_NAN__ 1
 DW_MACINFO_define - lineno : 1 macro : __DBL_MANT_DIG__ 53
 DW_MACINFO_define - lineno : 1 macro : __DBL_DIG__ 15
 DW_MACINFO_define - lineno : 1 macro : __DBL_MIN_EXP__ (-1021)
 DW_MACINFO_define - lineno : 1 macro : __DBL_MIN_10_EXP__ (-307)
 DW_MACINFO_define - lineno : 1 macro : __DBL_MAX_EXP__ 1024
 DW_MACINFO_define - lineno : 1 macro : __DBL_MAX_10_EXP__ 308
 DW_MACINFO_define - lineno : 1 macro : __DBL_MAX__ 1.7976931348623157e+308
 DW_MACINFO_define - lineno : 1 macro : __DBL_MIN__ 2.2250738585072014e-308
 DW_MACINFO_define - lineno : 1 macro : __DBL_EPSILON__ 2.2204460492503131e-16
 DW_MACINFO_define - lineno : 1 macro : __DBL_DENORM_MIN__ 4.9406564584124654e-324
 DW_MACINFO_define - lineno : 1 macro : __DBL_HAS_INFINITY__ 1
 DW_MACINFO_define - lineno : 1 macro : __DBL_HAS_QUIET_NAN__ 1
 DW_MACINFO_define - lineno : 1 macro : __LDBL_MANT_DIG__ 64
 DW_MACINFO_define - lineno : 1 macro : __LDBL_DIG__ 18
 DW_MACINFO_define - lineno : 1 macro : __LDBL_MIN_EXP__ (-16381)
 DW_MACINFO_define - lineno : 1 macro : __LDBL_MIN_10_EXP__ (-4931)
 DW_MACINFO_define - lineno : 1 macro : __LDBL_MAX_EXP__ 16384
 DW_MACINFO_define - lineno : 1 macro : __LDBL_MAX_10_EXP__ 4932
 DW_MACINFO_define - lineno : 1 macro : __DECIMAL_DIG__ 21
 DW_MACINFO_define - lineno : 1 macro : __LDBL_MAX__ 1.18973149535723176502e+4932L
 DW_MACINFO_define - lineno : 1 macro : __LDBL_MIN__ 3.36210314311209350626e-4932L
 DW_MACINFO_define - lineno : 1 macro : __LDBL_EPSILON__ 1.08420217248550443401e-19L
 DW_MACINFO_define - lineno : 1 macro : __LDBL_DENORM_MIN__
3.64519953188247460253e-4951L
 DW_MACINFO_define - lineno : 1 macro : __LDBL_HAS_INFINITY__ 1
 DW_MACINFO_define - lineno : 1 macro : __LDBL_HAS_QUIET_NAN__ 1
 DW_MACINFO_define - lineno : 1 macro : __REGISTER_PREFIX__ 
 DW_MACINFO_define - lineno : 1 macro : __USER_LABEL_PREFIX__ 
 DW_MACINFO_define - lineno : 1 macro : __VERSION__ "4.0.1 20050727 (Red Hat
4.0.1-5)"
 DW_MACINFO_define - lineno : 1 macro : _LP64 1
 DW_MACINFO_define - lineno : 1 macro : __LP64__ 1
 DW_MACINFO_define - lineno : 1 macro : __NO_INLINE__ 1
 DW_MACINFO_define - lineno : 1 macro : __FINITE_MATH_ONLY__ 0
 DW_MACINFO_define - lineno : 1 macro : __amd64 1
 DW_MACINFO_define - lineno : 1 macro : __amd64__ 1
 DW_MACINFO_define - lineno : 1 macro : __x86_64 1
 DW_MACINFO_define - lineno : 1 macro : __x86_64__ 1
 DW_MACINFO_define - lineno : 1 macro : __tune_k8__ 1
 DW_MACINFO_define - lineno : 1 macro : __MMX__ 1
 DW_MACINFO_define - lineno : 1 macro : __SSE__ 1
 DW_MACINFO_define - lineno : 1 macro : __SSE2__ 1
 DW_MACINFO_define - lineno : 1 macro : __SSE_MATH__ 1
 DW_MACINFO_define - lineno : 1 macro : __SSE2_MATH__ 1
 DW_MACINFO_define - lineno : 1 macro : __k8 1
 DW_MACINFO_define - lineno : 1 macro : __k8__ 1
 DW_MACINFO_define - lineno : 1 macro : __gnu_linux__ 1
 DW_MACINFO_define - lineno : 1 macro : __linux 1
 DW_MACINFO_define - lineno : 1 macro : __linux__ 1
 DW_MACINFO_define - lineno : 1 macro : linux 1
 DW_MACINFO_define - lineno : 1 macro : __unix 1
 DW_MACINFO_define - lineno : 1 macro : __unix__ 1
 DW_MACINFO_define - lineno : 1 macro : unix 1
 DW_MACINFO_define - lineno : 1 macro : __ELF__ 1
 DW_MACINFO_start_file - lineno: 2 filenum: 2
 DW_MACINFO_define - lineno : 27 macro : _STDIO_H 1
 DW_MACINFO_start_file - lineno: 29 filenum: 3
 DW_MACINFO_define - lineno : 20 macro : _FEATURES_H 1
 DW_MACINFO_undef - lineno : 90 macro : __USE_ISOC99
 DW_MACINFO_undef - lineno : 91 macro : __USE_POSIX
 DW_MACINFO_undef - lineno : 92 macro : __USE_POSIX2
 DW_MACINFO_undef - lineno : 93 macro : __USE_POSIX199309
 DW_MACINFO_undef - lineno : 94 macro : __USE_POSIX199506
 DW_MACINFO_undef - lineno : 95 macro : __USE_XOPEN
 DW_MACINFO_undef - lineno : 96 macro : __USE_XOPEN_EXTENDED
 DW_MACINFO_undef - lineno : 97 macro : __USE_UNIX98
 DW_MACINFO_undef - lineno : 98 macro : __USE_XOPEN2K
 DW_MACINFO_undef - lineno : 99 macro : __USE_LARGEFILE
 DW_MACINFO_undef - lineno : 100 macro : __USE_LARGEFILE64
 DW_MACINFO_undef - lineno : 101 macro : __USE_FILE_OFFSET64
 DW_MACINFO_undef - lineno : 102 macro : __USE_BSD
 DW_MACINFO_undef - lineno : 103 macro : __USE_SVID
 DW_MACINFO_undef - lineno : 104 macro : __USE_MISC
 DW_MACINFO_undef - lineno : 105 macro : __USE_GNU
 DW_MACINFO_undef - lineno : 106 macro : __USE_REENTRANT
 DW_MACINFO_undef - lineno : 107 macro : __USE_FORTIFY_LEVEL
 DW_MACINFO_undef - lineno : 108 macro : __FAVOR_BSD
 DW_MACINFO_undef - lineno : 109 macro : __KERNEL_STRICT_NAMES
 DW_MACINFO_define - lineno : 114 macro : __KERNEL_STRICT_NAMES 
 DW_MACINFO_define - lineno : 118 macro : __USE_ANSI 1
 DW_MACINFO_define - lineno : 128 macro : __GNUC_PREREQ(maj,min) ((__GNUC__ <<
16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
 DW_MACINFO_define - lineno : 169 macro : _BSD_SOURCE 1
 DW_MACINFO_define - lineno : 170 macro : _SVID_SOURCE 1
 DW_MACINFO_define - lineno : 186 macro : _POSIX_SOURCE 1
 DW_MACINFO_define - lineno : 190 macro : _POSIX_C_SOURCE 199506L
 DW_MACINFO_define - lineno : 195 macro : __USE_POSIX 1
 DW_MACINFO_define - lineno : 199 macro : __USE_POSIX2 1
 DW_MACINFO_define - lineno : 203 macro : __USE_POSIX199309 1
 DW_MACINFO_define - lineno : 207 macro : __USE_POSIX199506 1
 DW_MACINFO_define - lineno : 246 macro : __USE_MISC 1
 DW_MACINFO_define - lineno : 250 macro : __USE_BSD 1
 DW_MACINFO_define - lineno : 254 macro : __USE_SVID 1
 DW_MACINFO_define - lineno : 280 macro : __STDC_IEC_559__ 1
 DW_MACINFO_define - lineno : 281 macro : __STDC_IEC_559_COMPLEX__ 1
 DW_MACINFO_define - lineno : 284 macro : __STDC_ISO_10646__ 200009L
 DW_MACINFO_undef - lineno : 292 macro : __GNU_LIBRARY__
 DW_MACINFO_define - lineno : 293 macro : __GNU_LIBRARY__ 6
 DW_MACINFO_define - lineno : 297 macro : __GLIBC__ 2
 DW_MACINFO_define - lineno : 298 macro : __GLIBC_MINOR__ 3
 DW_MACINFO_define - lineno : 300 macro : __GLIBC_PREREQ(maj,min) ((__GLIBC__ <<
16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
 DW_MACINFO_define - lineno : 308 macro : __GLIBC_HAVE_LONG_LONG 1
 DW_MACINFO_start_file - lineno: 315 filenum: 4
 DW_MACINFO_define - lineno : 20 macro : _SYS_CDEFS_H 1
 DW_MACINFO_undef - lineno : 35 macro : __P
 DW_MACINFO_undef - lineno : 36 macro : __PMT
 DW_MACINFO_define - lineno : 46 macro : __THROW __attribute__ ((__nothrow__))
 DW_MACINFO_define - lineno : 47 macro : __NTH(fct) __attribute__
((__nothrow__)) fct
 DW_MACINFO_define - lineno : 73 macro : __P(args) args
 DW_MACINFO_define - lineno : 74 macro : __PMT(args) args
 DW_MACINFO_define - lineno : 79 macro : __CONCAT(x,y) x ## y
 DW_MACINFO_define - lineno : 80 macro : __STRING(x) #x
 DW_MACINFO_define - lineno : 83 macro : __ptr_t void *
 DW_MACINFO_define - lineno : 84 macro : __long_double_t long double
 DW_MACINFO_define - lineno : 92 macro : __BEGIN_DECLS 
 DW_MACINFO_define - lineno : 93 macro : __END_DECLS 
 DW_MACINFO_define - lineno : 113 macro : __BEGIN_NAMESPACE_STD 
 DW_MACINFO_define - lineno : 114 macro : __END_NAMESPACE_STD 
 DW_MACINFO_define - lineno : 115 macro : __USING_NAMESPACE_STD(name) 
 DW_MACINFO_define - lineno : 116 macro : __BEGIN_NAMESPACE_C99 
 DW_MACINFO_define - lineno : 117 macro : __END_NAMESPACE_C99 
 DW_MACINFO_define - lineno : 118 macro : __USING_NAMESPACE_C99(name) 
 DW_MACINFO_define - lineno : 124 macro : __bounded 
 DW_MACINFO_define - lineno : 125 macro : __unbounded 
 DW_MACINFO_define - lineno : 126 macro : __ptrvalue 
 DW_MACINFO_define - lineno : 131 macro : __bos(ptr) __builtin_object_size (ptr,
__USE_FORTIFY_LEVEL > 1)
 DW_MACINFO_define - lineno : 132 macro : __bos0(ptr) __builtin_object_size (ptr, 0)
 DW_MACINFO_define - lineno : 133 macro : __warndecl(name,msg) extern void name
(void)
 DW_MACINFO_define - lineno : 139 macro : __flexarr []
 DW_MACINFO_define - lineno : 166 macro : __REDIRECT(name,proto,alias) name
proto __asm__ (__ASMNAME (#alias))
 DW_MACINFO_define - lineno : 171 macro : __REDIRECT_NTH(name,proto,alias) name
proto __asm__ (__ASMNAME (#alias)) __THROW
 DW_MACINFO_define - lineno : 174 macro : __ASMNAME(cname) __ASMNAME2
(__USER_LABEL_PREFIX__, cname)
 DW_MACINFO_define - lineno : 175 macro : __ASMNAME2(prefix,cname) __STRING
(prefix) cname
 DW_MACINFO_define - lineno : 196 macro : __attribute_malloc__ __attribute__
((__malloc__))
 DW_MACINFO_define - lineno : 205 macro : __attribute_pure__ __attribute__
((__pure__))
 DW_MACINFO_define - lineno : 214 macro : __attribute_used__ __attribute__
((__used__))
 DW_MACINFO_define - lineno : 215 macro : __attribute_noinline__ __attribute__
((__noinline__))
 DW_MACINFO_define - lineno : 223 macro : __attribute_deprecated__ __attribute__
((__deprecated__))
 DW_MACINFO_define - lineno : 235 macro : __attribute_format_arg__(x)
__attribute__ ((__format_arg__ (x)))
 DW_MACINFO_define - lineno : 245 macro : __attribute_format_strfmon__(a,b)
__attribute__ ((__format__ (__strfmon__, a, b)))
 DW_MACINFO_define - lineno : 254 macro : __nonnull(params) __attribute__
((__nonnull__ params))
 DW_MACINFO_define - lineno : 262 macro : __attribute_warn_unused_result__
__attribute__ ((__warn_unused_result__))
 DW_MACINFO_define - lineno : 271 macro : __wur 
 DW_MACINFO_define - lineno : 276 macro : __always_inline __inline __attribute__
((__always_inline__))
 DW_MACINFO_define - lineno : 298 macro : __restrict_arr __restrict
 DW_MACINFO_end_file
 DW_MACINFO_start_file - lineno: 338 filenum: 5
 DW_MACINFO_start_file - lineno: 5 filenum: 6
 DW_MACINFO_define - lineno : 4 macro : __WORDSIZE 64
 DW_MACINFO_define - lineno : 5 macro : __WORDSIZE_COMPAT32 1
 DW_MACINFO_end_file
 DW_MACINFO_start_file - lineno: 10 filenum: 7
 DW_MACINFO_define - lineno : 10 macro : __stub___kernel_cosl 
 DW_MACINFO_define - lineno : 11 macro : __stub___kernel_rem_pio2l 
 DW_MACINFO_define - lineno : 12 macro : __stub___kernel_sinl 
 DW_MACINFO_define - lineno : 13 macro : __stub___kernel_tanl 
 DW_MACINFO_define - lineno : 14 macro : __stub_bdflush 
 DW_MACINFO_define - lineno : 15 macro : __stub_chflags 
 DW_MACINFO_define - lineno : 16 macro : __stub_fattach 
 DW_MACINFO_define - lineno : 17 macro : __stub_fchflags 
 DW_MACINFO_define - lineno : 18 macro : __stub_fdetach 
 DW_MACINFO_define - lineno : 19 macro : __stub_feupdateenv 
 DW_MACINFO_define - lineno : 20 macro : __stub_getmsg 
 DW_MACINFO_define - lineno : 21 macro : __stub_gtty 
 DW_MACINFO_define - lineno : 22 macro : __stub_lchmod 
 DW_MACINFO_define - lineno : 23 macro : __stub_lutimes 
 DW_MACINFO_define - lineno : 24 macro : __stub_putmsg 
 DW_MACINFO_define - lineno : 25 macro : __stub_revoke 
 DW_MACINFO_define - lineno : 26 macro : __stub_setlogin 
 DW_MACINFO_define - lineno : 27 macro : __stub_sigreturn 
 DW_MACINFO_define - lineno : 28 macro : __stub_sstk 
 DW_MACINFO_define - lineno : 29 macro : __stub_stty 
 DW_MACINFO_end_file
 DW_MACINFO_end_file
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 32 macro : __need_size_t 
 DW_MACINFO_define - lineno : 33 macro : __need_NULL 
 DW_MACINFO_start_file - lineno: 35 filenum: 8
 DW_MACINFO_define - lineno : 189 macro : __size_t__ 
 DW_MACINFO_define - lineno : 190 macro : __SIZE_T__ 
 DW_MACINFO_define - lineno : 191 macro : _SIZE_T 
 DW_MACINFO_define - lineno : 192 macro : _SYS_SIZE_T_H 
 DW_MACINFO_define - lineno : 193 macro : _T_SIZE_ 
 DW_MACINFO_define - lineno : 194 macro : _T_SIZE 
 DW_MACINFO_define - lineno : 195 macro : __SIZE_T 
 DW_MACINFO_define - lineno : 196 macro : _SIZE_T_ 
 DW_MACINFO_define - lineno : 197 macro : _BSD_SIZE_T_ 
 DW_MACINFO_define - lineno : 198 macro : _SIZE_T_DEFINED_ 
 DW_MACINFO_define - lineno : 199 macro : _SIZE_T_DEFINED 
 DW_MACINFO_define - lineno : 200 macro : _BSD_SIZE_T_DEFINED_ 
 DW_MACINFO_define - lineno : 201 macro : _SIZE_T_DECLARED 
 DW_MACINFO_define - lineno : 202 macro : ___int_size_t_h 
 DW_MACINFO_define - lineno : 203 macro : _GCC_SIZE_T 
 DW_MACINFO_define - lineno : 204 macro : _SIZET_ 
 DW_MACINFO_define - lineno : 208 macro : __size_t 
 DW_MACINFO_undef - lineno : 236 macro : __need_size_t
 DW_MACINFO_undef - lineno : 398 macro : NULL
 DW_MACINFO_define - lineno : 403 macro : NULL ((void *)0)
 DW_MACINFO_undef - lineno : 409 macro : __need_NULL
 DW_MACINFO_end_file
 DW_MACINFO_start_file - lineno: 37 filenum: 9
 DW_MACINFO_define - lineno : 25 macro : _BITS_TYPES_H 1
 DW_MACINFO_start_file - lineno: 29 filenum: 6
 DW_MACINFO_define - lineno : 4 macro : __WORDSIZE 64
 DW_MACINFO_define - lineno : 5 macro : __WORDSIZE_COMPAT32 1
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 30 macro : __need_size_t 
 DW_MACINFO_start_file - lineno: 32 filenum: 8
 DW_MACINFO_undef - lineno : 236 macro : __need_size_t
 DW_MACINFO_undef - lineno : 409 macro : __need_NULL
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 102 macro : __S16_TYPE short int
 DW_MACINFO_define - lineno : 103 macro : __U16_TYPE unsigned short int
 DW_MACINFO_define - lineno : 104 macro : __S32_TYPE int
 DW_MACINFO_define - lineno : 105 macro : __U32_TYPE unsigned int
 DW_MACINFO_define - lineno : 106 macro : __SLONGWORD_TYPE long int
 DW_MACINFO_define - lineno : 107 macro : __ULONGWORD_TYPE unsigned long int
 DW_MACINFO_define - lineno : 121 macro : __SQUAD_TYPE long int
 DW_MACINFO_define - lineno : 122 macro : __UQUAD_TYPE unsigned long int
 DW_MACINFO_define - lineno : 123 macro : __SWORD_TYPE long int
 DW_MACINFO_define - lineno : 124 macro : __UWORD_TYPE unsigned long int
 DW_MACINFO_define - lineno : 125 macro : __SLONG32_TYPE int
 DW_MACINFO_define - lineno : 126 macro : __ULONG32_TYPE unsigned int
 DW_MACINFO_define - lineno : 127 macro : __S64_TYPE long int
 DW_MACINFO_define - lineno : 128 macro : __U64_TYPE unsigned long int
 DW_MACINFO_define - lineno : 130 macro : __STD_TYPE typedef
 DW_MACINFO_start_file - lineno: 135 filenum: 10
 DW_MACINFO_define - lineno : 25 macro : _BITS_TYPESIZES_H 1
 DW_MACINFO_define - lineno : 30 macro : __DEV_T_TYPE __UQUAD_TYPE
 DW_MACINFO_define - lineno : 31 macro : __UID_T_TYPE __U32_TYPE
 DW_MACINFO_define - lineno : 32 macro : __GID_T_TYPE __U32_TYPE
 DW_MACINFO_define - lineno : 33 macro : __INO_T_TYPE __ULONGWORD_TYPE
 DW_MACINFO_define - lineno : 34 macro : __INO64_T_TYPE __UQUAD_TYPE
 DW_MACINFO_define - lineno : 35 macro : __MODE_T_TYPE __U32_TYPE
 DW_MACINFO_define - lineno : 36 macro : __NLINK_T_TYPE __UWORD_TYPE
 DW_MACINFO_define - lineno : 37 macro : __OFF_T_TYPE __SLONGWORD_TYPE
 DW_MACINFO_define - lineno : 38 macro : __OFF64_T_TYPE __SQUAD_TYPE
 DW_MACINFO_define - lineno : 39 macro : __PID_T_TYPE __S32_TYPE
 DW_MACINFO_define - lineno : 40 macro : __RLIM_T_TYPE __ULONGWORD_TYPE
 DW_MACINFO_define - lineno : 41 macro : __RLIM64_T_TYPE __UQUAD_TYPE
 DW_MACINFO_define - lineno : 42 macro : __BLKCNT_T_TYPE __SLONGWORD_TYPE
 DW_MACINFO_define - lineno : 43 macro : __BLKCNT64_T_TYPE __SQUAD_TYPE
 DW_MACINFO_define - lineno : 44 macro : __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
 DW_MACINFO_define - lineno : 45 macro : __FSBLKCNT64_T_TYPE __UQUAD_TYPE
 DW_MACINFO_define - lineno : 46 macro : __FSFILCNT_T_TYPE __ULONGWORD_TYPE
 DW_MACINFO_define - lineno : 47 macro : __FSFILCNT64_T_TYPE __UQUAD_TYPE
 DW_MACINFO_define - lineno : 48 macro : __ID_T_TYPE __U32_TYPE
 DW_MACINFO_define - lineno : 49 macro : __CLOCK_T_TYPE __SLONGWORD_TYPE
 DW_MACINFO_define - lineno : 50 macro : __TIME_T_TYPE __SLONGWORD_TYPE
 DW_MACINFO_define - lineno : 51 macro : __USECONDS_T_TYPE __U32_TYPE
 DW_MACINFO_define - lineno : 52 macro : __SUSECONDS_T_TYPE __SLONGWORD_TYPE
 DW_MACINFO_define - lineno : 53 macro : __DADDR_T_TYPE __S32_TYPE
 DW_MACINFO_define - lineno : 54 macro : __SWBLK_T_TYPE __SLONGWORD_TYPE
 DW_MACINFO_define - lineno : 55 macro : __KEY_T_TYPE __S32_TYPE
 DW_MACINFO_define - lineno : 56 macro : __CLOCKID_T_TYPE __S32_TYPE
 DW_MACINFO_define - lineno : 57 macro : __TIMER_T_TYPE void *
 DW_MACINFO_define - lineno : 58 macro : __BLKSIZE_T_TYPE __SLONGWORD_TYPE
 DW_MACINFO_define - lineno : 59 macro : __FSID_T_TYPE struct { int __val[2]; }
 DW_MACINFO_define - lineno : 60 macro : __SSIZE_T_TYPE __SWORD_TYPE
 DW_MACINFO_define - lineno : 63 macro : __FD_SETSIZE 1024
 DW_MACINFO_end_file
 DW_MACINFO_undef - lineno : 198 macro : __STD_TYPE
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 37 macro : __need_FILE 
 DW_MACINFO_define - lineno : 38 macro : __need___FILE 
 DW_MACINFO_define - lineno : 54 macro : __FILE_defined 1
 DW_MACINFO_undef - lineno : 56 macro : __need_FILE
 DW_MACINFO_define - lineno : 64 macro : ____FILE_defined 1
 DW_MACINFO_undef - lineno : 66 macro : __need___FILE
 DW_MACINFO_define - lineno : 70 macro : _STDIO_USES_IOSTREAM 
 DW_MACINFO_start_file - lineno: 73 filenum: 11
 DW_MACINFO_define - lineno : 30 macro : _IO_STDIO_H 
 DW_MACINFO_start_file - lineno: 33 filenum: 12
 DW_MACINFO_define - lineno : 5 macro : _G_config_h 1
 DW_MACINFO_define - lineno : 10 macro : __need_size_t 
 DW_MACINFO_define - lineno : 11 macro : __need_wchar_t 
 DW_MACINFO_define - lineno : 12 macro : __need_wint_t 
 DW_MACINFO_define - lineno : 13 macro : __need_NULL 
 DW_MACINFO_start_file - lineno: 15 filenum: 8
 DW_MACINFO_undef - lineno : 236 macro : __need_size_t
 DW_MACINFO_define - lineno : 265 macro : __wchar_t__ 
 DW_MACINFO_define - lineno : 266 macro : __WCHAR_T__ 
 DW_MACINFO_define - lineno : 267 macro : _WCHAR_T 
 DW_MACINFO_define - lineno : 268 macro : _T_WCHAR_ 
 DW_MACINFO_define - lineno : 269 macro : _T_WCHAR 
 DW_MACINFO_define - lineno : 270 macro : __WCHAR_T 
 DW_MACINFO_define - lineno : 271 macro : _WCHAR_T_ 
 DW_MACINFO_define - lineno : 272 macro : _BSD_WCHAR_T_ 
 DW_MACINFO_define - lineno : 273 macro : _WCHAR_T_DEFINED_ 
 DW_MACINFO_define - lineno : 274 macro : _WCHAR_T_DEFINED 
 DW_MACINFO_define - lineno : 275 macro : _WCHAR_T_H 
 DW_MACINFO_define - lineno : 276 macro : ___int_wchar_t_h 
 DW_MACINFO_define - lineno : 277 macro : __INT_WCHAR_T_H 
 DW_MACINFO_define - lineno : 278 macro : _GCC_WCHAR_T 
 DW_MACINFO_define - lineno : 279 macro : _WCHAR_T_DECLARED 
 DW_MACINFO_undef - lineno : 292 macro : _BSD_WCHAR_T_
 DW_MACINFO_undef - lineno : 345 macro : __need_wchar_t
 DW_MACINFO_define - lineno : 350 macro : _WINT_T 
 DW_MACINFO_undef - lineno : 357 macro : __need_wint_t
 DW_MACINFO_undef - lineno : 398 macro : NULL
 DW_MACINFO_define - lineno : 403 macro : NULL ((void *)0)
 DW_MACINFO_undef - lineno : 409 macro : __need_NULL
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 23 macro : __need_mbstate_t 
 DW_MACINFO_start_file - lineno: 25 filenum: 13
 DW_MACINFO_define - lineno : 47 macro : __need_wint_t 
 DW_MACINFO_start_file - lineno: 49 filenum: 8
 DW_MACINFO_undef - lineno : 357 macro : __need_wint_t
 DW_MACINFO_undef - lineno : 409 macro : __need_NULL
 DW_MACINFO_end_file
 DW_MACINFO_start_file - lineno: 51 filenum: 14
 DW_MACINFO_define - lineno : 21 macro : _BITS_WCHAR_H 1
 DW_MACINFO_define - lineno : 23 macro : __WCHAR_MIN (-2147483647 - 1)
 DW_MACINFO_define - lineno : 24 macro : __WCHAR_MAX (2147483647)
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 74 macro : __mbstate_t_defined 1
 DW_MACINFO_undef - lineno : 86 macro : __need_mbstate_t
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 25 macro : _G_size_t size_t
 DW_MACINFO_define - lineno : 36 macro : _G_ssize_t __ssize_t
 DW_MACINFO_define - lineno : 37 macro : _G_off_t __off_t
 DW_MACINFO_define - lineno : 38 macro : _G_off64_t __off64_t
 DW_MACINFO_define - lineno : 39 macro : _G_pid_t __pid_t
 DW_MACINFO_define - lineno : 40 macro : _G_uid_t __uid_t
 DW_MACINFO_define - lineno : 41 macro : _G_wchar_t wchar_t
 DW_MACINFO_define - lineno : 42 macro : _G_wint_t wint_t
 DW_MACINFO_define - lineno : 43 macro : _G_stat64 stat64
 DW_MACINFO_start_file - lineno: 45 filenum: 15
 DW_MACINFO_define - lineno : 24 macro : _GCONV_H 1
 DW_MACINFO_define - lineno : 27 macro : __need_mbstate_t 
 DW_MACINFO_start_file - lineno: 29 filenum: 13
 DW_MACINFO_define - lineno : 47 macro : __need_wint_t 
 DW_MACINFO_start_file - lineno: 49 filenum: 8
 DW_MACINFO_undef - lineno : 357 macro : __need_wint_t
 DW_MACINFO_undef - lineno : 409 macro : __need_NULL
 DW_MACINFO_end_file
 DW_MACINFO_undef - lineno : 86 macro : __need_mbstate_t
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 29 macro : __need_size_t 
 DW_MACINFO_define - lineno : 30 macro : __need_wchar_t 
 DW_MACINFO_start_file - lineno: 32 filenum: 8
 DW_MACINFO_undef - lineno : 236 macro : __need_size_t
 DW_MACINFO_undef - lineno : 345 macro : __need_wchar_t
 DW_MACINFO_undef - lineno : 409 macro : __need_NULL
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 34 macro : __UNKNOWN_10646_CHAR ((wchar_t) 0xfffd)
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 60 macro : _G_HAVE_BOOL 1
 DW_MACINFO_define - lineno : 64 macro : _G_HAVE_ATEXIT 1
 DW_MACINFO_define - lineno : 65 macro : _G_HAVE_SYS_CDEFS 1
 DW_MACINFO_define - lineno : 66 macro : _G_HAVE_SYS_WAIT 1
 DW_MACINFO_define - lineno : 67 macro : _G_NEED_STDARG_H 1
 DW_MACINFO_define - lineno : 68 macro : _G_va_list __gnuc_va_list
 DW_MACINFO_define - lineno : 70 macro : _G_HAVE_PRINTF_FP 1
 DW_MACINFO_define - lineno : 71 macro : _G_HAVE_MMAP 1
 DW_MACINFO_define - lineno : 72 macro : _G_HAVE_MREMAP 1
 DW_MACINFO_define - lineno : 73 macro : _G_HAVE_LONG_DOUBLE_IO 1
 DW_MACINFO_define - lineno : 74 macro : _G_HAVE_IO_FILE_OPEN 1
 DW_MACINFO_define - lineno : 75 macro : _G_HAVE_IO_GETLINE_INFO 1
 DW_MACINFO_define - lineno : 77 macro : _G_IO_IO_FILE_VERSION 0x20001
 DW_MACINFO_define - lineno : 79 macro : _G_OPEN64 __open64
 DW_MACINFO_define - lineno : 80 macro : _G_LSEEK64 __lseek64
 DW_MACINFO_define - lineno : 81 macro : _G_MMAP64 __mmap64
 DW_MACINFO_define - lineno : 82 macro : _G_FSTAT64(fd,buf) __fxstat64
(_STAT_VER, fd, buf)
 DW_MACINFO_define - lineno : 85 macro : _G_HAVE_ST_BLKSIZE defined
(_STATBUF_ST_BLKSIZE)
 DW_MACINFO_define - lineno : 87 macro : _G_BUFSIZ 8192
 DW_MACINFO_define - lineno : 90 macro : _G_NAMES_HAVE_UNDERSCORE 0
 DW_MACINFO_define - lineno : 91 macro : _G_VTABLE_LABEL_HAS_LENGTH 1
 DW_MACINFO_define - lineno : 92 macro : _G_USING_THUNKS 1
 DW_MACINFO_define - lineno : 93 macro : _G_VTABLE_LABEL_PREFIX "__vt_"
 DW_MACINFO_define - lineno : 94 macro : _G_VTABLE_LABEL_PREFIX_ID __vt_
 DW_MACINFO_define - lineno : 98 macro : _G_ARGS(ARGLIST) ARGLIST
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 34 macro : _IO_pos_t _G_fpos_t
 DW_MACINFO_define - lineno : 35 macro : _IO_fpos_t _G_fpos_t
 DW_MACINFO_define - lineno : 36 macro : _IO_fpos64_t _G_fpos64_t
 DW_MACINFO_define - lineno : 37 macro : _IO_size_t _G_size_t
 DW_MACINFO_define - lineno : 38 macro : _IO_ssize_t _G_ssize_t
 DW_MACINFO_define - lineno : 39 macro : _IO_off_t _G_off_t
 DW_MACINFO_define - lineno : 40 macro : _IO_off64_t _G_off64_t
 DW_MACINFO_define - lineno : 41 macro : _IO_pid_t _G_pid_t
 DW_MACINFO_define - lineno : 42 macro : _IO_uid_t _G_uid_t
 DW_MACINFO_define - lineno : 43 macro : _IO_iconv_t _G_iconv_t
 DW_MACINFO_define - lineno : 44 macro : _IO_HAVE_SYS_WAIT _G_HAVE_SYS_WAIT
 DW_MACINFO_define - lineno : 45 macro : _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE
 DW_MACINFO_define - lineno : 46 macro : _IO_BUFSIZ _G_BUFSIZ
 DW_MACINFO_define - lineno : 47 macro : _IO_va_list _G_va_list
 DW_MACINFO_define - lineno : 48 macro : _IO_wint_t _G_wint_t
 DW_MACINFO_define - lineno : 52 macro : __need___va_list 
 DW_MACINFO_start_file - lineno: 54 filenum: 16
 DW_MACINFO_undef - lineno : 37 macro : __need___va_list
 DW_MACINFO_define - lineno : 42 macro : __GNUC_VA_LIST 
 DW_MACINFO_end_file
 DW_MACINFO_undef - lineno : 55 macro : _IO_va_list
 DW_MACINFO_define - lineno : 56 macro : _IO_va_list __gnuc_va_list
 DW_MACINFO_define - lineno : 76 macro : _PARAMS(protos) __P(protos)
 DW_MACINFO_define - lineno : 84 macro : _IO_UNIFIED_JUMPTABLES 1
 DW_MACINFO_define - lineno : 90 macro : EOF (-1)
 DW_MACINFO_define - lineno : 105 macro : _IOS_INPUT 1
 DW_MACINFO_define - lineno : 106 macro : _IOS_OUTPUT 2
 DW_MACINFO_define - lineno : 107 macro : _IOS_ATEND 4
 DW_MACINFO_define - lineno : 108 macro : _IOS_APPEND 8
 DW_MACINFO_define - lineno : 109 macro : _IOS_TRUNC 16
 DW_MACINFO_define - lineno : 110 macro : _IOS_NOCREATE 32
 DW_MACINFO_define - lineno : 111 macro : _IOS_NOREPLACE 64
 DW_MACINFO_define - lineno : 112 macro : _IOS_BIN 128
 DW_MACINFO_define - lineno : 120 macro : _IO_MAGIC 0xFBAD0000
 DW_MACINFO_define - lineno : 121 macro : _OLD_STDIO_MAGIC 0xFABC0000
 DW_MACINFO_define - lineno : 122 macro : _IO_MAGIC_MASK 0xFFFF0000
 DW_MACINFO_define - lineno : 123 macro : _IO_USER_BUF 1
 DW_MACINFO_define - lineno : 124 macro : _IO_UNBUFFERED 2
 DW_MACINFO_define - lineno : 125 macro : _IO_NO_READS 4
 DW_MACINFO_define - lineno : 126 macro : _IO_NO_WRITES 8
 DW_MACINFO_define - lineno : 127 macro : _IO_EOF_SEEN 0x10
 DW_MACINFO_define - lineno : 128 macro : _IO_ERR_SEEN 0x20
 DW_MACINFO_define - lineno : 129 macro : _IO_DELETE_DONT_CLOSE 0x40
 DW_MACINFO_define - lineno : 130 macro : _IO_LINKED 0x80
 DW_MACINFO_define - lineno : 131 macro : _IO_IN_BACKUP 0x100
 DW_MACINFO_define - lineno : 132 macro : _IO_LINE_BUF 0x200
 DW_MACINFO_define - lineno : 133 macro : _IO_TIED_PUT_GET 0x400
 DW_MACINFO_define - lineno : 134 macro : _IO_CURRENTLY_PUTTING 0x800
 DW_MACINFO_define - lineno : 135 macro : _IO_IS_APPENDING 0x1000
 DW_MACINFO_define - lineno : 136 macro : _IO_IS_FILEBUF 0x2000
 DW_MACINFO_define - lineno : 137 macro : _IO_BAD_SEEN 0x4000
 DW_MACINFO_define - lineno : 138 macro : _IO_USER_LOCK 0x8000
 DW_MACINFO_define - lineno : 140 macro : _IO_FLAGS2_MMAP 1
 DW_MACINFO_define - lineno : 141 macro : _IO_FLAGS2_NOTCANCEL 2
 DW_MACINFO_define - lineno : 147 macro : _IO_SKIPWS 01
 DW_MACINFO_define - lineno : 148 macro : _IO_LEFT 02
 DW_MACINFO_define - lineno : 149 macro : _IO_RIGHT 04
 DW_MACINFO_define - lineno : 150 macro : _IO_INTERNAL 010
 DW_MACINFO_define - lineno : 151 macro : _IO_DEC 020
 DW_MACINFO_define - lineno : 152 macro : _IO_OCT 040
 DW_MACINFO_define - lineno : 153 macro : _IO_HEX 0100
 DW_MACINFO_define - lineno : 154 macro : _IO_SHOWBASE 0200
 DW_MACINFO_define - lineno : 155 macro : _IO_SHOWPOINT 0400
 DW_MACINFO_define - lineno : 156 macro : _IO_UPPERCASE 01000
 DW_MACINFO_define - lineno : 157 macro : _IO_SHOWPOS 02000
 DW_MACINFO_define - lineno : 158 macro : _IO_SCIENTIFIC 04000
 DW_MACINFO_define - lineno : 159 macro : _IO_FIXED 010000
 DW_MACINFO_define - lineno : 160 macro : _IO_UNITBUF 020000
 DW_MACINFO_define - lineno : 161 macro : _IO_STDIO 040000
 DW_MACINFO_define - lineno : 162 macro : _IO_DONT_CLOSE 0100000
 DW_MACINFO_define - lineno : 163 macro : _IO_BOOLALPHA 0200000
 DW_MACINFO_define - lineno : 269 macro : _IO_file_flags _flags
 DW_MACINFO_define - lineno : 298 macro : __HAVE_COLUMN 
 DW_MACINFO_define - lineno : 340 macro : _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_))
 DW_MACINFO_define - lineno : 341 macro : _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_))
 DW_MACINFO_define - lineno : 342 macro : _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_))
 DW_MACINFO_define - lineno : 414 macro : _IO_BE(expr,res) __builtin_expect
((expr), res)
 DW_MACINFO_define - lineno : 419 macro : _IO_getc_unlocked(_fp) (_IO_BE
((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) ? __uflow (_fp) : *(unsigned
char *) (_fp)->_IO_read_ptr++)
 DW_MACINFO_define - lineno : 422 macro : _IO_peekc_unlocked(_fp) (_IO_BE
((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) && __underflow (_fp) == EOF ?
EOF : *(unsigned char *) (_fp)->_IO_read_ptr)
 DW_MACINFO_define - lineno : 426 macro : _IO_putc_unlocked(_ch,_fp) (_IO_BE
((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end, 0) ? __overflow (_fp, (unsigned
char) (_ch)) : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
 DW_MACINFO_define - lineno : 431 macro : _IO_getwc_unlocked(_fp) (_IO_BE
((_fp)->_wide_data->_IO_read_ptr >= (_fp)->_wide_data->_IO_read_end, 0) ?
__wuflow (_fp) : (_IO_wint_t) *(_fp)->_wide_data->_IO_read_ptr++)
 DW_MACINFO_define - lineno : 435 macro : _IO_putwc_unlocked(_wch,_fp) (_IO_BE
((_fp)->_wide_data->_IO_write_ptr >= (_fp)->_wide_data->_IO_write_end, 0) ?
__woverflow (_fp, _wch) : (_IO_wint_t) (*(_fp)->_wide_data->_IO_write_ptr++ =
(_wch)))
 DW_MACINFO_define - lineno : 441 macro : _IO_feof_unlocked(__fp)
(((__fp)->_flags & _IO_EOF_SEEN) != 0)
 DW_MACINFO_define - lineno : 442 macro : _IO_ferror_unlocked(__fp)
(((__fp)->_flags & _IO_ERR_SEEN) != 0)
 DW_MACINFO_define - lineno : 452 macro : _IO_PENDING_OUTPUT_COUNT(_fp)
((_fp)->_IO_write_ptr - (_fp)->_IO_write_base)
 DW_MACINFO_define - lineno : 466 macro : _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
 DW_MACINFO_define - lineno : 467 macro : _IO_flockfile(_fp) 
 DW_MACINFO_define - lineno : 468 macro : _IO_funlockfile(_fp) 
 DW_MACINFO_define - lineno : 469 macro : _IO_ftrylockfile(_fp) 
 DW_MACINFO_define - lineno : 470 macro : _IO_cleanup_region_start(_fct,_fp) 
 DW_MACINFO_define - lineno : 471 macro : _IO_cleanup_region_end(_Doit) 
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 98 macro : _IOFBF 0
 DW_MACINFO_define - lineno : 99 macro : _IOLBF 1
 DW_MACINFO_define - lineno : 100 macro : _IONBF 2
 DW_MACINFO_define - lineno : 105 macro : BUFSIZ _IO_BUFSIZ
 DW_MACINFO_define - lineno : 118 macro : SEEK_SET 0
 DW_MACINFO_define - lineno : 119 macro : SEEK_CUR 1
 DW_MACINFO_define - lineno : 120 macro : SEEK_END 2
 DW_MACINFO_define - lineno : 125 macro : P_tmpdir "/tmp"
 DW_MACINFO_start_file - lineno: 139 filenum: 18
 DW_MACINFO_define - lineno : 24 macro : L_tmpnam 20
 DW_MACINFO_define - lineno : 25 macro : TMP_MAX 238328
 DW_MACINFO_define - lineno : 26 macro : FILENAME_MAX 4096
 DW_MACINFO_define - lineno : 29 macro : L_ctermid 9
 DW_MACINFO_define - lineno : 30 macro : L_cuserid 9
 DW_MACINFO_undef - lineno : 35 macro : FOPEN_MAX
 DW_MACINFO_define - lineno : 36 macro : FOPEN_MAX 16
 DW_MACINFO_end_file
 DW_MACINFO_define - lineno : 147 macro : stdin stdin
 DW_MACINFO_define - lineno : 148 macro : stdout stdout
 DW_MACINFO_define - lineno : 149 macro : stderr stderr
 DW_MACINFO_define - lineno : 449 macro : getc(_fp) _IO_getc (_fp)
 DW_MACINFO_define - lineno : 491 macro : putc(_ch,_fp) _IO_putc (_ch, _fp)
 DW_MACINFO_start_file - lineno: 751 filenum: 19
 DW_MACINFO_end_file
 DW_MACINFO_end_file
 DW_MACINFO_start_file - lineno: 3 filenum: 16
 DW_MACINFO_define - lineno : 34 macro : _STDARG_H 
 DW_MACINFO_define - lineno : 35 macro : _ANSI_STDARG_H_ 
 DW_MACINFO_undef - lineno : 37 macro : __need___va_list
 DW_MACINFO_define - lineno : 50 macro : va_start(v,l) __builtin_va_start(v,l)
 DW_MACINFO_define - lineno : 51 macro : va_end(v) __builtin_va_end(v)
 DW_MACINFO_define - lineno : 52 macro : va_arg(v,l) __builtin_va_arg(v,l)
 DW_MACINFO_define - lineno : 54 macro : va_copy(d,s) __builtin_va_copy(d,s)
 DW_MACINFO_define - lineno : 56 macro : __va_copy(d,s) __builtin_va_copy(d,s)
 DW_MACINFO_define - lineno : 111 macro : _VA_LIST_ 
 DW_MACINFO_define - lineno : 114 macro : _VA_LIST 
 DW_MACINFO_define - lineno : 117 macro : _VA_LIST_DEFINED 
 DW_MACINFO_define - lineno : 120 macro : _VA_LIST_T_H 
 DW_MACINFO_define - lineno : 123 macro : __va_list__ 
 DW_MACINFO_end_file
 DW_MACINFO_end_file


Since bugzilla won't let me include bad-macro-file.i, here is bad-macro-file.c;
I'll see if there's some way I can attach the .i file, or include it as a
separate comment or something.

#include <stdio.h>
#include <stdarg.h>

int main () {}
Comment 1 Jim Blandy 2005-09-26 22:57:31 UTC
Created attachment 9814 [details]
Preprocessed input file for the bug report.

This is the result of preprocessing bad-macro-file.c on my machine.
Comment 2 Andrew Pinski 2005-09-27 01:08:14 UTC
Hmm, I think this should have been fixed by PR 20253.  I don't have any FSF 4.0.x compiler after that.

Double hmm, it works with 32 bits but not 64bits on the mainline.
Comment 3 Andrew Pinski 2005-09-27 01:12:07 UTC
The difference between 32 and 64bit:
--- 64  2005-09-27 03:10:18.552798040 +0200
+++ 32  2005-09-27 03:10:26.250627792 +0200
@@ -1,7 +1,7 @@
 
 Dump of debug contents of section .debug_line:
 
-  Length:                      388
+  Length:                      385
   DWARF Version:               2
   Prologue Length:             364
   Minimum Instruction Length:  1
@@ -9,7 +9,7 @@ Dump of debug contents of section .debug
   Line Base:                   -5
   Line Range:                  14
   Opcode Base:                 10
-  (Pointer size:               8)
+  (Pointer size:               4)
 
  Opcodes:
   Opcode 1 has 0 args
@@ -53,8 +53,9 @@ Dump of debug contents of section .debug
  Line Number Statements:
   Extended opcode 2: set Address to 0x0
   Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4
-  Special opcode 61: advance Address by 4 to 0x4 and Line by 0 to 4
-  Advance PC by 2 to 6
+  Advance PC by constant 17 to 0x11
+  Special opcode 159: advance Address by 11 to 0x1c and Line by 0 to 4
+  Advance PC by 2 to 1e
   Extended opcode 1: End of Sequence
 
 
@@ -565,7 +566,7 @@ Contents of the .debug_macinfo section:
  DW_MACINFO_define - lineno : 119 macro : SEEK_CUR 1
  DW_MACINFO_define - lineno : 120 macro : SEEK_END 2
  DW_MACINFO_define - lineno : 125 macro : P_tmpdir "/tmp"
- DW_MACINFO_start_file - lineno: 139 filenum: 18
+ DW_MACINFO_start_file - lineno: 139 filenum: 17
  DW_MACINFO_define - lineno : 24 macro : L_tmpnam 20
  DW_MACINFO_define - lineno : 25 macro : TMP_MAX 238328
  DW_MACINFO_define - lineno : 26 macro : FILENAME_MAX 4096
@@ -579,7 +580,7 @@ Contents of the .debug_macinfo section:
  DW_MACINFO_define - lineno : 149 macro : stderr stderr
  DW_MACINFO_define - lineno : 449 macro : getc(_fp) _IO_getc (_fp)
  DW_MACINFO_define - lineno : 491 macro : putc(_ch,_fp) _IO_putc (_ch, _fp)
- DW_MACINFO_start_file - lineno: 751 filenum: 19
+ DW_MACINFO_start_file - lineno: 751 filenum: 18
  DW_MACINFO_end_file
  DW_MACINFO_end_file
  DW_MACINFO_start_file - lineno: 3 filenum: 16
Comment 4 Andrew Pinski 2005-09-27 01:16:02 UTC
Likewise for .s files:
@@ -1502,7 +1502,7 @@
        .byte   0x3     # Start new file
        .uleb128 0x8b   # Included from line number 139
        .file 17 "/usr/include/bits/stdio_lim.h"
-       .uleb128 0x12   # Filename we just started
+       .uleb128 0x11   # Filename we just started
        .byte   0x1     # Define macro
        .uleb128 0x18   # At line number 24
        .ascii "L_tmpnam 20\0"  # The macro
@@ -1543,7 +1543,7 @@
        .byte   0x3     # Start new file
        .uleb128 0x2ef  # Included from line number 751
        .file 18 "/usr/include/bits/sys_errlist.h"
-       .uleb128 0x13   # Filename we just started
+       .uleb128 0x12   # Filename we just started
        .byte   0x4     # End file
        .byte   0x4     # End file
        .byte   0x3     # Start new file

----

So this is definitely a bug in gcc and not in readelf.
Comment 5 Andrew Pinski 2005-09-27 01:24:07 UTC
I need to try FSF 4.0.2 because redhat's compiler is known not to be clean.

But currently I can confirm this fails on the mainline and works with 4.0.0 20050301 and 3.3.6.

Comment 6 Andrew Pinski 2005-09-27 01:52:53 UTC
Confirmed, I have not tried 3.4 either to see if this is a bug there too.
Comment 7 Andrew Pinski 2005-09-27 02:37:56 UTC
Works on the 3.4 branch.
Comment 8 GCC Commits 2005-10-06 19:33:08 UTC
Subject: Bug 24070

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	rth@gcc.gnu.org	2005-10-06 19:33:02

Modified files:
	gcc            : ChangeLog dwarf2out.c 

Log message:
	PR debug/24070
	* dwarf2out.c (lookup_filename): Return the result of maybe_emit_file.
	(dwarf2out_start_source_file): Print it.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.10105&r2=2.10106
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/dwarf2out.c.diff?cvsroot=gcc&r1=1.614&r2=1.615

Comment 9 GCC Commits 2005-10-06 19:40:20 UTC
Subject: Bug 24070

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-4_0-branch
Changes by:	rth@gcc.gnu.org	2005-10-06 19:40:15

Modified files:
	gcc            : ChangeLog dwarf2out.c 

Log message:
	PR debug/24070
	* dwarf2out.c (dwarf2out_start_source_file): Print the result
	of maybe_emit_file.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.450&r2=2.7592.2.451
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/dwarf2out.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.570.2.11&r2=1.570.2.12

Comment 10 Richard Henderson 2005-10-06 19:42:25 UTC
Fixed.
Comment 11 Andrew Pinski 2005-10-16 14:19:44 UTC
*** Bug 24400 has been marked as a duplicate of this bug. ***