glibc/sysdeps/unix/sysv/linux/s390/s390-32
Stefan Liebler 5e5b3b8866 S390: Fix build with gcc configured with --enable-default-pie. [BZ #21537]
Building glibc with gcc configured with --enable-default-pie failed on s390
due to assembler messages:
../sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S:44:
Error: junk at end of line, first unrecognized character is `@'

HIDDEN_JUMPTARGET was expanded to exit@PLT@GOTOFF.
If SHARED is not defined, HIDDEN_JUMPTARGET is defined to JUMPTARGET
in sysdeps/s390/s390-32/sysdep.h.  There it expanded to exit@PLT
in non SHARED case as PIC is defined if gcc is configured with
--enable-default-pie. Thus I've changed the "ifdef PIC" to "ifdef SHARED"
as we do not want PLTs in the static obj files.  I've also changed this
in sysdeps/s390/s390-64/sysdep.h.

I've also adjusted sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S.
If glibc is configured with --disable-hidden-plt, then NO_HIDDEN is defined.
In SHARED case HIDDEN_JUMPTARGET would be expanded to exit@PLT@GOTOFF
instead of __GI_exit@GOTOFF.
Now we jump to:
- __GI_exit if SHARED is defined
- exit@PLT if SHARED and NO_HIDDEN is defined
- exit if both are not defined.
On s390 31bit we have to setup GOT pointer in r12 if we use a PLT stub.
Therefore I use SYSCALL_PIC_SETUP from sysdep.h and added the missing semicolons.

ChangeLog:

	[BZ #21537]
	* sysdeps/s390/s390-32/sysdep.h (JUMPTARGET, SYSCALL_PIC_SETUP):
	Check SHARED instead of PIC.
	(SYSCALL_PIC_SETUP): Add missing semicolons.
	* sysdeps/s390/s390-64/sysdep.h (JUMPTARGET, SYSCALL_PIC_SETUP):
	Check SHARED instead of PIC.
	* sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S
	(__makecontext_ret): Adjust code to jump to exit.
2017-06-19 11:08:58 +02:00
..
Makefile
Versions
____longjmp_chk.c
__makecontext_ret.S S390: Fix build with gcc configured with --enable-default-pie. [BZ #21537] 2017-06-19 11:08:58 +02:00
alphasort64.c
c++-types.data
clone.S
fcntl.c
fxstat.c
fxstatat.c
getcontext.S
getdents64.c
getutent.c
getutent_r.c
getutid.c
getutid_r.c
getutline.c
getutline_r.c
getutmp.c
getutxent.c
getutxid.c
getutxline.c
ld.abilist
libBrokenLocale.abilist
libc.abilist
libcrypt.abilist
libdl.abilist
libm.abilist
libnsl.abilist
libpthread.abilist
libresolv.abilist
librt.abilist
libthread_db.abilist
libutil.abilist
lockf64.c
login.c
login32.c
lxstat.c
makecontext.c
posix_fadvise64.c
profil-counter.h
pututxline.c
readdir64.c
readdir64_r.c
register-dump.h
scandir64.c
setcontext.S
swapcontext.S
syscall.S s390: optimize syscall function 2017-06-19 10:59:40 +02:00
syscalls.list
sysdep-cancel.h
sysdep.S
sysdep.h
updwtmp.c
updwtmpx.c
utmp-compat.h
utmp-convert.h
utmp32.c
utmp32.h
utmpx-convert.h
utmpx32.c
utmpx32.h
versionsort64.c
vfork.S
xstat.c