May 17, 2017
  Now dwarfdump understands both split-dwarf and COMDAT sections
  (it calls the section-groups 'Groups')
  so it is possible to properly print all such.  A traditional
  DWARF2,3,4,5 consumer can ignore section groups.
  To print in more complicate situations the -x groupnumber=3
  (3 as an example) lets you choose a specific group/comdat to print.
  Dwarfdump prints out a section-groupnumber table when appropriate
  a making it easy to know what groups are present.
March 24, 2017
  dwarfdump: Now argv[0] is checked before setting the program_name
  global variable.  If it contains '/dwarfdump.O'  that part of
  the string is shortened to '/dwarfdump'.
  Doing this removes a need for the regressiontests to use sed
  and shortens the regressiontests runtime on one machine from
  77 minutes to 23 minutes.
September 20, 2016
  dwarfdump now frees all memory it used when it terminates normally.
  No malloc space left behind.
  It gets a clean report from 
      valgrind --leak-check=full  --show-leak-kinds=all
May 5, 2016
  By default dwarfdump sanitizes strings, so if a corrupted
  DWARF file has non-printable bytes in a string they are
  each turned into %xx (% followed by
  two hex digits for a single string character).  
  This is safe for terminals to print and shows the actual value.
  The '-x nosanitizestrings' option turns off this feature so bytes
  are shown as printf and your system show them.
  The same format as uri style, but only using % on characters
  that may have bad effects if printed to a terminal (not,
  for example, space or tab characters).
  Nor are normal '%' in a string altered (in uri such would be
  turned to %25 or to %%).  
February  25, 2015
  Copied dwgetopt.c dwgetopt.h from libdwarf so dwarfdump can
  use dwgetopt() and still build without necessarily
  having the libdwarfsource easily available.
  Some environments do not have a getopt() so copying
  dwgetopt.h,.h here ensures we have this functionality
  for everyone.
January 08, 2015
  dwarfdump does new checking. See options -kD -kG -ku -kuf.
  In addition, dwarfdump output can be written to a file without
  using redirection by using the new  -O file=<path>
  option.
January 29, 2014
  Now using dwarf_tsearch() so tsearch is available on every platform.
November 17, 2012
  Added new checking options.  
  To get good relocation-handling dwarfdump now expects to read
  headers from libdwarf with the relocation numbers. That means
  building dwarfdump separate from the libdwarf source is no
  longer as useful as it was.  It is best to build libdwarf
  and dwarfdump together for decent handling of relocatable
  objects.
December 13, 2011
  Now prints missing line table column number as 0 (now
  matching the DWARF spec), the previous
  practice of printing -1 was always wrong.
  And prints the DWARF3/4 new line table fields (when present).
October 29, 2011
  Added support for printing .debug_types (type unit) data.
October 26, 2011
  Added new features to Makefile.in and documented in README
  how to build dwarfdump with headers or libraries in
  non-standard places.
October 23, 2011
  By default the various places with string option values
  and file paths all use URI transformation on input and
  if the transformation does anything at all dwarfdump reports
  the input and transformed strings.  This makes it easy
  to deal with strings and expressions and file paths
  that are difficult to express in a shell (or that getopt
  mangles). Options  -q and -U give you  control over this process.
October 07, 2011
  The -x abi=mips  frame register abi in dwarfdump.conf is now
  usable with modern MIPS objects as well as old IRIX objects.
  There are other mips-* frame register setups described
  in dwarfdump.conf for anyone testing that nothing new has
  been added that conflicts with old IRIX/MIPS frame generation.
June 04, 2011
  Error checking is now distinct from section printing, making
  error checking (the -k options) much easier to work with on
  large objects.
  So compiler-created errors can be found, the error reporting
  now prints context information.
March 29, 2011
  Added many new correctness tests.  Changed the format of
  various items (line data prints in a more compact form, numbers
  are more uniformly hexadecimal fixed length where that makes sense).
  All the source files are uniformly indented to a multiple of 4
  characters and all intent-tabs in the source have been removed.
  Major logic changes involved changing error-reporting to be
  more detailed and adding new tests for incorrect DWARF.
  Now reports error summary by the compiler name, not just overall.
January 26, 2010
  Changed the default frame-data register names from MIPS to
  a generic set of registers.  
  Try  '-x abi=mips' to get the traditional old MIPS register
  naming.
June 22, 2009
  Added the -S option to dwarfdump.
June 10, 2009
  Moved the gennames.c code to libdwarf.
May 4, 2009
  Replaced awk source-generation of certain functions
  with new gennames.c code.
  Now we can print an object with an address_size that
  varies by compilation unit.
April 4, 2009
  Corrected aspects of the frame-printing by ensuring we pass
  all the information libdwarf needs for fully consistent behavior.
  Three newly defined libdwarf calls calls made to ensure
  that better behavior (specifically having dwarfdump consistently
  recognize when registers are the cfa, undefined-value or same-value
  pseudo registers). Updated dwarfdump.conf to set these same
  things consistently.
