|
@@ -617,14 +617,11 @@ enum ResolveSymbolError {
|
|
|
BuildIdMismatch(String),
|
|
|
}
|
|
|
|
|
|
-fn construct_debuglink_path(
|
|
|
- filename: &[u8],
|
|
|
- main_path: &Path,
|
|
|
-) -> Result<PathBuf, ResolveSymbolError> {
|
|
|
+fn construct_debuglink_path(filename: &[u8], main_path: &Path) -> PathBuf {
|
|
|
let filename_str = OsStr::from_bytes(filename);
|
|
|
let debuglink_path = Path::new(filename_str);
|
|
|
|
|
|
- let resolved_path = if debuglink_path.is_relative() {
|
|
|
+ if debuglink_path.is_relative() {
|
|
|
// If the debug path is relative, resolve it against the parent of the main path
|
|
|
main_path.parent().map_or_else(
|
|
|
|| PathBuf::from(debuglink_path), // Use original if no parent
|
|
@@ -633,9 +630,7 @@ fn construct_debuglink_path(
|
|
|
} else {
|
|
|
// If the path is not relative, just use original
|
|
|
PathBuf::from(debuglink_path)
|
|
|
- };
|
|
|
-
|
|
|
- Ok(resolved_path)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
fn verify_build_ids<'a>(
|
|
@@ -664,7 +659,7 @@ fn find_debug_path_in_object<'a>(
|
|
|
symbol: &str,
|
|
|
) -> Result<PathBuf, ResolveSymbolError> {
|
|
|
match obj.gnu_debuglink() {
|
|
|
- Ok(Some((filename, _))) => construct_debuglink_path(filename, main_path),
|
|
|
+ Ok(Some((filename, _))) => Ok(construct_debuglink_path(filename, main_path)),
|
|
|
Ok(None) => Err(ResolveSymbolError::Unknown(symbol.to_string())),
|
|
|
Err(err) => Err(ResolveSymbolError::Object(err)),
|
|
|
}
|
|
@@ -737,7 +732,7 @@ mod tests {
|
|
|
let main_path = Path::new("/usr/lib/main_binary");
|
|
|
let expected = Path::new("/usr/lib/debug_info");
|
|
|
|
|
|
- let result = construct_debuglink_path(filename, main_path).unwrap();
|
|
|
+ let result = construct_debuglink_path(filename, main_path);
|
|
|
assert_eq!(
|
|
|
result, expected,
|
|
|
"The debug path should resolve relative to the main path's parent"
|
|
@@ -750,7 +745,7 @@ mod tests {
|
|
|
let main_path = Path::new("main_binary");
|
|
|
let expected = Path::new("debug_info");
|
|
|
|
|
|
- let result = construct_debuglink_path(filename, main_path).unwrap();
|
|
|
+ let result = construct_debuglink_path(filename, main_path);
|
|
|
assert_eq!(
|
|
|
result, expected,
|
|
|
"The debug path should be the original path as there is no parent"
|
|
@@ -763,7 +758,7 @@ mod tests {
|
|
|
let main_path = Path::new("/usr/lib/main_binary");
|
|
|
let expected = Path::new("/absolute/path/to/debug_info");
|
|
|
|
|
|
- let result = construct_debuglink_path(filename, main_path).unwrap();
|
|
|
+ let result = construct_debuglink_path(filename, main_path);
|
|
|
assert_eq!(
|
|
|
result, expected,
|
|
|
"The debug path should be the same as the input absolute path"
|