@@ -377,39 +377,40 @@ where
377
377
{
378
378
let mut bases = gimli:: BaseAddresses :: default ( ) ;
379
379
380
- let view_start = view. start ( ) ;
380
+ // DWARF info is stored relative to the original image base (0 for relocatable images), normalize entries to the original image base
381
+ let section_adjustment = view. original_image_base ( ) . wrapping_sub ( view. image_base ( ) ) ;
381
382
382
383
if let Some ( section) = view
383
384
. section_by_name ( ".eh_frame_hdr" )
384
385
. or ( view. section_by_name ( "__eh_frame_hdr" ) )
385
386
{
386
- bases = bases. set_eh_frame_hdr ( section. start ( ) - view_start ) ;
387
+ bases = bases. set_eh_frame_hdr ( section. start ( ) . wrapping_add ( section_adjustment ) ) ;
387
388
}
388
389
389
390
if let Some ( section) = view
390
391
. section_by_name ( ".eh_frame" )
391
392
. or ( view. section_by_name ( "__eh_frame" ) )
392
393
{
393
- bases = bases. set_eh_frame ( section. start ( ) - view_start ) ;
394
+ bases = bases. set_eh_frame ( section. start ( ) . wrapping_add ( section_adjustment ) ) ;
394
395
} else if let Some ( section) = view
395
396
. section_by_name ( ".debug_frame" )
396
397
. or ( view. section_by_name ( "__debug_frame" ) )
397
398
{
398
- bases = bases. set_eh_frame ( section. start ( ) - view_start ) ;
399
+ bases = bases. set_eh_frame ( section. start ( ) . wrapping_add ( section_adjustment ) ) ;
399
400
}
400
401
401
402
if let Some ( section) = view
402
403
. section_by_name ( ".text" )
403
404
. or ( view. section_by_name ( "__text" ) )
404
405
{
405
- bases = bases. set_text ( section. start ( ) - view_start ) ;
406
+ bases = bases. set_text ( section. start ( ) . wrapping_add ( section_adjustment ) ) ;
406
407
}
407
408
408
409
if let Some ( section) = view
409
410
. section_by_name ( ".got" )
410
411
. or ( view. section_by_name ( "__got" ) )
411
412
{
412
- bases = bases. set_got ( section. start ( ) - view_start ) ;
413
+ bases = bases. set_got ( section. start ( ) . wrapping_add ( section_adjustment ) ) ;
413
414
}
414
415
415
416
let mut cies = HashMap :: new ( ) ;
0 commit comments