Skip to content
Snippets Groups Projects
  • Alexandre Oliva's avatar
    3267bd36
    Use compare-debug for bootstrap-debug-lean to ignore != DW_AT_producer · 3267bd36
    Alexandre Oliva authored
    Unlike bootstrap-debug, bootstrap-debug-lean used to pass compare using
    the traditional compare command, because it compiled both stage2 and
    stage3 with options that used to generate identical output
    (-fcompare-debug= in stage2 vs -fcompare-debug in stage3).
    
    Since we started adding relevant command-line flags to DW_AT_producer,
    this is no longer the case, and stages 2 and 3 object files that differ
    in nothing but the DW_AT_producer strings.
    
    
    -fcompare-debug is short for -fcompare-debug=-gtoggle, so stage3
    compiles twice, once with the normal options, once with toggled -g, to
    then compare the temporary final dumps.  When enabled, both compilations
    get from the driver an additional -frandom-seed flag (if none is given
    explicitly).
    
    -fcompare-debug= is short for -fno-compare-debug, disabling the second
    compilation.
    
    
    The difference between the DW_AT_producer lines are the different
    -fcompare-debug flags, and the presence of the -frandom-seed flag in the
    stage3 compilation.
    
    It is easy and sensible enough to filter the -fcompare-debug flags out
    of the DW_AT_producer string.  This option should never affect the
    compilation output, it just determines whether or not to perform an
    additional compilation that should produce the same executable output.
    
    However, dropping -frandom-seed is not quite correct, in that it might
    have other consequences on the compilation.  So, it makes little sense
    to make the effort to drop it when it's implicit; for those comparing
    compiler output differences, it might even hint at what causes, and
    could fix, difficult to explain differences, namely, explicitly
    supplying -frandom-seed options.
    
    They don't seem to matter for compiler bootstraps, though, at least
    for now, so we can safely refrain from issuing -frandom-seed (or maybe
    we already issue it where needed :-), and then, for
    bootstrap-debug-lean, use the compare-debug script, that strips out
    debug information before comparing the object files.
    
    
    for  config/ChangeLog
    
    	* bootstrap-debug-lean.mk (do-compare): Use the
    	contrib/compare-debug script.
    
    for  gcc/ChangeLog
    
    	* dwarf2out.c (gen_producer_string): Discard
    	OPT_fcompare_debug.
    
    From-SVN: r254750
    3267bd36
    History
    Use compare-debug for bootstrap-debug-lean to ignore != DW_AT_producer
    Alexandre Oliva authored
    Unlike bootstrap-debug, bootstrap-debug-lean used to pass compare using
    the traditional compare command, because it compiled both stage2 and
    stage3 with options that used to generate identical output
    (-fcompare-debug= in stage2 vs -fcompare-debug in stage3).
    
    Since we started adding relevant command-line flags to DW_AT_producer,
    this is no longer the case, and stages 2 and 3 object files that differ
    in nothing but the DW_AT_producer strings.
    
    
    -fcompare-debug is short for -fcompare-debug=-gtoggle, so stage3
    compiles twice, once with the normal options, once with toggled -g, to
    then compare the temporary final dumps.  When enabled, both compilations
    get from the driver an additional -frandom-seed flag (if none is given
    explicitly).
    
    -fcompare-debug= is short for -fno-compare-debug, disabling the second
    compilation.
    
    
    The difference between the DW_AT_producer lines are the different
    -fcompare-debug flags, and the presence of the -frandom-seed flag in the
    stage3 compilation.
    
    It is easy and sensible enough to filter the -fcompare-debug flags out
    of the DW_AT_producer string.  This option should never affect the
    compilation output, it just determines whether or not to perform an
    additional compilation that should produce the same executable output.
    
    However, dropping -frandom-seed is not quite correct, in that it might
    have other consequences on the compilation.  So, it makes little sense
    to make the effort to drop it when it's implicit; for those comparing
    compiler output differences, it might even hint at what causes, and
    could fix, difficult to explain differences, namely, explicitly
    supplying -frandom-seed options.
    
    They don't seem to matter for compiler bootstraps, though, at least
    for now, so we can safely refrain from issuing -frandom-seed (or maybe
    we already issue it where needed :-), and then, for
    bootstrap-debug-lean, use the compare-debug script, that strips out
    debug information before comparing the object files.
    
    
    for  config/ChangeLog
    
    	* bootstrap-debug-lean.mk (do-compare): Use the
    	contrib/compare-debug script.
    
    for  gcc/ChangeLog
    
    	* dwarf2out.c (gen_producer_string): Discard
    	OPT_fcompare_debug.
    
    From-SVN: r254750