#### 23.5.1 The `objfile-gdb.ext` file ¶

When a new object file is read, GDB looks for a file named `objfile-gdb.ext` (we call it script-name below), where objfile is the object file’s name and where ext is the file extension for the extension language:

``objfile-gdb.gdb``

  GDB’s own command language

``objfile-gdb.py``

  Python

``objfile-gdb.scm``

  Guile

script-name is formed by ensuring that the file name of objfile is absolute, following all symlinks, and resolving `.` and `..` components, and appending the `-gdb.ext` suffix. If this file exists and is readable, GDB will evaluate it as a script in the specified extension language.

If this file does not exist, then GDB will look for script-name file in all of the directories as specified below. (On MS-Windows/MS-DOS, the drive letter of the executable’s leading directories is converted to a one-letter subdirectory, i.e. `d:/usr/bin/` is converted to `/d/usr/bin/`, because Windows filesystems disallow colons in file names.)

Note that loading of these files requires an accordingly configured `auto-load safe-path` (see Security restriction for auto-loading).

For object files using `.exe` suffix GDB tries to load first the scripts normally according to its `.exe` filename. But if no scripts are found GDB also tries script filenames matching the object file without its `.exe` suffix. This `.exe` stripping is case insensitive and it is attempted on any platform. This makes the script filenames compatible between Unix and MS-Windows hosts.

`set auto-load scripts-directory [directories]` ¶

  Control GDB auto-loaded scripts location. Multiple directory entries may be delimited by the host platform path separator in use (‘`:`’ on Unix, ‘`;`’ on MS-Windows and MS-DOS).

  Each entry here needs to be covered also by the security setting `set auto-load safe-path` (see set auto-load safe-path).

  This variable defaults to `$debugdir:$datadir/auto-load`. The default `set auto-load safe-path` value can be also overridden by GDB configuration option `--with-auto-load-dir`.

  Any reference to `$debugdir` will get replaced by debug-file-directory value (see Debugging Information in Separate Files) and any reference to `$datadir` will get replaced by data-directory which is determined at GDB startup (see GDB Data Files). `$debugdir` and `$datadir` must be placed as a directory component — either alone or delimited by `/` or `\` directory separators, depending on the host platform.

  The list of directories uses path separator (‘`:`’ on GNU and Unix systems, ‘`;`’ on MS-Windows and MS-DOS) to separate directories, similarly to the `PATH` environment variable.

`show auto-load scripts-directory` ¶

  Show GDB auto-loaded scripts location.

`add-auto-load-scripts-directory [directories…]` ¶

  Add an entry (or list of entries) to the list of auto-loaded scripts locations. Multiple entries may be delimited by the host platform path separator in use.

GDB does not track which files it has already auto-loaded this way. GDB will load the associated script every time the corresponding objfile is opened. So your `-gdb.ext` file should be careful to avoid errors if it is evaluated more than once.