Delocate more types of references.
References to global symbols generate relocations, which breaks the integrity check. Change-Id: If6fa06d5d924294ab496c32e7f082a1ae60fdb24 Reviewed-on: https://boringssl-review.googlesource.com/15025 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: David Benjamin <davidben@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
This commit is contained in:
parent
d7bc3353f0
commit
61c4e27413
@ -164,7 +164,7 @@ func transform(lines []string, symbols map[string]bool) (ret []string) {
|
||||
}
|
||||
|
||||
switch parts[0] {
|
||||
case "call", "callq", "jmp":
|
||||
case "call", "callq", "jmp", "jne", "jb", "jz", "jnz", "ja":
|
||||
target := parts[1]
|
||||
// indirect via register or local label
|
||||
if strings.HasPrefix(target, "*") || strings.HasPrefix(target, ".L") {
|
||||
@ -201,6 +201,22 @@ func transform(lines []string, symbols map[string]bool) (ret []string) {
|
||||
redirectors[redirectorName] = target
|
||||
continue
|
||||
|
||||
case "leaq":
|
||||
if strings.Contains(line, "BORINGSSL_bcm_text_dummy_") {
|
||||
line = strings.Replace(line, "BORINGSSL_bcm_text_dummy_", "BORINGSSL_bcm_text_", -1)
|
||||
}
|
||||
|
||||
target := strings.SplitN(parts[1], ",", 2)[0]
|
||||
if strings.HasSuffix(target, "(%rip)") {
|
||||
target = target[:len(target)-6]
|
||||
if isGlobal := symbols[target]; isGlobal {
|
||||
line = strings.Replace(line, target, localTargetName(target), 1)
|
||||
}
|
||||
}
|
||||
|
||||
ret = append(ret, line)
|
||||
continue
|
||||
|
||||
case ".file":
|
||||
// Do not reorder .file directives. These define
|
||||
// numbered files which are referenced by other debug
|
||||
@ -265,9 +281,6 @@ func transform(lines []string, symbols map[string]bool) (ret []string) {
|
||||
}
|
||||
}
|
||||
|
||||
if parts[0] == "leaq" {
|
||||
line = strings.Replace(line, "BORINGSSL_bcm_text_dummy_", "BORINGSSL_bcm_text_", -1)
|
||||
}
|
||||
ret = append(ret, line)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user