enum unwind_info_type ui_except;
if (opts->x_dump_base_name
- && ! IS_ABSOLUTE_PATH (opts->x_dump_base_name)
&& ! opts->x_dump_base_name_prefixed)
{
- /* First try to make OPTS->X_DUMP_BASE_NAME relative to the
- OPTS->X_DUMP_DIR_NAME directory. Then try to make
- OPTS->X_DUMP_BASE_NAME relative to the OPTS->X_AUX_BASE_NAME
- directory, typically the directory to contain the object
- file. */
- if (opts->x_dump_dir_name)
+ const char *sep = opts->x_dump_base_name;
+
+ for (; *sep; sep++)
+ if (IS_DIR_SEPARATOR (*sep))
+ break;
+
+ if (*sep)
+ /* If dump_base_path contains subdirectories, don't prepend
+ anything. */;
+ else if (opts->x_dump_dir_name)
+ /* We have a DUMP_DIR_NAME, prepend that. */
opts->x_dump_base_name = opts_concat (opts->x_dump_dir_name,
opts->x_dump_base_name, NULL);
else if (opts->x_aux_base_name
&& strcmp (opts->x_aux_base_name, HOST_BIT_BUCKET) != 0)
+ /* AUX_BASE_NAME is set and is not the bit bucket. If it
+ contains a directory component, prepend those directories.
+ Typically this places things in the same directory as the
+ object file. */
{
const char *aux_base;
opts->x_dump_base_name = new_dump_base_name;
}
}
- opts->x_dump_base_name_prefixed = true;
+
+ /* It is definitely prefixed now. */
+ opts->x_dump_base_name_prefixed = true;
}
/* Handle related options for unit-at-a-time, toplevel-reorder, and