48e9cc8 Ensure 'exec-file has changed' check has priority over 'exec-file-mismatch' check

Authored and Committed by Philippe Waroquiers 3 years ago
    Ensure 'exec-file has changed' check has priority over 'exec-file-mismatch' check
    
    Following the implementation of exec-file-mismatch based on build-id,
    an attach to a process that runs a modified exec-file was triggering
    the exec-file-mismatch handling, giving a warning such as:
      warning: Mismatch between current exec-file /bd/home/philippe/gdb/git/build_termours/gdb/testsuite/outputs/gdb.base/attach/attach
      and automatically determined exec-file /bd/home/philippe/gdb/git/build_termours/gdb/testsuite/outputs/gdb.base/attach/attach
      exec-file-mismatch handling is currently "ask"
    as the build-ids differ when an exec-file is recompiled.
    
    This patch ensures that the exec-file-mismatch check is done with an up to date
    build-id.  With this, exec-file-mismatch check will only trigger when the
    PID file really differs from the (build-id refreshed) current exec-file.
    Note that the additional check does not (yet) reload the symbols if
    the exec-file is changed: this reload will happen later if needed.
    
    gdb/ChangeLog
    2020-06-21  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
    	* exec.c (validate_exec_file): Ensure the build-id is up to
    	date by calling reopen_exec_file (that checks file timestamp
    	to decide to re-read the file).
    
    gdb/testsuite/ChangeLog
    
    2020-06-21  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
    	* gdb.base/attach.exp: Test priority of 'exec-file' changed
    	over 'exec-file-mismatch'.
    	* gdb.base/attach.c: Mark should_exit volatile.
    	* gdb.base/attach2.c: Likewise.  Add a comment explaining
    	why the sleep cannot be big.
    	* gdb.base/attach3.c: New file.
    
        
file modified
+6 -0
file modified
+8 -0
file modified
+9 -0