diff options
| author | Michael Matz <matz@suse.de> | 2016-09-27 17:04:39 +0200 |
|---|---|---|
| committer | Michael Matz <matz@suse.de> | 2016-12-15 17:47:12 +0100 |
| commit | 975c74c1f51679cfe62d1fd455344f12399fb51c (patch) | |
| tree | 4866b7821b9e1c146190629972a768dc9b77710d /include | |
| parent | ad8e14b740f87d814a00f9f0d44301f71ffd7ec6 (diff) | |
| download | tinycc-975c74c1f51679cfe62d1fd455344f12399fb51c.tar.gz tinycc-975c74c1f51679cfe62d1fd455344f12399fb51c.tar.bz2 | |
x86-64: Prefer 32S relocations
This target has _32 and _32S relocs (the latter being for signed
32 bit entities). All instruction displacements have to use
the 32S variants. Normal references like
.long s
normally would use the _32 variant. For normal executables this
doesn't matter. For shared libraries neither (which use PC-relative
relocs). But it matters for things like the kernel that are linked
to high addresses (signed ones). There the GNU linker would error
out on overflow for the _32 variant.
To keep life simple we simply switch from _32 to _32S altogether.
Strictly speaking it's still wrong, but in practice using _32 is
more often wrong than using _32S ;)
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions
