The size of .ARM.exidx may shrink across `assignAddress` calls. It is
possible
that the initial iteration has a larger location counter, causing
`__code_size =
__code_end - .; osec : { . += __code_size; }` to report an error, while
the error would
have been suppressed for subsequent `assignAddress` iterations.
Other sections like .relr.dyn may change sizes across `assignAddress`
calls as
well. However, their initial size is zero, so it is difficiult to
trigger a
similar error.
Similar to https://reviews.llvm.org/D152170, postpone the error
reporting.
Fix #66836. While here, add more information to the error message.
12 lines
322 B
Plaintext
12 lines
322 B
Plaintext
# REQUIRES: x86
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t
|
|
# RUN: not ld.lld %t --script %s -o /dev/null 2>&1 | FileCheck %s
|
|
# CHECK: {{.*}}.test:8: unable to move location counter (0x2000) backward to 0x10 for section '.text'
|
|
|
|
SECTIONS {
|
|
.text 0x2000 : {
|
|
. = 0x10;
|
|
*(.text)
|
|
}
|
|
}
|