add support for absolute relocations

This commit is contained in:
Folkert 2022-09-25 19:09:21 +02:00
parent fdbb0c8e3c
commit b725b36697
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
2 changed files with 59 additions and 11 deletions

View file

@ -372,3 +372,44 @@ pub(crate) fn open_mmap_mut(path: &Path, length: usize) -> MmapMut {
unsafe { MmapMut::map_mut(&out_file).unwrap_or_else(|e| internal_error!("{e}")) }
}
/// # dbg_hex
/// display dbg result in hexadecimal `{:#x?}` format.
///
/// # usage
/// Replace `dbg!()` with `dbg_hex!()`
///
/// # example
/// ```rust, no_run
/// use dbg_hex::dbg_hex;
/// dbg_hex!(0x16 + 0x16);
/// ```
///
/// output
/// ```text
/// [src/lib.rs:38] 0x16 + 0x16 = 0x2c
/// ```
#[macro_export]
macro_rules! dbg_hex {
// NOTE: We cannot use `concat!` to make a static string as a format argument
// of `eprintln!` because `file!` could contain a `{` or
// `$val` expression could be a block (`{ .. }`), in which case the `eprintln!`
// will be malformed.
() => {
eprintln!("[{}:{}]", file!(), line!());
};
($val:expr $(,)?) => {
// Use of `match` here is intentional because it affects the lifetimes
// of temporaries - https://stackoverflow.com/a/48732525/1063961
match $val {
tmp => {
eprintln!("[{}:{}] {} = {:#x?}",
file!(), line!(), stringify!($val), &tmp);
tmp
}
}
};
($($val:expr),+ $(,)?) => {
($($crate::dbg_hex!($val)),+,)
};
}