Bläddra i källkod

Handle ET_DYN binaries with nonzero offset

This enables symbolization of some ChromeOS binaries.
Raul Silvera 9 år sedan
förälder
incheckning
af9754ae2a
1 ändrade filer med 4 tillägg och 1 borttagningar
  1. 4
    1
      internal/elfexec/elfexec.go

+ 4
- 1
internal/elfexec/elfexec.go Visa fil

237
 		return start, nil
237
 		return start, nil
238
 	case elf.ET_DYN:
238
 	case elf.ET_DYN:
239
 		if offset != 0 {
239
 		if offset != 0 {
240
-			return 0, fmt.Errorf("Don't know how to handle mapping.Offset")
240
+			if loadSegment == nil || loadSegment.Vaddr == 0 {
241
+				return start - offset, nil
242
+			}
243
+			return 0, fmt.Errorf("Don't know how to handle mapping.Offset %x, vaddr=%x", offset, loadSegment.Vaddr)
241
 		}
244
 		}
242
 		if loadSegment == nil {
245
 		if loadSegment == nil {
243
 			return start, nil
246
 			return start, nil