This website requires JavaScript.
Explore
Help
Register
Sign in
darkkirb
/
old-cross-binutils
Watch
1
Star
0
Fork
You've already forked old-cross-binutils
0
Code
Issues
Pull requests
Projects
Releases
Packages
Wiki
Activity
b6dafabfb1
old-cross-binutils
/
ld
/
testsuite
/
ld-scripts
/
provide-5-map.d
7 lines
130 B
D
Raw
Normal View
History
Unescape
Escape
ld: Don't evaluate unneeded PROVIDE expressions. When creating a linker mapfile (using -Map=MAPFILE), we previously would always try to evaluate the expression from a PROVIDE statement. However, this is not always safe, consider: PROVIDE (foo = 0x10); PROVIDE (bar = foo); In this example, if neither 'foo' or 'bar' is needed, then while generating the linker mapfile evaluating the expression for 'foo' is harmless (just the value 0x10). However, evaluating the expression for 'bar' requires the symbol 'foo', which is undefined. This used to cause a fatal error. This patch changes the behaviour, so that when the destination of the PROVIDE is not defined (that is the PROVIDE is not going to provide anything) the expression is not evaluated, and instead a special string is displayed to indicate that the linker is discarding the PROVIDE statement. This change not only fixes the spurious undefined symbol error, but also means that a user can now tell if a PROVIDE statement has provided anything by inspecting the linker mapfile, something that could not be done before. ld/ChangeLog: * ldlang.c (print_assignment): Only evaluate the expression for a PROVIDE'd assignment when the destination is being defined. Display a special message for PROVIDE'd symbols that are not being provided. ld/testsuite/ChangeLog: * ld-scripts/provide-4.d: New file. * ld-scripts/provide-4-map.d: New file. * ld-scripts/provide-4.t: New file. * ld-scripts/provide-5.d: New file. * ld-scripts/provide-5.s: New file. * ld-scripts/provide-5-map.d: New file. * ld-scripts/provide-5.t: New file. * ld-scripts/provide.exp: Run the provide-4.d and provide-5.d tests.
2015-01-07 10:51:35 +00:00
#
.
.
.
Linker
script
and
memory
map
#
.
.
.
ld: Update expected test results for 32-bit hosts. Tests that I added in commit c05b575a8dfabab6af5d8586d1a5c0c67f819ac2 fails on 32-bit hosts due to differences in whitespace. This patch updates the expected output patterns to be more accepting of differences in whitespace, the tests should now pass. ld/testsuite/ChangeLog: * ld-scripts/provide-4-map.d: Update expected output. * ld-scripts/provide-5-map.d: Likewise.
2015-01-20 16:00:41 +00:00
0x0
+
10
+
foo
=
0x10
\
[
!
provide
\
]
+
PROVIDE
\
(
foo
,
bar
\
)
ld: Don't evaluate unneeded PROVIDE expressions. When creating a linker mapfile (using -Map=MAPFILE), we previously would always try to evaluate the expression from a PROVIDE statement. However, this is not always safe, consider: PROVIDE (foo = 0x10); PROVIDE (bar = foo); In this example, if neither 'foo' or 'bar' is needed, then while generating the linker mapfile evaluating the expression for 'foo' is harmless (just the value 0x10). However, evaluating the expression for 'bar' requires the symbol 'foo', which is undefined. This used to cause a fatal error. This patch changes the behaviour, so that when the destination of the PROVIDE is not defined (that is the PROVIDE is not going to provide anything) the expression is not evaluated, and instead a special string is displayed to indicate that the linker is discarding the PROVIDE statement. This change not only fixes the spurious undefined symbol error, but also means that a user can now tell if a PROVIDE statement has provided anything by inspecting the linker mapfile, something that could not be done before. ld/ChangeLog: * ldlang.c (print_assignment): Only evaluate the expression for a PROVIDE'd assignment when the destination is being defined. Display a special message for PROVIDE'd symbols that are not being provided. ld/testsuite/ChangeLog: * ld-scripts/provide-4.d: New file. * ld-scripts/provide-4-map.d: New file. * ld-scripts/provide-4.t: New file. * ld-scripts/provide-5.d: New file. * ld-scripts/provide-5.s: New file. * ld-scripts/provide-5-map.d: New file. * ld-scripts/provide-5.t: New file. * ld-scripts/provide.exp: Run the provide-4.d and provide-5.d tests.
2015-01-07 10:51:35 +00:00
#
.
.
.
Reference in a new issue
Copy permalink