Mar 22, 2009
  The -f and -F flags no longer also imply -i (it just
  did not make sense to tie them (cannot recall why
  it might have been tied before).
Mar 20, 2009
  Moved print_* functions from print_sections.c to individual
  source files. Hopefully making the code a bit easier
  to read.
Feb 16, 2009
  Added the -C option.  It is a sort of 'pedantic' option
  as it turns on warnings about certain commonly used
  non-standard tag->tag and tag->attr relationships.
  Added the tag_attr_ext.list  tag_tree_ext.list files which
  define the 'common use' extensions.
Feb 14, 2009
  Added configure option --enable-nonstandardprintf
  which makes it easy to get printf of Dwarf_Unsigned (etc)
  types correct even for non-standard compilers.
December 30, 2008
  Now we print the .debug_ranges section (with -N) 
  and the data for DW_AT_ranges (with -i).
December 8, 2008
  The -M option now causes printing of FORM details.
  And -v adds details about abbreviation 'indexes' into
  an abbreviation table (.debug_abbrev)
  providing more detail for folks debugging or
  improving their understanding of DWARF data.
April 9, 2008
  Added -H  <num>  to limit the number of compilation-units/FDEs
  dwarfdump prints in one run.  Added -n to eliminate function-name
  printing in .debug_frame output (with a large-enough debug_info
  section function-name printing is too slow). The function name
  printing will be fixed in another release.
December 8, 2007
  Had to add an ugly configure conditional as libelf has
  unconditional use of off64_t in recent libelf.h
July 3, 2007
  Now with -v dwarf expression blocks in frame operations
  are printed expanded out.
July 2, 2007
  Added a new abi -x abi=general usable for any cpu with
  up to 1000 registers.
May 7, 2007
  Sun Microsystems contributes new dwarf.h extensions and a new -G option
  to dwarfdump -i (so one can see the 'global' offset to DIEs).
  Thanks to Chris Quenelle of Sun.
April 17, 2006
  New -x name=<conf file> -x abi=<abiname> and configuration file
  enable sensible printing of a wide range of .debug_frame eh_frame
  correctly without recompiling dwarfdump or touching libdwarf.h or
  dwarf.h.
March 29, 2005
  Now handles DWARF3. For non-MIPS objects, the list of register
  names in print_sections.c is not appropriate, #define
  DWARFDUMP_TURN_OFF_MIPS_REG_NAMES to turn off the MIPS names.
December 1, 2005
  Added new DWARF3 TAGs and ATtributes to the -k lists,
  clarified the -k reporting, and made the build more robust
  in the face of errors in the *.list relationship-spec-files.

August 1, 2005
  Now print_die.c deals with long loclists without a coredump.
  Added esb.h esb.c (and testesb.c for testing) to encapsulate 
  getting space for possibly-long strings.
  Now print_die.c uses snprintf() not sprintf (hopefully this
  will not inconvenience anyone, snprintf() has been available
  on most systems for years now).
  Altered print of location lists a little bit - for better appearance.

July 15, 2005
  Now completely frees all allocated memory. Various
  routines were not calling dealloc() code and
  new libdwarf dealloc routines are now used where those
  are needed.

  Now prints DWARF3 .debug_pubtypes section (with -a or -y).
  The .debug_pubtypes section and  SGI-specific .debug_typenames
  are equivalent so they are treated alike.

Mar 21, 2005
  The -f flag now prints only .debug_frame data. The .eh_frame section
  (GNU exceptions data) now prints with -F (not -a). 
  Printing gcc 3.3 or 3.4 .eh_frame with zR augmentation
  does not work at this time, so do not use -F
  to print such an object.
  The line section print now prints a CU-DIE offset for each such DIEs
  line information.   This makes it much easier to correctly associate
  -l (or -v -l) output with -v -v -l when debugging a faulty
  linetable in an executable.
  With -v -v -l (two -v) the output of line info continues to be a 
  completely different format than zero or one -v, the two-v
  form showing the detailed line table opcodes.
  With g++ 3.3.3 one sees bad line addresses at times as the 
  DW_LNE_set_address address for header files do not always 
  get their relocations applied.  I am told this is fixed in 3.4.x.


Mar 18, 2005
  In correcting printing of macro information the format
  of the macro (-m) output has changed substantially.
  Much more complete now.  Still could use enhancement.

Oct 28, 2004
  Updated contact address in copyright: SGI moved 1/4 mile
  to a new address: 1500 Crittenden Lane.

Oct 02, 2003
  Now fully supports .debug_loc section.

June 14, 2001
  Now calling a new function dwarf_get_arange_cu_header_offset()
  in libdwarf and printing the returned cu header offset for 
  aranges entries.   Making it easier to track down internal 
  errors in the dwarf2 data.  Also added small other
  consistency checks, printing a message and exit()ing on 
  error.

April 14, 2000
  The libdwarf copyright has changed to
     version 2.1 of the GNU Lesser General Public License.
  Anyone holding a version of libdwarf that was published
              before this new copyright
  is allowed to use
    the copyright published in that earlier libdwarf source
    on the earlier source
  or to use 
    this new copyright on the earlier source,
  at their option.

July 21, 1999
  Added gnu extensions to the frame information printer
  and handling for egcs eh_frame printing.
  libdwarf changes mean this now can print little-endian
  object dwarf on a big-endian system and vice-versa.

December, 1998
  added dwarfdump to the dwarf public source distribution.

June, 1994
  libdwarf consumer interface changed completely so updated to match.

May,  1993
  Initial version of dwarfdump  for dwarf version 2
  written at sgi.
