fix fdpic regression in dynamic linker with overly smart compilers
authorRich Felker <dalias@aerifal.cx>
Wed, 1 Jan 2020 05:15:04 +0000 (00:15 -0500)
committerRich Felker <dalias@aerifal.cx>
Wed, 1 Jan 2020 05:15:04 +0000 (00:15 -0500)
commitd6bbea2acf3e69afe0ac87105d6e443a19c43d14
tree322962eaeab38bd8b801ee766643e60d46f7db7b
parentb82cd6c78d812d38c31febba5a9e57dbaa7919c4
fix fdpic regression in dynamic linker with overly smart compilers

at least gcc 9 broke execution of DT_INIT/DT_FINI for fdpic archs
(presently only sh) by recognizing that the stores to the
compound-literal function descriptor constructed to call them were
dead stores. there's no way to make a "may_alias function", so instead
launder the descriptor through an asm-statement barrier. in practice
just making the compound literal volatile seemed to have worked too,
but this should be less of a hack and more accurately convey the
semantics of what transformations are not valid.
ldso/dynlink.c